From 63c3b0cb0d954bb163d6c7b228bd45926dfd0eba Mon Sep 17 00:00:00 2001 From: meetsu <96637888+klNuno@users.noreply.github.com> Date: Wed, 21 Oct 2026 18:23:15 +0200 Subject: [PATCH 1/3] feat: require a client key on every call and show each client's consumption No client means no access: every /v1 call needs a client key, so every call is counted for its client. The Clients page gains a Consumption section (24 h, 7 or 30 days): tokens, calls, cache reads, errors and part of the total per client, tokens over time, and per-model details. GET /admin/api/clients/stats serves the totals. --- README.md | 23 +- crates/douane/src/clients.rs | 51 ++-- crates/douane/src/ledger.rs | 144 ++++++++++- crates/douane/src/lib.rs | 1 + crates/douane/src/main.rs | 8 +- crates/douane/src/management.rs | 27 ++- crates/douane/src/quota_view.rs | 10 + crates/douane/src/relay.rs | 2 +- crates/douane/src/socket.rs | 6 +- crates/douane/tests/antigravity_harness.rs | 15 ++ crates/douane/tests/clients.rs | 47 +++- crates/douane/tests/endpoints.rs | 16 +- crates/douane/tests/export_restore.rs | 26 +- crates/douane/tests/quota_overview.rs | 35 ++- crates/douane/tests/request_body_limit.rs | 8 + crates/douane/tests/transports.rs | 36 ++- .../_app/immutable/assets/2.Fm2AbXXC.css | 1 - .../_app/immutable/assets/2.ITQ6xvQN.css | 1 + dash/build/_app/immutable/chunks/BJ6K4aSM.js | 1 - dash/build/_app/immutable/chunks/BpCz1rGI.js | 1 + .../{app.CjREIEJ0.js => app.DJYkjE9N.js} | 4 +- .../_app/immutable/entry/start.4Ww2Kv0E.js | 1 - .../_app/immutable/entry/start.CgZtN555.js | 1 + .../nodes/{1.Br7vugXt.js => 1.D7lcLLgV.js} | 2 +- dash/build/_app/immutable/nodes/2.C3KY4sIO.js | 1 - dash/build/_app/immutable/nodes/2.DhfXIWxd.js | 1 + dash/build/_app/version.json | 2 +- dash/build/index.html | 12 +- dash/mock/serve.mjs | 36 ++- dash/src/lib/components/client-stats.svelte | 226 ++++++++++++++++++ dash/src/lib/components/clients-view.svelte | 9 +- dash/src/lib/components/data-views.svelte | 6 +- dash/src/lib/management.ts | 8 +- dash/src/lib/strings/en.ts | 40 +++- dash/src/lib/strings/fr.ts | 40 +++- 35 files changed, 734 insertions(+), 114 deletions(-) delete mode 100644 dash/build/_app/immutable/assets/2.Fm2AbXXC.css create mode 100644 dash/build/_app/immutable/assets/2.ITQ6xvQN.css delete mode 100644 dash/build/_app/immutable/chunks/BJ6K4aSM.js create mode 100644 dash/build/_app/immutable/chunks/BpCz1rGI.js rename dash/build/_app/immutable/entry/{app.CjREIEJ0.js => app.DJYkjE9N.js} (93%) delete mode 100644 dash/build/_app/immutable/entry/start.4Ww2Kv0E.js create mode 100644 dash/build/_app/immutable/entry/start.CgZtN555.js rename dash/build/_app/immutable/nodes/{1.Br7vugXt.js => 1.D7lcLLgV.js} (89%) delete mode 100644 dash/build/_app/immutable/nodes/2.C3KY4sIO.js create mode 100644 dash/build/_app/immutable/nodes/2.DhfXIWxd.js create mode 100644 dash/src/lib/components/client-stats.svelte diff --git a/README.md b/README.md index 4f0aa91..6557f94 100644 --- a/README.md +++ b/README.md @@ -12,12 +12,12 @@ douane connects your Claude, ChatGPT (Codex), Antigravity, Grok, GitHub Copilot ## Features -- One base URL and one placeholder key for Claude Code, the Grok CLI, Boite and any OpenAI-compatible client. +- One base URL and a client key for each of Claude Code, the Grok CLI, Boite and any OpenAI-compatible client. - Chat Completions, Anthropic Messages and Responses, streaming included, with translation between them; native Codex WebSocket sessions. - Live quotas per account: five-hour, daily, weekly and monthly windows, reset times, plan tier, extra credits and banked resets, refreshed in the background. - Four routing strategies, per provider if you like, and failover to another account of the same provider when one runs out. - Conversation affinity: native session ids and `prompt_cache_key` pin a conversation to its account, so cache reads keep landing. -- Client keys: give each tool or machine its own key, limit it to some accounts, and split each provider's quota windows between them by percentage. +- Client keys: every call carries a client key, so you see which tool or machine spends what. Limit a client to some accounts, and split each provider's quota windows between clients by percentage. - Per-account reserve: stop spending an account at 5 % (or any share) of its longest quota window, or of the windows you pick (5 hours, weekly, both), so you keep some for yourself. - Request history with latency, token and cache counters; never conversation bodies or credentials. - OAuth and device sign-in from the dashboard, JSON import of existing CLI credentials, and `douanectl` for scripting. @@ -92,18 +92,18 @@ douane --config douane.toml Open `http://127.0.0.1:8787/admin`, choose **Connect an account** and sign in to a provider. When douane runs on another machine, paste the callback URL or code shown by the provider back into the dialog: the provider's localhost redirect does not need to reach the server. -Then point a client at it: +Then create a client on the **Clients** page (or `douanectl client add Desktop --key-file desktop.key`) and point a tool at douane with its key: ```sh -curl http://127.0.0.1:8787/v1/models +curl http://127.0.0.1:8787/v1/models -H 'Authorization: Bearer dk_...' curl http://127.0.0.1:8787/v1/chat/completions \ - -H 'Authorization: Bearer douane' \ + -H 'Authorization: Bearer dk_...' \ -H 'Content-Type: application/json' \ -d '{"model":"","messages":[{"role":"user","content":"Hello"}],"stream":true}' ``` -Model ids carry their provider prefix, for example `claude/...` or `codex/...`. Until you create a [client key](#client-keys), the key `douane` is a placeholder: authentication upstream uses the connected subscription. +Model ids carry their provider prefix, for example `claude/...` or `codex/...`. The [client key](#client-keys) only identifies the caller to douane: authentication upstream uses the connected subscription. ![Accounts page with plan, state and reserve per account](docs/images/accounts.png) @@ -113,10 +113,10 @@ The dashboard's **Set up a tool** page writes these settings for you, with your | Client | Settings | | --- | --- | -| OpenAI-compatible tools | Base URL `http://127.0.0.1:8787/v1`, API key `douane`, a model id from `/v1/models` | -| Claude Code | `ANTHROPIC_BASE_URL=http://127.0.0.1:8787` (no `/v1`), `ANTHROPIC_AUTH_TOKEN=douane` | -| Grok CLI | `XAI_API_KEY=douane`, `GROK_MODELS_BASE_URL` and `GROK_XAI_API_BASE_URL` set to `http://127.0.0.1:8787/v1`, `GROK_MODELS_LIST_URL=http://127.0.0.1:8787/v1/models?provider=xai&ids=upstream` | -| [Boite](https://github.com/beboite/boite) | Subscription proxy set to the dashboard URL: Boite lists the models and draws each account's quota bars from `/v1/quotas` | +| OpenAI-compatible tools | Base URL `http://127.0.0.1:8787/v1`, API key: a client key `dk_...`, a model id from `/v1/models` | +| Claude Code | `ANTHROPIC_BASE_URL=http://127.0.0.1:8787` (no `/v1`), `ANTHROPIC_AUTH_TOKEN=dk_...` | +| Grok CLI | `XAI_API_KEY=dk_...`, `GROK_MODELS_BASE_URL` and `GROK_XAI_API_BASE_URL` set to `http://127.0.0.1:8787/v1`, `GROK_MODELS_LIST_URL=http://127.0.0.1:8787/v1/models?provider=xai&ids=upstream` | +| [Boite](https://github.com/beboite/boite) | Subscription proxy set to the dashboard URL, and its key field to a client key: Boite lists the models and draws each account's quota bars from `/v1/quotas` | For the Grok CLI, a session saved by `grok login` takes precedence over the key; set `GROK_AUTH_PATH` to a missing file to keep it out. @@ -226,11 +226,12 @@ Banked resets for Claude and Codex appear on each account card. Using one asks f ## Client keys -With no client defined, anyone who reaches the client API can use every account. Create a client on the **Clients** page, with `POST /admin/api/clients` or `douanectl client add`, and from then on every `/v1` call needs a client key, sent as the tool's API key (`Authorization: Bearer dk_...` or `x-api-key`). Other keys get 401. The key is shown once; douane keeps only its hash. Deleting the last client opens the API again. +Every `/v1` call needs a client key, sent as the tool's API key (`Authorization: Bearer dk_...` or `x-api-key`); other keys, and every call while no client exists, get 401. Create clients on the **Clients** page, with `POST /admin/api/clients` or `douanectl client add`. The key is shown once; douane keeps only its hash. - **Access.** A client reaches every account, accounts connected later included, or only the providers, custom routes and single accounts you pick. `/v1/models` and `/v1/quotas` list only what it may use. - **Shares.** A share is a percentage of each account-wide window (five hours, day, week, month) of every account of a provider. Shares of a provider add up to 100 % at most. What no share covers is common to every client. A client's unused share stays reserved for it until the last seventh of the window (the last day of a week), then any client may use it. A client with no share uses the common part, then freed shares. A client held back gets 429 until the window resets. In the hours before the weekly reset (`free_before_reset_hours`, see above), shares hold no one back. - **Usage.** Providers report usage per account, not per caller, so douane attributes it: each rise of a window goes to the clients whose calls ended on that account since the previous reading, weighted by tokens, or to the calls still running. A rise that no call through douane explains counts as outside use. Calls of several clients interleaving on one account make the split an estimate; one client per account keeps it exact. +- **Consumption.** The **Clients** page shows, over 24 hours, 7 or 30 days, each client's tokens, calls, cache reads and errors, its part of the total, its tokens over time and its models, limits or not. `GET /admin/api/clients/stats?hours=168` returns the same totals by client, provider and model, and by client and hour. - **Quota bars.** With a client key, `/v1/quotas` shows each window as the part the client has used of what it may use, so a full bar means it is held back. ```sh diff --git a/crates/douane/src/clients.rs b/crates/douane/src/clients.rs index b0bfc4b..7329b64 100644 --- a/crates/douane/src/clients.rs +++ b/crates/douane/src/clients.rs @@ -1,8 +1,8 @@ //! Client keys: which subscriptions each caller may use, and the share of a //! provider's quota windows it holds. //! -//! With no client stored, the client API stays open as before. Once one -//! exists, every call needs a client key. A share is a percentage of each +//! Every call to the client API needs a client key: with no client stored, +//! douane refuses every call until one is created. A share is a percentage of each //! account-wide window (five hours, day, week, month) of every account in a //! pool. Unused shares stay reserved for their holders until the last seventh //! of the window, when anyone may use them; what no share covers is common. @@ -213,6 +213,8 @@ fn presented_key(headers: &HeaderMap) -> Option<&str> { #[derive(Debug, PartialEq)] pub enum Refusal { + /// No client exists yet, so no key can be right. + NoClient, Missing, Unknown, } @@ -220,6 +222,9 @@ pub enum Refusal { impl Refusal { pub fn message(&self) -> &'static str { match self { + Refusal::NoClient => { + "douane has no client yet: create one on the Clients page or with `douanectl client add`, then send its key as the API key" + } Refusal::Missing => { "a douane client key is required: create one on the Clients page and send it as the API key" } @@ -335,23 +340,17 @@ impl Clients { self.read().clone() } - /// Keys are required as soon as one client exists. - pub fn enforced(&self) -> bool { - !self.read().is_empty() - } - - /// `None` while no client exists: the API is open. - pub fn authenticate(&self, headers: &HeaderMap) -> Result, Refusal> { + /// The client whose key the caller presents. There is no keyless access. + pub fn authenticate(&self, headers: &HeaderMap) -> Result { let list = self.read(); if list.is_empty() { - return Ok(None); + return Err(Refusal::NoClient); } let key = presented_key(headers).ok_or(Refusal::Missing)?; let hash = key_hash(key); list.iter() .find(|c| c.key_hash == hash) .cloned() - .map(Some) .ok_or(Refusal::Unknown) } @@ -825,9 +824,16 @@ mod tests { } #[test] - fn the_api_stays_open_until_a_client_exists_then_needs_its_key() { + fn every_call_needs_a_client_key_even_before_the_first_client() { let (_dir, clients) = clients(); - assert_eq!(clients.authenticate(&HeaderMap::new()), Ok(None)); + assert_eq!( + clients.authenticate(&HeaderMap::new()), + Err(Refusal::NoClient) + ); + assert_eq!( + clients.authenticate(&bearer("boite-subscription-proxy")), + Err(Refusal::NoClient) + ); let (client, key) = clients.create(named("famille")).unwrap(); assert!(key.starts_with(KEY_PREFIX)); assert!( @@ -843,17 +849,11 @@ mod tests { clients.authenticate(&bearer("boite-subscription-proxy")), Err(Refusal::Unknown) ); - assert_eq!( - clients.authenticate(&bearer(&key)).unwrap().unwrap().id, - client.id - ); + assert_eq!(clients.authenticate(&bearer(&key)).unwrap().id, client.id); let mut anthropic = HeaderMap::new(); anthropic.insert("authorization", "Bearer ".parse().unwrap()); anthropic.insert("x-api-key", key.parse().unwrap()); - assert_eq!( - clients.authenticate(&anthropic).unwrap().unwrap().id, - client.id - ); + assert_eq!(clients.authenticate(&anthropic).unwrap().id, client.id); // A rotated key replaces the old one. let (_, rotated) = clients .update( @@ -865,12 +865,7 @@ mod tests { ) .unwrap(); assert_eq!(clients.authenticate(&bearer(&key)), Err(Refusal::Unknown)); - assert!( - clients - .authenticate(&bearer(&rotated.unwrap())) - .unwrap() - .is_some() - ); + assert!(clients.authenticate(&bearer(&rotated.unwrap())).is_ok()); } #[test] @@ -880,7 +875,7 @@ mod tests { drop(clients); let reopened = Clients::open(dir.path()).unwrap(); assert_eq!(reopened.list(), vec![client]); - assert!(reopened.authenticate(&bearer(&key)).unwrap().is_some()); + assert!(reopened.authenticate(&bearer(&key)).is_ok()); } #[test] diff --git a/crates/douane/src/ledger.rs b/crates/douane/src/ledger.rs index ab5c69f..eb9dbc0 100644 --- a/crates/douane/src/ledger.rs +++ b/crates/douane/src/ledger.rs @@ -27,14 +27,48 @@ pub struct Call { pub cache_read_tokens: u64, pub cache_write_tokens: u64, pub error: Option, - /// The douane client that made the call; `None` without client keys. + /// The douane client that made the call; `None` for calls made before + /// client keys were required. #[serde(default)] pub client_id: Option, } +/// What one client spent on one model of one provider over a period. +/// `client_id` is empty for calls made before keys were required. +#[derive(Clone, Debug, Default, Serialize, PartialEq)] +pub struct ClientTotals { + pub client_id: String, + pub provider: String, + pub model: String, + pub calls: u64, + pub errors: u64, + pub input_tokens: u64, + pub output_tokens: u64, + pub cache_read_tokens: u64, + pub cache_write_tokens: u64, + pub latency_ms: u64, + pub last_at: String, +} + +/// One client's calls and tokens in one UTC hour, `hour` as `YYYY-MM-DDTHH`. +#[derive(Clone, Debug, Default, Serialize, PartialEq)] +pub struct ClientHour { + pub client_id: String, + pub hour: String, + pub calls: u64, + pub tokens: u64, +} + +#[derive(Clone, Debug, Default, Serialize, PartialEq)] +pub struct ClientStats { + pub totals: Vec, + pub hours: Vec, +} + enum Command { Record(Call), List(usize, oneshot::Sender>), + Stats(String, oneshot::Sender), Flush(oneshot::Sender<()>), } @@ -85,6 +119,9 @@ impl Ledger { })().unwrap_or_default(); let _=reply.send(rows); }, + Command::Stats(since,reply) => { + let _=reply.send(client_stats(&db,&since).unwrap_or_default()); + }, Command::Flush(reply) => { let _=db.execute_batch("PRAGMA wal_checkpoint(PASSIVE)"); let _=reply.send(()); }, } } @@ -132,6 +169,15 @@ impl Ledger { } rx.await.unwrap_or_default() } + /// Totals by client, provider and model, and by client and hour, of the + /// calls recorded since `since` (RFC 3339, UTC). + pub async fn client_stats(&self, since: String) -> ClientStats { + let (tx, rx) = oneshot::channel(); + if self.tx.send(Command::Stats(since, tx)).await.is_err() { + return ClientStats::default(); + } + rx.await.unwrap_or_default() + } pub async fn flush(&self) { let (tx, rx) = oneshot::channel(); if self.tx.send(Command::Flush(tx)).await.is_ok() { @@ -139,3 +185,99 @@ impl Ledger { } } } + +fn client_stats(db: &Connection, since: &str) -> rusqlite::Result { + let mut totals = db.prepare( + "SELECT coalesce(client_id,''),provider,model,count(*),coalesce(sum(status>=400 OR error IS NOT NULL),0), coalesce(sum(input_tokens),0),coalesce(sum(output_tokens),0),coalesce(sum(cache_read_tokens),0), coalesce(sum(cache_write_tokens),0),coalesce(sum(latency_ms),0),max(started_at) FROM subscription_calls WHERE started_at>=?1 GROUP BY 1,2,3 ORDER BY 1,2,3", + )?; + let totals = totals + .query_map([since], |r| { + Ok(ClientTotals { + client_id: r.get(0)?, + provider: r.get(1)?, + model: r.get(2)?, + calls: r.get(3)?, + errors: r.get(4)?, + input_tokens: r.get(5)?, + output_tokens: r.get(6)?, + cache_read_tokens: r.get(7)?, + cache_write_tokens: r.get(8)?, + latency_ms: r.get(9)?, + last_at: r.get(10)?, + }) + })? + .collect::>()?; + let mut hours = db.prepare( + "SELECT coalesce(client_id,''),substr(started_at,1,13),count(*), coalesce(sum(input_tokens+output_tokens),0) FROM subscription_calls WHERE started_at>=?1 GROUP BY 1,2 ORDER BY 2,1", + )?; + let hours = hours + .query_map([since], |r| { + Ok(ClientHour { + client_id: r.get(0)?, + hour: r.get(1)?, + calls: r.get(2)?, + tokens: r.get(3)?, + }) + })? + .collect::>()?; + Ok(ClientStats { totals, hours }) +} + +#[cfg(test)] +mod tests { + use super::*; + + fn call(id: &str, at: &str, client: Option<&str>, model: &str, status: u16) -> Call { + Call { + id: id.into(), + started_at: at.into(), + provider: "claude".into(), + account_id: "a".into(), + model: model.into(), + status, + latency_ms: 100, + input_tokens: 1000, + output_tokens: 50, + cache_read_tokens: 800, + client_id: client.map(Into::into), + ..Call::default() + } + } + + #[tokio::test] + async fn client_stats_sum_each_client_by_model_and_by_hour_since_a_time() { + let dir = tempfile::tempdir().unwrap(); + let ledger = Ledger::open(&dir.path().join("calls.sqlite")).unwrap(); + ledger.record(call("1", "2026-10-20T08:00:00Z", Some("nuno"), "opus", 200)); + ledger.record(call("2", "2026-10-21T08:10:00Z", Some("nuno"), "opus", 200)); + ledger.record(call("3", "2026-10-21T08:50:00Z", Some("nuno"), "opus", 429)); + ledger.record(call("4", "2026-10-21T09:05:00Z", Some("nuno"), "sonnet", 200)); + ledger.record(call("5", "2026-10-21T09:06:00Z", Some("famille"), "opus", 200)); + ledger.record(call("6", "2026-10-21T09:07:00Z", None, "opus", 200)); + ledger.flush().await; + let stats = ledger.client_stats("2026-10-21T00:00:00Z".into()).await; + let opus = stats + .totals + .iter() + .find(|t| t.client_id == "nuno" && t.model == "opus") + .unwrap(); + assert_eq!( + (opus.calls, opus.errors, opus.input_tokens, opus.output_tokens), + (2, 1, 2000, 100) + ); + assert_eq!(opus.cache_read_tokens, 1600); + assert_eq!(opus.last_at, "2026-10-21T08:50:00Z"); + assert_eq!(stats.totals.len(), 4); + assert!(stats.totals.iter().any(|t| t.client_id.is_empty())); + let nuno: Vec<_> = stats + .hours + .iter() + .filter(|h| h.client_id == "nuno") + .map(|h| (h.hour.as_str(), h.calls, h.tokens)) + .collect(); + assert_eq!( + nuno, + [("2026-10-21T08", 2, 2100), ("2026-10-21T09", 1, 1050)] + ); + } +} diff --git a/crates/douane/src/lib.rs b/crates/douane/src/lib.rs index d539a06..2ed12ef 100644 --- a/crates/douane/src/lib.rs +++ b/crates/douane/src/lib.rs @@ -56,6 +56,7 @@ pub fn router(state: Arc) -> Router { "/clients", get(management::clients).post(management::create_client), ) + .route("/clients/stats", get(management::client_stats)) .route( "/clients/{id}", patch(management::update_client).delete(management::delete_client), diff --git a/crates/douane/src/main.rs b/crates/douane/src/main.rs index 3f37a0f..2824bd1 100644 --- a/crates/douane/src/main.rs +++ b/crates/douane/src/main.rs @@ -70,7 +70,13 @@ async fn main() -> Result<()> { let listener = tokio::net::TcpListener::bind(&listen) .await .with_context(|| format!("binding {listen}"))?; - tracing::info!(listen=%listen,accounts=state.accounts.list().await.len(),"subscription proxy ready"); + let clients = state.clients.list().len(); + tracing::info!(listen=%listen,accounts=state.accounts.list().await.len(),clients,"subscription proxy ready"); + if clients == 0 { + tracing::warn!( + "no client yet: every API call is refused until one is created on the Clients page or with `douanectl client add`" + ); + } axum::serve(listener, douane::router(state.clone())) .with_graceful_shutdown(shutdown()) .await?; diff --git a/crates/douane/src/management.rs b/crates/douane/src/management.rs index 317a499..e3f4c75 100644 --- a/crates/douane/src/management.rs +++ b/crates/douane/src/management.rs @@ -692,7 +692,7 @@ pub async fn public_models( Query(query): Query, ) -> Response { match state.clients.authenticate(&headers) { - Ok(client) => Json(list_models(&state, &query, client.as_ref()).await).into_response(), + Ok(client) => Json(list_models(&state, &query, Some(&client)).await).into_response(), Err(refusal) => error(StatusCode::UNAUTHORIZED, refusal.message()), } } @@ -827,7 +827,7 @@ pub async fn public_quotas( Query(read): Query, ) -> Response { let client = match state.clients.authenticate(&headers) { - Ok(client) => client, + Ok(client) => Some(client), Err(refusal) => return error(StatusCode::UNAUTHORIZED, refusal.message()), }; if matches!(read.refresh.as_deref(), Some("1" | "true")) { @@ -876,12 +876,33 @@ pub async fn clients(State(state): State>) -> Json { let now = time::OffsetDateTime::now_utc().unix_timestamp(); let list: Vec = state.clients.list().iter().map(|c| c.public()).collect(); Json(json!({ - "enforced": !list.is_empty(), "clients": list, "usage": state.clients.usage_report(now), })) } +#[derive(Deserialize)] +pub struct StatsPeriod { + hours: Option, +} + +/// Longest period the client statistics cover: 90 days. +const MAX_STATS_HOURS: u32 = 90 * 24; + +/// What each client spent over the last `hours` (24 by default): totals by +/// provider and model, and calls and tokens by UTC hour. +pub async fn client_stats( + State(state): State>, + Query(period): Query, +) -> Json { + let hours = period.hours.unwrap_or(24).clamp(1, MAX_STATS_HOURS); + let since = crate::subscriptions::timestamp( + time::OffsetDateTime::now_utc() - time::Duration::hours(hours.into()), + ); + let stats = state.ledger.client_stats(since.clone()).await; + Json(json!({"since": since, "totals": stats.totals, "hours": stats.hours})) +} + pub async fn create_client( State(state): State>, Json(patch): Json, diff --git a/crates/douane/src/quota_view.rs b/crates/douane/src/quota_view.rs index a25c228..d3be3ee 100644 --- a/crates/douane/src/quota_view.rs +++ b/crates/douane/src/quota_view.rs @@ -764,11 +764,21 @@ mod tests { vec![quota_credit("extra", Some(2.0), Some(25.0))], )) .await; + let (_, key) = state + .clients + .create(crate::clients::ClientPatch { + name: Some("tests".into()), + ..Default::default() + }) + .unwrap(); + // Copied into each request the closure below builds. + let bearer: &'static str = Box::leak(format!("Bearer {key}").into_boxed_str()); let get = |state: std::sync::Arc| async move { let response = crate::router(state) .oneshot( Request::builder() .uri("/v1/quotas") + .header("authorization", bearer) .body(Body::empty()) .unwrap(), ) diff --git a/crates/douane/src/relay.rs b/crates/douane/src/relay.rs index dac281b..38a2baf 100644 --- a/crates/douane/src/relay.rs +++ b/crates/douane/src/relay.rs @@ -397,7 +397,7 @@ pub async fn forward( body: Bytes, ) -> Response { let client = match state.clients.authenticate(&headers) { - Ok(client) => client, + Ok(client) => Some(client), Err(refusal) => return error(StatusCode::UNAUTHORIZED, refusal.message()), }; let count_tokens = uri.path().ends_with("/messages/count_tokens"); diff --git a/crates/douane/src/socket.rs b/crates/douane/src/socket.rs index 6089aa6..8fe9cfd 100644 --- a/crates/douane/src/socket.rs +++ b/crates/douane/src/socket.rs @@ -294,7 +294,7 @@ async fn connect_replacement( // A key revoked since the socket opened gets no replacement account. let client = state.clients.authenticate(headers).ok()?; let (_, candidates) = state - .candidates_for(model, Some(provider.as_str()), session, client.as_ref()) + .candidates_for(model, Some(provider.as_str()), session, Some(&client)) .await .ok()?; connect_pool( @@ -374,7 +374,7 @@ async fn run(mut downstream: WebSocket, state: Arc, headers: HeaderMap return; } let mut client = match state.clients.authenticate(&headers) { - Ok(client) => client, + Ok(client) => Some(client), Err(refusal) => { reject(&mut downstream, refusal.message()).await; return; @@ -494,7 +494,7 @@ async fn run(mut downstream: WebSocket, state: Arc, headers: HeaderMap // Each request reads the client again: a revoked key stops here, // and changed access or shares apply to the next request. client = match state.clients.authenticate(&headers) { - Ok(client) => client, + Ok(client) => Some(client), Err(refusal) => { reject(&mut downstream, refusal.message()).await; break; diff --git a/crates/douane/tests/antigravity_harness.rs b/crates/douane/tests/antigravity_harness.rs index 047798c..dccf89b 100644 --- a/crates/douane/tests/antigravity_harness.rs +++ b/crates/douane/tests/antigravity_harness.rs @@ -176,6 +176,13 @@ impl Fixture { config.server.auth_dir = dir.path().join("auth"); config.server.database = dir.path().join("calls.sqlite"); let state = AppState::new(config, None).unwrap(); + let (_, key) = state + .clients + .create(douane::clients::ClientPatch { + name: Some("tests".into()), + ..Default::default() + }) + .unwrap(); state.accounts.import(json!({"type":provider,"access_token":"synthetic-access","base_url":upstream,"models":["synthetic-thinking","claude-synthetic"]}), None).await.unwrap(); state.refresh_models().await; let (url, gate_task) = serve(douane::router(state.clone())).await; @@ -185,6 +192,14 @@ impl Fixture { url, client: reqwest::Client::builder() .timeout(Duration::from_secs(5)) + .default_headers( + [( + reqwest::header::AUTHORIZATION, + format!("Bearer {key}").parse().unwrap(), + )] + .into_iter() + .collect(), + ) .build() .unwrap(), tasks: vec![up_task, gate_task], diff --git a/crates/douane/tests/clients.rs b/crates/douane/tests/clients.rs index a0300a6..f6ea7f3 100644 --- a/crates/douane/tests/clients.rs +++ b/crates/douane/tests/clients.rs @@ -1,6 +1,6 @@ -//! Client keys over HTTP: the open API closes once a client exists, each key -//! reaches only the accounts its access allows, and keys outlive a restart -//! and an export. +//! Client keys over HTTP: no call passes without one, even before the first +//! client exists; each key reaches only the accounts its access allows, keys +//! outlive a restart and an export, and each client's spending is reported. use std::{sync::Arc, time::Duration}; use axum::{ @@ -139,14 +139,18 @@ async fn a_client_key_reaches_only_the_accounts_its_access_allows() { .unwrap(); } gateway.state.refresh_models().await; - // No client yet: the API is open, placeholder keys included. - assert_eq!(gateway.models(None).await.1.len(), 2); + // No client yet: every call is refused, and told how to get a key. + assert_eq!(gateway.models(None).await.0, 401); assert_eq!( gateway .chat(Some("boite-subscription-proxy"), "spare/chat-model") .await, - 200 + 401 ); + let (_, refusal) = gateway + .send(reqwest::Method::GET, "/v1/quotas", None, None) + .await; + assert!(refusal.to_string().contains("no client yet"), "{refusal}"); let (status, created) = gateway .send( @@ -177,7 +181,7 @@ async fn a_client_key_reaches_only_the_accounts_its_access_allows() { .await; assert_eq!(status, 401, "{quotas}"); - // The ledger names the client of each call. + // The ledger names the client of each call, and the statistics sum them. gateway.state.ledger.flush().await; let calls = gateway.state.ledger.calls(10).await; let id = created["client"]["id"].as_str().unwrap(); @@ -186,6 +190,30 @@ async fn a_client_key_reaches_only_the_accounts_its_access_allows() { .iter() .any(|c| c.client_id.as_deref() == Some(id) && c.status == 200) ); + let (status, stats) = gateway + .send( + reqwest::Method::GET, + "/admin/api/clients/stats?hours=24", + None, + None, + ) + .await; + assert_eq!(status, 200, "{stats}"); + let totals = stats["totals"].as_array().unwrap(); + let loop_model = totals + .iter() + .find(|t| t["client_id"] == id && t["provider"] == "loop" && t["model"] == "chat-model") + .unwrap_or_else(|| panic!("{stats}")); + assert_eq!(loop_model["calls"], 1); + assert_eq!(loop_model["input_tokens"], 3); + assert_eq!(loop_model["output_tokens"], 1); + assert!( + stats["hours"] + .as_array() + .unwrap() + .iter() + .any(|h| h["client_id"] == id && h["calls"].as_u64() >= Some(1)) + ); // The account folder still opens: client files are not accounts. assert_eq!( @@ -223,7 +251,7 @@ async fn a_client_key_reaches_only_the_accounts_its_access_allows() { (200, vec!["loop/chat-model".to_owned()]) ); - // Deleting the last client opens the API again. + // Deleting the last client closes the API to everyone. let (status, _) = target .send( reqwest::Method::DELETE, @@ -233,7 +261,8 @@ async fn a_client_key_reaches_only_the_accounts_its_access_allows() { ) .await; assert_eq!(status, 204); - assert_eq!(target.models(None).await.0, 200); + assert_eq!(target.models(None).await.0, 401); + assert_eq!(target.models(Some(&key)).await.0, 401); } #[tokio::test] diff --git a/crates/douane/tests/endpoints.rs b/crates/douane/tests/endpoints.rs index b0bcdfa..90fde6b 100644 --- a/crates/douane/tests/endpoints.rs +++ b/crates/douane/tests/endpoints.rs @@ -161,6 +161,13 @@ impl Gateway { config.server.auth_dir = directory.path().join("accounts"); config.server.database = directory.path().join("calls.sqlite"); let state = AppState::new(config, None).unwrap(); + let (_, key) = state + .clients + .create(douane::clients::ClientPatch { + name: Some("tests".into()), + ..Default::default() + }) + .unwrap(); for account in accounts { state.accounts.import(account.clone(), None).await.unwrap(); } @@ -171,6 +178,14 @@ impl Gateway { server, client: reqwest::Client::builder() .timeout(Duration::from_secs(5)) + .default_headers( + [( + reqwest::header::AUTHORIZATION, + format!("Bearer {key}").parse().unwrap(), + )] + .into_iter() + .collect(), + ) .build() .unwrap(), _directory: directory, @@ -181,7 +196,6 @@ impl Gateway { let response = self .client .post(format!("{}{path}", self.server.url)) - .header("authorization", "Bearer caller-key") .json(&body) .send() .await diff --git a/crates/douane/tests/export_restore.rs b/crates/douane/tests/export_restore.rs index 2c7529a..bf4b001 100644 --- a/crates/douane/tests/export_restore.rs +++ b/crates/douane/tests/export_restore.rs @@ -106,6 +106,28 @@ impl Instance { async fn post(&self, path: &str, body: Value) -> (u16, Value) { self.send(reqwest::Method::POST, path, Some(body)).await } + + /// A client API call with the key of a client created for it. + async fn call(&self, path: &str, body: Value) -> (u16, Value) { + let (_, key) = self + .state + .clients + .create(douane::clients::ClientPatch { + name: Some(format!("tests {}", self.state.clients.list().len())), + ..Default::default() + }) + .unwrap(); + let response = self + .client + .post(format!("{}{path}", self.server.url)) + .bearer_auth(key) + .json(&body) + .send() + .await + .unwrap(); + let status = response.status().as_u16(); + (status, response.json().await.unwrap_or(Value::Null)) + } } fn endpoint(route: &str, base: &str, key: &str) -> Value { @@ -201,7 +223,7 @@ async fn an_export_restored_into_a_fresh_instance_serves_its_endpoints() { assert_eq!(routes, ["loop", "spare"]); let (status, answer) = target - .post( + .call( "/v1/chat/completions", json!({"model":"loop/chat-model","messages":[{"role":"user","content":"hi"}]}), ) @@ -211,7 +233,7 @@ async fn an_export_restored_into_a_fresh_instance_serves_its_endpoints() { assert_eq!(*keys.lock().unwrap(), ["Bearer key-loop"]); // The disabled model stays disabled on the new instance. let (status, _) = target - .post( + .call( "/v1/chat/completions", json!({"model":"spare/chat-model","messages":[{"role":"user","content":"hi"}]}), ) diff --git a/crates/douane/tests/quota_overview.rs b/crates/douane/tests/quota_overview.rs index 1164d91..e7fceb7 100644 --- a/crates/douane/tests/quota_overview.rs +++ b/crates/douane/tests/quota_overview.rs @@ -21,6 +21,19 @@ fn state(directory: &std::path::Path, path: Option) -> Arc String { + let name = format!("tests {}", state.clients.list().len()); + state + .clients + .create(douane::clients::ClientPatch { + name: Some(name), + ..Default::default() + }) + .unwrap() + .1 +} + async fn send(app: &axum::Router, request: Request) -> (StatusCode, Value) { let response = app.clone().oneshot(request).await.unwrap(); let status = response.status(); @@ -60,10 +73,17 @@ async fn quotas_use_the_same_client_authentication_as_models() { ) .await .unwrap(); + let key = client_key(&state); let app = douane::router(state); for bearer in [None, Some("douane"), Some("subscription-proxy-key")] { let (models, _) = send(&app, get("/v1/models", bearer)).await; - let (status, body) = send(&app, get("/v1/quotas", bearer)).await; + let (status, _) = send(&app, get("/v1/quotas", bearer)).await; + assert_eq!(status, models); + assert_eq!(status, StatusCode::UNAUTHORIZED); + } + { + let (models, _) = send(&app, get("/v1/models", Some(&key))).await; + let (status, body) = send(&app, get("/v1/quotas", Some(&key))).await; assert_eq!(status, models); assert_eq!(status, StatusCode::OK); assert_eq!(body["object"], "quotas"); @@ -105,11 +125,12 @@ async fn a_client_refresh_reads_every_account_and_reports_failures_at_once() { ) .await .unwrap(); + let key = client_key(&state); let app = douane::router(state); - let (_, body) = send(&app, get("/v1/quotas", None)).await; + let (_, body) = send(&app, get("/v1/quotas", Some(&key))).await; assert_eq!(body["providers"].as_array().unwrap().len(), 1); assert_eq!(body["providers"][0]["entries"][0]["error"], Value::Null); - let (status, body) = send(&app, get("/v1/quotas?refresh=1", None)).await; + let (status, body) = send(&app, get("/v1/quotas?refresh=1", Some(&key))).await; assert_eq!(status, StatusCode::OK); assert_eq!(body["providers"].as_array().unwrap().len(), 1); assert_eq!(body["providers"][0]["provider"], "antigravity"); @@ -133,6 +154,7 @@ async fn quota_display_defaults_to_accounts_for_every_provider() { .await .unwrap(); } + let key = client_key(&state); let app = douane::router(state.clone()); let (_, settings) = send(&app, get("/admin/api/settings", Some("fixture-management"))).await; assert_eq!(settings["quota_display"], json!({})); @@ -145,7 +167,7 @@ async fn quota_display_defaults_to_accounts_for_every_provider() { .quota_display(SubscriptionProvider::Codex), QuotaDisplay::Accounts ); - let (_, body) = send(&app, get("/v1/quotas", None)).await; + let (_, body) = send(&app, get("/v1/quotas", Some(&key))).await; assert_eq!(body["providers"].as_array().unwrap().len(), 1); assert_eq!(body["providers"][0]["provider"], "codex"); assert_eq!(body["providers"][0]["name"], "Codex"); @@ -174,6 +196,7 @@ async fn quota_display_persists_through_the_settings_api() { .await .unwrap(); } + let key = client_key(&state); let app = douane::router(state); let (status, settings) = send( @@ -197,7 +220,7 @@ async fn quota_display_persists_through_the_settings_api() { QuotaDisplay::Accounts ); - let (_, body) = send(&app, get("/v1/quotas", None)).await; + let (_, body) = send(&app, get("/v1/quotas", Some(&key))).await; let provider = &body["providers"][0]; assert_eq!(provider["display"], "average"); assert_eq!(provider["entries"].as_array().unwrap().len(), 1); @@ -219,7 +242,7 @@ async fn quota_display_persists_through_the_settings_api() { let (status, settings) = send(&app, patch_settings(json!({"quota_display":{}}))).await; assert_eq!(status, StatusCode::OK); assert_eq!(settings["quota_display"], json!({})); - let (_, body) = send(&app, get("/v1/quotas", None)).await; + let (_, body) = send(&app, get("/v1/quotas", Some(&key))).await; assert_eq!(body["providers"][0]["display"], "accounts"); assert_eq!(body["providers"][0]["entries"].as_array().unwrap().len(), 2); } diff --git a/crates/douane/tests/request_body_limit.rs b/crates/douane/tests/request_body_limit.rs index f703170..3df075a 100644 --- a/crates/douane/tests/request_body_limit.rs +++ b/crates/douane/tests/request_body_limit.rs @@ -12,12 +12,20 @@ async fn post_messages(size: usize) -> StatusCode { config.server.auth_dir = directory.path().join("auth"); config.server.database = directory.path().join("requests.sqlite"); let state = AppState::new(config, None).unwrap(); + let (_, key) = state + .clients + .create(douane::clients::ClientPatch { + name: Some("tests".into()), + ..Default::default() + }) + .unwrap(); douane::router(state) .oneshot( Request::builder() .method("POST") .uri("/v1/messages") .header("content-type", "application/json") + .header("authorization", format!("Bearer {key}")) .header("content-length", size) .body(Body::from(vec![b'a'; size])) .unwrap(), diff --git a/crates/douane/tests/transports.rs b/crates/douane/tests/transports.rs index 08d25ff..6afcf86 100644 --- a/crates/douane/tests/transports.rs +++ b/crates/douane/tests/transports.rs @@ -91,6 +91,8 @@ struct Fixture { gateway: Server, upstream: Server, client: reqwest::Client, + /// The douane client key every call presents. + key: String, accounts: Vec<(String, String, String)>, _directory: TempDir, } @@ -120,6 +122,13 @@ impl Fixture { config.server.database = directory.path().join("calls.sqlite"); config.settings.strategy = strategy; let state = AppState::new(config, None).unwrap(); + let (_, key) = state + .clients + .create(douane::clients::ClientPatch { + name: Some("tests".into()), + ..Default::default() + }) + .unwrap(); let mut accounts = vec![]; for (provider, name) in providers { let summary = state @@ -136,7 +145,19 @@ impl Fixture { mock, gateway, upstream, - client: reqwest::Client::builder().timeout(WAIT).build().unwrap(), + client: reqwest::Client::builder() + .timeout(WAIT) + .default_headers( + [( + reqwest::header::AUTHORIZATION, + format!("Bearer {key}").parse().unwrap(), + )] + .into_iter() + .collect(), + ) + .build() + .unwrap(), + key, accounts, _directory: directory, } @@ -148,11 +169,12 @@ impl Fixture { self.gateway.url.replace("http://", "ws://") ); let mut request = url.into_client_request().unwrap(); + let bearer = format!("Bearer {}", self.key); for (name, value) in [ ("session_id", session), ("thread-id", session), - ("authorization", "Bearer worthless-caller-key"), - ("x-api-key", "worthless-caller-key"), + ("authorization", bearer.as_str()), + ("x-api-key", self.key.as_str()), ("x-douane-admin", "worthless-admin-key"), ("x-management-key", "worthless-management-key"), ("chatgpt-account-id", "worthless-caller-account"), @@ -175,8 +197,8 @@ impl Fixture { .header("session-id", session) .header("x-opencode-session", session) .header("thread-id", session) - .header("authorization", "Bearer worthless-caller-key") - .header("x-api-key", "worthless-caller-key") + .header("authorization", format!("Bearer {}", self.key)) + .header("x-api-key", &self.key) .header("x-douane-admin", "worthless-admin-key") .header("x-management-key", "worthless-management-key") .header("chatgpt-account-id", "worthless-caller-account") @@ -485,10 +507,6 @@ async fn next(socket: &mut ClientSocket) -> Value { fn assert_private_headers(headers: &HeaderMap, session: &str) { assert_eq!(headers.get("session_id").unwrap(), session); assert_eq!(headers.get("thread-id").unwrap(), session); - assert_ne!( - headers.get("authorization").unwrap(), - "Bearer worthless-caller-key" - ); for name in ["x-api-key", "x-douane-admin", "x-management-key", "cookie"] { assert!( headers.get(name).is_none(), diff --git a/dash/build/_app/immutable/assets/2.Fm2AbXXC.css b/dash/build/_app/immutable/assets/2.Fm2AbXXC.css deleted file mode 100644 index 15ba1de..0000000 --- a/dash/build/_app/immutable/assets/2.Fm2AbXXC.css +++ /dev/null @@ -1 +0,0 @@ -.provider-mark.svelte-1vulm01{color:inherit;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}img.svelte-1vulm01{object-fit:contain;width:100%;height:100%;display:block}.light-mat.svelte-1vulm01{background:#eaf0ff;border-radius:5px;padding:2px}.meter-label.svelte-1dmbtuk{color:var(--muted);justify-content:space-between;gap:14px;margin-bottom:9px;font-size:15px;display:flex}.meter-label.svelte-1dmbtuk span:where(.svelte-1dmbtuk):last-child{color:var(--text);white-space:nowrap}.meter-track.svelte-1dmbtuk{background:#2a3a55;border-radius:4px;height:7px;overflow:hidden}.meter-fill.svelte-1dmbtuk{background:var(--green);border-radius:inherit;height:100%}.meter-fill.medium.svelte-1dmbtuk{background:var(--yellow)}.meter-fill.low.svelte-1dmbtuk{background:var(--red)}.compact.svelte-1dmbtuk .meter-label:where(.svelte-1dmbtuk){display:none}.compact.svelte-1dmbtuk .meter-track:where(.svelte-1dmbtuk){height:5px}.account-name.svelte-6htcw3{text-align:left;background:0 0;border:0;align-items:center;gap:9px;max-width:100%;padding:3px 0;font-size:17px;font-weight:600;line-height:1.45;display:inline-flex}.account-name.svelte-6htcw3 span:where(.svelte-6htcw3){overflow-wrap:anywhere}.account-name.svelte-6htcw3 svg{color:var(--faint);opacity:.55;flex-shrink:0}.account-name.svelte-6htcw3:hover{color:var(--blue)}.account-name.svelte-6htcw3:hover svg,.account-name.svelte-6htcw3:focus-visible svg{opacity:1}.name-editor.svelte-6htcw3{flex-wrap:wrap;align-items:center;gap:6px;max-width:100%;display:flex}.name-editor.svelte-6htcw3 input:where(.svelte-6htcw3){flex:1;width:100%;min-width:120px;height:44px;font-size:16px}.name-actions.svelte-6htcw3{display:flex}.rename-error.svelte-6htcw3{color:var(--red);flex-basis:100%;margin:4px 0;font-size:15px;line-height:1.5}.private-email.svelte-1n2y5u{max-width:100%;color:var(--muted);text-align:left;background:0 0;border:0;align-items:center;gap:10px;padding:5px 0;font-size:15px;line-height:1.4;display:flex}.private-email.svelte-1n2y5u span:where(.svelte-1n2y5u){overflow-wrap:anywhere}.blurred.svelte-1n2y5u{filter:blur(5px);-webkit-user-select:none;user-select:none}.private-email.svelte-1n2y5u svg{color:var(--faint);flex-shrink:0}.private-email.svelte-1n2y5u:hover{color:var(--text)}.reset-control.svelte-zw103y{flex-wrap:wrap;align-items:center;gap:8px;margin-top:15px;display:flex}.reset-button.svelte-zw103y{min-height:42px;padding:8px 11px;font-size:15px}.reset-status.svelte-zw103y{color:var(--muted);font-size:15px}.reset-retry.svelte-zw103y{color:var(--blue);background:0 0;border:0;padding:4px 0;font-size:15px}.reset-error.svelte-zw103y{color:var(--red);overflow-wrap:anywhere;flex-basis:100%;margin:6px 0;font-size:15px;line-height:1.5}dialog.svelte-zw103y{border:1px solid var(--border);background:var(--surface);width:100%;max-width:min(520px,100vw - 32px);color:var(--text);border-radius:16px;padding:0;box-shadow:0 24px 100px #0008}dialog.svelte-zw103y::backdrop{-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);background:#030711b5}.reset-dialog.svelte-zw103y{padding:25px}.reset-dialog.svelte-zw103y header:where(.svelte-zw103y){justify-content:space-between;align-items:center;gap:15px;display:flex}.reset-dialog.svelte-zw103y h2:where(.svelte-zw103y){font-family:var(--font-display);font-size:24px}.reset-dialog.svelte-zw103y p:where(.svelte-zw103y){color:var(--muted);font-size:16px;line-height:1.6}.reset-dialog.svelte-zw103y .reset-account:where(.svelte-zw103y){color:var(--text);font-weight:600}.reset-dialog.svelte-zw103y .reset-error:where(.svelte-zw103y){color:var(--red)}.reset-dialog.svelte-zw103y .reset-result:where(.svelte-zw103y){color:var(--green)}.dialog-actions.svelte-zw103y{flex-wrap:wrap;justify-content:flex-end;gap:10px;margin-top:24px;display:flex}@media (width<=650px){.reset-dialog.svelte-zw103y{padding:20px}.dialog-actions.svelte-zw103y .button:where(.svelte-zw103y){flex:1}.reset-dialog.svelte-zw103y h2:where(.svelte-zw103y){font-size:22px}}.empty-state.svelte-18g3sj1{text-align:center;flex-direction:column;justify-content:center;align-items:center;min-height:260px;padding:36px 20px;display:flex}.empty-icon.svelte-18g3sj1{width:52px;height:52px;color:var(--blue);background:#5478f610;border:1px solid #7899ff30;border-radius:14px;place-items:center;margin-bottom:18px;display:grid}h3.svelte-18g3sj1{font-family:var(--font-display);letter-spacing:-.025em;margin:0 0 9px;font-size:19px;font-weight:600}p.svelte-18g3sj1{color:var(--muted);max-width:380px;margin:0 0 20px;font-size:15px;line-height:1.6}.quota-toolbar.svelte-137c7x1{justify-content:flex-end;margin:20px 0 26px}.quota-toolbar.svelte-137c7x1>select:where(.svelte-137c7x1){background:var(--surface);font-size:15px}.provider-groups.svelte-137c7x1{gap:30px;display:grid}.provider-heading.svelte-137c7x1{align-items:center;gap:12px;margin:0 0 14px;display:flex}.provider-heading.svelte-137c7x1 h2:where(.svelte-137c7x1){font-family:var(--font-display);font-size:23px;font-weight:600}.provider-heading.svelte-137c7x1>span:where(.svelte-137c7x1){color:var(--muted);margin-left:auto;font-size:15px}.display-choice.svelte-137c7x1{color:var(--muted);align-items:center;gap:10px;margin-left:10px;font-size:15px;display:flex}.display-choice.svelte-137c7x1 select:where(.svelte-137c7x1){background:var(--surface);font-size:15px}.windows-toggle[aria-expanded=true].svelte-137c7x1{border-color:var(--primary);color:var(--text)}.window-choices.svelte-137c7x1{border:1px solid var(--border);background:var(--surface);border-radius:12px;gap:4px;margin:0 0 14px;padding:10px 16px;display:grid}.window-choice.svelte-137c7x1{align-items:center;gap:14px;min-height:48px;display:flex}.window-choice.svelte-137c7x1+.window-choice:where(.svelte-137c7x1){border-top:1px solid var(--border)}.window-name.svelte-137c7x1{flex:1;min-width:0;font-size:16px}.hidden-window.svelte-137c7x1 .window-name:where(.svelte-137c7x1){color:var(--muted)}.primary-choice.svelte-137c7x1{min-height:36px;color:var(--muted);background:0 0;border:1px solid #0000;border-radius:9px;align-items:center;gap:7px;padding:0 11px;font-size:15px;display:inline-flex}.primary-choice.svelte-137c7x1:hover:not(:disabled){border-color:var(--border);color:var(--text)}.primary-choice.on.svelte-137c7x1{border-color:var(--primary);color:var(--text)}.primary-choice.on.svelte-137c7x1 svg{color:var(--primary);fill:var(--primary)}.window-default.svelte-137c7x1{color:var(--muted);margin:6px 0 4px;font-size:15px}.quota-row.svelte-137c7x1{border-bottom:1px solid var(--border);grid-template-columns:minmax(220px,.8fr) minmax(320px,1.8fr) auto;align-items:center;gap:26px;padding:25px 24px;display:grid}.quota-row.svelte-137c7x1:last-child{border-bottom:0}.account-identity.svelte-137c7x1{min-width:0}.account-plan.svelte-137c7x1{color:var(--muted);margin:4px 0;font-size:15px}.quota-details.svelte-137c7x1{min-width:0}.verification-needed.svelte-137c7x1{justify-items:start;gap:12px;margin-bottom:16px;display:grid}.verification-needed.svelte-137c7x1 p:where(.svelte-137c7x1){color:var(--muted);margin:0;font-size:16px;line-height:1.5}.quota-windows.svelte-137c7x1{grid-template-columns:repeat(2,minmax(130px,1fr));gap:23px 28px;display:grid}.reset-date.svelte-137c7x1{color:var(--muted);align-items:center;gap:7px;margin:11px 0 0;font-size:15px;line-height:1.4;display:flex}.reset-date.svelte-137c7x1 svg{color:var(--faint);flex-shrink:0}.quota-unavailable.svelte-137c7x1{color:var(--muted);grid-column:1/-1;margin:0;font-size:16px}.account-state.svelte-137c7x1{justify-content:flex-end;align-items:center;gap:8px;display:flex}.disabled-row.svelte-137c7x1{opacity:.65}.credit-windows.svelte-137c7x1{border-top:1px solid var(--border);gap:18px;margin-top:23px;padding-top:18px;display:grid}.credit-window.svelte-137c7x1>div:where(.svelte-137c7x1){justify-content:space-between;gap:12px;font-size:15px;display:flex}.credit-window.svelte-137c7x1 strong:where(.svelte-137c7x1){font-weight:600}.credit-window.svelte-137c7x1 strong:where(.svelte-137c7x1)>span:where(.svelte-137c7x1){font-weight:400}.credit-window.svelte-137c7x1>p:where(.svelte-137c7x1){color:var(--muted);margin:8px 0 0;font-size:15px}@media (width<=1250px){.quota-row.svelte-137c7x1{grid-template-columns:minmax(190px,.7fr) minmax(260px,1.3fr);gap:22px}.account-state.svelte-137c7x1{grid-column:1/-1;margin-top:-8px}}@media (width<=650px){.quota-toolbar.svelte-137c7x1{flex-wrap:nowrap;gap:10px;margin:18px 0 25px}.quota-toolbar.svelte-137c7x1>select:where(.svelte-137c7x1){max-width:140px;padding:0 8px}.quota-toolbar.svelte-137c7x1>.search-input:where(.svelte-137c7x1){width:auto;min-width:0}.provider-groups.svelte-137c7x1{gap:28px}.provider-heading.svelte-137c7x1{flex-wrap:wrap}.provider-heading.svelte-137c7x1 h2:where(.svelte-137c7x1){font-size:22px}.display-choice.svelte-137c7x1{flex-basis:100%;justify-content:space-between;margin-left:0}.display-choice.svelte-137c7x1 select:where(.svelte-137c7x1){max-width:200px;padding:0 8px}.windows-toggle.svelte-137c7x1{margin-left:auto}.window-choices.svelte-137c7x1{padding:6px 14px}.window-choice.svelte-137c7x1{gap:10px}.primary-choice.svelte-137c7x1{padding:0 8px}.quota-row.svelte-137c7x1{grid-template-columns:1fr;gap:22px;padding:20px 18px}.quota-windows.svelte-137c7x1{grid-template-columns:1fr;gap:23px}.account-state.svelte-137c7x1{grid-column:auto;justify-content:space-between;margin-top:0}.credit-window.svelte-137c7x1>div:where(.svelte-137c7x1){flex-wrap:wrap}}.reserve.svelte-c6cuiu{width:fit-content;color:var(--muted);background:0 0;border:0;align-items:center;gap:7px;margin-top:8px;padding:3px 0;font-size:15px;display:flex}.reserve.svelte-c6cuiu svg{color:var(--faint);flex-shrink:0}.reserve.set.svelte-c6cuiu{color:var(--text)}.reserve.set.svelte-c6cuiu svg,.reserve.svelte-c6cuiu:hover{color:var(--blue)}.reserve-editor.svelte-c6cuiu{flex-wrap:wrap;align-items:center;gap:6px 10px;margin-top:8px;display:flex}.reserve-editor.svelte-c6cuiu label:where(.svelte-c6cuiu){color:var(--muted);align-items:center;gap:8px;font-size:15px;display:flex}.reserve-editor.svelte-c6cuiu input:where(.svelte-c6cuiu){width:76px;height:40px;font-size:16px}.reserve-actions.svelte-c6cuiu{display:flex}.reserve-windows.svelte-c6cuiu{flex-wrap:wrap;flex-basis:100%;gap:6px;display:flex}.chip.svelte-c6cuiu{border:1px solid var(--border);color:var(--muted);background:0 0;border-radius:999px;padding:5px 11px;font-size:14px;transition:background .15s,border-color .15s,color .15s}.chip.svelte-c6cuiu:hover:not(:disabled){border-color:var(--blue);color:var(--text)}.chip.on.svelte-c6cuiu{border-color:var(--blue);color:var(--text);background:#5478f622}.link-button.svelte-c6cuiu{color:var(--muted);background:0 0;border:0;padding:3px 0;font-size:15px;text-decoration:underline}.link-button.svelte-c6cuiu:hover{color:var(--red)}.reserve-error.svelte-c6cuiu{color:var(--red);flex-basis:100%;margin:2px 0;font-size:15px;line-height:1.5}.reserve-note.svelte-c6cuiu{max-width:320px;color:var(--muted);margin:6px 0 0;font-size:14px;line-height:1.45}.reserve-note.reached.svelte-c6cuiu{color:var(--yellow)}.endpoint-line.svelte-1n2vmw9{color:var(--muted);flex-wrap:wrap;align-items:center;gap:6px 9px;margin-top:7px;font-size:14px;display:flex}.endpoint-line.svelte-1n2vmw9 code:where(.svelte-1n2vmw9){color:var(--text);font-size:14px}.endpoint-url.svelte-1n2vmw9{text-overflow:ellipsis;white-space:nowrap;max-width:260px;overflow:hidden}.endpoint-format.svelte-1n2vmw9{border:1px solid var(--border);border-radius:6px;padding:2px 7px;font-size:13px}.endpoint-editor.svelte-1n2vmw9{gap:9px;max-width:340px;margin-top:10px;display:grid}.endpoint-editor.svelte-1n2vmw9 label:where(.svelte-1n2vmw9){color:var(--muted);gap:5px;font-size:14px;display:grid}.endpoint-editor.svelte-1n2vmw9 input:where(.svelte-1n2vmw9),.endpoint-editor.svelte-1n2vmw9 select:where(.svelte-1n2vmw9){width:100%;font-size:14px}.editor-actions.svelte-1n2vmw9{gap:8px;margin-top:4px;display:flex}.drop-zone.svelte-1x1hfd6{color:var(--muted);background:#111b2e80;border:1px dashed #3c5279;border-radius:11px;justify-content:center;align-items:center;gap:10px;margin-bottom:18px;padding:20px;font-size:15px;line-height:1.5;display:flex}.drop-zone.dragging.svelte-1x1hfd6{border-color:var(--blue);color:var(--text);background:#5478f612}.drop-zone.svelte-1x1hfd6 svg{flex-shrink:0}.account-table-wrap.svelte-1x1hfd6{overflow-x:auto}td.svelte-1x1hfd6:first-child{min-width:200px}.inline-provider.svelte-1x1hfd6{white-space:nowrap;align-items:center;gap:9px;font-size:16px;display:inline-flex}.account-plan.svelte-1x1hfd6{color:var(--muted);margin-top:7px;font-size:15px}.reserve-cell.svelte-1x1hfd6{min-width:190px}.verified-at.svelte-1x1hfd6{white-space:nowrap}.reserve-cell.svelte-1x1hfd6 .reserve,.reserve-cell.svelte-1x1hfd6 .reserve-editor{margin-top:0}.row-actions.svelte-1x1hfd6{align-items:center;gap:14px;display:flex}.inline-error.svelte-1x1hfd6{max-width:350px;color:var(--red);font-size:15px}.delete-confirmation.svelte-1x1hfd6{min-width:210px;margin-top:12px;font-size:15px}.delete-confirmation.svelte-1x1hfd6 p:where(.svelte-1x1hfd6){margin:0 0 10px}.delete-confirmation.svelte-1x1hfd6 .button:where(.svelte-1x1hfd6){margin-right:5px}@media (width<=900px){table.svelte-1x1hfd6{display:block}thead.svelte-1x1hfd6{display:none}tbody.svelte-1x1hfd6{display:block}tr.svelte-1x1hfd6{border-bottom:1px solid var(--border);grid-template-columns:1fr auto;gap:18px;padding:22px 20px;display:grid}tr.svelte-1x1hfd6:last-child{border:0}td.svelte-1x1hfd6{border:0;padding:0}td.svelte-1x1hfd6:first-child,.reserve-cell.svelte-1x1hfd6{grid-column:1/-1;min-width:0}td.svelte-1x1hfd6:last-child{justify-content:flex-end;display:flex}.row-actions.svelte-1x1hfd6{gap:20px}.verified-at.svelte-1x1hfd6:before{content:attr(data-label)}}@media (width<=650px){.drop-zone.svelte-1x1hfd6{padding:17px}tr.svelte-1x1hfd6{padding:20px 18px}.delete-confirmation.svelte-1x1hfd6{min-width:0}}.modal.svelte-1k2jq0p{background:var(--surface);width:min(520px,100vw - 32px);max-height:calc(100dvh - 32px);color:var(--text);border:1px solid #35496b;border-radius:16px;padding:25px;overflow-y:auto;box-shadow:0 24px 80px #030711b0}.modal.wide.svelte-1k2jq0p{width:min(640px,100vw - 32px)}.modal.svelte-1k2jq0p::backdrop{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#030711b5}header.svelte-1k2jq0p{justify-content:space-between;align-items:center;gap:15px;margin-bottom:14px;display:flex}h2.svelte-1k2jq0p{font-family:var(--font-display);letter-spacing:-.03em;overflow-wrap:anywhere;font-size:24px;font-weight:650}.modal.svelte-1k2jq0p .dialog-actions{flex-wrap:wrap;justify-content:flex-end;gap:10px;margin-top:24px;display:flex}.modal.svelte-1k2jq0p .dialog-text{color:var(--muted);margin:0 0 10px;font-size:16px;line-height:1.6}.modal.svelte-1k2jq0p .dialog-error{color:var(--red);overflow-wrap:anywhere;margin:12px 0 0;font-size:15px;line-height:1.5}@media (width<=650px){.modal.svelte-1k2jq0p{padding:20px 18px}h2.svelte-1k2jq0p{font-size:22px}.modal.svelte-1k2jq0p .dialog-actions .button{flex:1}}.client-form.svelte-vb71yz{gap:22px;display:grid}.client-form.svelte-vb71yz .dialog-error:where(.svelte-vb71yz),.client-form.svelte-vb71yz .dialog-actions{margin-top:0}.field.svelte-vb71yz{color:var(--muted);gap:7px;font-size:15px;display:grid}.field.svelte-vb71yz input:where(.svelte-vb71yz){width:100%}h3.svelte-vb71yz{align-items:center;gap:8px;margin:0 0 10px;font-size:16px;font-weight:600;display:flex}.info.svelte-vb71yz{color:var(--faint);cursor:help;display:inline-flex}.info.svelte-vb71yz:hover{color:var(--blue)}.all-row.svelte-vb71yz{border:1px solid var(--border);background:var(--background);border-radius:11px;justify-content:space-between;align-items:center;gap:16px;padding:13px 15px;display:flex}.all-row.svelte-vb71yz strong:where(.svelte-vb71yz){font-size:15px;font-weight:600;display:block}.all-row.svelte-vb71yz span:where(.svelte-vb71yz){color:var(--muted);font-size:14px}.pool-list.svelte-vb71yz{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:10px;display:grid}.pool.svelte-vb71yz{border:1px solid var(--border);background:var(--background);border-radius:11px;align-content:start;gap:8px;padding:10px 12px 12px;display:grid}.pool.svelte-vb71yz:has(.pool-row:where(.svelte-vb71yz) input:where(.svelte-vb71yz):checked){border-color:#5478f670}.pool-row.svelte-vb71yz{cursor:pointer;align-items:center;gap:9px;min-height:28px;font-size:15px;display:flex}.pool-row.svelte-vb71yz strong:where(.svelte-vb71yz){text-overflow:ellipsis;white-space:nowrap;min-width:0;font-weight:600;overflow:hidden}.account-chips.svelte-vb71yz{flex-wrap:wrap;gap:6px;display:flex}.chip.svelte-vb71yz{border:1px solid var(--border);color:var(--muted);background:0 0;border-radius:999px;padding:4px 10px;font-size:14px}.chip.svelte-vb71yz:hover:not(:disabled){border-color:var(--blue);color:var(--text)}.chip.on.svelte-vb71yz{border-color:var(--blue);color:var(--text);background:#5478f622}.chip.svelte-vb71yz:disabled{cursor:default;opacity:.75}input[type=checkbox].svelte-vb71yz{width:17px;height:17px;accent-color:var(--primary);padding:0}.share-list.svelte-vb71yz{border:1px solid var(--border);background:var(--background);border-radius:11px;display:grid}.share-row.svelte-vb71yz{grid-template-columns:1fr auto 120px;align-items:center;gap:14px;padding:9px 14px;display:grid}.share-row.svelte-vb71yz+.share-row:where(.svelte-vb71yz){border-top:1px solid var(--border)}.share-pool.svelte-vb71yz{align-items:center;gap:10px;min-width:0;font-size:15px;font-weight:550;display:flex}.share-input.svelte-vb71yz{color:var(--muted);align-items:center;gap:7px;font-size:15px;display:flex}.share-input.svelte-vb71yz input:where(.svelte-vb71yz){text-align:right;background:var(--surface);width:74px;height:38px}.share-common.svelte-vb71yz{text-align:right;color:var(--muted);font-variant-numeric:tabular-nums;font-size:14px}.share-common.over.svelte-vb71yz{color:var(--red)}@media (width<=650px){.pool-list.svelte-vb71yz{grid-template-columns:1fr}.share-row.svelte-vb71yz{grid-template-columns:1fr auto}.share-common.svelte-vb71yz{text-align:left;grid-column:1/-1;margin-top:-4px}}.once.svelte-1w1aal7{color:var(--yellow);align-items:center;gap:9px;margin:0 0 16px;font-size:15px;display:flex}.once.svelte-1w1aal7 svg{flex-shrink:0}.key-field.svelte-1w1aal7{background:var(--background);border:1px solid #3c5279;border-radius:11px;align-items:center;gap:12px;margin:0 0 18px;padding:12px 12px 12px 16px;display:flex}.key-field.svelte-1w1aal7 code:where(.svelte-1w1aal7){overflow-wrap:anywhere;-webkit-user-select:all;user-select:all;flex:1;min-width:0;font-size:15px;line-height:1.5}@media (width<=650px){.key-field.svelte-1w1aal7{flex-direction:column;align-items:stretch}}.open-state.svelte-15ihc32{color:var(--yellow);align-items:center;gap:8px;display:inline-flex}.open-state.svelte-15ihc32 svg{flex-shrink:0}.page-description.svelte-15ihc32 .state-badge:where(.svelte-15ihc32){gap:7px}.client-grid.svelte-15ihc32{grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:16px;display:grid}.client-card.svelte-15ihc32{border:1px solid var(--border);border-top:3px solid var(--client);background:var(--surface);border-radius:14px;flex-direction:column;gap:14px;padding:20px 20px 22px;display:flex}.client-card.svelte-15ihc32 header:where(.svelte-15ihc32){justify-content:space-between;align-items:flex-start;gap:10px;display:flex}.client-title.svelte-15ihc32{flex-wrap:wrap;align-items:center;gap:6px 10px;min-width:0;padding-top:6px;display:flex}.client-dot.svelte-15ihc32{background:var(--client);border-radius:50%;width:10px;height:10px}.client-title.svelte-15ihc32 h2:where(.svelte-15ihc32){font-family:var(--font-display);letter-spacing:-.03em;overflow-wrap:anywhere;font-size:22px;font-weight:650}.client-title.svelte-15ihc32 code:where(.svelte-15ihc32){border:1px solid var(--border);background:var(--background);color:var(--muted);border-radius:6px;padding:2px 7px;font-size:13px}.card-actions.svelte-15ihc32{margin:-4px -8px 0 0;display:flex}.icon-button.danger.svelte-15ihc32:hover{color:var(--red)}.access.svelte-15ihc32,.shares.svelte-15ihc32{flex-wrap:wrap;gap:7px;display:flex}.tag.svelte-15ihc32,.share-chip.svelte-15ihc32{border:1px solid var(--border);border-radius:8px;align-items:center;gap:7px;padding:4px 10px 4px 7px;font-size:14px;display:inline-flex}.tag.strong.svelte-15ihc32{color:#c4d3ff;background:#5478f61c;border-color:#7899ff40;padding-left:10px}.tag.muted.svelte-15ihc32{padding-left:10px}.share-chip.svelte-15ihc32{border-color:color-mix(in srgb, var(--client) 45%, transparent);background:color-mix(in srgb, var(--client) 12%, transparent);color:var(--text);border-radius:999px;padding-left:9px}.share-chip.svelte-15ihc32 svg{color:var(--client)}.share-chip.svelte-15ihc32 strong:where(.svelte-15ihc32){color:var(--text);font-weight:600}.pool-usage.svelte-15ihc32{border-top:1px solid var(--border);padding-top:12px}.pool-name.svelte-15ihc32{align-items:center;gap:8px;margin:0 0 9px;font-size:15px;font-weight:550;display:flex}.usage-line.svelte-15ihc32{grid-template-columns:54px 1fr 74px;align-items:center;gap:12px;min-height:26px;display:grid}.kind.svelte-15ihc32{color:var(--muted);font-size:14px}.usage-track.svelte-15ihc32{background:#2a3a55;border-radius:4px;height:7px;position:relative}.usage-fill.svelte-15ihc32{border-radius:inherit;background:var(--client);position:absolute;inset:0 auto 0 0}.share-mark.svelte-15ihc32{background:var(--text);border-radius:1px;width:2px;margin-left:-1px;position:absolute;top:-4px;bottom:-4px}.usage-value.svelte-15ihc32{text-align:right;font-size:14px}.usage-value.over.svelte-15ihc32{color:var(--yellow)}.no-usage.svelte-15ihc32{margin:0}.section-toolbar.svelte-15ihc32{flex-wrap:wrap;margin-top:38px}.section-title.svelte-15ihc32,.info.svelte-15ihc32{align-items:center;gap:8px;display:inline-flex}.section-title.svelte-15ihc32{font-family:var(--font-display);font-size:23px;font-weight:600}.info.svelte-15ihc32{color:var(--faint);cursor:help}.info.svelte-15ihc32:hover{color:var(--blue)}.legend.svelte-15ihc32{color:var(--muted);flex-wrap:wrap;gap:8px 16px;font-size:14px;display:flex}.legend.svelte-15ihc32 span:where(.svelte-15ihc32){align-items:center;gap:7px;display:inline-flex}.legend.svelte-15ihc32 i:where(.svelte-15ihc32){border-radius:3px;width:11px;height:11px}.rest.svelte-15ihc32,.segment.rest.svelte-15ihc32{background:repeating-linear-gradient(135deg,#55688a 0 3px,#0000 3px 6px)}.legend.svelte-15ihc32 i.rest:where(.svelte-15ihc32){outline-offset:-1px;outline:1px solid #55688a}.breakdown.svelte-15ihc32{gap:16px;display:grid}.group-heading.svelte-15ihc32{border-bottom:1px solid var(--border);background:#17243b80;align-items:center;gap:10px;padding:14px 20px;display:flex}.group-heading.svelte-15ihc32 h3:where(.svelte-15ihc32){margin:0;font-size:16px;font-weight:600}.account-usage.svelte-15ihc32{grid-template-columns:minmax(130px,190px) 1fr;gap:18px;padding:14px 20px;display:grid}.account-usage.svelte-15ihc32+.account-usage:where(.svelte-15ihc32){border-top:1px solid var(--border)}.account-label.svelte-15ihc32{overflow-wrap:anywhere;margin:4px 0 0;font-size:15px;font-weight:550}.windows.svelte-15ihc32{gap:8px;display:grid}.window-row.svelte-15ihc32{grid-template-columns:54px 1fr 92px 230px;align-items:center;gap:14px;min-height:28px;display:grid}.stack.svelte-15ihc32{background:#2a3a55;border-radius:4px;height:12px;display:flex;overflow:hidden}.segment.svelte-15ihc32{height:100%}.segment.svelte-15ihc32+.segment:where(.svelte-15ihc32){box-shadow:inset 2px 0 0 var(--surface)}.used.svelte-15ihc32{text-align:right;font-size:14px}.reset.svelte-15ihc32{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;align-items:center;gap:6px;font-size:14px;display:flex;overflow:hidden}.reset.svelte-15ihc32 svg{color:var(--faint);flex-shrink:0}.empty-breakdown.svelte-15ihc32{color:var(--muted);margin:0;padding:22px 20px;font-size:15px}.open-warning.svelte-15ihc32{color:var(--yellow)}@media (width<=900px){.account-usage.svelte-15ihc32{grid-template-columns:1fr;gap:10px}}@media (width<=650px){.client-grid.svelte-15ihc32{grid-template-columns:1fr}.window-row.svelte-15ihc32{grid-template-columns:48px 1fr 80px}.reset.svelte-15ihc32{grid-column:2/-1;margin-top:-4px}.account-usage.svelte-15ihc32,.group-heading.svelte-15ihc32{padding-inline:16px}}.overview-stats.svelte-15ozkp9{border:1px solid var(--border);background:var(--surface);border-radius:14px;grid-template-columns:repeat(5,1fr);margin:28px 0 34px;display:grid}.overview-stats.svelte-15ozkp9>div:where(.svelte-15ozkp9){border-right:1px solid var(--border);padding:24px 20px}.overview-stats.svelte-15ozkp9>div:where(.svelte-15ozkp9):last-child{border:0}.overview-stats.svelte-15ozkp9 p:where(.svelte-15ozkp9){color:var(--muted);margin:0 0 15px;font-size:15px}.overview-stats.svelte-15ozkp9 strong:where(.svelte-15ozkp9){font-family:var(--font-display);letter-spacing:-.045em;font-variant-numeric:tabular-nums;font-size:34px;font-weight:600;display:block}.overview-stats.svelte-15ozkp9 span:where(.svelte-15ozkp9){color:var(--faint);margin-top:12px;font-size:15px;display:block}.inline-provider.svelte-15ozkp9{align-items:center;gap:8px;display:inline-flex}.http-status.svelte-15ozkp9{color:var(--green);background:#4dd4ac09;border:1px solid #4dd4ac20;border-radius:6px;padding:4px 7px;font-size:15px}.http-status.error.svelte-15ozkp9{color:var(--red);background:#ff819509;border-color:#ff819530}.account-filename.svelte-15ozkp9{font-family:var(--account-font);color:var(--muted);margin-top:5px;font-size:15px}.inline-error.svelte-15ozkp9{max-width:400px;color:var(--red);font-size:15px}.check-label.svelte-15ozkp9{color:var(--muted);align-items:center;gap:8px;font-size:15px;display:inline-flex}.check-label.svelte-15ozkp9 input:where(.svelte-15ozkp9){accent-color:var(--primary)}.table-scroll.svelte-15ozkp9{overflow-x:auto}.client-tag.svelte-15ozkp9{color:#c4d3ff;vertical-align:1px;background:#5478f61c;border:1px solid #7899ff40;border-radius:6px;margin-left:9px;padding:1px 8px;font-size:13px;display:inline-block}.setup-guide.svelte-15ozkp9 .key-required:where(.svelte-15ozkp9){color:var(--yellow)}.setup-guide.svelte-15ozkp9{max-width:760px;margin-top:30px}.setup-guide.svelte-15ozkp9 section:where(.svelte-15ozkp9){border-bottom:1px solid var(--border);gap:22px;padding:28px 0;display:flex}.setup-guide.svelte-15ozkp9 section:where(.svelte-15ozkp9):first-child{padding-top:0}.setup-guide.svelte-15ozkp9 h2:where(.svelte-15ozkp9){margin:5px 0 12px;font-size:16px}.setup-guide.svelte-15ozkp9 p:where(.svelte-15ozkp9){color:var(--muted);max-width:600px;font-size:15px;line-height:1.7}.copy-field.svelte-15ozkp9{border:1px solid var(--border);background:var(--surface);border-radius:10px;justify-content:space-between;align-items:center;margin:18px 0;padding:9px 13px;display:flex}.tool-tabs.svelte-15ozkp9{flex-wrap:wrap;gap:12px;display:flex}.setup-guide.svelte-15ozkp9 section:where(.svelte-15ozkp9)>div:where(.svelte-15ozkp9){width:100%;min-width:0}.setup-guide.svelte-15ozkp9 h2:where(.svelte-15ozkp9){font-size:20px}.copy-field.svelte-15ozkp9 code:where(.svelte-15ozkp9){overflow-wrap:anywhere;font-size:16px}.config-code.svelte-15ozkp9{align-items:flex-start;gap:12px}.config-code.svelte-15ozkp9 pre:where(.svelte-15ozkp9){white-space:pre-wrap;overflow-wrap:anywhere;min-width:0;margin:7px 0;line-height:1.8}@media (width<=780px){.check-label.svelte-15ozkp9{flex-basis:100%}}@media (width<=700px){.overview-stats.svelte-15ozkp9{grid-template-columns:repeat(2,1fr)}.overview-stats.svelte-15ozkp9>div:where(.svelte-15ozkp9){border-bottom:1px solid var(--border);padding:18px}.overview-stats.svelte-15ozkp9 strong:where(.svelte-15ozkp9){font-size:26px}}.language-setting.svelte-mf2zd9{border-top:1px solid var(--border);grid-template-columns:245px 1fr;gap:34px;max-width:1060px;margin-top:30px;padding:30px 0;display:grid}h2.svelte-mf2zd9{margin:0 0 9px;font-size:16px}p.svelte-mf2zd9{color:var(--muted);margin:0;font-size:15px;line-height:1.65}.language-field.svelte-mf2zd9{justify-content:flex-end;align-items:center;gap:11px;display:flex}.language-field.svelte-mf2zd9 svg{color:var(--muted);flex-shrink:0}select.svelte-mf2zd9{width:240px;font-size:15px}@media (width<=1150px){.language-setting.svelte-mf2zd9{grid-template-columns:1fr;gap:22px}}@media (width<=650px){select.svelte-mf2zd9{flex:1;width:auto;min-width:0}}.backup-setting.svelte-1h3frll{border-top:1px solid var(--border);grid-template-columns:245px 1fr;gap:34px;max-width:1060px;margin-top:30px;padding:30px 0 0;display:grid}h2.svelte-1h3frll{margin:0 0 9px;font-size:16px}p.svelte-1h3frll{color:var(--muted);margin:0;font-size:15px;line-height:1.65}.backup-body.svelte-1h3frll{align-content:start;gap:16px;display:grid}.backup-warning.svelte-1h3frll{border:1px solid color-mix(in srgb,var(--yellow) 28%,transparent);background:color-mix(in srgb,var(--yellow) 6%,transparent);color:var(--text);border-radius:12px;align-items:flex-start;gap:11px;padding:14px 16px;display:flex}.backup-warning.svelte-1h3frll svg{color:var(--yellow);flex-shrink:0;margin-top:3px}.backup-actions.svelte-1h3frll{flex-wrap:wrap;justify-content:flex-end;gap:10px;display:flex}.file-input.svelte-1h3frll{display:none}.backup-error.svelte-1h3frll{color:var(--red)}.restore-confirmation.svelte-1h3frll{border:1px solid var(--border);background:var(--surface);border-radius:12px;gap:14px;padding:16px;display:grid}.restore-confirmation.svelte-1h3frll p:where(.svelte-1h3frll){color:var(--text)}.settings-choice.svelte-1h3frll{cursor:pointer;align-items:center;gap:10px;font-size:15px;display:flex}.settings-choice.svelte-1h3frll input:where(.svelte-1h3frll){width:auto;height:auto;accent-color:var(--primary);margin:0}.confirmation-actions.svelte-1h3frll{flex-wrap:wrap;justify-content:flex-end;gap:10px;display:flex}@media (width<=1150px){.backup-setting.svelte-1h3frll{grid-template-columns:1fr;gap:22px}}@media (width<=650px){.backup-actions.svelte-1h3frll .button:where(.svelte-1h3frll),.confirmation-actions.svelte-1h3frll .button:where(.svelte-1h3frll){flex:1}}.session-note.svelte-eyvqa5{color:var(--muted);border:1px solid var(--border);background:var(--surface);border-radius:12px;align-items:flex-start;gap:12px;max-width:1060px;margin:24px 0 0;padding:16px 18px;font-size:15px;line-height:1.65;display:flex}.session-note.svelte-eyvqa5 svg{color:var(--blue);flex-shrink:0;margin-top:2px}.settings-form.svelte-eyvqa5{max-width:1060px;margin-top:32px}.settings-section.svelte-eyvqa5{border-bottom:1px solid var(--border);grid-template-columns:245px 1fr;gap:34px;padding:30px 0;display:grid}.settings-section.svelte-eyvqa5:first-child{padding-top:0}.settings-section.svelte-eyvqa5 h2:where(.svelte-eyvqa5){margin:0 0 9px;font-size:16px}.settings-section.svelte-eyvqa5 p:where(.svelte-eyvqa5){color:var(--muted);margin:0;font-size:15px;line-height:1.65}.strategy-options.svelte-eyvqa5{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.strategy-option.svelte-eyvqa5{border:1px solid var(--border);background:var(--surface);cursor:pointer;border-radius:12px;align-items:flex-start;gap:12px;min-height:126px;padding:18px 16px;display:flex}.strategy-option.svelte-eyvqa5:hover{border-color:#3c5279}.strategy-option.chosen.svelte-eyvqa5{border-color:var(--blue);background:#5478f613;box-shadow:inset 0 0 0 1px #7899ff22}.strategy-option.svelte-eyvqa5 input:where(.svelte-eyvqa5){width:auto;height:auto;accent-color:var(--primary);flex-shrink:0;margin:3px 0 0}.strategy-option.svelte-eyvqa5 span:where(.svelte-eyvqa5){font-size:15px;font-weight:550;line-height:1.3}.strategy-option.svelte-eyvqa5 small:where(.svelte-eyvqa5){color:var(--muted);margin-top:8px;font-size:15px;font-weight:400;line-height:1.55;display:block}.settings-fields.svelte-eyvqa5{gap:20px;display:grid}.settings-fields.svelte-eyvqa5>label:where(.svelte-eyvqa5){grid-template-columns:1fr 240px;align-items:center;gap:18px;font-size:15px;display:grid}.provider-fields.svelte-eyvqa5{border:1px solid var(--border);background:var(--surface);border-radius:12px;gap:0;overflow:hidden}.provider-fields.svelte-eyvqa5>label:where(.svelte-eyvqa5){border-bottom:1px solid var(--border);padding:13px 16px}.provider-fields.svelte-eyvqa5>label:where(.svelte-eyvqa5):last-child{border-bottom:0}.provider-label.svelte-eyvqa5{align-items:center;gap:11px;font-size:15px;display:flex}.provider-fields.svelte-eyvqa5 select:where(.svelte-eyvqa5){font-size:15px}.unit-field.svelte-eyvqa5{color:var(--muted);align-items:center;gap:10px;font-size:15px;display:flex}.unit-field.svelte-eyvqa5 input:where(.svelte-eyvqa5){width:115px}.settings-footer.svelte-eyvqa5{justify-content:flex-end;margin-top:25px;display:flex}@media (width<=1150px){.settings-section.svelte-eyvqa5{grid-template-columns:1fr;gap:22px}.settings-section.svelte-eyvqa5>div:where(.svelte-eyvqa5):first-child{max-width:600px}}@media (width<=650px){.strategy-options.svelte-eyvqa5{grid-template-columns:1fr}.strategy-option.svelte-eyvqa5{min-height:0;padding:16px}.strategy-option.svelte-eyvqa5 small:where(.svelte-eyvqa5){font-size:15px}.settings-fields.svelte-eyvqa5>label:where(.svelte-eyvqa5){grid-template-columns:1fr;gap:10px}.provider-fields.svelte-eyvqa5>label:where(.svelte-eyvqa5){grid-template-columns:1fr 170px;gap:10px;padding:13px 12px}.provider-label.svelte-eyvqa5{gap:8px;font-size:15px}.provider-fields.svelte-eyvqa5 select:where(.svelte-eyvqa5){width:100%;padding:0 7px}.settings-footer.svelte-eyvqa5 .button:where(.svelte-eyvqa5){width:100%}.session-note.svelte-eyvqa5{padding:15px}}.connect-dialog.svelte-1xsbe8v{width:min(640px,100vw - 32px);max-height:calc(100dvh - 32px);color:var(--text);background:var(--surface);border:1px solid #35496b;border-radius:18px;padding:28px;overflow-y:auto;box-shadow:0 24px 80px #030711b0}.connect-dialog.svelte-1xsbe8v::backdrop{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#030711b5}.dialog-heading.svelte-1xsbe8v{z-index:2;background:var(--surface);justify-content:space-between;align-items:flex-start;gap:20px;margin-bottom:8px;padding-bottom:18px;display:flex;position:sticky;top:0}.dialog-heading.svelte-1xsbe8v h2:where(.svelte-1xsbe8v){font-family:var(--font-display);letter-spacing:-.035em;margin:0 0 8px;font-size:26px;font-weight:650}.dialog-heading.svelte-1xsbe8v p:where(.svelte-1xsbe8v),.dialog-import.svelte-1xsbe8v p:where(.svelte-1xsbe8v){color:var(--muted);margin:0;font-size:15px;line-height:1.5}.provider-options.svelte-1xsbe8v{grid-template-columns:repeat(2,minmax(0,1fr));gap:11px;display:grid}.provider-option.svelte-1xsbe8v{border:1px solid var(--border);background:var(--background);text-align:left;border-radius:12px;align-items:center;gap:12px;min-height:86px;padding:15px 12px;display:flex}.provider-option.svelte-1xsbe8v:hover{background:var(--surface-raised);border-color:#5576ad}.provider-option.svelte-1xsbe8v>span:where(.svelte-1xsbe8v):not(.provider-logo){flex:1;font-size:15px;font-weight:550}.provider-logo.svelte-1xsbe8v{flex-shrink:0;justify-content:center;align-items:center;width:36px;display:flex}.provider-option.svelte-1xsbe8v small:where(.svelte-1xsbe8v){color:var(--muted);margin-top:5px;font-size:15px;font-weight:400;line-height:1.5;display:block}.provider-option.svelte-1xsbe8v svg{color:var(--faint);flex-shrink:0}.dialog-import.svelte-1xsbe8v{border-top:1px solid var(--border);align-items:center;gap:18px;margin-top:24px;padding-top:22px;display:flex}.dialog-import.svelte-1xsbe8v h3:where(.svelte-1xsbe8v){margin:0 0 6px;font-size:15px}.oauth-flow.svelte-1xsbe8v>p:where(.svelte-1xsbe8v){color:var(--muted);font-size:15px;line-height:1.6}.oauth-flow.svelte-1xsbe8v .flow-hint:where(.svelte-1xsbe8v){margin-top:24px;font-size:15px}.oauth-flow.svelte-1xsbe8v form:where(.svelte-1xsbe8v){gap:10px;display:grid}.oauth-flow.svelte-1xsbe8v label:where(.svelte-1xsbe8v){font-size:15px}.oauth-flow.svelte-1xsbe8v input:where(.svelte-1xsbe8v),.oauth-flow.svelte-1xsbe8v select:where(.svelte-1xsbe8v){width:100%}.oauth-flow.svelte-1xsbe8v code:where(.svelte-1xsbe8v){font-size:14px}.flow-controls.svelte-1xsbe8v{flex-wrap:wrap;gap:8px;margin-top:18px;display:flex}.device-code.svelte-1xsbe8v{border:1px solid var(--border);background:var(--background);border-radius:10px;justify-content:space-between;align-items:center;margin:20px 0;padding:14px 17px;display:flex}.device-code.svelte-1xsbe8v>span:where(.svelte-1xsbe8v){font-family:var(--font-display);letter-spacing:.08em;font-size:28px}.connection-success.svelte-1xsbe8v{text-align:center;padding:15px 0}.connection-success.svelte-1xsbe8v>span:where(.svelte-1xsbe8v){width:50px;height:50px;color:var(--green);background:#10b98115;border-radius:50%;place-items:center;display:inline-grid}.connection-success.svelte-1xsbe8v h3:where(.svelte-1xsbe8v){font-size:18px}.connection-success.svelte-1xsbe8v p:where(.svelte-1xsbe8v){color:var(--muted);margin-bottom:24px;font-size:15px}@media (width<=600px){.connect-dialog.svelte-1xsbe8v{border-radius:15px;padding:22px 18px}.dialog-heading.svelte-1xsbe8v h2:where(.svelte-1xsbe8v){font-size:24px}.provider-options.svelte-1xsbe8v{grid-template-columns:1fr;gap:9px}.provider-option.svelte-1xsbe8v{gap:15px;min-height:75px;padding:13px 15px}.provider-option.svelte-1xsbe8v>span:where(.svelte-1xsbe8v):not(.provider-logo),.provider-option.svelte-1xsbe8v small:where(.svelte-1xsbe8v){font-size:15px}.dialog-import.svelte-1xsbe8v{flex-direction:column;align-items:flex-start}} diff --git a/dash/build/_app/immutable/assets/2.ITQ6xvQN.css b/dash/build/_app/immutable/assets/2.ITQ6xvQN.css new file mode 100644 index 0000000..3f2b8b2 --- /dev/null +++ b/dash/build/_app/immutable/assets/2.ITQ6xvQN.css @@ -0,0 +1 @@ +.provider-mark.svelte-1vulm01{color:inherit;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}img.svelte-1vulm01{object-fit:contain;width:100%;height:100%;display:block}.light-mat.svelte-1vulm01{background:#eaf0ff;border-radius:5px;padding:2px}.meter-label.svelte-1dmbtuk{color:var(--muted);justify-content:space-between;gap:14px;margin-bottom:9px;font-size:15px;display:flex}.meter-label.svelte-1dmbtuk span:where(.svelte-1dmbtuk):last-child{color:var(--text);white-space:nowrap}.meter-track.svelte-1dmbtuk{background:#2a3a55;border-radius:4px;height:7px;overflow:hidden}.meter-fill.svelte-1dmbtuk{background:var(--green);border-radius:inherit;height:100%}.meter-fill.medium.svelte-1dmbtuk{background:var(--yellow)}.meter-fill.low.svelte-1dmbtuk{background:var(--red)}.compact.svelte-1dmbtuk .meter-label:where(.svelte-1dmbtuk){display:none}.compact.svelte-1dmbtuk .meter-track:where(.svelte-1dmbtuk){height:5px}.account-name.svelte-6htcw3{text-align:left;background:0 0;border:0;align-items:center;gap:9px;max-width:100%;padding:3px 0;font-size:17px;font-weight:600;line-height:1.45;display:inline-flex}.account-name.svelte-6htcw3 span:where(.svelte-6htcw3){overflow-wrap:anywhere}.account-name.svelte-6htcw3 svg{color:var(--faint);opacity:.55;flex-shrink:0}.account-name.svelte-6htcw3:hover{color:var(--blue)}.account-name.svelte-6htcw3:hover svg,.account-name.svelte-6htcw3:focus-visible svg{opacity:1}.name-editor.svelte-6htcw3{flex-wrap:wrap;align-items:center;gap:6px;max-width:100%;display:flex}.name-editor.svelte-6htcw3 input:where(.svelte-6htcw3){flex:1;width:100%;min-width:120px;height:44px;font-size:16px}.name-actions.svelte-6htcw3{display:flex}.rename-error.svelte-6htcw3{color:var(--red);flex-basis:100%;margin:4px 0;font-size:15px;line-height:1.5}.private-email.svelte-1n2y5u{max-width:100%;color:var(--muted);text-align:left;background:0 0;border:0;align-items:center;gap:10px;padding:5px 0;font-size:15px;line-height:1.4;display:flex}.private-email.svelte-1n2y5u span:where(.svelte-1n2y5u){overflow-wrap:anywhere}.blurred.svelte-1n2y5u{filter:blur(5px);-webkit-user-select:none;user-select:none}.private-email.svelte-1n2y5u svg{color:var(--faint);flex-shrink:0}.private-email.svelte-1n2y5u:hover{color:var(--text)}.reset-control.svelte-zw103y{flex-wrap:wrap;align-items:center;gap:8px;margin-top:15px;display:flex}.reset-button.svelte-zw103y{min-height:42px;padding:8px 11px;font-size:15px}.reset-status.svelte-zw103y{color:var(--muted);font-size:15px}.reset-retry.svelte-zw103y{color:var(--blue);background:0 0;border:0;padding:4px 0;font-size:15px}.reset-error.svelte-zw103y{color:var(--red);overflow-wrap:anywhere;flex-basis:100%;margin:6px 0;font-size:15px;line-height:1.5}dialog.svelte-zw103y{border:1px solid var(--border);background:var(--surface);width:100%;max-width:min(520px,100vw - 32px);color:var(--text);border-radius:16px;padding:0;box-shadow:0 24px 100px #0008}dialog.svelte-zw103y::backdrop{-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);background:#030711b5}.reset-dialog.svelte-zw103y{padding:25px}.reset-dialog.svelte-zw103y header:where(.svelte-zw103y){justify-content:space-between;align-items:center;gap:15px;display:flex}.reset-dialog.svelte-zw103y h2:where(.svelte-zw103y){font-family:var(--font-display);font-size:24px}.reset-dialog.svelte-zw103y p:where(.svelte-zw103y){color:var(--muted);font-size:16px;line-height:1.6}.reset-dialog.svelte-zw103y .reset-account:where(.svelte-zw103y){color:var(--text);font-weight:600}.reset-dialog.svelte-zw103y .reset-error:where(.svelte-zw103y){color:var(--red)}.reset-dialog.svelte-zw103y .reset-result:where(.svelte-zw103y){color:var(--green)}.dialog-actions.svelte-zw103y{flex-wrap:wrap;justify-content:flex-end;gap:10px;margin-top:24px;display:flex}@media (width<=650px){.reset-dialog.svelte-zw103y{padding:20px}.dialog-actions.svelte-zw103y .button:where(.svelte-zw103y){flex:1}.reset-dialog.svelte-zw103y h2:where(.svelte-zw103y){font-size:22px}}.empty-state.svelte-18g3sj1{text-align:center;flex-direction:column;justify-content:center;align-items:center;min-height:260px;padding:36px 20px;display:flex}.empty-icon.svelte-18g3sj1{width:52px;height:52px;color:var(--blue);background:#5478f610;border:1px solid #7899ff30;border-radius:14px;place-items:center;margin-bottom:18px;display:grid}h3.svelte-18g3sj1{font-family:var(--font-display);letter-spacing:-.025em;margin:0 0 9px;font-size:19px;font-weight:600}p.svelte-18g3sj1{color:var(--muted);max-width:380px;margin:0 0 20px;font-size:15px;line-height:1.6}.quota-toolbar.svelte-137c7x1{justify-content:flex-end;margin:20px 0 26px}.quota-toolbar.svelte-137c7x1>select:where(.svelte-137c7x1){background:var(--surface);font-size:15px}.provider-groups.svelte-137c7x1{gap:30px;display:grid}.provider-heading.svelte-137c7x1{align-items:center;gap:12px;margin:0 0 14px;display:flex}.provider-heading.svelte-137c7x1 h2:where(.svelte-137c7x1){font-family:var(--font-display);font-size:23px;font-weight:600}.provider-heading.svelte-137c7x1>span:where(.svelte-137c7x1){color:var(--muted);margin-left:auto;font-size:15px}.display-choice.svelte-137c7x1{color:var(--muted);align-items:center;gap:10px;margin-left:10px;font-size:15px;display:flex}.display-choice.svelte-137c7x1 select:where(.svelte-137c7x1){background:var(--surface);font-size:15px}.windows-toggle[aria-expanded=true].svelte-137c7x1{border-color:var(--primary);color:var(--text)}.window-choices.svelte-137c7x1{border:1px solid var(--border);background:var(--surface);border-radius:12px;gap:4px;margin:0 0 14px;padding:10px 16px;display:grid}.window-choice.svelte-137c7x1{align-items:center;gap:14px;min-height:48px;display:flex}.window-choice.svelte-137c7x1+.window-choice:where(.svelte-137c7x1){border-top:1px solid var(--border)}.window-name.svelte-137c7x1{flex:1;min-width:0;font-size:16px}.hidden-window.svelte-137c7x1 .window-name:where(.svelte-137c7x1){color:var(--muted)}.primary-choice.svelte-137c7x1{min-height:36px;color:var(--muted);background:0 0;border:1px solid #0000;border-radius:9px;align-items:center;gap:7px;padding:0 11px;font-size:15px;display:inline-flex}.primary-choice.svelte-137c7x1:hover:not(:disabled){border-color:var(--border);color:var(--text)}.primary-choice.on.svelte-137c7x1{border-color:var(--primary);color:var(--text)}.primary-choice.on.svelte-137c7x1 svg{color:var(--primary);fill:var(--primary)}.window-default.svelte-137c7x1{color:var(--muted);margin:6px 0 4px;font-size:15px}.quota-row.svelte-137c7x1{border-bottom:1px solid var(--border);grid-template-columns:minmax(220px,.8fr) minmax(320px,1.8fr) auto;align-items:center;gap:26px;padding:25px 24px;display:grid}.quota-row.svelte-137c7x1:last-child{border-bottom:0}.account-identity.svelte-137c7x1{min-width:0}.account-plan.svelte-137c7x1{color:var(--muted);margin:4px 0;font-size:15px}.quota-details.svelte-137c7x1{min-width:0}.verification-needed.svelte-137c7x1{justify-items:start;gap:12px;margin-bottom:16px;display:grid}.verification-needed.svelte-137c7x1 p:where(.svelte-137c7x1){color:var(--muted);margin:0;font-size:16px;line-height:1.5}.quota-windows.svelte-137c7x1{grid-template-columns:repeat(2,minmax(130px,1fr));gap:23px 28px;display:grid}.reset-date.svelte-137c7x1{color:var(--muted);align-items:center;gap:7px;margin:11px 0 0;font-size:15px;line-height:1.4;display:flex}.reset-date.svelte-137c7x1 svg{color:var(--faint);flex-shrink:0}.quota-unavailable.svelte-137c7x1{color:var(--muted);grid-column:1/-1;margin:0;font-size:16px}.account-state.svelte-137c7x1{justify-content:flex-end;align-items:center;gap:8px;display:flex}.disabled-row.svelte-137c7x1{opacity:.65}.credit-windows.svelte-137c7x1{border-top:1px solid var(--border);gap:18px;margin-top:23px;padding-top:18px;display:grid}.credit-window.svelte-137c7x1>div:where(.svelte-137c7x1){justify-content:space-between;gap:12px;font-size:15px;display:flex}.credit-window.svelte-137c7x1 strong:where(.svelte-137c7x1){font-weight:600}.credit-window.svelte-137c7x1 strong:where(.svelte-137c7x1)>span:where(.svelte-137c7x1){font-weight:400}.credit-window.svelte-137c7x1>p:where(.svelte-137c7x1){color:var(--muted);margin:8px 0 0;font-size:15px}@media (width<=1250px){.quota-row.svelte-137c7x1{grid-template-columns:minmax(190px,.7fr) minmax(260px,1.3fr);gap:22px}.account-state.svelte-137c7x1{grid-column:1/-1;margin-top:-8px}}@media (width<=650px){.quota-toolbar.svelte-137c7x1{flex-wrap:nowrap;gap:10px;margin:18px 0 25px}.quota-toolbar.svelte-137c7x1>select:where(.svelte-137c7x1){max-width:140px;padding:0 8px}.quota-toolbar.svelte-137c7x1>.search-input:where(.svelte-137c7x1){width:auto;min-width:0}.provider-groups.svelte-137c7x1{gap:28px}.provider-heading.svelte-137c7x1{flex-wrap:wrap}.provider-heading.svelte-137c7x1 h2:where(.svelte-137c7x1){font-size:22px}.display-choice.svelte-137c7x1{flex-basis:100%;justify-content:space-between;margin-left:0}.display-choice.svelte-137c7x1 select:where(.svelte-137c7x1){max-width:200px;padding:0 8px}.windows-toggle.svelte-137c7x1{margin-left:auto}.window-choices.svelte-137c7x1{padding:6px 14px}.window-choice.svelte-137c7x1{gap:10px}.primary-choice.svelte-137c7x1{padding:0 8px}.quota-row.svelte-137c7x1{grid-template-columns:1fr;gap:22px;padding:20px 18px}.quota-windows.svelte-137c7x1{grid-template-columns:1fr;gap:23px}.account-state.svelte-137c7x1{grid-column:auto;justify-content:space-between;margin-top:0}.credit-window.svelte-137c7x1>div:where(.svelte-137c7x1){flex-wrap:wrap}}.reserve.svelte-c6cuiu{width:fit-content;color:var(--muted);background:0 0;border:0;align-items:center;gap:7px;margin-top:8px;padding:3px 0;font-size:15px;display:flex}.reserve.svelte-c6cuiu svg{color:var(--faint);flex-shrink:0}.reserve.set.svelte-c6cuiu{color:var(--text)}.reserve.set.svelte-c6cuiu svg,.reserve.svelte-c6cuiu:hover{color:var(--blue)}.reserve-editor.svelte-c6cuiu{flex-wrap:wrap;align-items:center;gap:6px 10px;margin-top:8px;display:flex}.reserve-editor.svelte-c6cuiu label:where(.svelte-c6cuiu){color:var(--muted);align-items:center;gap:8px;font-size:15px;display:flex}.reserve-editor.svelte-c6cuiu input:where(.svelte-c6cuiu){width:76px;height:40px;font-size:16px}.reserve-actions.svelte-c6cuiu{display:flex}.reserve-windows.svelte-c6cuiu{flex-wrap:wrap;flex-basis:100%;gap:6px;display:flex}.chip.svelte-c6cuiu{border:1px solid var(--border);color:var(--muted);background:0 0;border-radius:999px;padding:5px 11px;font-size:14px;transition:background .15s,border-color .15s,color .15s}.chip.svelte-c6cuiu:hover:not(:disabled){border-color:var(--blue);color:var(--text)}.chip.on.svelte-c6cuiu{border-color:var(--blue);color:var(--text);background:#5478f622}.link-button.svelte-c6cuiu{color:var(--muted);background:0 0;border:0;padding:3px 0;font-size:15px;text-decoration:underline}.link-button.svelte-c6cuiu:hover{color:var(--red)}.reserve-error.svelte-c6cuiu{color:var(--red);flex-basis:100%;margin:2px 0;font-size:15px;line-height:1.5}.reserve-note.svelte-c6cuiu{max-width:320px;color:var(--muted);margin:6px 0 0;font-size:14px;line-height:1.45}.reserve-note.reached.svelte-c6cuiu{color:var(--yellow)}.endpoint-line.svelte-1n2vmw9{color:var(--muted);flex-wrap:wrap;align-items:center;gap:6px 9px;margin-top:7px;font-size:14px;display:flex}.endpoint-line.svelte-1n2vmw9 code:where(.svelte-1n2vmw9){color:var(--text);font-size:14px}.endpoint-url.svelte-1n2vmw9{text-overflow:ellipsis;white-space:nowrap;max-width:260px;overflow:hidden}.endpoint-format.svelte-1n2vmw9{border:1px solid var(--border);border-radius:6px;padding:2px 7px;font-size:13px}.endpoint-editor.svelte-1n2vmw9{gap:9px;max-width:340px;margin-top:10px;display:grid}.endpoint-editor.svelte-1n2vmw9 label:where(.svelte-1n2vmw9){color:var(--muted);gap:5px;font-size:14px;display:grid}.endpoint-editor.svelte-1n2vmw9 input:where(.svelte-1n2vmw9),.endpoint-editor.svelte-1n2vmw9 select:where(.svelte-1n2vmw9){width:100%;font-size:14px}.editor-actions.svelte-1n2vmw9{gap:8px;margin-top:4px;display:flex}.drop-zone.svelte-1x1hfd6{color:var(--muted);background:#111b2e80;border:1px dashed #3c5279;border-radius:11px;justify-content:center;align-items:center;gap:10px;margin-bottom:18px;padding:20px;font-size:15px;line-height:1.5;display:flex}.drop-zone.dragging.svelte-1x1hfd6{border-color:var(--blue);color:var(--text);background:#5478f612}.drop-zone.svelte-1x1hfd6 svg{flex-shrink:0}.account-table-wrap.svelte-1x1hfd6{overflow-x:auto}td.svelte-1x1hfd6:first-child{min-width:200px}.inline-provider.svelte-1x1hfd6{white-space:nowrap;align-items:center;gap:9px;font-size:16px;display:inline-flex}.account-plan.svelte-1x1hfd6{color:var(--muted);margin-top:7px;font-size:15px}.reserve-cell.svelte-1x1hfd6{min-width:190px}.verified-at.svelte-1x1hfd6{white-space:nowrap}.reserve-cell.svelte-1x1hfd6 .reserve,.reserve-cell.svelte-1x1hfd6 .reserve-editor{margin-top:0}.row-actions.svelte-1x1hfd6{align-items:center;gap:14px;display:flex}.inline-error.svelte-1x1hfd6{max-width:350px;color:var(--red);font-size:15px}.delete-confirmation.svelte-1x1hfd6{min-width:210px;margin-top:12px;font-size:15px}.delete-confirmation.svelte-1x1hfd6 p:where(.svelte-1x1hfd6){margin:0 0 10px}.delete-confirmation.svelte-1x1hfd6 .button:where(.svelte-1x1hfd6){margin-right:5px}@media (width<=900px){table.svelte-1x1hfd6{display:block}thead.svelte-1x1hfd6{display:none}tbody.svelte-1x1hfd6{display:block}tr.svelte-1x1hfd6{border-bottom:1px solid var(--border);grid-template-columns:1fr auto;gap:18px;padding:22px 20px;display:grid}tr.svelte-1x1hfd6:last-child{border:0}td.svelte-1x1hfd6{border:0;padding:0}td.svelte-1x1hfd6:first-child,.reserve-cell.svelte-1x1hfd6{grid-column:1/-1;min-width:0}td.svelte-1x1hfd6:last-child{justify-content:flex-end;display:flex}.row-actions.svelte-1x1hfd6{gap:20px}.verified-at.svelte-1x1hfd6:before{content:attr(data-label)}}@media (width<=650px){.drop-zone.svelte-1x1hfd6{padding:17px}tr.svelte-1x1hfd6{padding:20px 18px}.delete-confirmation.svelte-1x1hfd6{min-width:0}}.modal.svelte-1k2jq0p{background:var(--surface);width:min(520px,100vw - 32px);max-height:calc(100dvh - 32px);color:var(--text);border:1px solid #35496b;border-radius:16px;padding:25px;overflow-y:auto;box-shadow:0 24px 80px #030711b0}.modal.wide.svelte-1k2jq0p{width:min(640px,100vw - 32px)}.modal.svelte-1k2jq0p::backdrop{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#030711b5}header.svelte-1k2jq0p{justify-content:space-between;align-items:center;gap:15px;margin-bottom:14px;display:flex}h2.svelte-1k2jq0p{font-family:var(--font-display);letter-spacing:-.03em;overflow-wrap:anywhere;font-size:24px;font-weight:650}.modal.svelte-1k2jq0p .dialog-actions{flex-wrap:wrap;justify-content:flex-end;gap:10px;margin-top:24px;display:flex}.modal.svelte-1k2jq0p .dialog-text{color:var(--muted);margin:0 0 10px;font-size:16px;line-height:1.6}.modal.svelte-1k2jq0p .dialog-error{color:var(--red);overflow-wrap:anywhere;margin:12px 0 0;font-size:15px;line-height:1.5}@media (width<=650px){.modal.svelte-1k2jq0p{padding:20px 18px}h2.svelte-1k2jq0p{font-size:22px}.modal.svelte-1k2jq0p .dialog-actions .button{flex:1}}.client-form.svelte-vb71yz{gap:22px;display:grid}.client-form.svelte-vb71yz .dialog-error:where(.svelte-vb71yz),.client-form.svelte-vb71yz .dialog-actions{margin-top:0}.field.svelte-vb71yz{color:var(--muted);gap:7px;font-size:15px;display:grid}.field.svelte-vb71yz input:where(.svelte-vb71yz){width:100%}h3.svelte-vb71yz{align-items:center;gap:8px;margin:0 0 10px;font-size:16px;font-weight:600;display:flex}.info.svelte-vb71yz{color:var(--faint);cursor:help;display:inline-flex}.info.svelte-vb71yz:hover{color:var(--blue)}.all-row.svelte-vb71yz{border:1px solid var(--border);background:var(--background);border-radius:11px;justify-content:space-between;align-items:center;gap:16px;padding:13px 15px;display:flex}.all-row.svelte-vb71yz strong:where(.svelte-vb71yz){font-size:15px;font-weight:600;display:block}.all-row.svelte-vb71yz span:where(.svelte-vb71yz){color:var(--muted);font-size:14px}.pool-list.svelte-vb71yz{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:10px;display:grid}.pool.svelte-vb71yz{border:1px solid var(--border);background:var(--background);border-radius:11px;align-content:start;gap:8px;padding:10px 12px 12px;display:grid}.pool.svelte-vb71yz:has(.pool-row:where(.svelte-vb71yz) input:where(.svelte-vb71yz):checked){border-color:#5478f670}.pool-row.svelte-vb71yz{cursor:pointer;align-items:center;gap:9px;min-height:28px;font-size:15px;display:flex}.pool-row.svelte-vb71yz strong:where(.svelte-vb71yz){text-overflow:ellipsis;white-space:nowrap;min-width:0;font-weight:600;overflow:hidden}.account-chips.svelte-vb71yz{flex-wrap:wrap;gap:6px;display:flex}.chip.svelte-vb71yz{border:1px solid var(--border);color:var(--muted);background:0 0;border-radius:999px;padding:4px 10px;font-size:14px}.chip.svelte-vb71yz:hover:not(:disabled){border-color:var(--blue);color:var(--text)}.chip.on.svelte-vb71yz{border-color:var(--blue);color:var(--text);background:#5478f622}.chip.svelte-vb71yz:disabled{cursor:default;opacity:.75}input[type=checkbox].svelte-vb71yz{width:17px;height:17px;accent-color:var(--primary);padding:0}.share-list.svelte-vb71yz{border:1px solid var(--border);background:var(--background);border-radius:11px;display:grid}.share-row.svelte-vb71yz{grid-template-columns:1fr auto 120px;align-items:center;gap:14px;padding:9px 14px;display:grid}.share-row.svelte-vb71yz+.share-row:where(.svelte-vb71yz){border-top:1px solid var(--border)}.share-pool.svelte-vb71yz{align-items:center;gap:10px;min-width:0;font-size:15px;font-weight:550;display:flex}.share-input.svelte-vb71yz{color:var(--muted);align-items:center;gap:7px;font-size:15px;display:flex}.share-input.svelte-vb71yz input:where(.svelte-vb71yz){text-align:right;background:var(--surface);width:74px;height:38px}.share-common.svelte-vb71yz{text-align:right;color:var(--muted);font-variant-numeric:tabular-nums;font-size:14px}.share-common.over.svelte-vb71yz{color:var(--red)}@media (width<=650px){.pool-list.svelte-vb71yz{grid-template-columns:1fr}.share-row.svelte-vb71yz{grid-template-columns:1fr auto}.share-common.svelte-vb71yz{text-align:left;grid-column:1/-1;margin-top:-4px}}.once.svelte-1w1aal7{color:var(--yellow);align-items:center;gap:9px;margin:0 0 16px;font-size:15px;display:flex}.once.svelte-1w1aal7 svg{flex-shrink:0}.key-field.svelte-1w1aal7{background:var(--background);border:1px solid #3c5279;border-radius:11px;align-items:center;gap:12px;margin:0 0 18px;padding:12px 12px 12px 16px;display:flex}.key-field.svelte-1w1aal7 code:where(.svelte-1w1aal7){overflow-wrap:anywhere;-webkit-user-select:all;user-select:all;flex:1;min-width:0;font-size:15px;line-height:1.5}@media (width<=650px){.key-field.svelte-1w1aal7{flex-direction:column;align-items:stretch}}.stats.svelte-1gmdt1j{margin-bottom:30px}.section-toolbar.svelte-1gmdt1j{flex-wrap:wrap}.section-title.svelte-1gmdt1j,.info.svelte-1gmdt1j{align-items:center;gap:8px;display:inline-flex}.section-title.svelte-1gmdt1j{font-family:var(--font-display);font-size:23px;font-weight:600}.info.svelte-1gmdt1j{color:var(--faint);cursor:help}.info.svelte-1gmdt1j:hover{color:var(--blue)}.periods.svelte-1gmdt1j{border:1px solid var(--border);background:var(--background);border-radius:10px;padding:3px;display:inline-flex}.periods.svelte-1gmdt1j button:where(.svelte-1gmdt1j){min-height:32px;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:7px;padding:4px 13px;font-size:14px;font-weight:550}.periods.svelte-1gmdt1j button.active:where(.svelte-1gmdt1j){background:var(--surface);color:var(--text);box-shadow:0 0 0 1px var(--border)}.stats-card.svelte-1gmdt1j{gap:20px;padding:20px;display:grid}.tiles.svelte-1gmdt1j{grid-template-columns:repeat(4,1fr);gap:12px;display:grid}.tiles.svelte-1gmdt1j div:where(.svelte-1gmdt1j){gap:4px;display:grid}.tiles.svelte-1gmdt1j span:where(.svelte-1gmdt1j){color:var(--muted);font-size:14px}.tiles.svelte-1gmdt1j strong:where(.svelte-1gmdt1j){font-family:var(--font-display);letter-spacing:-.02em;font-size:26px;font-weight:650}.bad.svelte-1gmdt1j{color:var(--red)}.chart.svelte-1gmdt1j{gap:6px;padding-top:18px;display:grid;position:relative}.peak.svelte-1gmdt1j{color:var(--faint);font-size:12px;position:absolute;top:0;left:0}.columns.svelte-1gmdt1j{grid-template-columns:repeat(var(--count), 1fr);border-bottom:1px solid var(--border);background:repeating-linear-gradient(0deg,#0000 0 39px,#25334c66 39px 40px);align-items:end;gap:2px;height:120px;display:grid}.column.svelte-1gmdt1j{cursor:default;background:0 0;border:0;align-items:flex-end;height:100%;padding:0;display:flex}.column.dim.svelte-1gmdt1j .bar:where(.svelte-1gmdt1j){opacity:.45}.bar.svelte-1gmdt1j{border-radius:4px 4px 0 0;flex-direction:column-reverse;width:100%;min-height:0;transition:opacity .12s;display:flex;overflow:hidden}.piece.svelte-1gmdt1j{flex-basis:0;min-height:1px}.piece.svelte-1gmdt1j+.piece:where(.svelte-1gmdt1j){box-shadow:inset 0 -2px 0 var(--surface)}.axis.svelte-1gmdt1j{color:var(--faint);justify-content:space-between;font-size:12px;display:flex}.tip.svelte-1gmdt1j{z-index:2;border:1px solid var(--border);pointer-events:none;background:#0b1325f2;border-radius:9px;min-width:150px;padding:9px 11px;font-size:13px;position:absolute;top:4px;transform:translate(8px);box-shadow:0 8px 24px #02061099}.tip.right.svelte-1gmdt1j{transform:translate(calc(-100% - 8px))}.tip.svelte-1gmdt1j p:where(.svelte-1gmdt1j){margin:0}.tip.svelte-1gmdt1j p:where(.svelte-1gmdt1j):first-child{color:var(--muted);margin-bottom:5px}.tip-row.svelte-1gmdt1j{align-items:center;gap:7px;display:flex}.tip-row.svelte-1gmdt1j strong:where(.svelte-1gmdt1j){margin-left:auto;padding-left:12px;font-weight:600}.tip.svelte-1gmdt1j i:where(.svelte-1gmdt1j),.who.svelte-1gmdt1j i:where(.svelte-1gmdt1j){border-radius:3px;flex-shrink:0;width:10px;height:10px}.rows.svelte-1gmdt1j{border-top:1px solid var(--border);display:grid}.client-row.svelte-1gmdt1j+.client-row:where(.svelte-1gmdt1j){border-top:1px solid var(--border)}.row-head.svelte-1gmdt1j{width:100%;min-height:52px;color:var(--text);font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;grid-template-columns:minmax(120px,1.2fr) minmax(120px,1.4fr) repeat(4,minmax(70px,auto)) minmax(110px,auto) 18px;align-items:center;gap:14px;padding:8px 4px;font-size:14px;display:grid}.row-head.svelte-1gmdt1j:disabled{cursor:default}.row-head.svelte-1gmdt1j:not(:disabled):hover{background:#17243b80}.row-head.svelte-1gmdt1j .chevron{color:var(--faint);transition:transform .15s}.row-head[aria-expanded=true].svelte-1gmdt1j .chevron{transform:rotate(180deg)}.who.svelte-1gmdt1j{align-items:center;gap:9px;min-width:0;display:flex}.who.svelte-1gmdt1j strong:where(.svelte-1gmdt1j){text-overflow:ellipsis;white-space:nowrap;font-size:15px;font-weight:600;overflow:hidden}.idle.svelte-1gmdt1j .who:where(.svelte-1gmdt1j) strong:where(.svelte-1gmdt1j){color:var(--muted);font-weight:500}.share.svelte-1gmdt1j{grid-template-columns:1fr 52px;align-items:center;gap:10px;display:grid}.share.svelte-1gmdt1j>.tabular:where(.svelte-1gmdt1j){text-align:right}.share-track.svelte-1gmdt1j{background:#2a3a55;border-radius:4px;height:8px;overflow:hidden}.share-track.svelte-1gmdt1j span:where(.svelte-1gmdt1j){border-radius:4px;height:100%;display:block}.figure.svelte-1gmdt1j{white-space:nowrap}.figure.svelte-1gmdt1j b:where(.svelte-1gmdt1j){font-weight:600}.idle-label.svelte-1gmdt1j{color:var(--muted);grid-column:3/-1}.muted.svelte-1gmdt1j{color:var(--muted)}.models.svelte-1gmdt1j{border:1px solid var(--border);border-radius:10px;margin:0 4px 12px;display:grid;overflow:hidden}.model.svelte-1gmdt1j{grid-template-columns:minmax(170px,2fr) repeat(6,minmax(60px,1fr));gap:10px;padding:8px 12px;font-size:14px;display:grid}.model.svelte-1gmdt1j>span:where(.svelte-1gmdt1j):not(.model-name){text-align:right}.model.svelte-1gmdt1j+.model:where(.svelte-1gmdt1j){border-top:1px solid var(--border)}.model.head.svelte-1gmdt1j{color:var(--muted);background:#17243b80;font-size:13px}.model.head.svelte-1gmdt1j>span:where(.svelte-1gmdt1j):first-child{text-align:left}.model-name.svelte-1gmdt1j{overflow-wrap:anywhere;align-items:center;gap:8px;min-width:0;display:flex}.empty.svelte-1gmdt1j{color:var(--muted);margin:0;padding:16px 4px 0}@media (width<=900px){.tiles.svelte-1gmdt1j{grid-template-columns:repeat(2,1fr)}.row-head.svelte-1gmdt1j{grid-template-columns:1fr auto auto 18px;row-gap:6px}.share.svelte-1gmdt1j{grid-area:2/1/auto/-1}.row-head.svelte-1gmdt1j .figure.muted:where(.svelte-1gmdt1j),.errors.svelte-1gmdt1j{display:none}.idle-label.svelte-1gmdt1j{grid-column:2/-1}.models.svelte-1gmdt1j{overflow-x:auto}.model.svelte-1gmdt1j{min-width:620px}}.page-description.svelte-15ihc32 .state-badge:where(.svelte-15ihc32){gap:7px}.client-grid.svelte-15ihc32{grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:16px;display:grid}.client-card.svelte-15ihc32{border:1px solid var(--border);border-top:3px solid var(--client);background:var(--surface);border-radius:14px;flex-direction:column;gap:14px;padding:20px 20px 22px;display:flex}.client-card.svelte-15ihc32 header:where(.svelte-15ihc32){justify-content:space-between;align-items:flex-start;gap:10px;display:flex}.client-title.svelte-15ihc32{flex-wrap:wrap;align-items:center;gap:6px 10px;min-width:0;padding-top:6px;display:flex}.client-dot.svelte-15ihc32{background:var(--client);border-radius:50%;width:10px;height:10px}.client-title.svelte-15ihc32 h2:where(.svelte-15ihc32){font-family:var(--font-display);letter-spacing:-.03em;overflow-wrap:anywhere;font-size:22px;font-weight:650}.client-title.svelte-15ihc32 code:where(.svelte-15ihc32){border:1px solid var(--border);background:var(--background);color:var(--muted);border-radius:6px;padding:2px 7px;font-size:13px}.card-actions.svelte-15ihc32{margin:-4px -8px 0 0;display:flex}.icon-button.danger.svelte-15ihc32:hover{color:var(--red)}.access.svelte-15ihc32,.shares.svelte-15ihc32{flex-wrap:wrap;gap:7px;display:flex}.tag.svelte-15ihc32,.share-chip.svelte-15ihc32{border:1px solid var(--border);border-radius:8px;align-items:center;gap:7px;padding:4px 10px 4px 7px;font-size:14px;display:inline-flex}.tag.strong.svelte-15ihc32{color:#c4d3ff;background:#5478f61c;border-color:#7899ff40;padding-left:10px}.tag.muted.svelte-15ihc32{padding-left:10px}.share-chip.svelte-15ihc32{border-color:color-mix(in srgb, var(--client) 45%, transparent);background:color-mix(in srgb, var(--client) 12%, transparent);color:var(--text);border-radius:999px;padding-left:9px}.share-chip.svelte-15ihc32 svg{color:var(--client)}.share-chip.svelte-15ihc32 strong:where(.svelte-15ihc32){color:var(--text);font-weight:600}.pool-usage.svelte-15ihc32{border-top:1px solid var(--border);padding-top:12px}.pool-name.svelte-15ihc32{align-items:center;gap:8px;margin:0 0 9px;font-size:15px;font-weight:550;display:flex}.usage-line.svelte-15ihc32{grid-template-columns:54px 1fr 74px;align-items:center;gap:12px;min-height:26px;display:grid}.kind.svelte-15ihc32{color:var(--muted);font-size:14px}.usage-track.svelte-15ihc32{background:#2a3a55;border-radius:4px;height:7px;position:relative}.usage-fill.svelte-15ihc32{border-radius:inherit;background:var(--client);position:absolute;inset:0 auto 0 0}.share-mark.svelte-15ihc32{background:var(--text);border-radius:1px;width:2px;margin-left:-1px;position:absolute;top:-4px;bottom:-4px}.usage-value.svelte-15ihc32{text-align:right;font-size:14px}.usage-value.over.svelte-15ihc32{color:var(--yellow)}.no-usage.svelte-15ihc32{margin:0}.section-toolbar.svelte-15ihc32{flex-wrap:wrap;margin-top:38px}.section-title.svelte-15ihc32,.info.svelte-15ihc32{align-items:center;gap:8px;display:inline-flex}.section-title.svelte-15ihc32{font-family:var(--font-display);font-size:23px;font-weight:600}.info.svelte-15ihc32{color:var(--faint);cursor:help}.info.svelte-15ihc32:hover{color:var(--blue)}.legend.svelte-15ihc32{color:var(--muted);flex-wrap:wrap;gap:8px 16px;font-size:14px;display:flex}.legend.svelte-15ihc32 span:where(.svelte-15ihc32){align-items:center;gap:7px;display:inline-flex}.legend.svelte-15ihc32 i:where(.svelte-15ihc32){border-radius:3px;width:11px;height:11px}.rest.svelte-15ihc32,.segment.rest.svelte-15ihc32{background:repeating-linear-gradient(135deg,#55688a 0 3px,#0000 3px 6px)}.legend.svelte-15ihc32 i.rest:where(.svelte-15ihc32){outline-offset:-1px;outline:1px solid #55688a}.breakdown.svelte-15ihc32{gap:16px;display:grid}.group-heading.svelte-15ihc32{border-bottom:1px solid var(--border);background:#17243b80;align-items:center;gap:10px;padding:14px 20px;display:flex}.group-heading.svelte-15ihc32 h3:where(.svelte-15ihc32){margin:0;font-size:16px;font-weight:600}.account-usage.svelte-15ihc32{grid-template-columns:minmax(130px,190px) 1fr;gap:18px;padding:14px 20px;display:grid}.account-usage.svelte-15ihc32+.account-usage:where(.svelte-15ihc32){border-top:1px solid var(--border)}.account-label.svelte-15ihc32{overflow-wrap:anywhere;margin:4px 0 0;font-size:15px;font-weight:550}.windows.svelte-15ihc32{gap:8px;display:grid}.window-row.svelte-15ihc32{grid-template-columns:54px 1fr 92px 230px;align-items:center;gap:14px;min-height:28px;display:grid}.stack.svelte-15ihc32{background:#2a3a55;border-radius:4px;height:12px;display:flex;overflow:hidden}.segment.svelte-15ihc32{height:100%}.segment.svelte-15ihc32+.segment:where(.svelte-15ihc32){box-shadow:inset 2px 0 0 var(--surface)}.used.svelte-15ihc32{text-align:right;font-size:14px}.reset.svelte-15ihc32{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;align-items:center;gap:6px;font-size:14px;display:flex;overflow:hidden}.reset.svelte-15ihc32 svg{color:var(--faint);flex-shrink:0}.empty-breakdown.svelte-15ihc32{color:var(--muted);margin:0;padding:22px 20px;font-size:15px}.open-warning.svelte-15ihc32{color:var(--yellow)}@media (width<=900px){.account-usage.svelte-15ihc32{grid-template-columns:1fr;gap:10px}}@media (width<=650px){.client-grid.svelte-15ihc32{grid-template-columns:1fr}.window-row.svelte-15ihc32{grid-template-columns:48px 1fr 80px}.reset.svelte-15ihc32{grid-column:2/-1;margin-top:-4px}.account-usage.svelte-15ihc32,.group-heading.svelte-15ihc32{padding-inline:16px}}.overview-stats.svelte-15ozkp9{border:1px solid var(--border);background:var(--surface);border-radius:14px;grid-template-columns:repeat(5,1fr);margin:28px 0 34px;display:grid}.overview-stats.svelte-15ozkp9>div:where(.svelte-15ozkp9){border-right:1px solid var(--border);padding:24px 20px}.overview-stats.svelte-15ozkp9>div:where(.svelte-15ozkp9):last-child{border:0}.overview-stats.svelte-15ozkp9 p:where(.svelte-15ozkp9){color:var(--muted);margin:0 0 15px;font-size:15px}.overview-stats.svelte-15ozkp9 strong:where(.svelte-15ozkp9){font-family:var(--font-display);letter-spacing:-.045em;font-variant-numeric:tabular-nums;font-size:34px;font-weight:600;display:block}.overview-stats.svelte-15ozkp9 span:where(.svelte-15ozkp9){color:var(--faint);margin-top:12px;font-size:15px;display:block}.inline-provider.svelte-15ozkp9{align-items:center;gap:8px;display:inline-flex}.http-status.svelte-15ozkp9{color:var(--green);background:#4dd4ac09;border:1px solid #4dd4ac20;border-radius:6px;padding:4px 7px;font-size:15px}.http-status.error.svelte-15ozkp9{color:var(--red);background:#ff819509;border-color:#ff819530}.account-filename.svelte-15ozkp9{font-family:var(--account-font);color:var(--muted);margin-top:5px;font-size:15px}.inline-error.svelte-15ozkp9{max-width:400px;color:var(--red);font-size:15px}.check-label.svelte-15ozkp9{color:var(--muted);align-items:center;gap:8px;font-size:15px;display:inline-flex}.check-label.svelte-15ozkp9 input:where(.svelte-15ozkp9){accent-color:var(--primary)}.table-scroll.svelte-15ozkp9{overflow-x:auto}.client-tag.svelte-15ozkp9{color:#c4d3ff;vertical-align:1px;background:#5478f61c;border:1px solid #7899ff40;border-radius:6px;margin-left:9px;padding:1px 8px;font-size:13px;display:inline-block}.setup-guide.svelte-15ozkp9 .key-required:where(.svelte-15ozkp9){color:var(--yellow)}.setup-guide.svelte-15ozkp9{max-width:760px;margin-top:30px}.setup-guide.svelte-15ozkp9 section:where(.svelte-15ozkp9){border-bottom:1px solid var(--border);gap:22px;padding:28px 0;display:flex}.setup-guide.svelte-15ozkp9 section:where(.svelte-15ozkp9):first-child{padding-top:0}.setup-guide.svelte-15ozkp9 h2:where(.svelte-15ozkp9){margin:5px 0 12px;font-size:16px}.setup-guide.svelte-15ozkp9 p:where(.svelte-15ozkp9){color:var(--muted);max-width:600px;font-size:15px;line-height:1.7}.copy-field.svelte-15ozkp9{border:1px solid var(--border);background:var(--surface);border-radius:10px;justify-content:space-between;align-items:center;margin:18px 0;padding:9px 13px;display:flex}.tool-tabs.svelte-15ozkp9{flex-wrap:wrap;gap:12px;display:flex}.setup-guide.svelte-15ozkp9 section:where(.svelte-15ozkp9)>div:where(.svelte-15ozkp9){width:100%;min-width:0}.setup-guide.svelte-15ozkp9 h2:where(.svelte-15ozkp9){font-size:20px}.copy-field.svelte-15ozkp9 code:where(.svelte-15ozkp9){overflow-wrap:anywhere;font-size:16px}.config-code.svelte-15ozkp9{align-items:flex-start;gap:12px}.config-code.svelte-15ozkp9 pre:where(.svelte-15ozkp9){white-space:pre-wrap;overflow-wrap:anywhere;min-width:0;margin:7px 0;line-height:1.8}@media (width<=780px){.check-label.svelte-15ozkp9{flex-basis:100%}}@media (width<=700px){.overview-stats.svelte-15ozkp9{grid-template-columns:repeat(2,1fr)}.overview-stats.svelte-15ozkp9>div:where(.svelte-15ozkp9){border-bottom:1px solid var(--border);padding:18px}.overview-stats.svelte-15ozkp9 strong:where(.svelte-15ozkp9){font-size:26px}}.language-setting.svelte-mf2zd9{border-top:1px solid var(--border);grid-template-columns:245px 1fr;gap:34px;max-width:1060px;margin-top:30px;padding:30px 0;display:grid}h2.svelte-mf2zd9{margin:0 0 9px;font-size:16px}p.svelte-mf2zd9{color:var(--muted);margin:0;font-size:15px;line-height:1.65}.language-field.svelte-mf2zd9{justify-content:flex-end;align-items:center;gap:11px;display:flex}.language-field.svelte-mf2zd9 svg{color:var(--muted);flex-shrink:0}select.svelte-mf2zd9{width:240px;font-size:15px}@media (width<=1150px){.language-setting.svelte-mf2zd9{grid-template-columns:1fr;gap:22px}}@media (width<=650px){select.svelte-mf2zd9{flex:1;width:auto;min-width:0}}.backup-setting.svelte-1h3frll{border-top:1px solid var(--border);grid-template-columns:245px 1fr;gap:34px;max-width:1060px;margin-top:30px;padding:30px 0 0;display:grid}h2.svelte-1h3frll{margin:0 0 9px;font-size:16px}p.svelte-1h3frll{color:var(--muted);margin:0;font-size:15px;line-height:1.65}.backup-body.svelte-1h3frll{align-content:start;gap:16px;display:grid}.backup-warning.svelte-1h3frll{border:1px solid color-mix(in srgb,var(--yellow) 28%,transparent);background:color-mix(in srgb,var(--yellow) 6%,transparent);color:var(--text);border-radius:12px;align-items:flex-start;gap:11px;padding:14px 16px;display:flex}.backup-warning.svelte-1h3frll svg{color:var(--yellow);flex-shrink:0;margin-top:3px}.backup-actions.svelte-1h3frll{flex-wrap:wrap;justify-content:flex-end;gap:10px;display:flex}.file-input.svelte-1h3frll{display:none}.backup-error.svelte-1h3frll{color:var(--red)}.restore-confirmation.svelte-1h3frll{border:1px solid var(--border);background:var(--surface);border-radius:12px;gap:14px;padding:16px;display:grid}.restore-confirmation.svelte-1h3frll p:where(.svelte-1h3frll){color:var(--text)}.settings-choice.svelte-1h3frll{cursor:pointer;align-items:center;gap:10px;font-size:15px;display:flex}.settings-choice.svelte-1h3frll input:where(.svelte-1h3frll){width:auto;height:auto;accent-color:var(--primary);margin:0}.confirmation-actions.svelte-1h3frll{flex-wrap:wrap;justify-content:flex-end;gap:10px;display:flex}@media (width<=1150px){.backup-setting.svelte-1h3frll{grid-template-columns:1fr;gap:22px}}@media (width<=650px){.backup-actions.svelte-1h3frll .button:where(.svelte-1h3frll),.confirmation-actions.svelte-1h3frll .button:where(.svelte-1h3frll){flex:1}}.session-note.svelte-eyvqa5{color:var(--muted);border:1px solid var(--border);background:var(--surface);border-radius:12px;align-items:flex-start;gap:12px;max-width:1060px;margin:24px 0 0;padding:16px 18px;font-size:15px;line-height:1.65;display:flex}.session-note.svelte-eyvqa5 svg{color:var(--blue);flex-shrink:0;margin-top:2px}.settings-form.svelte-eyvqa5{max-width:1060px;margin-top:32px}.settings-section.svelte-eyvqa5{border-bottom:1px solid var(--border);grid-template-columns:245px 1fr;gap:34px;padding:30px 0;display:grid}.settings-section.svelte-eyvqa5:first-child{padding-top:0}.settings-section.svelte-eyvqa5 h2:where(.svelte-eyvqa5){margin:0 0 9px;font-size:16px}.settings-section.svelte-eyvqa5 p:where(.svelte-eyvqa5){color:var(--muted);margin:0;font-size:15px;line-height:1.65}.strategy-options.svelte-eyvqa5{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.strategy-option.svelte-eyvqa5{border:1px solid var(--border);background:var(--surface);cursor:pointer;border-radius:12px;align-items:flex-start;gap:12px;min-height:126px;padding:18px 16px;display:flex}.strategy-option.svelte-eyvqa5:hover{border-color:#3c5279}.strategy-option.chosen.svelte-eyvqa5{border-color:var(--blue);background:#5478f613;box-shadow:inset 0 0 0 1px #7899ff22}.strategy-option.svelte-eyvqa5 input:where(.svelte-eyvqa5){width:auto;height:auto;accent-color:var(--primary);flex-shrink:0;margin:3px 0 0}.strategy-option.svelte-eyvqa5 span:where(.svelte-eyvqa5){font-size:15px;font-weight:550;line-height:1.3}.strategy-option.svelte-eyvqa5 small:where(.svelte-eyvqa5){color:var(--muted);margin-top:8px;font-size:15px;font-weight:400;line-height:1.55;display:block}.settings-fields.svelte-eyvqa5{gap:20px;display:grid}.settings-fields.svelte-eyvqa5>label:where(.svelte-eyvqa5){grid-template-columns:1fr 240px;align-items:center;gap:18px;font-size:15px;display:grid}.provider-fields.svelte-eyvqa5{border:1px solid var(--border);background:var(--surface);border-radius:12px;gap:0;overflow:hidden}.provider-fields.svelte-eyvqa5>label:where(.svelte-eyvqa5){border-bottom:1px solid var(--border);padding:13px 16px}.provider-fields.svelte-eyvqa5>label:where(.svelte-eyvqa5):last-child{border-bottom:0}.provider-label.svelte-eyvqa5{align-items:center;gap:11px;font-size:15px;display:flex}.provider-fields.svelte-eyvqa5 select:where(.svelte-eyvqa5){font-size:15px}.unit-field.svelte-eyvqa5{color:var(--muted);align-items:center;gap:10px;font-size:15px;display:flex}.unit-field.svelte-eyvqa5 input:where(.svelte-eyvqa5){width:115px}.settings-footer.svelte-eyvqa5{justify-content:flex-end;margin-top:25px;display:flex}@media (width<=1150px){.settings-section.svelte-eyvqa5{grid-template-columns:1fr;gap:22px}.settings-section.svelte-eyvqa5>div:where(.svelte-eyvqa5):first-child{max-width:600px}}@media (width<=650px){.strategy-options.svelte-eyvqa5{grid-template-columns:1fr}.strategy-option.svelte-eyvqa5{min-height:0;padding:16px}.strategy-option.svelte-eyvqa5 small:where(.svelte-eyvqa5){font-size:15px}.settings-fields.svelte-eyvqa5>label:where(.svelte-eyvqa5){grid-template-columns:1fr;gap:10px}.provider-fields.svelte-eyvqa5>label:where(.svelte-eyvqa5){grid-template-columns:1fr 170px;gap:10px;padding:13px 12px}.provider-label.svelte-eyvqa5{gap:8px;font-size:15px}.provider-fields.svelte-eyvqa5 select:where(.svelte-eyvqa5){width:100%;padding:0 7px}.settings-footer.svelte-eyvqa5 .button:where(.svelte-eyvqa5){width:100%}.session-note.svelte-eyvqa5{padding:15px}}.connect-dialog.svelte-1xsbe8v{width:min(640px,100vw - 32px);max-height:calc(100dvh - 32px);color:var(--text);background:var(--surface);border:1px solid #35496b;border-radius:18px;padding:28px;overflow-y:auto;box-shadow:0 24px 80px #030711b0}.connect-dialog.svelte-1xsbe8v::backdrop{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#030711b5}.dialog-heading.svelte-1xsbe8v{z-index:2;background:var(--surface);justify-content:space-between;align-items:flex-start;gap:20px;margin-bottom:8px;padding-bottom:18px;display:flex;position:sticky;top:0}.dialog-heading.svelte-1xsbe8v h2:where(.svelte-1xsbe8v){font-family:var(--font-display);letter-spacing:-.035em;margin:0 0 8px;font-size:26px;font-weight:650}.dialog-heading.svelte-1xsbe8v p:where(.svelte-1xsbe8v),.dialog-import.svelte-1xsbe8v p:where(.svelte-1xsbe8v){color:var(--muted);margin:0;font-size:15px;line-height:1.5}.provider-options.svelte-1xsbe8v{grid-template-columns:repeat(2,minmax(0,1fr));gap:11px;display:grid}.provider-option.svelte-1xsbe8v{border:1px solid var(--border);background:var(--background);text-align:left;border-radius:12px;align-items:center;gap:12px;min-height:86px;padding:15px 12px;display:flex}.provider-option.svelte-1xsbe8v:hover{background:var(--surface-raised);border-color:#5576ad}.provider-option.svelte-1xsbe8v>span:where(.svelte-1xsbe8v):not(.provider-logo){flex:1;font-size:15px;font-weight:550}.provider-logo.svelte-1xsbe8v{flex-shrink:0;justify-content:center;align-items:center;width:36px;display:flex}.provider-option.svelte-1xsbe8v small:where(.svelte-1xsbe8v){color:var(--muted);margin-top:5px;font-size:15px;font-weight:400;line-height:1.5;display:block}.provider-option.svelte-1xsbe8v svg{color:var(--faint);flex-shrink:0}.dialog-import.svelte-1xsbe8v{border-top:1px solid var(--border);align-items:center;gap:18px;margin-top:24px;padding-top:22px;display:flex}.dialog-import.svelte-1xsbe8v h3:where(.svelte-1xsbe8v){margin:0 0 6px;font-size:15px}.oauth-flow.svelte-1xsbe8v>p:where(.svelte-1xsbe8v){color:var(--muted);font-size:15px;line-height:1.6}.oauth-flow.svelte-1xsbe8v .flow-hint:where(.svelte-1xsbe8v){margin-top:24px;font-size:15px}.oauth-flow.svelte-1xsbe8v form:where(.svelte-1xsbe8v){gap:10px;display:grid}.oauth-flow.svelte-1xsbe8v label:where(.svelte-1xsbe8v){font-size:15px}.oauth-flow.svelte-1xsbe8v input:where(.svelte-1xsbe8v),.oauth-flow.svelte-1xsbe8v select:where(.svelte-1xsbe8v){width:100%}.oauth-flow.svelte-1xsbe8v code:where(.svelte-1xsbe8v){font-size:14px}.flow-controls.svelte-1xsbe8v{flex-wrap:wrap;gap:8px;margin-top:18px;display:flex}.device-code.svelte-1xsbe8v{border:1px solid var(--border);background:var(--background);border-radius:10px;justify-content:space-between;align-items:center;margin:20px 0;padding:14px 17px;display:flex}.device-code.svelte-1xsbe8v>span:where(.svelte-1xsbe8v){font-family:var(--font-display);letter-spacing:.08em;font-size:28px}.connection-success.svelte-1xsbe8v{text-align:center;padding:15px 0}.connection-success.svelte-1xsbe8v>span:where(.svelte-1xsbe8v){width:50px;height:50px;color:var(--green);background:#10b98115;border-radius:50%;place-items:center;display:inline-grid}.connection-success.svelte-1xsbe8v h3:where(.svelte-1xsbe8v){font-size:18px}.connection-success.svelte-1xsbe8v p:where(.svelte-1xsbe8v){color:var(--muted);margin-bottom:24px;font-size:15px}@media (width<=600px){.connect-dialog.svelte-1xsbe8v{border-radius:15px;padding:22px 18px}.dialog-heading.svelte-1xsbe8v h2:where(.svelte-1xsbe8v){font-size:24px}.provider-options.svelte-1xsbe8v{grid-template-columns:1fr;gap:9px}.provider-option.svelte-1xsbe8v{gap:15px;min-height:75px;padding:13px 15px}.provider-option.svelte-1xsbe8v>span:where(.svelte-1xsbe8v):not(.provider-logo),.provider-option.svelte-1xsbe8v small:where(.svelte-1xsbe8v){font-size:15px}.dialog-import.svelte-1xsbe8v{flex-direction:column;align-items:flex-start}} diff --git a/dash/build/_app/immutable/chunks/BJ6K4aSM.js b/dash/build/_app/immutable/chunks/BJ6K4aSM.js deleted file mode 100644 index 8106b83..0000000 --- a/dash/build/_app/immutable/chunks/BJ6K4aSM.js +++ /dev/null @@ -1 +0,0 @@ -import{$ as e,B as t,Q as n,R as r,n as i,t as a,tt as o,z as s}from"./QjDztciA.js";var c=class{constructor(e,t){this.status=e,this.body=typeof t==`string`?{message:t}:t||{message:`Error: ${e}`}}toString(){return JSON.stringify(this.body)}},l=class{constructor(e,t){try{new Headers({location:t})}catch{throw Error(`Invalid redirect location ${JSON.stringify(t)}: this string contains characters that cannot be used in HTTP headers`)}this.status=e,this.location=t}},u=class extends Error{constructor(e,t,n){super(n),this.status=e,this.text=t}};new URL(`sveltekit-internal://`);function d(e,t){return e===`/`||t===`ignore`?e:t===`never`?e.endsWith(`/`)?e.slice(0,-1):e:t===`always`&&!e.endsWith(`/`)?e+`/`:e}function f(e){return e.split(`%25`).map(decodeURI).join(`%25`)}function p(e){for(let t in e)e[t]=decodeURIComponent(e[t]);return e}function m({href:e}){return e.split(`#`)[0]}function h(){}function g(...e){let t=5381;for(let n of e)if(typeof n==`string`){let e=n.length;for(;e;)t=t*33^n.charCodeAt(--e)}else if(ArrayBuffer.isView(n)){let e=new Uint8Array(n.buffer,n.byteOffset,n.byteLength),r=e.length;for(;r;)t=t*33^e[--r]}else throw TypeError(`value must be a string or TypedArray`);return(t>>>0).toString(36)}new TextEncoder;function _(e){let t=atob(e),n=new Uint8Array(t.length);for(let e=0;e((e instanceof Request?e.method:t?.method||`GET`)!==`GET`&&y.delete(x(e)),v(e,t));var y=new Map;function ee(e,t){let n=x(e,t),r=document.querySelector(n);if(r?.textContent){r.remove();let{body:e,...t}=JSON.parse(r.textContent);r.getAttribute(`data-b64`)!==null&&(e=_(e));let i=r.getAttribute(`data-ttl`);return i&&y.set(n,{body:e,init:t,ttl:1e3*Number(i)}),Promise.resolve(new Response(e,t))}return window.fetch(e,t)}function b(e,t,n){if(y.size>0){let t=x(e,n),r=y.get(t);if(r){if(performance.now(){let n=/^\[\.\.\.(\w+)(?:=(\w+))?\]$/.exec(e);if(n)return t.push({name:n[1],matcher:n[2],optional:!1,rest:!0,chained:!0}),`(?:/([^]*))?`;let r=/^\[\[(\w+)(?:=(\w+))?\]\]$/.exec(e);if(r)return t.push({name:r[1],matcher:r[2],optional:!0,rest:!1,chained:!0}),`(?:/([^/]+))?`;if(!e)return;let i=e.split(/\[(.+?)\](?!\])/);return`/`+i.map((e,n)=>{if(n%2){if(e.startsWith(`x+`))return se(String.fromCharCode(parseInt(e.slice(2),16)));if(e.startsWith(`u+`))return se(String.fromCharCode(...e.slice(2).split(`-`).map(e=>parseInt(e,16))));let[,r,a,o,s]=te.exec(e);return t.push({name:o,matcher:s,optional:!!r,rest:!!a,chained:a?n===1&&i[0]===``:!1}),a?`([^]*?)`:r?`([^/]*)?`:`([^/]+?)`}return se(e)}).join(``)}).join(``)}/?$`),params:t}}function ie(e){return e!==``&&!/^\([^)]+\)$/.test(e)}function ae(e){return e.slice(1).split(`/`).filter(ie)}function oe(e,t,n){let r={},i=e.slice(1),a=i.filter(e=>e!==void 0),o=0;for(let e=0;ee).join(`/`),o=0),c===void 0)if(s.rest)c=``;else continue;if(!s.matcher||n[s.matcher](c)){r[s.name]=c;let n=t[e+1],l=i[e+1];n&&!n.rest&&n.optional&&l&&s.chained&&(o=0),!n&&!l&&Object.keys(r).length===a.length&&(o=0);continue}if(s.optional&&s.chained){o++;continue}return}if(!o)return r}function se(e){return e.normalize().replace(/[[\]]/g,`\\$&`).replace(/%/g,`%25`).replace(/\//g,`%2[Ff]`).replace(/\?/g,`%3[Ff]`).replace(/#/g,`%23`).replace(/[.*+?^${}()|\\]/g,`\\$&`)}function ce({nodes:e,server_loads:t,dictionary:n,matchers:r}){let i=new Set(t);return Object.entries(n).map(([t,[n,i,s]])=>{let{pattern:c,params:l}=re(t),u={id:t,exec:e=>{let t=c.exec(e);if(t)return oe(t,l,r)},errors:[1,...s||[]].map(t=>e[t]),layouts:[0,...i||[]].map(o),leaf:a(n)};return u.errors.length=u.layouts.length=Math.max(u.errors.length,u.layouts.length),u});function a(t){let n=t<0;return n&&(t=~t),[n,e[t]]}function o(t){return t===void 0?t:[i.has(t),e[t]]}}function le(e,t=JSON.parse){try{return t(sessionStorage[e])}catch{}}function ue(e,t,n=JSON.stringify){let r=n(t);try{sessionStorage[e]=r}catch{}}var S=globalThis.__sveltekit_12m4qe4?.base??`/admin`,de=globalThis.__sveltekit_12m4qe4?.assets??S??``,fe=`1792586093948`,pe=`sveltekit:snapshot`,me=`sveltekit:scroll`,he=`sveltekit:states`,C=`sveltekit:history`,w=`sveltekit:navigation`,T={tap:1,hover:2,viewport:3,eager:4,off:-1,false:-1},ge=location.origin;function _e(e){if(e instanceof URL)return e;let t=document.baseURI;if(!t){let e=document.getElementsByTagName(`base`);t=e.length?e[0].href:document.URL}return new URL(e,t)}function E(){return{x:pageXOffset,y:pageYOffset}}function D(e,t){return e.getAttribute(`data-sveltekit-${t}`)}var ve={...T,"":T.hover};function ye(e){let t=e.assignedSlot??e.parentNode;return t?.nodeType===11&&(t=t.host),t}function be(e,t){for(;e&&e!==t;){if(e.nodeName.toUpperCase()===`A`&&e.hasAttribute(`href`))return e;e=ye(e)}}function xe(e,t,n){let r;try{if(r=new URL(e instanceof SVGAElement?e.href.baseVal:e.href,document.baseURI),n&&r.hash.match(/^#[^/]/)){let e=location.hash.split(`#`)[1]||`/`;r.hash=`#${e}${r.hash}`}}catch{}let i=e instanceof SVGAElement?e.target.baseVal:e.target,a=!r||!!i||k(r,t,n)||(e.getAttribute(`rel`)||``).split(/\s+/).includes(`external`),o=r?.origin===ge&&e.hasAttribute(`download`);return{url:r,external:a,target:i,download:o}}function O(e){let t=null,n=null,r=null,i=null,a=null,o=null,s=e;for(;s&&s!==document.documentElement;)r===null&&(r=D(s,`preload-code`)),i===null&&(i=D(s,`preload-data`)),t===null&&(t=D(s,`keepfocus`)),n===null&&(n=D(s,`noscroll`)),a===null&&(a=D(s,`reload`)),o===null&&(o=D(s,`replacestate`)),s=ye(s);function c(e){switch(e){case``:case`true`:return!0;case`off`:case`false`:return!1;default:return}}return{preload_code:ve[r??`off`],preload_data:ve[i??`off`],keepfocus:c(t),noscroll:c(n),reload:c(a),replace_state:c(o)}}function Se(e){let t=o(e),n=!0;function r(){n=!0,t.update(e=>e)}function i(e){n=!1,t.set(e)}function a(e){let r;return t.subscribe(t=>{(r===void 0||n&&t!==r)&&e(r=t)})}return{notify:r,set:i,subscribe:a}}var Ce={v:h};function we(){let{set:e,subscribe:t}=o(!1),n;async function r(){clearTimeout(n);try{let t=await fetch(`${de}/_app/version.json`,{headers:{pragma:`no-cache`,"cache-control":`no-cache`}});if(!t.ok)return!1;let r=(await t.json()).version!==fe;return r&&(e(!0),Ce.v(),clearTimeout(n)),r}catch{return!1}}return{subscribe:t,check:r}}function k(e,t,n){return e.origin!==ge||!e.pathname.startsWith(t)?!0:n?e.pathname!==location.pathname:!1}function Te(e){}var Ee=new Set([`load`,`prerender`,`csr`,`ssr`,`trailingSlash`,`config`]);[...Ee],[...new Set([...Ee])];function De(e){return e.filter(e=>e!=null)}function A(e,t){return e+`/`+t}function Oe(e){return e instanceof c||e instanceof u?e.status:500}function ke(e){return e instanceof u?e.text:`Internal Error`}var j,M,N,Ae=i.toString().includes(`$$`)||/function \w+\(\) \{\}/.test(i.toString()),je=`a:`;Ae?(j={data:{},form:null,error:null,params:{},route:{id:null},state:{},status:-1,url:new URL(je)},M={current:null},N={current:!1}):(j=new class{#e=e({});get data(){return r(this.#e)}set data(e){n(this.#e,e)}#t=e(null);get form(){return r(this.#t)}set form(e){n(this.#t,e)}#n=e(null);get error(){return r(this.#n)}set error(e){n(this.#n,e)}#r=e({});get params(){return r(this.#r)}set params(e){n(this.#r,e)}#i=e({id:null});get route(){return r(this.#i)}set route(e){n(this.#i,e)}#a=e({});get state(){return r(this.#a)}set state(e){n(this.#a,e)}#o=e(-1);get status(){return r(this.#o)}set status(e){n(this.#o,e)}#s=e(new URL(je));get url(){return r(this.#s)}set url(e){n(this.#s,e)}},M=new class{#e=e(null);get current(){return r(this.#e)}set current(e){n(this.#e,e)}},N=new class{#e=e(!1);get current(){return r(this.#e)}set current(e){n(this.#e,e)}},Ce.v=()=>N.current=!0);function Me(e){Object.assign(j,e)}var{onMount:Ne,tick:Pe}=a,Fe=new Set([`icon`,`shortcut icon`,`apple-touch-icon`]),P=null,F=le(`sveltekit:scroll`)??{},I=le(`sveltekit:snapshot`)??{},L={url:Se({}),page:Se({}),navigating:o(null),updated:we()};function Ie(e){F[e]=E()}function Le(e,t){let n=e+1;for(;F[n];)delete F[n],n+=1;for(n=t+1;I[n];)delete I[n],n+=1}function R(e,t=!1){return t?location.replace(e.href):location.href=e.href,new Promise(h)}async function Re(){if(`serviceWorker`in navigator){let e=await navigator.serviceWorker.getRegistration(S||`/`);e&&await e.update()}}var ze,Be,z,B,Ve,V,He={},Ue={},H=[],We=[],U=null;function Ge(){U?.fork?.then(e=>e?.discard()),U=null,Q={element:void 0,href:void 0}}var Ke=new Map,qe=new Set,Je=new Set,W=new Set,G={branch:[],error:null,url:null,nav:null},Ye=!1,Xe=!1,Ze=!0,K=!1,q=!1,Qe=!1,$e=!1,et,J,Y,X,tt=new Set,nt=new Map,rt=new Map;async function it(e,t,n){if(globalThis.__sveltekit_12m4qe4.data){let{q:e={},p:t={},l:n={},f:r={}}=globalThis.__sveltekit_12m4qe4.data;for(let t in e)He[t]=e[t];for(let e in n)He[e]=n[e];for(let e in r)He[e]=r[e];for(let e in t)Ue[e]=t[e]}document.URL!==location.href&&(location.href=location.href),V=e,await e.hooks.init?.(),ze=ce(e),B=document.documentElement,Ve=t,Be=e.nodes[0],z=e.nodes[1],Be(),z(),J=history.state?.[C],Y=history.state?.[w],J||(J=Y=Date.now(),history.replaceState({...history.state,[C]:J,[w]:Y},``));let r=F[J];function i(){r&&(history.scrollRestoration=`manual`,scrollTo(r.x,r.y))}n?(i(),await Mt(Ve,n)):(await Z({type:`enter`,url:_e(V.hash?Rt(new URL(location.href)):location.href),replace_state:!0}),i()),jt()}function at(){H.length=0,$e=!1}function ot(e){We.some(e=>e?.snapshot)&&(I[e]=We.map(e=>e?.snapshot?.capture()))}function st(e){I[e]?.forEach((e,t)=>{We[t]?.snapshot?.restore(e)})}function ct(){Ie(J),ue(me,F),ot(Y),ue(pe,I)}async function lt(e,n,r,i){let a,o;n.invalidateAll&&Ge(),await Z({type:`goto`,url:_e(e),keepfocus:n.keepFocus,noscroll:n.noScroll,replace_state:n.replaceState,state:n.state,redirect_count:r,nav_token:i,accept:()=>{if(n.invalidateAll){$e=!0,a=new Set;for(let[e,t]of nt)for(let[n,r]of t)r.resource?.reset(),a.add(A(e,n));o=new Set;for(let[e,t]of rt)for(let n of t.keys())o.add(A(e,n))}n.invalidate&&n.invalidate.forEach(At)}}),n.invalidateAll&&t().then(t).then(()=>{for(let[e,t]of nt)for(let[n,{resource:r}]of t)a?.has(A(e,n))&&r.start();for(let[e,t]of rt)for(let[n,{resource:r}]of t)o?.has(A(e,n))&&r.reconnect()})}async function ut(e){if(e.id!==U?.id){Ge();let t={};tt.add(t),U={id:e.id,token:t,promise:bt({...e,preload:t}).then(e=>(tt.delete(t),e.type===`loaded`&&e.state.error&&Ge(),e)),fork:null}}return U.promise}async function dt(e){let t=(await wt(e,!1))?.route;t&&await Promise.all([...t.layouts,t.leaf].filter(Boolean).map(e=>e[1]()))}async function ft(e,t,n){let r={params:G.params,route:{id:G.route?.id??null},url:new URL(location.href)};if(G={...e.state,nav:r},Me(e.props.page),et=new V.root({target:t,props:{...e.props,stores:L,components:We},hydrate:n,sync:!1,transformError:void 0}),await Promise.resolve(),n){let e={from:null,to:{...r,scroll:F[J]??E()},willUnload:!1,type:`enter`,complete:Promise.resolve()};W.forEach(t=>t(e))}st(Y),Xe=!0}async function pt({url:e,params:t,branch:n,errors:r,status:i,error:a,route:o,form:s}){let c=`never`;if(S&&(e.pathname===S||e.pathname===S+`/`))c=`always`;else for(let e of n)e?.slash!==void 0&&(c=e.slash);e.pathname=d(e.pathname,c),e.search=e.search;let l={type:`loaded`,state:{url:e,params:t,branch:n,error:a,route:o},props:{constructors:De(n).map(e=>e.node.component),page:Lt(j)}};s!==void 0&&(l.props.form=s);let u={},f=!j,p=0;for(let e=0;et(new URL(e))))return!0;return!1}function _t(e,t){return e?.type===`data`?e:e?.type===`skip`?t??null:null}function vt(e,t){if(!e)return new Set(t.searchParams.keys());let n=new Set([...e.searchParams.keys(),...t.searchParams.keys()]);for(let r of n){let i=e.searchParams.getAll(r),a=t.searchParams.getAll(r);i.every(e=>a.includes(e))&&a.every(e=>i.includes(e))&&n.delete(r)}return n}function yt({error:e,url:t,route:n,params:r}){return{type:`loaded`,state:{error:e,url:t,route:n,params:r,branch:[]},props:{page:Lt(j),constructors:[]}}}async function bt({id:e,invalidating:t,url:n,params:r,route:i,preload:a}){if(U?.id===e)return tt.delete(U.token),U.promise;let{errors:o,layouts:s,leaf:u}=i,d=[...s,u];o.forEach(e=>e?.().catch(h)),d.forEach(e=>e?.[1]().catch(h));let f=G.url?e!==Et(G.url):!1,p=G.route?i.id!==G.route.id:!1,m=vt(G.url,n),g=!1,_=d.map(async(e,t)=>{if(!e)return;let a=G.branch[t];return e[1]===a?.loader&&!gt(g,p,f,m,a.universal?.uses,r)?a:(g=!0,mt({loader:e[1],url:n,params:r,route:i,parent:async()=>{let e={};for(let n=0;nPromise.resolve({}),server_data_node:_t(null)}),{node:await z(),loader:z,universal:null,server:null,data:null}],status:e,error:t,errors:[],route:null})}catch(t){if(t instanceof l){await lt(new URL(t.location,location.href),{},0);return}let a=await V.get_error_template(),o=await $(t,{url:n,params:i,route:r}),s=a({status:e,message:String(o?.message??``).replace(/&/g,`&`).replace(//g,`>`)}),c=new DOMParser().parseFromString(s,`text/html`);throw document.documentElement.replaceChild(document.adoptNode(c.head),document.head),document.documentElement.replaceChild(document.adoptNode(c.body),document.body),t}}async function Ct(e){let t=e.href;if(Ke.has(t))return Ke.get(t);let n;try{let r=(async()=>{let t=await V.hooks.reroute({url:new URL(e),fetch:async(t,n)=>ht(t,n,e).promise})??e;if(typeof t==`string`){let n=new URL(e);V.hash?n.hash=t:n.pathname=t,t=n}return t})();Ke.set(t,r),n=await r}catch{Ke.delete(t);return}return n}async function wt(e,t){if(e&&!k(e,S,V.hash)){let n=await Ct(e);if(!n)return;let r=Tt(n);for(let n of ze){let i=n.exec(r);if(i)return{id:Et(e),invalidating:t,route:n,params:p(i),url:e}}}}function Tt(e){return f(V.hash?e.hash.replace(/^#/,``).replace(/[?#].+/,``):e.pathname.slice(S.length))||`/`}function Et(e){return(V.hash?e.hash.replace(/^#/,``):e.pathname)+e.search}function Dt({url:e,type:t,intent:n,delta:r,event:i,scroll:a}){let o=!1,s=It(G,n,e,t,a??null);r!==void 0&&(s.navigation.delta=r),i!==void 0&&(s.navigation.event=i);let c={...s.navigation,cancel:()=>{o=!0,s.reject(Error(`navigation cancelled`))}};return K||qe.forEach(e=>e(c)),o?null:s}async function Z({type:e,url:n,popped:r,keepfocus:i,noscroll:a,replace_state:o,state:c={},redirect_count:l=0,nav_token:d={},accept:f=h,block:p=h,event:m}){let g=X;X=d;let _=await wt(n,!1),v=e===`enter`?It(G,_,n,e):Dt({url:n,type:e,delta:r?.delta,intent:_,scroll:r?.scroll,event:m});if(!v){p(),X===d&&(X=g);return}let y=J,ee=Y;f(),K=!0,Xe&&v.navigation.type!==`enter`&&L.navigating.set(M.current=v.navigation);let b=_&&await bt(_);if(!b){if(k(n,S,V.hash))return await R(n,o);b=await Ot(n,{id:null},await $(new u(404,`Not Found`,`Not found: ${n.pathname}`),{url:n,params:{},route:{id:null}}),404,o)}if(n=_?.url||n,X!==d){v.reject(Error(`navigation aborted`));return}if(!b)return;if(b.type===`redirect`){if(l<20){await Z({type:e,url:new URL(b.location,n),popped:r,keepfocus:i,noscroll:a,replace_state:o,state:c,redirect_count:l+1,nav_token:d}),v.fulfil(void 0);return}if(b=await St({status:500,error:await $(Error(`Redirect loop`),{url:n,params:{},route:{id:null}}),url:n,route:{id:null}}),!b)return}else if(b.props.page.status>=400&&await L.updated.check())return await Re(),await R(n,o);if(at(),Ie(y),ot(ee),b.props.page.url.pathname!==n.pathname&&(n.pathname=b.props.page.url.pathname),c=r?r.state:c,!r){let e=+!o,t={[C]:J+=e,[w]:Y+=e,[he]:c};(o?history.replaceState:history.pushState).call(history,t,``,n),o||Le(J,Y)}let x=_&&U?.id===_.id?U.fork:null;U?.fork&&!x?Ge():(U=null,Q={element:void 0,href:void 0}),b.props.page.state=c;let te;if(Xe){let e=(await Promise.all(Array.from(Je,e=>e(v.navigation)))).filter(e=>typeof e==`function`);if(e.length>0){function t(){e.forEach(e=>{W.delete(e)})}e.push(t),e.forEach(e=>{W.add(e)})}let t=v.navigation.to;G={...b.state,nav:{params:t.params,route:t.route,url:t.url}},b.props.page&&(b.props.page.url=n),!i&&document.activeElement instanceof HTMLElement&&document.activeElement!==document.body&&document.activeElement.blur();let r=x&&await x;r?te=r.commit():(P=null,et.$set(b.props),P&&Object.assign(b.props.page,P),Me(b.props.page),te=s?.()),Qe=!0}else await ft(b,Ve,!1);let{activeElement:ne}=document;if(await te,await t(),await t(),X!==d){v.reject(Error(`navigation aborted`));return}b.props.page&&P&&Object.assign(b.props.page,P);let re=null;if(Ze){let e=r?r.scroll:a?E():null;e?scrollTo(e.x,e.y):(re=n.hash&&document.getElementById(zt(n)))?re.scrollIntoView():scrollTo(0,0)}let ie=document.activeElement!==ne&&document.activeElement!==document.body;!i&&!ie&&Ft(n,!re),Ze=!0,K=!1,v.fulfil(void 0),v.navigation.to&&(v.navigation.to.scroll=E()),W.forEach(e=>e(v.navigation)),e===`popstate`&&st(Y),L.navigating.set(M.current=null)}async function Ot(e,t,n,r,i){return e.origin===ge&&e.pathname===location.pathname&&!Ye?await St({status:r,error:n,url:e,route:t}):await R(e,i)}var Q={element:void 0,href:void 0};function kt(){let e,t;B.addEventListener(`mousemove`,t=>{let n=t.target;clearTimeout(e),e=setTimeout(()=>{i(n,T.hover)},20)});function n(e){e.defaultPrevented||i(e.composedPath()[0],T.tap)}B.addEventListener(`mousedown`,n),B.addEventListener(`touchstart`,n,{passive:!0});let r=new IntersectionObserver(e=>{for(let t of e)t.isIntersecting&&(dt(new URL(t.target.href)),r.unobserve(t.target))},{threshold:0});async function i(e,n){let r=be(e,B),i=r===Q.element&&r?.href===Q.href&&n>=t;if(!r||i)return;let{url:a,external:o,download:s}=xe(r,S,V.hash);if(o||s)return;let c=O(r),l=a&&Et(G.url)===Et(a);if(!(c.reload||l))if(n<=c.preload_data){Q={element:r,href:r.href},t=T.tap;let e=await wt(a,!1);if(!e)return;ut(e)}else n<=c.preload_code&&(Q={element:r,href:r.href},t=n,dt(a))}function a(){r.disconnect();for(let e of B.querySelectorAll(`a`)){let{url:t,external:n,download:i}=xe(e,S,V.hash);if(n||i)continue;let a=O(e);a.reload||(a.preload_code===T.viewport&&r.observe(e),a.preload_code===T.eager&&dt(t))}}W.add(a),a()}function $(e,t){if(e instanceof c)return e.body;let n=Oe(e),r=ke(e);return V.hooks.handleError({error:e,event:t,status:n,message:r})??{message:r}}function At(e){if(typeof e==`function`)H.push(e);else{let{href:t}=new URL(e,location.href);H.push(e=>e.href===t)}}function jt(){history.scrollRestoration=`manual`,addEventListener(`beforeunload`,e=>{let t=!1;if(ct(),!K){let e=It(G,void 0,null,`leave`),n={...e.navigation,cancel:()=>{t=!0,e.reject(Error(`navigation cancelled`))}};qe.forEach(e=>e(n))}t?(e.preventDefault(),e.returnValue=``):history.scrollRestoration=`auto`}),addEventListener(`visibilitychange`,()=>{document.visibilityState===`hidden`&&ct()}),navigator.connection?.saveData||kt(),B.addEventListener(`click`,async t=>{if(t.button||t.which!==1||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey||t.defaultPrevented)return;let n=be(t.composedPath()[0],B);if(!n)return;let{url:r,external:i,target:a,download:o}=xe(n,S,V.hash);if(!r)return;if(a===`_parent`||a===`_top`){if(window.parent!==window)return}else if(a&&a!==`_self`)return;let s=O(n);if(!(n instanceof SVGAElement)&&r.protocol!==location.protocol&&r.protocol!==`https:`&&r.protocol!==`http:`||o)return;let[c,l]=(V.hash?r.hash.replace(/^#/,``):r.href).split(`#`),u=c===m(location);if(i||s.reload&&(!u||!l)){Dt({url:r,type:`link`,event:t})?K=!0:t.preventDefault();return}if(l!==void 0&&u){let[,i]=G.url.href.split(`#`);if(i===l){if(t.preventDefault(),l===``||l===`top`&&n.ownerDocument.getElementById(`top`)===null)scrollTo({top:0});else{let e=n.ownerDocument.getElementById(decodeURIComponent(l));e&&(e.scrollIntoView(),e.focus())}return}if(q=!0,Ie(J),e(r),!s.replace_state)return;q=!1}t.preventDefault(),await new Promise(e=>{requestAnimationFrame(()=>{setTimeout(e,0)}),setTimeout(e,100)}),await Z({type:`link`,url:r,keepfocus:s.keepfocus,noscroll:s.noscroll,replace_state:s.replace_state??r.href===location.href,event:t})}),B.addEventListener(`submit`,e=>{if(e.defaultPrevented)return;let t=HTMLFormElement.prototype.cloneNode.call(e.target),n=e.submitter;if((n?.formTarget||t.target)===`_blank`||(n?.formMethod||t.method)!==`get`)return;let r=new URL(n?.hasAttribute(`formaction`)&&n?.formAction||t.action);if(k(r,S,!1))return;let i=e.target,a=O(i);if(a.reload)return;e.preventDefault(),e.stopPropagation();let o=new FormData(i,n);r.search=new URLSearchParams(o).toString(),Z({type:`form`,url:r,keepfocus:a.keepfocus,noscroll:a.noscroll,replace_state:a.replace_state??r.href===location.href,event:e})}),addEventListener(`popstate`,async t=>{if(!Pt)if(t.state?.[`sveltekit:history`]){let n=t.state[C];if(X={},n===J)return;let r=F[n],i=t.state[`sveltekit:states`]??{},a=new URL(t.state[`sveltekit:pageurl`]??location.href),o=t.state[w],s=G.url?m(location)===m(G.url):!1;if(o===Y&&(Qe||s)){i!==j.state&&(j.state=i),e(a),F[J]=E(),r&&scrollTo(r.x,r.y),J=n;return}let c=n-J;await Z({type:`popstate`,url:a,popped:{state:i,scroll:r,delta:c},accept:()=>{J=n,Y=o},block:()=>{history.go(-c)},nav_token:X,event:t})}else q||(e(new URL(location.href)),V.hash&&location.reload())}),addEventListener(`hashchange`,()=>{q&&(q=!1,history.replaceState({...history.state,[C]:++J,[w]:Y},``,location.href))});for(let e of document.querySelectorAll(`link`))Fe.has(e.rel)&&(e.href=e.href);addEventListener(`pageshow`,e=>{e.persisted&&L.navigating.set(M.current=null)});function e(e){G.url=j.url=e,L.page.set(Lt(j)),L.page.notify()}}async function Mt(e,{status:t=200,error:n,node_ids:r,params:i,route:a,server_route:o,data:s,form:c}){Ye=!0;let u=new URL(location.href),d;({params:i={},route:a={id:null}}=await wt(u,!1)||{}),d=ze.find(({id:e})=>e===a.id);let f,p=!0;try{let e=r.map(async(t,n)=>{let r=s[n];return r?.uses&&(r.uses=Nt(r.uses)),mt({loader:V.nodes[t],url:u,params:i,route:a,parent:async()=>{let t={};for(let r=0;r{let a=history.state;Pt=!0,location.replace(new URL(`#${n}`,location.href)),history.replaceState(a,``,e),t&&scrollTo(r,i),Pt=!1})}else{let e=document.body,t=e.getAttribute(`tabindex`);e.tabIndex=-1,e.focus({preventScroll:!0,focusVisible:!1}),t===null?e.removeAttribute(`tabindex`):e.setAttribute(`tabindex`,t)}let r=getSelection();if(r&&r.type!==`None`){let e=[];for(let t=0;t{if(r.rangeCount===e.length){for(let t=0;t{a=e,o=t});return s.catch(h),{navigation:{from:{params:e.params,route:{id:e.route?.id??null},url:e.url,scroll:E()},to:n&&{params:t?.params??null,route:{id:t?.route?.id??null},url:n,scroll:i},willUnload:!t,type:r,complete:s},fulfil:a,reject:o}}function Lt(e){return{data:e.data,error:e.error,form:e.form,params:e.params,route:e.route,state:e.state,status:e.status,url:e.url}}function Rt(e){let t=new URL(e);return t.hash=decodeURIComponent(e.hash),t}function zt(e){let t;if(V.hash){let[,,n]=e.hash.split(`#`,3);t=n??``}else t=e.hash.slice(1);return decodeURIComponent(t)}export{N as a,j as i,L as n,Te as o,M as r,it as t}; \ No newline at end of file diff --git a/dash/build/_app/immutable/chunks/BpCz1rGI.js b/dash/build/_app/immutable/chunks/BpCz1rGI.js new file mode 100644 index 0000000..9c891ba --- /dev/null +++ b/dash/build/_app/immutable/chunks/BpCz1rGI.js @@ -0,0 +1 @@ +import{$ as e,B as t,Q as n,R as r,n as i,t as a,tt as o,z as s}from"./QjDztciA.js";var c=class{constructor(e,t){this.status=e,this.body=typeof t==`string`?{message:t}:t||{message:`Error: ${e}`}}toString(){return JSON.stringify(this.body)}},l=class{constructor(e,t){try{new Headers({location:t})}catch{throw Error(`Invalid redirect location ${JSON.stringify(t)}: this string contains characters that cannot be used in HTTP headers`)}this.status=e,this.location=t}},u=class extends Error{constructor(e,t,n){super(n),this.status=e,this.text=t}};new URL(`sveltekit-internal://`);function d(e,t){return e===`/`||t===`ignore`?e:t===`never`?e.endsWith(`/`)?e.slice(0,-1):e:t===`always`&&!e.endsWith(`/`)?e+`/`:e}function f(e){return e.split(`%25`).map(decodeURI).join(`%25`)}function p(e){for(let t in e)e[t]=decodeURIComponent(e[t]);return e}function m({href:e}){return e.split(`#`)[0]}function h(){}function g(...e){let t=5381;for(let n of e)if(typeof n==`string`){let e=n.length;for(;e;)t=t*33^n.charCodeAt(--e)}else if(ArrayBuffer.isView(n)){let e=new Uint8Array(n.buffer,n.byteOffset,n.byteLength),r=e.length;for(;r;)t=t*33^e[--r]}else throw TypeError(`value must be a string or TypedArray`);return(t>>>0).toString(36)}new TextEncoder;function _(e){let t=atob(e),n=new Uint8Array(t.length);for(let e=0;e((e instanceof Request?e.method:t?.method||`GET`)!==`GET`&&y.delete(x(e)),v(e,t));var y=new Map;function ee(e,t){let n=x(e,t),r=document.querySelector(n);if(r?.textContent){r.remove();let{body:e,...t}=JSON.parse(r.textContent);r.getAttribute(`data-b64`)!==null&&(e=_(e));let i=r.getAttribute(`data-ttl`);return i&&y.set(n,{body:e,init:t,ttl:1e3*Number(i)}),Promise.resolve(new Response(e,t))}return window.fetch(e,t)}function b(e,t,n){if(y.size>0){let t=x(e,n),r=y.get(t);if(r){if(performance.now(){let n=/^\[\.\.\.(\w+)(?:=(\w+))?\]$/.exec(e);if(n)return t.push({name:n[1],matcher:n[2],optional:!1,rest:!0,chained:!0}),`(?:/([^]*))?`;let r=/^\[\[(\w+)(?:=(\w+))?\]\]$/.exec(e);if(r)return t.push({name:r[1],matcher:r[2],optional:!0,rest:!1,chained:!0}),`(?:/([^/]+))?`;if(!e)return;let i=e.split(/\[(.+?)\](?!\])/);return`/`+i.map((e,n)=>{if(n%2){if(e.startsWith(`x+`))return se(String.fromCharCode(parseInt(e.slice(2),16)));if(e.startsWith(`u+`))return se(String.fromCharCode(...e.slice(2).split(`-`).map(e=>parseInt(e,16))));let[,r,a,o,s]=te.exec(e);return t.push({name:o,matcher:s,optional:!!r,rest:!!a,chained:a?n===1&&i[0]===``:!1}),a?`([^]*?)`:r?`([^/]*)?`:`([^/]+?)`}return se(e)}).join(``)}).join(``)}/?$`),params:t}}function ie(e){return e!==``&&!/^\([^)]+\)$/.test(e)}function ae(e){return e.slice(1).split(`/`).filter(ie)}function oe(e,t,n){let r={},i=e.slice(1),a=i.filter(e=>e!==void 0),o=0;for(let e=0;ee).join(`/`),o=0),c===void 0)if(s.rest)c=``;else continue;if(!s.matcher||n[s.matcher](c)){r[s.name]=c;let n=t[e+1],l=i[e+1];n&&!n.rest&&n.optional&&l&&s.chained&&(o=0),!n&&!l&&Object.keys(r).length===a.length&&(o=0);continue}if(s.optional&&s.chained){o++;continue}return}if(!o)return r}function se(e){return e.normalize().replace(/[[\]]/g,`\\$&`).replace(/%/g,`%25`).replace(/\//g,`%2[Ff]`).replace(/\?/g,`%3[Ff]`).replace(/#/g,`%23`).replace(/[.*+?^${}()|\\]/g,`\\$&`)}function ce({nodes:e,server_loads:t,dictionary:n,matchers:r}){let i=new Set(t);return Object.entries(n).map(([t,[n,i,s]])=>{let{pattern:c,params:l}=re(t),u={id:t,exec:e=>{let t=c.exec(e);if(t)return oe(t,l,r)},errors:[1,...s||[]].map(t=>e[t]),layouts:[0,...i||[]].map(o),leaf:a(n)};return u.errors.length=u.layouts.length=Math.max(u.errors.length,u.layouts.length),u});function a(t){let n=t<0;return n&&(t=~t),[n,e[t]]}function o(t){return t===void 0?t:[i.has(t),e[t]]}}function le(e,t=JSON.parse){try{return t(sessionStorage[e])}catch{}}function ue(e,t,n=JSON.stringify){let r=n(t);try{sessionStorage[e]=r}catch{}}var S=globalThis.__sveltekit_vpoinu?.base??`/admin`,de=globalThis.__sveltekit_vpoinu?.assets??S??``,fe=`1792599746525`,pe=`sveltekit:snapshot`,me=`sveltekit:scroll`,he=`sveltekit:states`,C=`sveltekit:history`,w=`sveltekit:navigation`,T={tap:1,hover:2,viewport:3,eager:4,off:-1,false:-1},ge=location.origin;function _e(e){if(e instanceof URL)return e;let t=document.baseURI;if(!t){let e=document.getElementsByTagName(`base`);t=e.length?e[0].href:document.URL}return new URL(e,t)}function E(){return{x:pageXOffset,y:pageYOffset}}function D(e,t){return e.getAttribute(`data-sveltekit-${t}`)}var ve={...T,"":T.hover};function ye(e){let t=e.assignedSlot??e.parentNode;return t?.nodeType===11&&(t=t.host),t}function be(e,t){for(;e&&e!==t;){if(e.nodeName.toUpperCase()===`A`&&e.hasAttribute(`href`))return e;e=ye(e)}}function xe(e,t,n){let r;try{if(r=new URL(e instanceof SVGAElement?e.href.baseVal:e.href,document.baseURI),n&&r.hash.match(/^#[^/]/)){let e=location.hash.split(`#`)[1]||`/`;r.hash=`#${e}${r.hash}`}}catch{}let i=e instanceof SVGAElement?e.target.baseVal:e.target,a=!r||!!i||k(r,t,n)||(e.getAttribute(`rel`)||``).split(/\s+/).includes(`external`),o=r?.origin===ge&&e.hasAttribute(`download`);return{url:r,external:a,target:i,download:o}}function O(e){let t=null,n=null,r=null,i=null,a=null,o=null,s=e;for(;s&&s!==document.documentElement;)r===null&&(r=D(s,`preload-code`)),i===null&&(i=D(s,`preload-data`)),t===null&&(t=D(s,`keepfocus`)),n===null&&(n=D(s,`noscroll`)),a===null&&(a=D(s,`reload`)),o===null&&(o=D(s,`replacestate`)),s=ye(s);function c(e){switch(e){case``:case`true`:return!0;case`off`:case`false`:return!1;default:return}}return{preload_code:ve[r??`off`],preload_data:ve[i??`off`],keepfocus:c(t),noscroll:c(n),reload:c(a),replace_state:c(o)}}function Se(e){let t=o(e),n=!0;function r(){n=!0,t.update(e=>e)}function i(e){n=!1,t.set(e)}function a(e){let r;return t.subscribe(t=>{(r===void 0||n&&t!==r)&&e(r=t)})}return{notify:r,set:i,subscribe:a}}var Ce={v:h};function we(){let{set:e,subscribe:t}=o(!1),n;async function r(){clearTimeout(n);try{let t=await fetch(`${de}/_app/version.json`,{headers:{pragma:`no-cache`,"cache-control":`no-cache`}});if(!t.ok)return!1;let r=(await t.json()).version!==fe;return r&&(e(!0),Ce.v(),clearTimeout(n)),r}catch{return!1}}return{subscribe:t,check:r}}function k(e,t,n){return e.origin!==ge||!e.pathname.startsWith(t)?!0:n?e.pathname!==location.pathname:!1}function Te(e){}var Ee=new Set([`load`,`prerender`,`csr`,`ssr`,`trailingSlash`,`config`]);[...Ee],[...new Set([...Ee])];function De(e){return e.filter(e=>e!=null)}function A(e,t){return e+`/`+t}function Oe(e){return e instanceof c||e instanceof u?e.status:500}function ke(e){return e instanceof u?e.text:`Internal Error`}var j,M,N,Ae=i.toString().includes(`$$`)||/function \w+\(\) \{\}/.test(i.toString()),je=`a:`;Ae?(j={data:{},form:null,error:null,params:{},route:{id:null},state:{},status:-1,url:new URL(je)},M={current:null},N={current:!1}):(j=new class{#e=e({});get data(){return r(this.#e)}set data(e){n(this.#e,e)}#t=e(null);get form(){return r(this.#t)}set form(e){n(this.#t,e)}#n=e(null);get error(){return r(this.#n)}set error(e){n(this.#n,e)}#r=e({});get params(){return r(this.#r)}set params(e){n(this.#r,e)}#i=e({id:null});get route(){return r(this.#i)}set route(e){n(this.#i,e)}#a=e({});get state(){return r(this.#a)}set state(e){n(this.#a,e)}#o=e(-1);get status(){return r(this.#o)}set status(e){n(this.#o,e)}#s=e(new URL(je));get url(){return r(this.#s)}set url(e){n(this.#s,e)}},M=new class{#e=e(null);get current(){return r(this.#e)}set current(e){n(this.#e,e)}},N=new class{#e=e(!1);get current(){return r(this.#e)}set current(e){n(this.#e,e)}},Ce.v=()=>N.current=!0);function Me(e){Object.assign(j,e)}var{onMount:Ne,tick:Pe}=a,Fe=new Set([`icon`,`shortcut icon`,`apple-touch-icon`]),P=null,F=le(`sveltekit:scroll`)??{},I=le(`sveltekit:snapshot`)??{},L={url:Se({}),page:Se({}),navigating:o(null),updated:we()};function Ie(e){F[e]=E()}function Le(e,t){let n=e+1;for(;F[n];)delete F[n],n+=1;for(n=t+1;I[n];)delete I[n],n+=1}function R(e,t=!1){return t?location.replace(e.href):location.href=e.href,new Promise(h)}async function Re(){if(`serviceWorker`in navigator){let e=await navigator.serviceWorker.getRegistration(S||`/`);e&&await e.update()}}var ze,Be,z,B,Ve,V,He={},Ue={},H=[],We=[],U=null;function Ge(){U?.fork?.then(e=>e?.discard()),U=null,Q={element:void 0,href:void 0}}var Ke=new Map,qe=new Set,Je=new Set,W=new Set,G={branch:[],error:null,url:null,nav:null},Ye=!1,Xe=!1,Ze=!0,K=!1,q=!1,Qe=!1,$e=!1,et,J,Y,X,tt=new Set,nt=new Map,rt=new Map;async function it(e,t,n){if(globalThis.__sveltekit_vpoinu.data){let{q:e={},p:t={},l:n={},f:r={}}=globalThis.__sveltekit_vpoinu.data;for(let t in e)He[t]=e[t];for(let e in n)He[e]=n[e];for(let e in r)He[e]=r[e];for(let e in t)Ue[e]=t[e]}document.URL!==location.href&&(location.href=location.href),V=e,await e.hooks.init?.(),ze=ce(e),B=document.documentElement,Ve=t,Be=e.nodes[0],z=e.nodes[1],Be(),z(),J=history.state?.[C],Y=history.state?.[w],J||(J=Y=Date.now(),history.replaceState({...history.state,[C]:J,[w]:Y},``));let r=F[J];function i(){r&&(history.scrollRestoration=`manual`,scrollTo(r.x,r.y))}n?(i(),await Mt(Ve,n)):(await Z({type:`enter`,url:_e(V.hash?Rt(new URL(location.href)):location.href),replace_state:!0}),i()),jt()}function at(){H.length=0,$e=!1}function ot(e){We.some(e=>e?.snapshot)&&(I[e]=We.map(e=>e?.snapshot?.capture()))}function st(e){I[e]?.forEach((e,t)=>{We[t]?.snapshot?.restore(e)})}function ct(){Ie(J),ue(me,F),ot(Y),ue(pe,I)}async function lt(e,n,r,i){let a,o;n.invalidateAll&&Ge(),await Z({type:`goto`,url:_e(e),keepfocus:n.keepFocus,noscroll:n.noScroll,replace_state:n.replaceState,state:n.state,redirect_count:r,nav_token:i,accept:()=>{if(n.invalidateAll){$e=!0,a=new Set;for(let[e,t]of nt)for(let[n,r]of t)r.resource?.reset(),a.add(A(e,n));o=new Set;for(let[e,t]of rt)for(let n of t.keys())o.add(A(e,n))}n.invalidate&&n.invalidate.forEach(At)}}),n.invalidateAll&&t().then(t).then(()=>{for(let[e,t]of nt)for(let[n,{resource:r}]of t)a?.has(A(e,n))&&r.start();for(let[e,t]of rt)for(let[n,{resource:r}]of t)o?.has(A(e,n))&&r.reconnect()})}async function ut(e){if(e.id!==U?.id){Ge();let t={};tt.add(t),U={id:e.id,token:t,promise:bt({...e,preload:t}).then(e=>(tt.delete(t),e.type===`loaded`&&e.state.error&&Ge(),e)),fork:null}}return U.promise}async function dt(e){let t=(await wt(e,!1))?.route;t&&await Promise.all([...t.layouts,t.leaf].filter(Boolean).map(e=>e[1]()))}async function ft(e,t,n){let r={params:G.params,route:{id:G.route?.id??null},url:new URL(location.href)};if(G={...e.state,nav:r},Me(e.props.page),et=new V.root({target:t,props:{...e.props,stores:L,components:We},hydrate:n,sync:!1,transformError:void 0}),await Promise.resolve(),n){let e={from:null,to:{...r,scroll:F[J]??E()},willUnload:!1,type:`enter`,complete:Promise.resolve()};W.forEach(t=>t(e))}st(Y),Xe=!0}async function pt({url:e,params:t,branch:n,errors:r,status:i,error:a,route:o,form:s}){let c=`never`;if(S&&(e.pathname===S||e.pathname===S+`/`))c=`always`;else for(let e of n)e?.slash!==void 0&&(c=e.slash);e.pathname=d(e.pathname,c),e.search=e.search;let l={type:`loaded`,state:{url:e,params:t,branch:n,error:a,route:o},props:{constructors:De(n).map(e=>e.node.component),page:Lt(j)}};s!==void 0&&(l.props.form=s);let u={},f=!j,p=0;for(let e=0;et(new URL(e))))return!0;return!1}function _t(e,t){return e?.type===`data`?e:e?.type===`skip`?t??null:null}function vt(e,t){if(!e)return new Set(t.searchParams.keys());let n=new Set([...e.searchParams.keys(),...t.searchParams.keys()]);for(let r of n){let i=e.searchParams.getAll(r),a=t.searchParams.getAll(r);i.every(e=>a.includes(e))&&a.every(e=>i.includes(e))&&n.delete(r)}return n}function yt({error:e,url:t,route:n,params:r}){return{type:`loaded`,state:{error:e,url:t,route:n,params:r,branch:[]},props:{page:Lt(j),constructors:[]}}}async function bt({id:e,invalidating:t,url:n,params:r,route:i,preload:a}){if(U?.id===e)return tt.delete(U.token),U.promise;let{errors:o,layouts:s,leaf:u}=i,d=[...s,u];o.forEach(e=>e?.().catch(h)),d.forEach(e=>e?.[1]().catch(h));let f=G.url?e!==Et(G.url):!1,p=G.route?i.id!==G.route.id:!1,m=vt(G.url,n),g=!1,_=d.map(async(e,t)=>{if(!e)return;let a=G.branch[t];return e[1]===a?.loader&&!gt(g,p,f,m,a.universal?.uses,r)?a:(g=!0,mt({loader:e[1],url:n,params:r,route:i,parent:async()=>{let e={};for(let n=0;nPromise.resolve({}),server_data_node:_t(null)}),{node:await z(),loader:z,universal:null,server:null,data:null}],status:e,error:t,errors:[],route:null})}catch(t){if(t instanceof l){await lt(new URL(t.location,location.href),{},0);return}let a=await V.get_error_template(),o=await $(t,{url:n,params:i,route:r}),s=a({status:e,message:String(o?.message??``).replace(/&/g,`&`).replace(//g,`>`)}),c=new DOMParser().parseFromString(s,`text/html`);throw document.documentElement.replaceChild(document.adoptNode(c.head),document.head),document.documentElement.replaceChild(document.adoptNode(c.body),document.body),t}}async function Ct(e){let t=e.href;if(Ke.has(t))return Ke.get(t);let n;try{let r=(async()=>{let t=await V.hooks.reroute({url:new URL(e),fetch:async(t,n)=>ht(t,n,e).promise})??e;if(typeof t==`string`){let n=new URL(e);V.hash?n.hash=t:n.pathname=t,t=n}return t})();Ke.set(t,r),n=await r}catch{Ke.delete(t);return}return n}async function wt(e,t){if(e&&!k(e,S,V.hash)){let n=await Ct(e);if(!n)return;let r=Tt(n);for(let n of ze){let i=n.exec(r);if(i)return{id:Et(e),invalidating:t,route:n,params:p(i),url:e}}}}function Tt(e){return f(V.hash?e.hash.replace(/^#/,``).replace(/[?#].+/,``):e.pathname.slice(S.length))||`/`}function Et(e){return(V.hash?e.hash.replace(/^#/,``):e.pathname)+e.search}function Dt({url:e,type:t,intent:n,delta:r,event:i,scroll:a}){let o=!1,s=It(G,n,e,t,a??null);r!==void 0&&(s.navigation.delta=r),i!==void 0&&(s.navigation.event=i);let c={...s.navigation,cancel:()=>{o=!0,s.reject(Error(`navigation cancelled`))}};return K||qe.forEach(e=>e(c)),o?null:s}async function Z({type:e,url:n,popped:r,keepfocus:i,noscroll:a,replace_state:o,state:c={},redirect_count:l=0,nav_token:d={},accept:f=h,block:p=h,event:m}){let g=X;X=d;let _=await wt(n,!1),v=e===`enter`?It(G,_,n,e):Dt({url:n,type:e,delta:r?.delta,intent:_,scroll:r?.scroll,event:m});if(!v){p(),X===d&&(X=g);return}let y=J,ee=Y;f(),K=!0,Xe&&v.navigation.type!==`enter`&&L.navigating.set(M.current=v.navigation);let b=_&&await bt(_);if(!b){if(k(n,S,V.hash))return await R(n,o);b=await Ot(n,{id:null},await $(new u(404,`Not Found`,`Not found: ${n.pathname}`),{url:n,params:{},route:{id:null}}),404,o)}if(n=_?.url||n,X!==d){v.reject(Error(`navigation aborted`));return}if(!b)return;if(b.type===`redirect`){if(l<20){await Z({type:e,url:new URL(b.location,n),popped:r,keepfocus:i,noscroll:a,replace_state:o,state:c,redirect_count:l+1,nav_token:d}),v.fulfil(void 0);return}if(b=await St({status:500,error:await $(Error(`Redirect loop`),{url:n,params:{},route:{id:null}}),url:n,route:{id:null}}),!b)return}else if(b.props.page.status>=400&&await L.updated.check())return await Re(),await R(n,o);if(at(),Ie(y),ot(ee),b.props.page.url.pathname!==n.pathname&&(n.pathname=b.props.page.url.pathname),c=r?r.state:c,!r){let e=+!o,t={[C]:J+=e,[w]:Y+=e,[he]:c};(o?history.replaceState:history.pushState).call(history,t,``,n),o||Le(J,Y)}let x=_&&U?.id===_.id?U.fork:null;U?.fork&&!x?Ge():(U=null,Q={element:void 0,href:void 0}),b.props.page.state=c;let te;if(Xe){let e=(await Promise.all(Array.from(Je,e=>e(v.navigation)))).filter(e=>typeof e==`function`);if(e.length>0){function t(){e.forEach(e=>{W.delete(e)})}e.push(t),e.forEach(e=>{W.add(e)})}let t=v.navigation.to;G={...b.state,nav:{params:t.params,route:t.route,url:t.url}},b.props.page&&(b.props.page.url=n),!i&&document.activeElement instanceof HTMLElement&&document.activeElement!==document.body&&document.activeElement.blur();let r=x&&await x;r?te=r.commit():(P=null,et.$set(b.props),P&&Object.assign(b.props.page,P),Me(b.props.page),te=s?.()),Qe=!0}else await ft(b,Ve,!1);let{activeElement:ne}=document;if(await te,await t(),await t(),X!==d){v.reject(Error(`navigation aborted`));return}b.props.page&&P&&Object.assign(b.props.page,P);let re=null;if(Ze){let e=r?r.scroll:a?E():null;e?scrollTo(e.x,e.y):(re=n.hash&&document.getElementById(zt(n)))?re.scrollIntoView():scrollTo(0,0)}let ie=document.activeElement!==ne&&document.activeElement!==document.body;!i&&!ie&&Ft(n,!re),Ze=!0,K=!1,v.fulfil(void 0),v.navigation.to&&(v.navigation.to.scroll=E()),W.forEach(e=>e(v.navigation)),e===`popstate`&&st(Y),L.navigating.set(M.current=null)}async function Ot(e,t,n,r,i){return e.origin===ge&&e.pathname===location.pathname&&!Ye?await St({status:r,error:n,url:e,route:t}):await R(e,i)}var Q={element:void 0,href:void 0};function kt(){let e,t;B.addEventListener(`mousemove`,t=>{let n=t.target;clearTimeout(e),e=setTimeout(()=>{i(n,T.hover)},20)});function n(e){e.defaultPrevented||i(e.composedPath()[0],T.tap)}B.addEventListener(`mousedown`,n),B.addEventListener(`touchstart`,n,{passive:!0});let r=new IntersectionObserver(e=>{for(let t of e)t.isIntersecting&&(dt(new URL(t.target.href)),r.unobserve(t.target))},{threshold:0});async function i(e,n){let r=be(e,B),i=r===Q.element&&r?.href===Q.href&&n>=t;if(!r||i)return;let{url:a,external:o,download:s}=xe(r,S,V.hash);if(o||s)return;let c=O(r),l=a&&Et(G.url)===Et(a);if(!(c.reload||l))if(n<=c.preload_data){Q={element:r,href:r.href},t=T.tap;let e=await wt(a,!1);if(!e)return;ut(e)}else n<=c.preload_code&&(Q={element:r,href:r.href},t=n,dt(a))}function a(){r.disconnect();for(let e of B.querySelectorAll(`a`)){let{url:t,external:n,download:i}=xe(e,S,V.hash);if(n||i)continue;let a=O(e);a.reload||(a.preload_code===T.viewport&&r.observe(e),a.preload_code===T.eager&&dt(t))}}W.add(a),a()}function $(e,t){if(e instanceof c)return e.body;let n=Oe(e),r=ke(e);return V.hooks.handleError({error:e,event:t,status:n,message:r})??{message:r}}function At(e){if(typeof e==`function`)H.push(e);else{let{href:t}=new URL(e,location.href);H.push(e=>e.href===t)}}function jt(){history.scrollRestoration=`manual`,addEventListener(`beforeunload`,e=>{let t=!1;if(ct(),!K){let e=It(G,void 0,null,`leave`),n={...e.navigation,cancel:()=>{t=!0,e.reject(Error(`navigation cancelled`))}};qe.forEach(e=>e(n))}t?(e.preventDefault(),e.returnValue=``):history.scrollRestoration=`auto`}),addEventListener(`visibilitychange`,()=>{document.visibilityState===`hidden`&&ct()}),navigator.connection?.saveData||kt(),B.addEventListener(`click`,async t=>{if(t.button||t.which!==1||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey||t.defaultPrevented)return;let n=be(t.composedPath()[0],B);if(!n)return;let{url:r,external:i,target:a,download:o}=xe(n,S,V.hash);if(!r)return;if(a===`_parent`||a===`_top`){if(window.parent!==window)return}else if(a&&a!==`_self`)return;let s=O(n);if(!(n instanceof SVGAElement)&&r.protocol!==location.protocol&&r.protocol!==`https:`&&r.protocol!==`http:`||o)return;let[c,l]=(V.hash?r.hash.replace(/^#/,``):r.href).split(`#`),u=c===m(location);if(i||s.reload&&(!u||!l)){Dt({url:r,type:`link`,event:t})?K=!0:t.preventDefault();return}if(l!==void 0&&u){let[,i]=G.url.href.split(`#`);if(i===l){if(t.preventDefault(),l===``||l===`top`&&n.ownerDocument.getElementById(`top`)===null)scrollTo({top:0});else{let e=n.ownerDocument.getElementById(decodeURIComponent(l));e&&(e.scrollIntoView(),e.focus())}return}if(q=!0,Ie(J),e(r),!s.replace_state)return;q=!1}t.preventDefault(),await new Promise(e=>{requestAnimationFrame(()=>{setTimeout(e,0)}),setTimeout(e,100)}),await Z({type:`link`,url:r,keepfocus:s.keepfocus,noscroll:s.noscroll,replace_state:s.replace_state??r.href===location.href,event:t})}),B.addEventListener(`submit`,e=>{if(e.defaultPrevented)return;let t=HTMLFormElement.prototype.cloneNode.call(e.target),n=e.submitter;if((n?.formTarget||t.target)===`_blank`||(n?.formMethod||t.method)!==`get`)return;let r=new URL(n?.hasAttribute(`formaction`)&&n?.formAction||t.action);if(k(r,S,!1))return;let i=e.target,a=O(i);if(a.reload)return;e.preventDefault(),e.stopPropagation();let o=new FormData(i,n);r.search=new URLSearchParams(o).toString(),Z({type:`form`,url:r,keepfocus:a.keepfocus,noscroll:a.noscroll,replace_state:a.replace_state??r.href===location.href,event:e})}),addEventListener(`popstate`,async t=>{if(!Pt)if(t.state?.[`sveltekit:history`]){let n=t.state[C];if(X={},n===J)return;let r=F[n],i=t.state[`sveltekit:states`]??{},a=new URL(t.state[`sveltekit:pageurl`]??location.href),o=t.state[w],s=G.url?m(location)===m(G.url):!1;if(o===Y&&(Qe||s)){i!==j.state&&(j.state=i),e(a),F[J]=E(),r&&scrollTo(r.x,r.y),J=n;return}let c=n-J;await Z({type:`popstate`,url:a,popped:{state:i,scroll:r,delta:c},accept:()=>{J=n,Y=o},block:()=>{history.go(-c)},nav_token:X,event:t})}else q||(e(new URL(location.href)),V.hash&&location.reload())}),addEventListener(`hashchange`,()=>{q&&(q=!1,history.replaceState({...history.state,[C]:++J,[w]:Y},``,location.href))});for(let e of document.querySelectorAll(`link`))Fe.has(e.rel)&&(e.href=e.href);addEventListener(`pageshow`,e=>{e.persisted&&L.navigating.set(M.current=null)});function e(e){G.url=j.url=e,L.page.set(Lt(j)),L.page.notify()}}async function Mt(e,{status:t=200,error:n,node_ids:r,params:i,route:a,server_route:o,data:s,form:c}){Ye=!0;let u=new URL(location.href),d;({params:i={},route:a={id:null}}=await wt(u,!1)||{}),d=ze.find(({id:e})=>e===a.id);let f,p=!0;try{let e=r.map(async(t,n)=>{let r=s[n];return r?.uses&&(r.uses=Nt(r.uses)),mt({loader:V.nodes[t],url:u,params:i,route:a,parent:async()=>{let t={};for(let r=0;r{let a=history.state;Pt=!0,location.replace(new URL(`#${n}`,location.href)),history.replaceState(a,``,e),t&&scrollTo(r,i),Pt=!1})}else{let e=document.body,t=e.getAttribute(`tabindex`);e.tabIndex=-1,e.focus({preventScroll:!0,focusVisible:!1}),t===null?e.removeAttribute(`tabindex`):e.setAttribute(`tabindex`,t)}let r=getSelection();if(r&&r.type!==`None`){let e=[];for(let t=0;t{if(r.rangeCount===e.length){for(let t=0;t{a=e,o=t});return s.catch(h),{navigation:{from:{params:e.params,route:{id:e.route?.id??null},url:e.url,scroll:E()},to:n&&{params:t?.params??null,route:{id:t?.route?.id??null},url:n,scroll:i},willUnload:!t,type:r,complete:s},fulfil:a,reject:o}}function Lt(e){return{data:e.data,error:e.error,form:e.form,params:e.params,route:e.route,state:e.state,status:e.status,url:e.url}}function Rt(e){let t=new URL(e);return t.hash=decodeURIComponent(e.hash),t}function zt(e){let t;if(V.hash){let[,,n]=e.hash.split(`#`,3);t=n??``}else t=e.hash.slice(1);return decodeURIComponent(t)}export{N as a,j as i,L as n,Te as o,M as r,it as t}; \ No newline at end of file diff --git a/dash/build/_app/immutable/entry/app.CjREIEJ0.js b/dash/build/_app/immutable/entry/app.DJYkjE9N.js similarity index 93% rename from dash/build/_app/immutable/entry/app.CjREIEJ0.js rename to dash/build/_app/immutable/entry/app.DJYkjE9N.js index 425f6ec..3bdebb9 100644 --- a/dash/build/_app/immutable/entry/app.CjREIEJ0.js +++ b/dash/build/_app/immutable/entry/app.DJYkjE9N.js @@ -1,2 +1,2 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["../nodes/0.C3y93M_j.js","../chunks/QjDztciA.js","../chunks/xihTtKlq.js","../assets/0.Bt_6ISeQ.css","../nodes/1.Br7vugXt.js","../chunks/BJ6K4aSM.js","../nodes/2.C3KY4sIO.js","../assets/2.Fm2AbXXC.css"])))=>i.map(i=>d[i]); -import{$ as e,A as t,B as n,C as r,G as i,J as a,M as o,O as s,P as c,Q as l,R as u,U as d,W as f,X as p,Y as m,ct as h,et as g,i as _,it as v,j as y,k as b,n as x,r as S,rt as C,s as w}from"../chunks/QjDztciA.js";import"../chunks/xihTtKlq.js";var T=`modulepreload`,E=function(e,t){return new URL(e,t).href},D={},O=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}function s(e){return import.meta.resolve?import.meta.resolve(e):new URL(e,import.meta.url).href}r=o(t.map(t=>{if(t=E(t,n),t=s(t),t in D)return;D[t]=!0;let r=t.endsWith(`.css`);for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}let i=document.createElement(`link`);if(i.rel=r?`stylesheet`:T,r||(i.as=`script`),i.crossOrigin=``,i.href=t,a&&i.setAttribute(`nonce`,a),document.head.appendChild(i),r)return new Promise((e,n)=>{i.addEventListener(`load`,e),i.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},k={},A=o(`
`),j=o(` `,1);function M(o,S){v(S,!0);let T=_(S,`components`,23,()=>[]),E=_(S,`data_0`,3,null),D=_(S,`data_1`,3,null);i(()=>S.stores.page.set(S.page)),f(()=>{S.stores,S.page,S.constructors,T(),S.form,E(),D(),S.stores.page.notify()});let O=e(!1),k=e(!1),M=e(null);x(()=>{let e=S.stores.page.subscribe(()=>{u(O)&&(l(k,!0),n().then(()=>{l(M,document.title||`untitled page`,!0)}))});return l(O,!0),e});let N=g(()=>S.constructors[1]);var P=j(),F=m(P),I=e=>{let n=g(()=>S.constructors[0]);var i=y(),a=m(i);r(a,()=>u(n),(e,n)=>{w(n(e,{get data(){return E()},get form(){return S.form},get params(){return S.page.params},children:(e,n)=>{var i=y(),a=m(i);r(a,()=>u(N),(e,t)=>{w(t(e,{get data(){return D()},get form(){return S.form},get params(){return S.page.params}}),e=>T()[1]=e,()=>T()?.[1])}),t(e,i)},$$slots:{default:!0}}),e=>T()[0]=e,()=>T()?.[0])}),t(e,i)},L=e=>{let n=g(()=>S.constructors[0]);var i=y(),a=m(i);r(a,()=>u(n),(e,t)=>{w(t(e,{get data(){return E()},get form(){return S.form},get params(){return S.page.params}}),e=>T()[0]=e,()=>T()?.[0])}),t(e,i)};s(F,e=>{S.constructors[1]?e(I):e(L,-1)});var R=p(F,2),z=e=>{var n=A(),r=a(n),i=e=>{var n=c();d(()=>b(n,u(M))),t(e,n)};s(r,e=>{u(k)&&e(i)}),h(n),t(e,n)};s(R,e=>{u(O)&&e(z)}),t(o,P),C()}var N=S(M),P=[()=>O(()=>import(`../nodes/0.C3y93M_j.js`),__vite__mapDeps([0,1,2,3]),import.meta.url),()=>O(()=>import(`../nodes/1.Br7vugXt.js`),__vite__mapDeps([4,1,5,2]),import.meta.url),()=>O(()=>import(`../nodes/2.C3KY4sIO.js`),__vite__mapDeps([6,1,2,7]),import.meta.url)],F=[],I={"/":[2]},L={handleError:(({error:e})=>{console.error(e)}),reroute:(()=>{}),transport:{}},R=Object.fromEntries(Object.entries(L.transport).map(([e,t])=>[e,t.decode])),z=Object.fromEntries(Object.entries(L.transport).map(([e,t])=>[e,t.encode])),B=!1,V=(e,t)=>R[e](t),H=()=>O(()=>import(`../chunks/Bjy-W4x2.js`).then(e=>e.default),[],import.meta.url);export{V as decode,R as decoders,I as dictionary,z as encoders,H as get_error_template,B as hash,L as hooks,k as matchers,P as nodes,N as root,F as server_loads}; \ No newline at end of file +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["../nodes/0.C3y93M_j.js","../chunks/QjDztciA.js","../chunks/xihTtKlq.js","../assets/0.Bt_6ISeQ.css","../nodes/1.D7lcLLgV.js","../chunks/BpCz1rGI.js","../nodes/2.DhfXIWxd.js","../assets/2.ITQ6xvQN.css"])))=>i.map(i=>d[i]); +import{$ as e,A as t,B as n,C as r,G as i,J as a,M as o,O as s,P as c,Q as l,R as u,U as d,W as f,X as p,Y as m,ct as h,et as g,i as _,it as v,j as y,k as b,n as x,r as S,rt as C,s as w}from"../chunks/QjDztciA.js";import"../chunks/xihTtKlq.js";var T=`modulepreload`,E=function(e,t){return new URL(e,t).href},D={},O=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}function s(e){return import.meta.resolve?import.meta.resolve(e):new URL(e,import.meta.url).href}r=o(t.map(t=>{if(t=E(t,n),t=s(t),t in D)return;D[t]=!0;let r=t.endsWith(`.css`);for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}let i=document.createElement(`link`);if(i.rel=r?`stylesheet`:T,r||(i.as=`script`),i.crossOrigin=``,i.href=t,a&&i.setAttribute(`nonce`,a),document.head.appendChild(i),r)return new Promise((e,n)=>{i.addEventListener(`load`,e),i.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},k={},A=o(`
`),j=o(` `,1);function M(o,S){v(S,!0);let T=_(S,`components`,23,()=>[]),E=_(S,`data_0`,3,null),D=_(S,`data_1`,3,null);i(()=>S.stores.page.set(S.page)),f(()=>{S.stores,S.page,S.constructors,T(),S.form,E(),D(),S.stores.page.notify()});let O=e(!1),k=e(!1),M=e(null);x(()=>{let e=S.stores.page.subscribe(()=>{u(O)&&(l(k,!0),n().then(()=>{l(M,document.title||`untitled page`,!0)}))});return l(O,!0),e});let N=g(()=>S.constructors[1]);var P=j(),F=m(P),I=e=>{let n=g(()=>S.constructors[0]);var i=y(),a=m(i);r(a,()=>u(n),(e,n)=>{w(n(e,{get data(){return E()},get form(){return S.form},get params(){return S.page.params},children:(e,n)=>{var i=y(),a=m(i);r(a,()=>u(N),(e,t)=>{w(t(e,{get data(){return D()},get form(){return S.form},get params(){return S.page.params}}),e=>T()[1]=e,()=>T()?.[1])}),t(e,i)},$$slots:{default:!0}}),e=>T()[0]=e,()=>T()?.[0])}),t(e,i)},L=e=>{let n=g(()=>S.constructors[0]);var i=y(),a=m(i);r(a,()=>u(n),(e,t)=>{w(t(e,{get data(){return E()},get form(){return S.form},get params(){return S.page.params}}),e=>T()[0]=e,()=>T()?.[0])}),t(e,i)};s(F,e=>{S.constructors[1]?e(I):e(L,-1)});var R=p(F,2),z=e=>{var n=A(),r=a(n),i=e=>{var n=c();d(()=>b(n,u(M))),t(e,n)};s(r,e=>{u(k)&&e(i)}),h(n),t(e,n)};s(R,e=>{u(O)&&e(z)}),t(o,P),C()}var N=S(M),P=[()=>O(()=>import(`../nodes/0.C3y93M_j.js`),__vite__mapDeps([0,1,2,3]),import.meta.url),()=>O(()=>import(`../nodes/1.D7lcLLgV.js`),__vite__mapDeps([4,1,5,2]),import.meta.url),()=>O(()=>import(`../nodes/2.DhfXIWxd.js`),__vite__mapDeps([6,1,2,7]),import.meta.url)],F=[],I={"/":[2]},L={handleError:(({error:e})=>{console.error(e)}),reroute:(()=>{}),transport:{}},R=Object.fromEntries(Object.entries(L.transport).map(([e,t])=>[e,t.decode])),z=Object.fromEntries(Object.entries(L.transport).map(([e,t])=>[e,t.encode])),B=!1,V=(e,t)=>R[e](t),H=()=>O(()=>import(`../chunks/Bjy-W4x2.js`).then(e=>e.default),[],import.meta.url);export{V as decode,R as decoders,I as dictionary,z as encoders,H as get_error_template,B as hash,L as hooks,k as matchers,P as nodes,N as root,F as server_loads}; \ No newline at end of file diff --git a/dash/build/_app/immutable/entry/start.4Ww2Kv0E.js b/dash/build/_app/immutable/entry/start.4Ww2Kv0E.js deleted file mode 100644 index d807688..0000000 --- a/dash/build/_app/immutable/entry/start.4Ww2Kv0E.js +++ /dev/null @@ -1 +0,0 @@ -import{o as e,t}from"../chunks/BJ6K4aSM.js";export{e as load_css,t as start}; \ No newline at end of file diff --git a/dash/build/_app/immutable/entry/start.CgZtN555.js b/dash/build/_app/immutable/entry/start.CgZtN555.js new file mode 100644 index 0000000..c268259 --- /dev/null +++ b/dash/build/_app/immutable/entry/start.CgZtN555.js @@ -0,0 +1 @@ +import{o as e,t}from"../chunks/BpCz1rGI.js";export{e as load_css,t as start}; \ No newline at end of file diff --git a/dash/build/_app/immutable/nodes/1.Br7vugXt.js b/dash/build/_app/immutable/nodes/1.D7lcLLgV.js similarity index 89% rename from dash/build/_app/immutable/nodes/1.Br7vugXt.js rename to dash/build/_app/immutable/nodes/1.D7lcLLgV.js index 3d5049c..0f663e9 100644 --- a/dash/build/_app/immutable/nodes/1.Br7vugXt.js +++ b/dash/build/_app/immutable/nodes/1.D7lcLLgV.js @@ -1 +1 @@ -import{A as e,J as t,M as n,U as r,X as i,Y as a,ct as o,it as s,k as c,rt as l}from"../chunks/QjDztciA.js";import{i as u,n as d}from"../chunks/BJ6K4aSM.js";import"../chunks/xihTtKlq.js";var f={get data(){return u.data},get error(){return u.error},get form(){return u.form},get params(){return u.params},get route(){return u.route},get state(){return u.state},get status(){return u.status},get url(){return u.url}};d.updated.check;var p=f,m=n(`

`,1);function h(n,u){s(u,!0);var d=m(),f=a(d),h=t(f,!0);o(f);var g=i(f,2),_=t(g,!0);o(g),r(()=>{c(h,p.status),c(_,p.error?.message)}),e(n,d),l()}export{h as component}; \ No newline at end of file +import{A as e,J as t,M as n,U as r,X as i,Y as a,ct as o,it as s,k as c,rt as l}from"../chunks/QjDztciA.js";import{i as u,n as d}from"../chunks/BpCz1rGI.js";import"../chunks/xihTtKlq.js";var f={get data(){return u.data},get error(){return u.error},get form(){return u.form},get params(){return u.params},get route(){return u.route},get state(){return u.state},get status(){return u.status},get url(){return u.url}};d.updated.check;var p=f,m=n(`

`,1);function h(n,u){s(u,!0);var d=m(),f=a(d),h=t(f,!0);o(f);var g=i(f,2),_=t(g,!0);o(g),r(()=>{c(h,p.status),c(_,p.error?.message)}),e(n,d),l()}export{h as component}; \ No newline at end of file diff --git a/dash/build/_app/immutable/nodes/2.C3KY4sIO.js b/dash/build/_app/immutable/nodes/2.C3KY4sIO.js deleted file mode 100644 index 4f290a2..0000000 --- a/dash/build/_app/immutable/nodes/2.C3KY4sIO.js +++ /dev/null @@ -1 +0,0 @@ -import{$ as e,A as t,B as n,C as r,D as i,E as a,F as o,H as s,I as c,J as l,K as u,L as d,M as f,N as p,O as m,Q as h,R as g,S as _,T as v,U as y,V as b,W as x,X as S,Y as C,Z as w,_ as T,a as E,b as D,c as O,ct as k,d as A,et as j,f as M,g as N,h as P,i as F,it as I,j as L,k as R,l as z,lt as B,m as V,n as H,nt as U,o as W,ot as G,p as ee,q as K,rt as q,s as J,st as te,u as ne,ut as re,v as ie,w as ae,x as oe,y as Y}from"../chunks/QjDztciA.js";import"../chunks/xihTtKlq.js";var se={xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":2,"stroke-linecap":`round`,"stroke-linejoin":`round`},ce=e=>{for(let t in e)if(t.startsWith(`aria-`)||t===`role`||t===`title`)return!0;return!1},le=Symbol(`lucide-context`),ue=()=>U(le),de=new Set([`$$slots`,`$$events`,`$$legacy`,`name`,`color`,`size`,`strokeWidth`,`absoluteStrokeWidth`,`iconNode`,`children`]),fe=p(``);function X(e,n){I(n,!0);let r=ue()??{},i=F(n,`color`,19,()=>r.color??`currentColor`),o=F(n,`size`,19,()=>r.size??24),s=F(n,`strokeWidth`,19,()=>r.strokeWidth??2),c=F(n,`absoluteStrokeWidth`,19,()=>r.absoluteStrokeWidth??!1),u=F(n,`iconNode`,19,()=>[]),d=E(n,de),f=j(()=>c()?Number(s())*24/Number(o()):s());var p=fe();ne(p,e=>({...se,...e,...d,width:o(),height:o(),stroke:i(),"stroke-width":g(f),class:[`lucide-icon lucide`,r.class,n.name&&`lucide-${n.name}`,n.class]}),[()=>!n.children&&!ce(d)&&{"aria-hidden":`true`}]);var m=l(p);v(m,17,u,a,(e,n)=>{var r=j(()=>re(g(n),2));let i=()=>g(r)[0],a=()=>g(r)[1];var o=L(),s=C(o);_(s,i,!0,(e,t)=>{ne(e,()=>({...a()}))}),t(e,o)});var h=S(m);ae(h,()=>n.children??B),k(p),t(e,p),q()}var pe=new Set([`$$slots`,`$$events`,`$$legacy`]);function me(e,t){let n=E(t,pe),r=[[`path`,{d:`m12 14 4-4`}],[`path`,{d:`M3.34 19a10 10 0 1 1 17.32 0`}]];X(e,W({name:`gauge`},()=>n,{get iconNode(){return r}}))}var he=new Set([`$$slots`,`$$events`,`$$legacy`]);function ge(e,t){let n=E(t,he),r=[[`rect`,{width:`7`,height:`9`,x:`3`,y:`3`,rx:`1`}],[`rect`,{width:`7`,height:`5`,x:`14`,y:`3`,rx:`1`}],[`rect`,{width:`7`,height:`9`,x:`14`,y:`12`,rx:`1`}],[`rect`,{width:`7`,height:`5`,x:`3`,y:`16`,rx:`1`}]];X(e,W({name:`layout-dashboard`},()=>n,{get iconNode(){return r}}))}var _e=new Set([`$$slots`,`$$events`,`$$legacy`]);function ve(e,t){let n=E(t,_e),r=[[`path`,{d:`M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2`}],[`path`,{d:`M16 3.128a4 4 0 0 1 0 7.744`}],[`path`,{d:`M22 21v-2a4 4 0 0 0-3-3.87`}],[`circle`,{cx:`9`,cy:`7`,r:`4`}]];X(e,W({name:`users`},()=>n,{get iconNode(){return r}}))}var ye=new Set([`$$slots`,`$$events`,`$$legacy`]);function be(e,t){let n=E(t,ye),r=[[`path`,{d:`M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z`}],[`circle`,{cx:`16.5`,cy:`7.5`,r:`.5`,fill:`currentColor`}]];X(e,W({name:`key-round`},()=>n,{get iconNode(){return r}}))}var xe=new Set([`$$slots`,`$$events`,`$$legacy`]);function Se(e,t){let n=E(t,xe),r=[[`path`,{d:`M2.97 12.92A2 2 0 0 0 2 14.63v3.24a2 2 0 0 0 .97 1.71l3 1.8a2 2 0 0 0 2.06 0L12 19v-5.5l-5-3-4.03 2.42Z`}],[`path`,{d:`m7 16.5-4.74-2.85`}],[`path`,{d:`m7 16.5 5-3`}],[`path`,{d:`M7 16.5v5.17`}],[`path`,{d:`M12 13.5V19l3.97 2.38a2 2 0 0 0 2.06 0l3-1.8a2 2 0 0 0 .97-1.71v-3.24a2 2 0 0 0-.97-1.71L17 10.5l-5 3Z`}],[`path`,{d:`m17 16.5-5-3`}],[`path`,{d:`m17 16.5 4.74-2.85`}],[`path`,{d:`M17 16.5v5.17`}],[`path`,{d:`M7.97 4.42A2 2 0 0 0 7 6.13v4.37l5 3 5-3V6.13a2 2 0 0 0-.97-1.71l-3-1.8a2 2 0 0 0-2.06 0l-3 1.8Z`}],[`path`,{d:`M12 8 7.26 5.15`}],[`path`,{d:`m12 8 4.74-2.85`}],[`path`,{d:`M12 13.5V8`}]];X(e,W({name:`boxes`},()=>n,{get iconNode(){return r}}))}var Ce=new Set([`$$slots`,`$$events`,`$$legacy`]);function we(e,t){let n=E(t,Ce),r=[[`path`,{d:`M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2`}]];X(e,W({name:`activity`},()=>n,{get iconNode(){return r}}))}var Te=new Set([`$$slots`,`$$events`,`$$legacy`]);function Ee(e,t){let n=E(t,Te),r=[[`path`,{d:`M14 17H5`}],[`path`,{d:`M19 7h-9`}],[`circle`,{cx:`17`,cy:`17`,r:`3`}],[`circle`,{cx:`7`,cy:`7`,r:`3`}]];X(e,W({name:`settings-2`},()=>n,{get iconNode(){return r}}))}var De=new Set([`$$slots`,`$$events`,`$$legacy`]);function Oe(e,t){let n=E(t,De),r=[[`path`,{d:`M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5`}],[`path`,{d:`M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09`}],[`path`,{d:`M9 12a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.4 22.4 0 0 1-4 2z`}],[`path`,{d:`M9 12H4s.55-3.03 2-4c1.62-1.08 5 .05 5 .05`}]];X(e,W({name:`rocket`},()=>n,{get iconNode(){return r}}))}var ke=new Set([`$$slots`,`$$events`,`$$legacy`]);function Ae(e,t){let n=E(t,ke),r=[[`path`,{d:`M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8`}],[`path`,{d:`M21 3v5h-5`}],[`path`,{d:`M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16`}],[`path`,{d:`M8 16H3v5`}]];X(e,W({name:`refresh-cw`},()=>n,{get iconNode(){return r}}))}var je=new Set([`$$slots`,`$$events`,`$$legacy`]);function Me(e,t){let n=E(t,je),r=[[`path`,{d:`M4 5h16`}],[`path`,{d:`M4 12h16`}],[`path`,{d:`M4 19h16`}]];X(e,W({name:`menu`},()=>n,{get iconNode(){return r}}))}var Ne=new Set([`$$slots`,`$$events`,`$$legacy`]);function Pe(e,t){let n=E(t,Ne),r=[[`path`,{d:`M18 6 6 18`}],[`path`,{d:`m6 6 12 12`}]];X(e,W({name:`x`},()=>n,{get iconNode(){return r}}))}var Fe=new Set([`$$slots`,`$$events`,`$$legacy`]);function Ie(e,t){let n=E(t,Fe),r=[[`path`,{d:`m9 18 6-6-6-6`}]];X(e,W({name:`chevron-right`},()=>n,{get iconNode(){return r}}))}var Le=new Set([`$$slots`,`$$events`,`$$legacy`]);function Re(e,t){let n=E(t,Le),r=[[`path`,{d:`m21 21-4.34-4.34`}],[`circle`,{cx:`11`,cy:`11`,r:`8`}]];X(e,W({name:`search`},()=>n,{get iconNode(){return r}}))}var ze=new Set([`$$slots`,`$$events`,`$$legacy`]);function Be(e,t){let n=E(t,ze),r=[[`path`,{d:`M5 12h14`}],[`path`,{d:`M12 5v14`}]];X(e,W({name:`plus`},()=>n,{get iconNode(){return r}}))}var Ve=new Set([`$$slots`,`$$events`,`$$legacy`]);function He(e,t){let n=E(t,Ve),r=[[`path`,{d:`M15 3h6v6`}],[`path`,{d:`M10 14 21 3`}],[`path`,{d:`M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6`}]];X(e,W({name:`external-link`},()=>n,{get iconNode(){return r}}))}var Ue=new Set([`$$slots`,`$$events`,`$$legacy`]);function We(e,t){let n=E(t,Ue),r=[[`path`,{d:`M10 5H3`}],[`path`,{d:`M12 19H3`}],[`path`,{d:`M14 3v4`}],[`path`,{d:`M16 17v4`}],[`path`,{d:`M21 12h-9`}],[`path`,{d:`M21 19h-5`}],[`path`,{d:`M21 5h-7`}],[`path`,{d:`M8 10v4`}],[`path`,{d:`M8 12H3`}]];X(e,W({name:`sliders-horizontal`},()=>n,{get iconNode(){return r}}))}var Ge=new Set([`$$slots`,`$$events`,`$$legacy`]);function Ke(e,t){let n=E(t,Ge),r=[[`path`,{d:`M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z`}]];X(e,W({name:`star`},()=>n,{get iconNode(){return r}}))}var qe=new Set([`$$slots`,`$$events`,`$$legacy`]);function Je(e,t){let n=E(t,qe),r=[[`rect`,{x:`16`,y:`16`,width:`6`,height:`6`,rx:`1`}],[`rect`,{x:`2`,y:`16`,width:`6`,height:`6`,rx:`1`}],[`rect`,{x:`9`,y:`2`,width:`6`,height:`6`,rx:`1`}],[`path`,{d:`M5 16v-3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3`}],[`path`,{d:`M12 12V8`}]];X(e,W({name:`network`},()=>n,{get iconNode(){return r}}))}var Ye=`data:image/svg+xml,%3csvg%20height='24'%20viewBox='0%200%2024%2024'%20width='24'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eClaude%3c/title%3e%3cpath%20d='M4.709%2015.955l4.72-2.647.08-.23-.08-.128H9.2l-.79-.048-2.698-.073-2.339-.097-2.266-.122-.571-.121L0%2011.784l.055-.352.48-.321.686.06%201.52.103%202.278.158%201.652.097%202.449.255h.389l.055-.157-.134-.098-.103-.097-2.358-1.596-2.552-1.688-1.336-.972-.724-.491-.364-.462-.158-1.008.656-.722.881.06.225.061.893.686%201.908%201.476%202.491%201.833.365.304.145-.103.019-.073-.164-.274-1.355-2.446-1.446-2.49-.644-1.032-.17-.619a2.97%202.97%200%2001-.104-.729L6.283.134%206.696%200l.996.134.42.364.62%201.414%201.002%202.229%201.555%203.03.456.898.243.832.091.255h.158V9.01l.128-1.706.237-2.095.23-2.695.08-.76.376-.91.747-.492.584.28.48.685-.067.444-.286%201.851-.559%202.903-.364%201.942h.212l.243-.242.985-1.306%201.652-2.064.73-.82.85-.904.547-.431h1.033l.76%201.129-.34%201.166-1.064%201.347-.881%201.142-1.264%201.7-.79%201.36.073.11.188-.02%202.856-.606%201.543-.28%201.841-.315.833.388.091.395-.328.807-1.969.486-2.309.462-3.439.813-.042.03.049.061%201.549.146.662.036h1.622l3.02.225.79.522.474.638-.079.485-1.215.62-1.64-.389-3.829-.91-1.312-.329h-.182v.11l1.093%201.068%202.006%201.81%202.509%202.33.127.578-.322.455-.34-.049-2.205-1.657-.851-.747-1.926-1.62h-.128v.17l.444.649%202.345%203.521.122%201.08-.17.353-.608.213-.668-.122-1.374-1.925-1.415-2.167-1.143-1.943-.14.08-.674%207.254-.316.37-.729.28-.607-.461-.322-.747.322-1.476.389-1.924.315-1.53.286-1.9.17-.632-.012-.042-.14.018-1.434%201.967-2.18%202.945-1.726%201.845-.414.164-.717-.37.067-.662.401-.589%202.388-3.036%201.44-1.882.93-1.086-.006-.158h-.055L4.132%2018.56l-1.13.146-.487-.456.061-.746.231-.243%201.908-1.312-.006.006z'%20fill='%23D97757'%20fill-rule='nonzero'%3e%3c/path%3e%3c/svg%3e`,Xe=`data:image/svg+xml,%3csvg%20fill='%23ffffff'%20fill-rule='evenodd'%20height='24'%20viewBox='0%200%2024%2024'%20width='24'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eOpenAI%3c/title%3e%3cpath%20d='M9.205%208.658v-2.26c0-.19.072-.333.238-.428l4.543-2.616c.619-.357%201.356-.523%202.117-.523%202.854%200%204.662%202.212%204.662%204.566%200%20.167%200%20.357-.024.547l-4.71-2.759a.797.797%200%2000-.856%200l-5.97%203.473zm10.609%208.8V12.06c0-.333-.143-.57-.429-.737l-5.97-3.473%201.95-1.118a.433.433%200%2001.476%200l4.543%202.617c1.309.76%202.189%202.378%202.189%203.948%200%201.808-1.07%203.473-2.76%204.163zM7.802%2012.703l-1.95-1.142c-.167-.095-.239-.238-.239-.428V5.899c0-2.545%201.95-4.472%204.591-4.472%201%200%201.927.333%202.712.928L8.23%205.067c-.285.166-.428.404-.428.737v6.898zM12%2015.128l-2.795-1.57v-3.33L12%208.658l2.795%201.57v3.33L12%2015.128zm1.796%207.23c-1%200-1.927-.332-2.712-.927l4.686-2.712c.285-.166.428-.404.428-.737v-6.898l1.974%201.142c.167.095.238.238.238.428v5.233c0%202.545-1.974%204.472-4.614%204.472zm-5.637-5.303l-4.544-2.617c-1.308-.761-2.188-2.378-2.188-3.948A4.482%204.482%200%20014.21%206.327v5.423c0%20.333.143.571.428.738l5.947%203.449-1.95%201.118a.432.432%200%2001-.476%200zm-.262%203.9c-2.688%200-4.662-2.021-4.662-4.519%200-.19.024-.38.047-.57l4.686%202.71c.286.167.571.167.856%200l5.97-3.448v2.26c0%20.19-.07.333-.237.428l-4.543%202.616c-.619.357-1.356.523-2.117.523zm5.899%202.83a5.947%205.947%200%20005.827-4.756C22.287%2018.339%2024%2015.84%2024%2013.296c0-1.665-.713-3.282-1.998-4.448.119-.5.19-.999.19-1.498%200-3.401-2.759-5.947-5.946-5.947-.642%200-1.26.095-1.88.31A5.962%205.962%200%200010.205%200a5.947%205.947%200%2000-5.827%204.757C1.713%205.447%200%207.945%200%2010.49c0%201.666.713%203.283%201.998%204.448-.119.5-.19%201-.19%201.499%200%203.401%202.759%205.946%205.946%205.946.642%200%201.26-.095%201.88-.309a5.96%205.96%200%20004.162%201.713z'%3e%3c/path%3e%3c/svg%3e`,Ze=`data:image/svg+xml,%3csvg%20fill='%23ffffff'%20fill-rule='evenodd'%20height='24'%20viewBox='0%200%2024%2024'%20width='24'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eOpenAI%3c/title%3e%3cpath%20d='M9.205%208.658v-2.26c0-.19.072-.333.238-.428l4.543-2.616c.619-.357%201.356-.523%202.117-.523%202.854%200%204.662%202.212%204.662%204.566%200%20.167%200%20.357-.024.547l-4.71-2.759a.797.797%200%2000-.856%200l-5.97%203.473zm10.609%208.8V12.06c0-.333-.143-.57-.429-.737l-5.97-3.473%201.95-1.118a.433.433%200%2001.476%200l4.543%202.617c1.309.76%202.189%202.378%202.189%203.948%200%201.808-1.07%203.473-2.76%204.163zM7.802%2012.703l-1.95-1.142c-.167-.095-.239-.238-.239-.428V5.899c0-2.545%201.95-4.472%204.591-4.472%201%200%201.927.333%202.712.928L8.23%205.067c-.285.166-.428.404-.428.737v6.898zM12%2015.128l-2.795-1.57v-3.33L12%208.658l2.795%201.57v3.33L12%2015.128zm1.796%207.23c-1%200-1.927-.332-2.712-.927l4.686-2.712c.285-.166.428-.404.428-.737v-6.898l1.974%201.142c.167.095.238.238.238.428v5.233c0%202.545-1.974%204.472-4.614%204.472zm-5.637-5.303l-4.544-2.617c-1.308-.761-2.188-2.378-2.188-3.948A4.482%204.482%200%20014.21%206.327v5.423c0%20.333.143.571.428.738l5.947%203.449-1.95%201.118a.432.432%200%2001-.476%200zm-.262%203.9c-2.688%200-4.662-2.021-4.662-4.519%200-.19.024-.38.047-.57l4.686%202.71c.286.167.571.167.856%200l5.97-3.448v2.26c0%20.19-.07.333-.237.428l-4.543%202.616c-.619.357-1.356.523-2.117.523zm5.899%202.83a5.947%205.947%200%20005.827-4.756C22.287%2018.339%2024%2015.84%2024%2013.296c0-1.665-.713-3.282-1.998-4.448.119-.5.19-.999.19-1.498%200-3.401-2.759-5.947-5.946-5.947-.642%200-1.26.095-1.88.31A5.962%205.962%200%200010.205%200a5.947%205.947%200%2000-5.827%204.757C1.713%205.447%200%207.945%200%2010.49c0%201.666.713%203.283%201.998%204.448-.119.5-.19%201-.19%201.499%200%203.401%202.759%205.946%205.946%205.946.642%200%201.26-.095%201.88-.309a5.96%205.96%200%20004.162%201.713z'%3e%3c/path%3e%3c/svg%3e`,Qe=`data:image/svg+xml,%3csvg%20width='240'%20height='300'%20viewBox='0%200%20240%20300'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20clip-path='url(%23clip0_1401_86283)'%3e%3cmask%20id='mask0_1401_86283'%20style='mask-type:luminance'%20maskUnits='userSpaceOnUse'%20x='0'%20y='0'%20width='240'%20height='300'%3e%3cpath%20d='M240%200H0V300H240V0Z'%20fill='white'/%3e%3c/mask%3e%3cg%20mask='url(%23mask0_1401_86283)'%3e%3cpath%20d='M180%20240H60V120H180V240Z'%20fill='%234B4646'/%3e%3cpath%20d='M180%2060H60V240H180V60ZM240%20300H0V0H240V300Z'%20fill='%23F1ECEC'/%3e%3c/g%3e%3c/g%3e%3cdefs%3e%3cclipPath%20id='clip0_1401_86283'%3e%3crect%20width='240'%20height='300'%20fill='white'/%3e%3c/clipPath%3e%3c/defs%3e%3c/svg%3e`,$e=`data:image/svg+xml,%3csvg%20fill='%23ffffff'%20fill-rule='evenodd'%20height='24'%20viewBox='0%200%2024%2024'%20width='24'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eGrok%3c/title%3e%3cpath%20d='M9.27%2015.29l7.978-5.897c.391-.29.95-.177%201.137.272.98%202.369.542%205.215-1.41%207.169-1.951%201.954-4.667%202.382-7.149%201.406l-2.711%201.257c3.889%202.661%208.611%202.003%2011.562-.953%202.341-2.344%203.066-5.539%202.388-8.42l.006.007c-.983-4.232.242-5.924%202.75-9.383.06-.082.12-.164.179-.248l-3.301%203.305v-.01L9.267%2015.292M7.623%2016.723c-2.792-2.67-2.31-6.801.071-9.184%201.761-1.763%204.647-2.483%207.166-1.425l2.705-1.25a7.808%207.808%200%2000-1.829-1A8.975%208.975%200%20005.984%205.83c-2.533%202.536-3.33%206.436-1.962%209.764%201.022%202.487-.653%204.246-2.34%206.022-.599.63-1.199%201.259-1.682%201.925l7.62-6.815'%3e%3c/path%3e%3c/svg%3e`,et=`data:image/svg+xml,%3csvg%20width='180'%20height='180'%20viewBox='0%200%20180%20180'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M144.248%20149.062C151.748%20154.688%20162.998%20150.938%20152.685%20140.625C121.748%20110.625%20128.31%2028.125%2089.8727%2028.125C51.4352%2028.125%2057.9977%20110.625%2027.0602%20140.625C15.8102%20151.875%2027.9977%20154.688%2035.4977%20149.062C64.5602%20129.375%2062.6852%2094.6875%2089.8727%2094.6875C117.06%2094.6875%20115.185%20129.375%20144.248%20149.062Z'%20fill='white'/%3e%3c/svg%3e`,tt=`data:image/svg+xml,%3csvg%20height='24'%20viewBox='0%200%2024%2024'%20width='24'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eGemini%3c/title%3e%3cpath%20d='M20.616%2010.835a14.147%2014.147%200%2001-4.45-3.001%2014.111%2014.111%200%2001-3.678-6.452.503.503%200%2000-.975%200%2014.134%2014.134%200%2001-3.679%206.452%2014.155%2014.155%200%2001-4.45%203.001c-.65.28-1.318.505-2.002.678a.502.502%200%20000%20.975c.684.172%201.35.397%202.002.677a14.147%2014.147%200%20014.45%203.001%2014.112%2014.112%200%20013.679%206.453.502.502%200%2000.975%200c.172-.685.397-1.351.677-2.003a14.145%2014.145%200%20013.001-4.45%2014.113%2014.113%200%20016.453-3.678.503.503%200%20000-.975%2013.245%2013.245%200%2001-2.003-.678z'%20fill='%233186FF'%3e%3c/path%3e%3cpath%20d='M20.616%2010.835a14.147%2014.147%200%2001-4.45-3.001%2014.111%2014.111%200%2001-3.678-6.452.503.503%200%2000-.975%200%2014.134%2014.134%200%2001-3.679%206.452%2014.155%2014.155%200%2001-4.45%203.001c-.65.28-1.318.505-2.002.678a.502.502%200%20000%20.975c.684.172%201.35.397%202.002.677a14.147%2014.147%200%20014.45%203.001%2014.112%2014.112%200%20013.679%206.453.502.502%200%2000.975%200c.172-.685.397-1.351.677-2.003a14.145%2014.145%200%20013.001-4.45%2014.113%2014.113%200%20016.453-3.678.503.503%200%20000-.975%2013.245%2013.245%200%2001-2.003-.678z'%20fill='url(%23lobe-icons-gemini-0-_R_0_)'%3e%3c/path%3e%3cpath%20d='M20.616%2010.835a14.147%2014.147%200%2001-4.45-3.001%2014.111%2014.111%200%2001-3.678-6.452.503.503%200%2000-.975%200%2014.134%2014.134%200%2001-3.679%206.452%2014.155%2014.155%200%2001-4.45%203.001c-.65.28-1.318.505-2.002.678a.502.502%200%20000%20.975c.684.172%201.35.397%202.002.677a14.147%2014.147%200%20014.45%203.001%2014.112%2014.112%200%20013.679%206.453.502.502%200%2000.975%200c.172-.685.397-1.351.677-2.003a14.145%2014.145%200%20013.001-4.45%2014.113%2014.113%200%20016.453-3.678.503.503%200%20000-.975%2013.245%2013.245%200%2001-2.003-.678z'%20fill='url(%23lobe-icons-gemini-1-_R_0_)'%3e%3c/path%3e%3cpath%20d='M20.616%2010.835a14.147%2014.147%200%2001-4.45-3.001%2014.111%2014.111%200%2001-3.678-6.452.503.503%200%2000-.975%200%2014.134%2014.134%200%2001-3.679%206.452%2014.155%2014.155%200%2001-4.45%203.001c-.65.28-1.318.505-2.002.678a.502.502%200%20000%20.975c.684.172%201.35.397%202.002.677a14.147%2014.147%200%20014.45%203.001%2014.112%2014.112%200%20013.679%206.453.502.502%200%2000.975%200c.172-.685.397-1.351.677-2.003a14.145%2014.145%200%20013.001-4.45%2014.113%2014.113%200%20016.453-3.678.503.503%200%20000-.975%2013.245%2013.245%200%2001-2.003-.678z'%20fill='url(%23lobe-icons-gemini-2-_R_0_)'%3e%3c/path%3e%3cdefs%3e%3clinearGradient%20gradientUnits='userSpaceOnUse'%20id='lobe-icons-gemini-0-_R_0_'%20x1='7'%20x2='11'%20y1='15.5'%20y2='12'%3e%3cstop%20stop-color='%2308B962'%3e%3c/stop%3e%3cstop%20offset='1'%20stop-color='%2308B962'%20stop-opacity='0'%3e%3c/stop%3e%3c/linearGradient%3e%3clinearGradient%20gradientUnits='userSpaceOnUse'%20id='lobe-icons-gemini-1-_R_0_'%20x1='8'%20x2='11.5'%20y1='5.5'%20y2='11'%3e%3cstop%20stop-color='%23F94543'%3e%3c/stop%3e%3cstop%20offset='1'%20stop-color='%23F94543'%20stop-opacity='0'%3e%3c/stop%3e%3c/linearGradient%3e%3clinearGradient%20gradientUnits='userSpaceOnUse'%20id='lobe-icons-gemini-2-_R_0_'%20x1='3.5'%20x2='17.5'%20y1='13.5'%20y2='12'%3e%3cstop%20stop-color='%23FABC12'%3e%3c/stop%3e%3cstop%20offset='.46'%20stop-color='%23FABC12'%20stop-opacity='0'%3e%3c/stop%3e%3c/linearGradient%3e%3c/defs%3e%3c/svg%3e`,nt=`data:image/svg+xml,%3csvg%20height='24'%20viewBox='0%200%2024%2024'%20width='24'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eKimi%3c/title%3e%3cpath%20d='M21.846%200a1.923%201.923%200%20110%203.846H20.15a.226.226%200%2001-.227-.226V1.923C19.923.861%2020.784%200%2021.846%200z'%20fill='%231783FF'%3e%3c/path%3e%3cpath%20d='M11.065%2011.199l7.257-7.2c.137-.136.06-.41-.116-.41H14.3a.164.164%200%2000-.117.051l-7.82%207.756c-.122.12-.302.013-.302-.179V3.82c0-.127-.083-.23-.185-.23H3.186c-.103%200-.186.103-.186.23V19.77c0%20.128.083.23.186.23h2.69c.103%200%20.186-.102.186-.23v-3.25c0-.069.025-.135.069-.178l2.424-2.406a.158.158%200%2001.205-.023l6.484%204.772a7.677%207.677%200%20003.453%201.283c.108.012.2-.095.2-.23v-3.06c0-.117-.07-.212-.164-.227a5.028%205.028%200%2001-2.027-.807l-5.613-4.064c-.117-.078-.132-.279-.028-.381z'%20fill='%23fff'%3e%3c/path%3e%3c/svg%3e`,rt=`data:image/svg+xml,%3csvg%20height='24'%20viewBox='0%200%2024%2024'%20width='24'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eQwen%3c/title%3e%3cpath%20d='M12.604%201.34c.393.69.784%201.382%201.174%202.075a.18.18%200%2000.157.091h5.552c.174%200%20.322.11.446.327l1.454%202.57c.19.337.24.478.024.837-.26.43-.513.864-.76%201.3l-.367.658c-.106.196-.223.28-.04.512l2.652%204.637c.172.301.111.494-.043.77-.437.785-.882%201.564-1.335%202.34-.159.272-.352.375-.68.37-.777-.016-1.552-.01-2.327.016a.099.099%200%2000-.081.05%20575.097%20575.097%200%2001-2.705%204.74c-.169.293-.38.363-.725.364-.997.003-2.002.004-3.017.002a.537.537%200%2001-.465-.271l-1.335-2.323a.09.09%200%2000-.083-.049H4.982c-.285.03-.553-.001-.805-.092l-1.603-2.77a.543.543%200%2001-.002-.54l1.207-2.12a.198.198%200%20000-.197%20550.951%20550.951%200%2001-1.875-3.272l-.79-1.395c-.16-.31-.173-.496.095-.965.465-.813.927-1.625%201.387-2.436.132-.234.304-.334.584-.335a338.3%20338.3%200%20012.589-.001.124.124%200%2000.107-.063l2.806-4.895a.488.488%200%2001.422-.246c.524-.001%201.053%200%201.583-.006L11.704%201c.341-.003.724.032.9.34zm-3.432.403a.06.06%200%2000-.052.03L6.254%206.788a.157.157%200%2001-.135.078H3.253c-.056%200-.07.025-.041.074l5.81%2010.156c.025.042.013.062-.034.063l-2.795.015a.218.218%200%2000-.2.116l-1.32%202.31c-.044.078-.021.118.068.118l5.716.008c.046%200%20.08.02.104.061l1.403%202.454c.046.081.092.082.139%200l5.006-8.76.783-1.382a.055.055%200%2001.096%200l1.424%202.53a.122.122%200%2000.107.062l2.763-.02a.04.04%200%2000.035-.02.041.041%200%20000-.04l-2.9-5.086a.108.108%200%20010-.113l.293-.507%201.12-1.977c.024-.041.012-.062-.035-.062H9.2c-.059%200-.073-.026-.043-.077l1.434-2.505a.107.107%200%20000-.114L9.225%201.774a.06.06%200%2000-.053-.031zm6.29%208.02c.046%200%20.058.02.034.06l-.832%201.465-2.613%204.585a.056.056%200%2001-.05.029.058.058%200%2001-.05-.029L8.498%209.841c-.02-.034-.01-.052.028-.054l.216-.012%206.722-.012z'%20fill='url(%23lobe-icons-qwen-_R_0_)'%20fill-rule='nonzero'%3e%3c/path%3e%3cdefs%3e%3clinearGradient%20id='lobe-icons-qwen-_R_0_'%20x1='0%25'%20x2='100%25'%20y1='0%25'%20y2='0%25'%3e%3cstop%20offset='0%25'%20stop-color='%236336E7'%20stop-opacity='.84'%3e%3c/stop%3e%3cstop%20offset='100%25'%20stop-color='%236F69F7'%20stop-opacity='.84'%3e%3c/stop%3e%3c/linearGradient%3e%3c/defs%3e%3c/svg%3e`,it=`data:image/svg+xml,%3csvg%20fill='%23ffffff'%20fill-rule='evenodd'%20height='24'%20viewBox='0%200%2024%2024'%20width='24'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eGithubCopilot%3c/title%3e%3cpath%20d='M19.245%205.364c1.322%201.36%201.877%203.216%202.11%205.817.622%200%201.2.135%201.592.654l.73.964c.21.278.323.61.323.955v2.62c0%20.339-.173.669-.453.868C20.239%2019.602%2016.157%2021.5%2012%2021.5c-4.6%200-9.205-2.583-11.547-4.258-.28-.2-.452-.53-.453-.868v-2.62c0-.345.113-.679.321-.956l.73-.963c.392-.517.974-.654%201.593-.654l.029-.297c.25-2.446.81-4.213%202.082-5.52%202.461-2.54%205.71-2.851%207.146-2.864h.198c1.436.013%204.685.323%207.146%202.864zm-7.244%204.328c-.284%200-.613.016-.962.05-.123.447-.305.85-.57%201.108-1.05%201.023-2.316%201.18-2.994%201.18-.638%200-1.306-.13-1.851-.464-.516.165-1.012.403-1.044.996a65.882%2065.882%200%2000-.063%202.884l-.002.48c-.002.563-.005%201.126-.013%201.69.002.326.204.63.51.765%202.482%201.102%204.83%201.657%206.99%201.657%202.156%200%204.504-.555%206.985-1.657a.854.854%200%2000.51-.766c.03-1.682.006-3.372-.076-5.053-.031-.596-.528-.83-1.046-.996-.546.333-1.212.464-1.85.464-.677%200-1.942-.157-2.993-1.18-.266-.258-.447-.661-.57-1.108-.32-.032-.64-.049-.96-.05zm-2.525%204.013c.539%200%20.976.426.976.95v1.753c0%20.525-.437.95-.976.95a.964.964%200%2001-.976-.95v-1.752c0-.525.437-.951.976-.951zm5%200c.539%200%20.976.426.976.95v1.753c0%20.525-.437.95-.976.95a.964.964%200%2001-.976-.95v-1.752c0-.525.437-.951.976-.951zM7.635%205.087c-1.05.102-1.935.438-2.385.906-.975%201.037-.765%203.668-.21%204.224.405.394%201.17.657%201.995.657h.09c.649-.013%201.785-.176%202.73-1.11.435-.41.705-1.433.675-2.47-.03-.834-.27-1.52-.63-1.813-.39-.336-1.275-.482-2.265-.394zm6.465.394c-.36.292-.6.98-.63%201.813-.03%201.037.24%202.06.675%202.47.968.957%202.136%201.104%202.776%201.11h.044c.825%200%201.59-.263%201.995-.657.555-.556.765-3.187-.21-4.224-.45-.468-1.335-.804-2.385-.906-.99-.088-1.875.058-2.265.394zM12%207.615c-.24%200-.525.015-.84.044.03.16.045.336.06.526l-.001.159a2.94%202.94%200%2001-.014.25c.225-.022.425-.027.612-.028h.366c.187%200%20.387.006.612.028-.015-.146-.015-.277-.015-.409.015-.19.03-.365.06-.526a9.29%209.29%200%2000-.84-.044z'%3e%3c/path%3e%3c/svg%3e`,at=f(``),ot=f(``);function st(e,n){let r=F(n,`size`,3,20),i={claude:Ye,codex:Xe,openai:Ze,opencode_go:Qe,opencode:Qe,xai:$e,grok:$e,antigravity:et,gemini:tt,google:tt,kimi:nt,qwen:rt,copilot:it},a=j(()=>i[n.provider]);var o=ot();let s,c;var u=l(o),d=e=>{var n=at();y(()=>{M(n,`src`,g(a)),M(n,`width`,r()),M(n,`height`,r())}),t(e,n)},f=e=>{Je(e,{get size(){return r()},strokeWidth:1.6})};m(u,e=>{g(a)?e(d):e(f,-1)}),k(o),y(()=>{s=Y(o,1,`provider-mark svelte-1vulm01`,null,s,{"light-mat":n.provider===`qwen`}),c=ie(o,``,c,{width:`${r()??``}px`,height:`${r()??``}px`})}),t(e,o)}var ct={"common.save":`Save`,"common.cancel":`Cancel`,"common.close":`Close`,"common.import":`Import`,"common.retry":`Retry`,"common.connectAccount":`Connect an account`,"common.chooseOtherProvider":`Choose another provider`,"common.searchAccount":`Search accounts`,"common.noAccountConnected":`No account connected`,"common.noMatchingAccount":`No matching account`,"common.tryOtherName":`Try another name or provider.`,"common.enable":`Enable {name}`,"common.disabled":`Disabled`,"common.verifyGoogle":`Verify the Google account`,"common.openAntigravity":`Open Antigravity with this account to finish verification.`,"common.percent":`{value}%`,"common.accountCount.one":`{count} account`,"common.accountCount.other":`{count} accounts`,"common.copyRefused":`Copy unavailable. Select the text to copy it.`,"nav.subscriptions":`Subscriptions`,"nav.quotas":`Quotas`,"nav.overview":`Overview`,"nav.accounts":`Accounts`,"nav.models":`Models`,"nav.service":`Service`,"nav.activity":`Requests`,"nav.settings":`Settings`,"nav.quickstart":`Quick start`,"nav.main":`Main navigation`,"nav.mobile":`Mobile navigation`,"nav.openMenu":`Open menu`,"nav.closeMenu":`Close menu`,"nav.menu":`Menu`,"nav.setupTool":`Set up a tool`,"page.description":`Manage your subscriptions, their quotas and your tools' requests.`,"page.loading":`Loading your subscriptions...`,"page.dismissNotice":`Dismiss notification`,"page.settingsUnavailable":`Settings will be available once the server responds.`,"notice.displaySaved":`Boite display saved.`,"notice.windowsSaved":`Windows shown in Boite saved.`,"notice.busy":`Another action is in progress.`,"notice.endpointSaved":`Endpoint saved.`,"notice.reserveRemoved":`Reserve removed.`,"notice.reserveSaved":`Reserve saved.`,"notice.fileTooLarge":`{name} is over the 2 MB limit.`,"notice.invalidJson":`{name}: the file must contain valid JSON.`,"notice.partialImport":`{count} account(s) imported. {errors}`,"notice.nothingImported":`The file added no accounts.`,"notice.imported":`Accounts imported.`,"notice.accountDisabled":`Account disabled.`,"notice.accountEnabled":`Account enabled.`,"notice.accountDeleted":`Account deleted.`,"notice.settingsSaved":`Settings saved.`,"notice.modelUpdated":`Model updated.`,"notice.accountConnected":`Account connected.`,"notice.partialRestore":`{count} account(s) restored. {errors}`,"notice.restored.one":`{count} account restored.`,"notice.restored.other":`{count} accounts restored.`,"api.serverStatus":`The server returned {status}.`,"api.errorPrefix":`{name}: {error}`,"private.account":`account`,"status.active":`Active`,"status.exhausted":`Quota used up`,"status.cooldown":`Paused`,"status.expired":`Sign-in expired`,"status.check":`Needs checking`,"status.reserveReached":`Reserve reached`,"date.unknown":`Date not reported`,"credit.unknown":`Not reported`,"credit.credits":`credits`,"usage.weekly":`Weekly`,"usage.monthly":`Monthly`,"usage.fiveHours":`5 hours`,"usage.extra":`Extra usage`,"usage.codexCredits":`Codex credits`,"usage.creditBalance":`Credit balance`,"usage.premiumRequests":`Premium requests`,"usage.chat":`Chat`,"usage.completions":`Completions`,"dialect.client":`Same as the client`,"reserveWindow.five-hour":`5 h`,"reserveWindow.daily":`Day`,"reserveWindow.weekly":`Week`,"reserveWindow.monthly":`Month`,"provider.openaiCompatible":`OpenAI-compatible`,"accounts.title":`Accounts`,"accounts.dropLabel":`Drop auth files`,"accounts.drop":`Drop your JSON files to import accounts`,"accounts.emptyDescription":`Connect a subscription or import its JSON file.`,"accounts.colAccount":`Account`,"accounts.colSubscription":`Subscription`,"accounts.colStatus":`Status`,"accounts.colReserve":`Reserve`,"accounts.colVerified":`Quotas checked`,"accounts.colActions":`Actions`,"accounts.verifiedPrefix":`Quotas checked: `,"accounts.notVerified":`Not checked`,"accounts.delete":`Delete {name}`,"accounts.deleteTitle":`Delete this account`,"accounts.deleteConfirm":`Delete this account from douane?`,"accounts.deleteButton":`Delete`,"name.invalid":`Enter a name of 1 to 120 characters.`,"name.input":`New account name`,"name.save":`Save name`,"name.cancel":`Cancel rename`,"name.rename":`Rename this account`,"reserve.notSaved":`The reserve was not saved.`,"reserve.invalid":`Enter a percentage from 0 to 99.`,"reserve.keepAtLeast":`Keep at least`,"reserve.input":`Minimum reserve in percent`,"reserve.save":`Save reserve`,"reserve.watched":`Watched limits`,"reserve.longestTitle":`The account's longest limit (month or week)`,"reserve.longest":`Longest`,"reserve.remove":`Remove reserve`,"reserve.titleWatched":`Douane stops using this account when one of these limits reaches this level: {windows}`,"reserve.titleLongest":`Douane stops using this account when its longest quota (month or week) reaches this level`,"reserve.add":`Add a reserve`,"reserve.label":`Reserve {percent}%`,"reserve.reached":`Reserve reached: douane no longer uses this account until the reset.`,"reserve.inactiveWindows":`Inactive: this account does not report these limits.`,"reserve.inactiveAccount":`Inactive: this provider does not report a quota for the whole account.`,"resets.reset":`Quota reset.`,"resets.alreadyRedeemed":`This reset was already applied.`,"resets.nothingToReset":`The quota is already available. No reset used.`,"resets.noCredit":`No reset available.`,"resets.unconfirmed":`The server did not confirm the reset result.`,"resets.resume":`Resume reset`,"resets.button":`Reset ({count})`,"resets.checking":`Checking resets`,"resets.none":`0 resets available`,"resets.check":`Check resets`,"resets.title":`Reset quota`,"resets.closeConfirmation":`Close confirmation`,"resets.warning":`This uses 1 reset to restore the account's quota. It cannot be undone.`,"resets.expiresFirst":`The reset that expires on {date} is used first.`,"resets.pending":`An attempt is waiting for confirmation. Retrying checks the same operation.`,"resets.running":`Resetting`,"resets.retrySame":`Retry the same reset`,"resets.use":`Use 1 reset`,"connect.copyRefused":`The browser refused the copy. Select the code to copy it.`,"connect.waiting":`Waiting for authorization. The connection is checked automatically.`,"connect.expired":`This connection expired. Choose the provider to start again.`,"connect.refused":`The provider refused the connection. Start again to retry.`,"connect.exchanging":`Authorization received, connecting the account.`,"connect.stillWaiting":`The connection is still waiting for your authorization.`,"connect.unconfirmed":`The server did not confirm the new account.`,"connect.notAdded":`The account was not added.`,"connect.subtitle":`Add a subscription to douane.`,"connect.success":`Account connected`,"connect.successText":`Your subscription is now available in douane.`,"connect.viewAccounts":`View my accounts`,"connect.googleVerify":`Google asks you to verify this account before connecting.`,"connect.afterVerify":`Once verification is done, start the connection again.`,"connect.restart":`Start again`,"connect.antigravityTitle":`Antigravity setup incomplete`,"connect.antigravityProject":`The Google sign-in worked, but Google did not provide the project this account needs.`,"connect.antigravityFirstUse":`If this is the first use, open the Antigravity app with this account and finish onboarding. If Antigravity also refuses the sign-in, follow Google's message.`,"connect.antigravityGuide":`Open the Antigravity guide`,"connect.enterCode":`Open the {provider} page and enter this code to authorize the connection.`,"connect.copyCode":`Copy code`,"connect.authorize":`Open the provider's page and authorize the connection.`,"connect.open":`Open sign-in`,"connect.callbackHint":`If the redirect to localhost does not load, copy its full URL. Claude can also show a code to paste here.`,"connect.callbackLabel":`Redirect URL or sign-in code`,"connect.callbackPlaceholder":`Redirect URL or code#state`,"connect.finish":`Finish connecting`,"connect.check":`Check connection`,"connect.customIntro1":`An API key becomes a model prefix: with `,"connect.customIntro2":`, its models are called `,"connect.customModel":`deepseek/model-name`,"connect.customIntro3":`. Several keys under the same prefix take turns. The key leaves this form once saved.`,"connect.name":`Name`,"connect.addEndpoint":`Add endpoint`,"connect.tokenIntro":`Add your subscription's access token. It leaves this form once saved.`,"connect.accountName":`Account name`,"connect.accountNamePlaceholder":`My subscription`,"connect.token":`Access token`,"connect.providerUrl":`Provider URL`,"connect.providerUrlPlaceholder":`https://your-provider/v1`,"connect.addAccount":`Add account`,"connect.oauthOption":`Connect my subscription`,"connect.apiKeyOption":`Add an API key`,"connect.tokenOption":`Add a token`,"connect.noProvider":`No provider available. Import an auth file to add an account.`,"connect.haveFile":`Already have a file?`,"connect.importFiles":`Import one or more JSON auth files.`,"connect.pending":`Connecting...`,"endpoint.route":`Model prefix`,"endpoint.url":`API URL`,"endpoint.format":`API format`,"endpoint.key":`API key`,"endpoint.models":`Served models`,"endpoint.modelsPlaceholder":`All models from the API`,"endpoint.newKey":`New API key`,"endpoint.unchanged":`Unchanged`,"endpoint.edit":`Edit endpoint`,"email.hide":`Hide this email`,"email.show":`Show this email`,"meter.left":`Quota left`,"meter.unavailable":`Unavailable`,"meter.valueLeft":`{value}% left`,"quotas.refresh":`Refresh quotas`,"quotas.filter":`Filter by provider`,"quotas.all":`All`,"quotas.search":`Search`,"quotas.sort":`Sort accounts`,"quotas.byName":`By name`,"quotas.byRemaining":`Quota left`,"quotas.emptyDescription":`Connect a subscription to see its quotas.`,"quotas.group":`{provider} quotas`,"quotas.displayTitle":`How {provider} quotas show in Boite and /v1/quotas clients`,"quotas.displayLabel":`In Boite / clients`,"quotas.perAccount":`Per account`,"quotas.average":`Account average`,"quotas.windowsTitle":`{provider} quota windows shown in Boite`,"quotas.windows":`Windows`,"quotas.windowsLabel":`{provider} windows in Boite`,"quotas.primary":`Main`,"quotas.makePrimary":`Make main`,"quotas.showWindow":`Show {label} in Boite`,"quotas.noWindow":`No window read for this provider.`,"quotas.defaultWindow":`Without a main window, Boite highlights the weekly one.`,"quotas.googleVerify":`Google asks you to verify this account.`,"quotas.resetAt":`Resets: {date}`,"quotas.notReported":`Quota not reported`,"quotas.unlimited":`Unlimited`,"quotas.remaining":`left`,"quotas.used":`{used} used`,"quotas.usedOf":`{used} used of {limit}`,"quotas.refreshAccount":`Refresh this account`,"quotas.refreshNamed":`Refresh {name}`,"overview.description":`Activity across your subscriptions`,"overview.connected":`Service connected`,"overview.disconnected":`Connection unavailable`,"overview.activeAccounts":`Active accounts`,"overview.ofAccounts":`of {count} accounts`,"overview.requests":`Requests`,"overview.inFlight":`{count} in progress`,"overview.tokens":`Tokens exchanged`,"overview.tokensDetail":`input and output`,"overview.cache":`Cache read`,"overview.cacheDetail":`tokens reused`,"overview.success":`Successful requests`,"overview.errors":`{count} errors`,"overview.recent":`Recent activity`,"overview.recentDescription":`The latest requests douane handled`,"overview.viewAll":`View all`,"overview.emptyTitle":`Your activity will show here`,"overview.emptyDescription":`Connect an account, then send a first request from your tool.`,"overview.openQuickstart":`Open quick start`,"table.model":`Model`,"table.provider":`Provider`,"table.time":`Time`,"table.status":`Status`,"table.duration":`Duration`,"table.id":`ID`,"table.context":`Context`,"table.available":`Available`,"table.modelAccount":`Model and account`,"table.tokens":`Tokens`,"table.error":`Error`,"models.description":`Models available with your accounts`,"models.count":`{count} models`,"models.endpoint":`OpenAI-compatible URL`,"models.search":`Search models`,"models.emptyTitle":`No model available`,"models.emptyDescription":`Add an account to load its subscription's models.`,"models.addAccount":`Add an account`,"models.noMatchTitle":`No matching model`,"models.noMatchDescription":`Try another model or provider name.`,"activity.title":`Request log`,"activity.description":`Each call, its account and its usage`,"activity.count":`Last {count} requests`,"activity.onlyErrors":`Show errors only`,"activity.search":`Search requests`,"activity.searchPlaceholder":`Model, account or provider`,"activity.noMatchTitle":`No matching request`,"activity.emptyTitle":`No requests yet`,"activity.noMatchDescription":`Change your search or the error filter.`,"activity.emptyDescription":`Your tools' calls will show here with their real result.`,"activity.unknownAccount":`Account not reported`,"quickstart.chooseTool":`Choose a tool`,"quickstart.openAccounts":`Open accounts`,"quickstart.baseUrl":`Base URL`,"quickstart.copyUrl":`Copy URL`,"quickstart.openaiHint1":`Pick your tool's OpenAI-compatible mode. If it asks for a key, enter `,"quickstart.openaiHint2":`.`,"quickstart.chooseModel":`Choose a model`,"quickstart.powershell":`Run these commands in PowerShell.`,"quickstart.copyClaude":`Copy the Claude Code setup`,"quickstart.claudeHint":`Claude Code will send its requests through the connected Claude account.`,"quickstart.connectClaude":`Connect a Claude account`,"strategy.round-robin.label":`Round robin`,"strategy.round-robin.desc":`Each active account takes requests in turn.`,"strategy.fill-first.label":`Use up one account`,"strategy.fill-first.desc":`Uses the first available account before moving to the next.`,"strategy.reset-first.label":`Nearest reset`,"strategy.reset-first.desc":`Uses the account whose weekly quota resets first. The others serve only when it is unavailable.`,"strategy.smart.label":`Smart split`,"strategy.smart.desc":`Within 48 h of the reset, 90% of new conversations use this account until it runs out.`,"settings.sessionNote":`A conversation keeps its account while it stays available. With Nearest reset, it returns to the account with the nearest reset as soon as that account is available.`,"settings.routing":`Request routing`,"settings.routingDescription":`The default rule applies to providers without their own choice. Each choice saves on click.`,"settings.perProvider":`Per provider`,"settings.perProviderDescription":`Adjust routing for each of your subscriptions.`,"settings.defaultRule":`Default rule`,"settings.noProviders":`Providers will show once the service is connected.`,"settings.refresh":`Refresh and timeouts`,"settings.refreshDescription":`Quotas and account selection are recomputed after each refresh.`,"settings.refreshEvery":`Refresh quotas every`,"settings.seconds":`seconds`,"settings.timeout":`Request timeout`,"settings.defaultProvider":`Default provider`,"settings.weekEnd":`End of the week`,"settings.weekEndDescription":`Before an account's weekly reset, its reserve and client shares stop applying, so what is left gets used. 0 keeps them to the end.`,"settings.freeBefore":`Lift limits before the reset`,"settings.hours":`hours`,"settings.autoProvider":`Automatic selection`,"settings.saving":`Saving...`,"settings.save":`Save settings`,"settings.language":`Language`,"settings.languageDescription":`Language of this dashboard, saved in this browser.`,"settings.languageAuto":`Automatic`,"settings.languageEnglish":`English`,"settings.languageFrench":`Franรงais`,"backup.title":`Backup`,"backup.description":`Move this configuration to another douane: settings, disabled models and every account.`,"backup.warning":`The file holds live sign-ins and keys. Refresh tokens rotate, so an account works in one douane at a time: after a restore, remove it here. Keep the file private.`,"backup.export":`Export`,"backup.exporting":`Exporting...`,"backup.restore":`Restore`,"backup.restoring":`Restoring...`,"backup.confirm.one":`{name} holds {count} account. Accounts already here are updated, the others are added.`,"backup.confirm.other":`{name} holds {count} accounts. Accounts already here are updated, the others are added.`,"backup.withSettings":`Also apply its settings and disabled models`,"backup.confirmButton":`Restore accounts`,"backup.notExport":`{name} is not a douane export.`,"backup.tooLarge":`{name} is over the 32 MB limit.`,"nav.clients":`Clients`,"clients.title":`Clients`,"clients.new":`New client`,"clients.open":`Open to anyone who reaches douane. The first client makes a key required on every call, Boite included.`,"clients.enforced":`Keys required`,"clients.emptyTitle":`No client yet`,"clients.emptyDescription":`Give each Boite or tool its own key, the accounts it may use and its share of each quota.`,"clients.allAccounts":`All accounts`,"clients.allAccountsHint":`Accounts connected later included`,"clients.noAccess":`No account`,"clients.noShare":`Common part only`,"clients.createdAt":`Created {date}`,"clients.ofShare":`{used} / {share}%`,"clients.highest":`Highest account: {name}`,"clients.notMeasured":`Not measured yet`,"clients.rotate":`New key`,"clients.rotateNamed":`New key for {name}`,"clients.delete":`Delete`,"clients.deleteNamed":`Delete {name}`,"clients.breakdown":`Breakdown`,"clients.breakdownInfo":`Each rise of a window goes to the clients whose calls ended on that account, weighted by tokens. A rise no call through douane explains counts as outside douane.`,"clients.breakdownEmpty":`No window measured since the first client.`,"clients.noKey":`Without key`,"clients.former":`Deleted clients`,"clients.outside":`Outside douane`,"clients.unexplained":`Unattributed`,"clients.used":`{value}% used`,"clients.editTitle":`Edit {name}`,"clients.name":`Name`,"clients.namePlaceholder":`Desktop`,"clients.access":`Accounts`,"clients.wholePool":`Every {pool} account, later ones included`,"clients.shares":`Quota shares`,"clients.sharesInfo":`A share reserves this percent of each window (5 h, day, week, month) of every account of the provider. An unused share frees up in the last seventh of the window. What no share covers is common to every client.`,"clients.shareOf":`Share of {pool}`,"clients.common":`Common {value}%`,"clients.overbooked":`Over 100%`,"clients.noPool":`Choose accounts first.`,"clients.shareInvalid":`A share is a number above 0 and at most 100.`,"clients.pickAccess":`Choose at least one account.`,"clients.create":`Create`,"clients.keyTitle":`Key for {name}`,"clients.keyOnce":`Shown once. Copy it now.`,"clients.keyBoite":`Paste it in Boite: Settings, subscription proxy, key.`,"clients.copyKey":`Copy`,"clients.copied":`Copied`,"clients.rotateTitle":`New key for {name}?`,"clients.rotateText":`The current key stops working at once. Paste the new one in the tool that uses it.`,"clients.rotateButton":`Replace the key`,"clients.deleteTitle":`Delete {name}?`,"clients.deleteText":`Calls with its key are refused.`,"clients.deleteLast":`It is the last client: the API opens again to anyone who reaches douane.`,"clients.deleteButton":`Delete`,"notice.clientCreated":`Client created.`,"notice.clientSaved":`Client saved.`,"notice.clientDeleted":`Client deleted.`,"notice.keyReplaced":`Key replaced.`,"activity.client":`Client {name}`,"quickstart.keyRequired":`Keys are required: use a client key from the Clients page instead of douane.`},lt={"common.save":`Enregistrer`,"common.cancel":`Annuler`,"common.close":`Fermer`,"common.import":`Importer`,"common.retry":`Rรฉessayer`,"common.connectAccount":`Connecter un compte`,"common.chooseOtherProvider":`Choisir un autre fournisseur`,"common.searchAccount":`Rechercher un compte`,"common.noAccountConnected":`Aucun compte connectรฉ`,"common.noMatchingAccount":`Aucun compte correspondant`,"common.tryOtherName":`Essayez un autre nom ou fournisseur.`,"common.enable":`Activer {name}`,"common.disabled":`Dรฉsactivรฉ`,"common.verifyGoogle":`Vรฉrifier le compte Google`,"common.openAntigravity":`Ouvrez Antigravity avec ce compte pour terminer la vรฉrification.`,"common.percent":`{value} %`,"common.accountCount.one":`{count} compte`,"common.accountCount.other":`{count} comptes`,"common.copyRefused":`Copie indisponible. Sรฉlectionnez le texte pour le copier.`,"nav.subscriptions":`Abonnements`,"nav.quotas":`Quotas`,"nav.overview":`Vue d'ensemble`,"nav.accounts":`Comptes`,"nav.models":`Modรจles`,"nav.service":`Service`,"nav.activity":`Requรชtes`,"nav.settings":`Rรฉglages`,"nav.quickstart":`Dรฉmarrage rapide`,"nav.main":`Navigation principale`,"nav.mobile":`Navigation mobile`,"nav.openMenu":`Ouvrir le menu`,"nav.closeMenu":`Fermer le menu`,"nav.menu":`Menu`,"nav.setupTool":`Configurer un outil`,"page.description":`Gรฉrez vos abonnements, leurs quotas et les requรชtes de vos outils.`,"page.loading":`Chargement de vos abonnements...`,"page.dismissNotice":`Fermer la notification`,"page.settingsUnavailable":`Les rรฉglages seront disponibles lorsque le serveur rรฉpondra.`,"notice.displaySaved":`Affichage dans Boite enregistrรฉ.`,"notice.windowsSaved":`Fenรชtres affichรฉes dans Boite enregistrรฉes.`,"notice.busy":`Une action est dรฉjร  en cours.`,"notice.endpointSaved":`Endpoint enregistrรฉ.`,"notice.reserveRemoved":`Rรฉserve retirรฉe.`,"notice.reserveSaved":`Rรฉserve enregistrรฉe.`,"notice.fileTooLarge":`{name} dรฉpasse la limite de 2 Mo.`,"notice.invalidJson":`{name} : le fichier doit contenir du JSON valide.`,"notice.partialImport":`{count} compte(s) importรฉ(s). {errors}`,"notice.nothingImported":`Le fichier n'a ajoutรฉ aucun compte.`,"notice.imported":`Comptes importรฉs.`,"notice.accountDisabled":`Compte dรฉsactivรฉ.`,"notice.accountEnabled":`Compte activรฉ.`,"notice.accountDeleted":`Compte supprimรฉ.`,"notice.settingsSaved":`Rรฉglages enregistrรฉs.`,"notice.modelUpdated":`Modรจle mis ร  jour.`,"notice.accountConnected":`Compte connectรฉ.`,"notice.partialRestore":`{count} compte(s) restaurรฉ(s). {errors}`,"notice.restored.one":`{count} compte restaurรฉ.`,"notice.restored.other":`{count} comptes restaurรฉs.`,"api.serverStatus":`Le serveur a rรฉpondu {status}.`,"api.errorPrefix":`{name} : {error}`,"private.account":`compte`,"status.active":`Actif`,"status.exhausted":`Quota รฉpuisรฉ`,"status.cooldown":`En pause`,"status.expired":`Connexion expirรฉe`,"status.check":`ร€ vรฉrifier`,"status.reserveReached":`Rรฉserve atteinte`,"date.unknown":`Date non communiquรฉe`,"credit.unknown":`Non communiquรฉ`,"credit.credits":`crรฉdits`,"usage.weekly":`Semaine`,"usage.monthly":`Mois`,"usage.fiveHours":`5 heures`,"usage.extra":`Usage supplรฉmentaire`,"usage.codexCredits":`Crรฉdits Codex`,"usage.creditBalance":`Solde des crรฉdits`,"usage.premiumRequests":`Requรชtes premium`,"usage.chat":`Chat`,"usage.completions":`Complรฉtions`,"dialect.client":`Celui du client`,"reserveWindow.five-hour":`5 h`,"reserveWindow.daily":`Jour`,"reserveWindow.weekly":`Semaine`,"reserveWindow.monthly":`Mois`,"provider.openaiCompatible":`Compatible OpenAI`,"accounts.title":`Comptes`,"accounts.dropLabel":`Dรฉposer des fichiers d'authentification`,"accounts.drop":`Dรฉposez vos fichiers JSON pour importer des comptes`,"accounts.emptyDescription":`Connectez un abonnement ou importez son fichier JSON.`,"accounts.colAccount":`Compte`,"accounts.colSubscription":`Abonnement`,"accounts.colStatus":`ร‰tat`,"accounts.colReserve":`Rรฉserve`,"accounts.colVerified":`Quotas vรฉrifiรฉs`,"accounts.colActions":`Actions`,"accounts.verifiedPrefix":`Quotas vรฉrifiรฉs : `,"accounts.notVerified":`Non vรฉrifiรฉs`,"accounts.delete":`Supprimer {name}`,"accounts.deleteTitle":`Supprimer ce compte`,"accounts.deleteConfirm":`Supprimer ce compte de douane ?`,"accounts.deleteButton":`Supprimer`,"name.invalid":`Saisissez un nom de 1 ร  120 caractรจres.`,"name.input":`Nouveau nom du compte`,"name.save":`Enregistrer le nom`,"name.cancel":`Annuler le renommage`,"name.rename":`Renommer ce compte`,"reserve.notSaved":`La rรฉserve n'a pas รฉtรฉ enregistrรฉe.`,"reserve.invalid":`Saisissez un pourcentage entre 0 et 99.`,"reserve.keepAtLeast":`Garder au moins`,"reserve.input":`Rรฉserve minimale en pourcentage`,"reserve.save":`Enregistrer la rรฉserve`,"reserve.watched":`Limites surveillรฉes`,"reserve.longestTitle":`La limite la plus longue du compte (mois ou semaine)`,"reserve.longest":`Plus longue`,"reserve.remove":`Retirer la rรฉserve`,"reserve.titleWatched":`Douane cesse d'utiliser ce compte quand une de ces limites atteint ce seuil : {windows}`,"reserve.titleLongest":`Douane cesse d'utiliser ce compte quand son quota le plus long (mois ou semaine) atteint ce seuil`,"reserve.add":`Ajouter une rรฉserve`,"reserve.label":`Rรฉserve {percent} %`,"reserve.reached":`Rรฉserve atteinte : douane n'utilise plus ce compte jusqu'ร  la rรฉinitialisation.`,"reserve.inactiveWindows":`Inactive : ce compte ne communique pas ces limites.`,"reserve.inactiveAccount":`Inactive : ce fournisseur ne communique pas de quota pour l'ensemble du compte.`,"resets.reset":`Quota rรฉinitialisรฉ.`,"resets.alreadyRedeemed":`Ce reset a dรฉjร  รฉtรฉ appliquรฉ.`,"resets.nothingToReset":`Le quota est dรฉjร  disponible. Aucun reset utilisรฉ.`,"resets.noCredit":`Aucun reset disponible.`,"resets.unconfirmed":`Le serveur nโ€™a pas confirmรฉ le rรฉsultat du reset.`,"resets.resume":`Reprendre le reset`,"resets.button":`Rรฉinitialiser ({count})`,"resets.checking":`Vรฉrification des resets`,"resets.none":`0 reset disponible`,"resets.check":`Vรฉrifier les resets`,"resets.title":`Rรฉinitialiser le quota`,"resets.closeConfirmation":`Fermer la confirmation`,"resets.warning":`Cette action consomme 1 reset pour rรฉtablir le quota du compte. Elle est irrรฉversible.`,"resets.expiresFirst":`Le reset qui expire le {date} sera utilisรฉ en premier.`,"resets.pending":`Une tentative est en attente de confirmation. Rรฉessayer vรฉrifie la mรชme opรฉration.`,"resets.running":`Rรฉinitialisation en cours`,"resets.retrySame":`Rรฉessayer le mรชme reset`,"resets.use":`Utiliser 1 reset`,"connect.copyRefused":`Copie refusรฉe par le navigateur. Sรฉlectionnez le code pour le copier.`,"connect.waiting":`En attente d'autorisation. La connexion est vรฉrifiรฉe automatiquement.`,"connect.expired":`Cette connexion a expirรฉ. Choisissez le fournisseur pour recommencer.`,"connect.refused":`Le fournisseur a refusรฉ la connexion. Recommencez pour rรฉessayer.`,"connect.exchanging":`Autorisation reรงue, connexion du compte en cours.`,"connect.stillWaiting":`La connexion attend encore votre autorisation.`,"connect.unconfirmed":`Le serveur n'a pas confirmรฉ l'ajout du compte.`,"connect.notAdded":`Le compte n'a pas รฉtรฉ ajoutรฉ.`,"connect.subtitle":`Ajoutez un abonnement ร  douane.`,"connect.success":`Compte connectรฉ`,"connect.successText":`Votre abonnement est maintenant disponible dans douane.`,"connect.viewAccounts":`Voir mes comptes`,"connect.googleVerify":`Google demande de vรฉrifier ce compte avant la connexion.`,"connect.afterVerify":`Une fois la vรฉrification terminรฉe, recommencez la connexion.`,"connect.restart":`Recommencer la connexion`,"connect.antigravityTitle":`Activation Antigravity incomplรจte`,"connect.antigravityProject":`La connexion Google a rรฉussi, mais Google n'a pas fourni le projet nรฉcessaire ร  ce compte.`,"connect.antigravityFirstUse":`Pour une premiรจre utilisation, ouvrez l'application Antigravity avec ce compte et terminez l'accueil. Si Antigravity refuse aussi la connexion, suivez le message affichรฉ par Google.`,"connect.antigravityGuide":`Ouvrir le guide Antigravity`,"connect.enterCode":`Ouvrez la page {provider} et saisissez ce code pour autoriser la connexion.`,"connect.copyCode":`Copier le code`,"connect.authorize":`Ouvrez la page du fournisseur et autorisez la connexion.`,"connect.open":`Ouvrir la connexion`,"connect.callbackHint":`Si le retour vers localhost ne charge pas, copiez son URL complรจte. Claude peut aussi afficher un code ร  coller ici.`,"connect.callbackLabel":`URL de retour ou code de connexion`,"connect.callbackPlaceholder":`URL de retour ou code#state`,"connect.finish":`Terminer la connexion`,"connect.check":`Vรฉrifier la connexion`,"connect.customIntro1":`Une clรฉ d'API devient un prรฉfixe de modรจles : avec `,"connect.customIntro2":`, ses modรจles s'appellent `,"connect.customModel":`deepseek/nom-du-modรจle`,"connect.customIntro3":`. Plusieurs clรฉs sous le mรชme prรฉfixe tournent entre elles. La clรฉ disparaรฎt de ce formulaire aprรจs l'enregistrement.`,"connect.name":`Nom`,"connect.addEndpoint":`Ajouter l'endpoint`,"connect.tokenIntro":`Ajoutez le jeton de connexion de votre abonnement. Il disparaรฎt de ce formulaire aprรจs l'enregistrement.`,"connect.accountName":`Nom du compte`,"connect.accountNamePlaceholder":`Mon abonnement`,"connect.token":`Jeton de connexion`,"connect.providerUrl":`Adresse du fournisseur`,"connect.providerUrlPlaceholder":`https://votre-fournisseur/v1`,"connect.addAccount":`Ajouter le compte`,"connect.oauthOption":`Connecter mon abonnement`,"connect.apiKeyOption":`Ajouter une clรฉ d'API`,"connect.tokenOption":`Ajouter un jeton`,"connect.noProvider":`Aucun fournisseur disponible. Importez un fichier d'authentification pour ajouter un compte.`,"connect.haveFile":`Vous avez dรฉjร  un fichier ?`,"connect.importFiles":`Importez un ou plusieurs fichiers d'authentification JSON.`,"connect.pending":`Connexion en cours...`,"endpoint.route":`Prรฉfixe des modรจles`,"endpoint.url":`Adresse de l'API`,"endpoint.format":`Format de l'API`,"endpoint.key":`Clรฉ d'API`,"endpoint.models":`Modรจles servis`,"endpoint.modelsPlaceholder":`Tous les modรจles de l'API`,"endpoint.newKey":`Nouvelle clรฉ d'API`,"endpoint.unchanged":`Inchangรฉe`,"endpoint.edit":`Modifier l'endpoint`,"email.hide":`Masquer cet email`,"email.show":`Afficher cet email`,"meter.left":`Quota restant`,"meter.unavailable":`Indisponible`,"meter.valueLeft":`{value} % restants`,"quotas.refresh":`Actualiser les quotas`,"quotas.filter":`Filtrer par fournisseur`,"quotas.all":`Tous`,"quotas.search":`Rechercher`,"quotas.sort":`Trier les comptes`,"quotas.byName":`Par nom`,"quotas.byRemaining":`Quota restant`,"quotas.emptyDescription":`Connectez un abonnement pour afficher ses quotas.`,"quotas.group":`Quotas {provider}`,"quotas.displayTitle":`Affichage des quotas {provider} dans Boite et les clients de /v1/quotas`,"quotas.displayLabel":`Dans Boite / les clients`,"quotas.perAccount":`Dรฉtail par compte`,"quotas.average":`Moyenne des comptes`,"quotas.windowsTitle":`Fenรชtres de quota {provider} montrรฉes dans Boite`,"quotas.windows":`Fenรชtres`,"quotas.windowsLabel":`Fenรชtres {provider} dans Boite`,"quotas.primary":`Principale`,"quotas.makePrimary":`Rendre principale`,"quotas.showWindow":`Afficher {label} dans Boite`,"quotas.noWindow":`Aucune fenรชtre lue pour ce fournisseur.`,"quotas.defaultWindow":`Sans fenรชtre principale, Boite met la semaine en avant.`,"quotas.googleVerify":`Google demande de vรฉrifier ce compte.`,"quotas.resetAt":`Rรฉinitialisation : {date}`,"quotas.notReported":`Quota non communiquรฉ`,"quotas.unlimited":`Illimitรฉs`,"quotas.remaining":`restants`,"quotas.used":`{used} utilisรฉs`,"quotas.usedOf":`{used} utilisรฉs sur {limit}`,"quotas.refreshAccount":`Actualiser ce compte`,"quotas.refreshNamed":`Actualiser {name}`,"overview.description":`L'activitรฉ de vos abonnements`,"overview.connected":`Service connectรฉ`,"overview.disconnected":`Connexion indisponible`,"overview.activeAccounts":`Comptes actifs`,"overview.ofAccounts":`sur {count} comptes`,"overview.requests":`Requรชtes`,"overview.inFlight":`{count} en cours`,"overview.tokens":`Tokens รฉchangรฉs`,"overview.tokensDetail":`entrรฉe et sortie`,"overview.cache":`Cache relu`,"overview.cacheDetail":`tokens rรฉutilisรฉs`,"overview.success":`Requรชtes rรฉussies`,"overview.errors":`{count} erreurs`,"overview.recent":`Activitรฉ rรฉcente`,"overview.recentDescription":`Les derniรจres requรชtes traitรฉes par douane`,"overview.viewAll":`Tout voir`,"overview.emptyTitle":`Votre activitรฉ apparaรฎtra ici`,"overview.emptyDescription":`Connectez un compte puis envoyez une premiรจre requรชte depuis votre outil.`,"overview.openQuickstart":`Ouvrir le dรฉmarrage rapide`,"table.model":`Modรจle`,"table.provider":`Fournisseur`,"table.time":`Heure`,"table.status":`Statut`,"table.duration":`Durรฉe`,"table.id":`Identifiant`,"table.context":`Contexte`,"table.available":`Disponible`,"table.modelAccount":`Modรจle et compte`,"table.tokens":`Tokens`,"table.error":`Erreur`,"models.description":`Les modรจles disponibles avec vos comptes`,"models.count":`{count} modรจles`,"models.endpoint":`Adresse compatible OpenAI`,"models.search":`Rechercher un modรจle`,"models.emptyTitle":`Aucun modรจle disponible`,"models.emptyDescription":`Ajoutez un compte pour charger les modรจles de son abonnement.`,"models.addAccount":`Ajouter un compte`,"models.noMatchTitle":`Aucun modรจle correspondant`,"models.noMatchDescription":`Essayez un autre nom de modรจle ou de fournisseur.`,"activity.title":`Journal des requรชtes`,"activity.description":`Chaque appel, son compte et sa consommation`,"activity.count":`{count} derniรจres requรชtes`,"activity.onlyErrors":`Afficher les erreurs seulement`,"activity.search":`Rechercher une requรชte`,"activity.searchPlaceholder":`Modรจle, compte ou fournisseur`,"activity.noMatchTitle":`Aucune requรชte correspondante`,"activity.emptyTitle":`Aucune requรชte pour le moment`,"activity.noMatchDescription":`Modifiez votre recherche ou le filtre des erreurs.`,"activity.emptyDescription":`Les appels de vos outils apparaรฎtront ici avec leur rรฉsultat rรฉel.`,"activity.unknownAccount":`Compte non communiquรฉ`,"quickstart.chooseTool":`Choisir un outil`,"quickstart.openAccounts":`Ouvrir les comptes`,"quickstart.baseUrl":`Adresse de base`,"quickstart.copyUrl":`Copier l'adresse`,"quickstart.openaiHint1":`Choisissez le mode compatible OpenAI de votre outil. Sโ€™il demande une clรฉ, saisissez `,"quickstart.openaiHint2":`.`,"quickstart.chooseModel":`Choisir un modรจle`,"quickstart.powershell":`Exรฉcutez ces commandes dans PowerShell.`,"quickstart.copyClaude":`Copier la configuration Claude Code`,"quickstart.claudeHint":`Claude Code utilisera le compte Claude connectรฉ pour envoyer ses requรชtes.`,"quickstart.connectClaude":`Connecter un compte Claude`,"strategy.round-robin.label":`Rotation`,"strategy.round-robin.desc":`Chaque compte actif reรงoit les requรชtes ร  tour de rรดle.`,"strategy.fill-first.label":`ร‰puiser un compte`,"strategy.fill-first.desc":`Utilise le premier compte disponible avant de passer au suivant.`,"strategy.reset-first.label":`Reset le plus proche`,"strategy.reset-first.desc":`Utilise le compte dont le quota hebdomadaire se rรฉinitialise en premier. Les autres servent seulement sโ€™il est indisponible.`,"strategy.smart.label":`Rรฉpartition intelligente`,"strategy.smart.desc":`ร€ moins de 48 h du reset, 90 % des nouvelles conversations utilisent ce compte jusquโ€™ร  รฉpuisement.`,"settings.sessionNote":`Une conversation garde son compte tant qu'il reste disponible. Avec Reset le plus proche, elle revient au compte dont le reset est le plus proche dรจs qu'il est disponible.`,"settings.routing":`Rรฉpartition des requรชtes`,"settings.routingDescription":`La rรจgle par dรฉfaut s'applique aux fournisseurs sans choix particulier. Chaque choix est enregistrรฉ dรจs le clic.`,"settings.perProvider":`Par fournisseur`,"settings.perProviderDescription":`Adaptez la rรฉpartition ร  chacun de vos abonnements.`,"settings.defaultRule":`Rรจgle par dรฉfaut`,"settings.noProviders":`Les fournisseurs apparaรฎtront lorsque le service sera connectรฉ.`,"settings.refresh":`Actualisation et dรฉlais`,"settings.refreshDescription":`Les quotas et la sรฉlection des comptes sont recalculรฉs aprรจs chaque actualisation.`,"settings.refreshEvery":`Actualiser les quotas toutes les`,"settings.seconds":`secondes`,"settings.timeout":`Dรฉlai maximal d'une requรชte`,"settings.defaultProvider":`Fournisseur par dรฉfaut`,"settings.weekEnd":`Fin de semaine`,"settings.weekEndDescription":`Avant le reset hebdomadaire d'un compte, sa rรฉserve et les parts des clients ne s'appliquent plus, pour que le reste serve. 0 les garde jusqu'au bout.`,"settings.freeBefore":`Lever les limites avant le reset`,"settings.hours":`heures`,"settings.autoProvider":`Sรฉlection automatique`,"settings.saving":`Enregistrement...`,"settings.save":`Enregistrer les rรฉglages`,"settings.language":`Langue`,"settings.languageDescription":`Langue de ce tableau de bord, enregistrรฉe dans ce navigateur.`,"settings.languageAuto":`Automatique`,"settings.languageEnglish":`English`,"settings.languageFrench":`Franรงais`,"backup.title":`Sauvegarde`,"backup.description":`Dรฉplacez cette configuration vers une autre douane : rรฉglages, modรจles dรฉsactivรฉs et tous les comptes.`,"backup.warning":`Le fichier contient des connexions et des clรฉs actives. Les jetons de renouvellement changent ร  chaque usage : un compte ne fonctionne que dans une douane ร  la fois. Aprรจs une restauration, retirez-le ici. Gardez le fichier privรฉ.`,"backup.export":`Exporter`,"backup.exporting":`Export...`,"backup.restore":`Restaurer`,"backup.restoring":`Restauration...`,"backup.confirm.one":`{name} contient {count} compte. Les comptes dรฉjร  prรฉsents sont mis ร  jour, les autres sont ajoutรฉs.`,"backup.confirm.other":`{name} contient {count} comptes. Les comptes dรฉjร  prรฉsents sont mis ร  jour, les autres sont ajoutรฉs.`,"backup.withSettings":`Appliquer aussi ses rรฉglages et modรจles dรฉsactivรฉs`,"backup.confirmButton":`Restaurer les comptes`,"backup.notExport":`{name} n'est pas un export douane.`,"backup.tooLarge":`{name} dรฉpasse la limite de 32 Mo.`,"nav.clients":`Clients`,"clients.title":`Clients`,"clients.new":`Nouveau client`,"clients.open":`Ouvert ร  quiconque atteint douane. Le premier client rend une clรฉ obligatoire ร  chaque appel, Boite compris.`,"clients.enforced":`Clรฉ obligatoire`,"clients.emptyTitle":`Aucun client`,"clients.emptyDescription":`Donnez ร  chaque Boite ou outil sa clรฉ, les comptes qu'il peut utiliser et sa part de chaque quota.`,"clients.allAccounts":`Tous les comptes`,"clients.allAccountsHint":`Comptes connectรฉs plus tard compris`,"clients.noAccess":`Aucun compte`,"clients.noShare":`Part commune seulement`,"clients.createdAt":`Crรฉรฉ le {date}`,"clients.ofShare":`{used} / {share} %`,"clients.highest":`Compte le plus utilisรฉ : {name}`,"clients.notMeasured":`Pas encore mesurรฉ`,"clients.rotate":`Nouvelle clรฉ`,"clients.rotateNamed":`Nouvelle clรฉ pour {name}`,"clients.delete":`Supprimer`,"clients.deleteNamed":`Supprimer {name}`,"clients.breakdown":`Rรฉpartition`,"clients.breakdownInfo":`Chaque hausse d'une fenรชtre revient aux clients dont les appels ont fini sur ce compte, au prorata des tokens. Une hausse qu'aucun appel par douane n'explique compte comme hors douane.`,"clients.breakdownEmpty":`Aucune fenรชtre mesurรฉe depuis le premier client.`,"clients.noKey":`Sans clรฉ`,"clients.former":`Clients supprimรฉs`,"clients.outside":`Hors douane`,"clients.unexplained":`Non attribuรฉ`,"clients.used":`{value} % utilisรฉs`,"clients.editTitle":`Modifier {name}`,"clients.name":`Nom`,"clients.namePlaceholder":`PC fixe`,"clients.access":`Comptes`,"clients.wholePool":`Tous les comptes {pool}, futurs compris`,"clients.shares":`Parts de quota`,"clients.sharesInfo":`Une part rรฉserve ce pourcentage de chaque fenรชtre (5 h, jour, semaine, mois) de chaque compte du fournisseur. Une part inutilisรฉe se libรจre dans le dernier septiรจme de la fenรชtre. Ce qu'aucune part ne couvre est commun ร  tous les clients.`,"clients.shareOf":`Part de {pool}`,"clients.common":`Commun {value} %`,"clients.overbooked":`Plus de 100 %`,"clients.noPool":`Choisissez d'abord des comptes.`,"clients.shareInvalid":`Une part est un nombre supรฉrieur ร  0 et au plus 100.`,"clients.pickAccess":`Choisissez au moins un compte.`,"clients.create":`Crรฉer`,"clients.keyTitle":`Clรฉ de {name}`,"clients.keyOnce":`Affichรฉe une seule fois. Copiez-la maintenant.`,"clients.keyBoite":`Collez-la dans Boite : Rรฉglages, proxy d'abonnements, clรฉ.`,"clients.copyKey":`Copier`,"clients.copied":`Copiรฉe`,"clients.rotateTitle":`Nouvelle clรฉ pour {name} ?`,"clients.rotateText":`La clรฉ actuelle cesse de fonctionner tout de suite. Collez la nouvelle dans l'outil qui l'utilise.`,"clients.rotateButton":`Remplacer la clรฉ`,"clients.deleteTitle":`Supprimer {name} ?`,"clients.deleteText":`Les appels avec sa clรฉ sont refusรฉs.`,"clients.deleteLast":`C'est le dernier client : l'API redevient ouverte ร  quiconque atteint douane.`,"clients.deleteButton":`Supprimer`,"notice.clientCreated":`Client crรฉรฉ.`,"notice.clientSaved":`Client enregistrรฉ.`,"notice.clientDeleted":`Client supprimรฉ.`,"notice.keyReplaced":`Clรฉ remplacรฉe.`,"activity.client":`Client {name}`,"quickstart.keyRequired":`Une clรฉ est obligatoire : utilisez une clรฉ client de la page Clients au lieu de douane.`},ut=`douane-language`,dt={en:ct,fr:lt},ft={en:`en-US`,fr:`fr-FR`};function pt(){try{let e=localStorage.getItem(ut);return e===`en`||e===`fr`?e:`auto`}catch{return`auto`}}function mt(){if(typeof navigator>`u`)return`en`;let e=navigator.languages?.length?navigator.languages:[navigator.language];for(let t of e){let e=t?.toLowerCase()??``;if(e.startsWith(`fr`))return`fr`;if(e.startsWith(`en`))return`en`}return`en`}var ht=w({choice:typeof window>`u`?`auto`:pt(),detected:mt()});function gt(){return ht.choice}function _t(){return ht.choice===`auto`?ht.detected:ht.choice}function vt(){return ft[_t()]}function yt(){typeof document<`u`&&(document.documentElement.lang=_t())}function bt(e){ht.choice=e;try{e===`auto`?localStorage.removeItem(ut):localStorage.setItem(ut,e)}catch{}yt()}typeof window<`u`&&(yt(),window.addEventListener(`languagechange`,()=>{ht.detected=mt(),yt()}));function Z(e,t){let n=dt[_t()][e]??ct[e];return t?n.replace(/\{(\w+)\}/g,(e,n)=>n in t?String(t[n]):e):n}var xt=f(`
`),St=f(`
`);function Ct(e,n){I(n,!0);let r=F(n,`compact`,3,!1),i=j(()=>n.label??Z(`meter.left`)),a=j(()=>n.value==null?null:Math.min(100,Math.max(0,n.value)));var o=St();let s;var c=l(o),u=l(c),d=l(u,!0);k(u);var f=S(u),p=l(f,!0);k(f),k(c);var h=S(c,2),_=l(h),v=e=>{var n=xt();let r,i;y(()=>{r=Y(n,1,`meter-fill svelte-1dmbtuk`,null,r,{low:g(a)<25,medium:g(a)>=25&&g(a)<60}),i=ie(n,``,i,{width:`${g(a)??``}%`})}),t(e,n)};m(_,e=>{g(a)!=null&&e(v)}),k(h),k(o),y((e,t)=>{s=Y(o,1,`quota-meter svelte-1dmbtuk`,null,s,{compact:r()}),R(d,g(i)),R(p,e),M(h,`aria-label`,g(i)),M(h,`aria-valuenow`,g(a)??void 0),M(h,`aria-valuetext`,t)},[()=>g(a)==null?Z(`meter.unavailable`):Z(`common.percent`,{value:Math.round(g(a))}),()=>g(a)==null?Z(`meter.unavailable`):Z(`meter.valueLeft`,{value:Math.round(g(a))})]),t(e,o),q()}var wt=new Set([`$$slots`,`$$events`,`$$legacy`]);function Tt(e,t){let n=E(t,wt),r=[[`path`,{d:`M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z`}],[`path`,{d:`m15 5 4 4`}]];X(e,W({name:`pencil`},()=>n,{get iconNode(){return r}}))}var Et=new Set([`$$slots`,`$$events`,`$$legacy`]);function Dt(e,t){let n=E(t,Et),r=[[`path`,{d:`M20 6 9 17l-5-5`}]];X(e,W({name:`check`},()=>n,{get iconNode(){return r}}))}var Ot=[`chat`,`responses`,`messages`,``];function kt(e){return e===``?Z(`dialect.client`):{chat:`Chat Completions`,responses:`Responses`,messages:`Messages (Anthropic)`}[e]}var At=[`five-hour`,`daily`,`weekly`,`monthly`];function jt(e){return Z(`reserveWindow.${e}`)}function Mt(e){return{"five-hour":`five-hour`,daily:`daily`,weekly:`weekly`,"seven-day":`weekly`,seven_day:`weekly`,monthly:`monthly`}[e]??null}var Nt=class extends Error{status;constructor(e,t){super(t),this.status=e}};async function Q(e,t){let n=await fetch(`/admin/api${e}`,{...t,headers:{...t?.body?{"content-type":`application/json`}:{},...t?.headers}});if(!n.ok){let e=Z(`api.serverStatus`,{status:n.status});try{let t=await n.json();e=t.errors?.length?Rt(t.errors):typeof t.error==`string`?t.error:t.error?.message??t.message??e}catch{}throw new Nt(n.status,e)}return n.status===204?void 0:n.json()}var $={status:()=>Q(`/summary`),providers:()=>Q(`/providers`),accounts:()=>Q(`/accounts`),quotas:()=>Q(`/quotas`),models:()=>Q(`/models`),calls:()=>Q(`/calls?limit=100`),settings:()=>Q(`/settings`),refreshQuotas:e=>Q(`/quotas/refresh`,{method:`POST`,body:JSON.stringify({account_id:e})}),importAccounts:e=>Q(`/accounts/import`,{method:`POST`,body:JSON.stringify({files:e})}),importCredential:e=>Q(`/accounts/import`,{method:`POST`,body:JSON.stringify(e)}),updateEndpoint:(e,t)=>Q(`/accounts/${encodeURIComponent(e)}`,{method:`PATCH`,body:JSON.stringify(t)}),setAccountEnabled:(e,t)=>Q(`/accounts/${encodeURIComponent(e)}`,{method:`PATCH`,body:JSON.stringify({enabled:t})}),renameAccount:(e,t)=>Q(`/accounts/${encodeURIComponent(e)}`,{method:`PATCH`,body:JSON.stringify({name:t})}),setAccountReserve:(e,t,n)=>Q(`/accounts/${encodeURIComponent(e)}`,{method:`PATCH`,body:JSON.stringify({reserve_percent:t,reserve_windows:n})}),accountResets:e=>Q(`/accounts/${encodeURIComponent(e)}/resets`),redeemReset:(e,t)=>Q(`/accounts/${encodeURIComponent(e)}/resets/redeem`,{method:`POST`,body:JSON.stringify({confirmation:!0,request_id:t})}),deleteAccount:e=>Q(`/accounts/${encodeURIComponent(e)}`,{method:`DELETE`}),startOAuth:e=>Q(`/oauth/start`,{method:`POST`,body:JSON.stringify({provider:e})}),oauth:e=>Q(`/oauth/${encodeURIComponent(e)}`),oauthCallback:(e,t,n)=>Q(`/oauth/callback`,{method:`POST`,body:JSON.stringify({id:e,code:t,state:n})}),setModelEnabled:(e,t)=>Q(`/models/${encodeURIComponent(e)}`,{method:`PATCH`,body:JSON.stringify({enabled:t})}),settingsSave:e=>Q(`/settings`,{method:`PATCH`,body:JSON.stringify(e)}),clients:()=>Q(`/clients`),createClient:e=>Q(`/clients`,{method:`POST`,body:JSON.stringify(e)}),updateClient:(e,t)=>Q(`/clients/${encodeURIComponent(e)}`,{method:`PATCH`,body:JSON.stringify(t)}),deleteClient:e=>Q(`/clients/${encodeURIComponent(e)}`,{method:`DELETE`}),exportConfig:()=>Q(`/export`),restore:(e,t)=>Q(`/restore`,{method:`POST`,body:JSON.stringify({bundle:e,settings:t})})},Pt={codex:`Codex`,claude:`Claude`,gemini:`Gemini`,antigravity:`Antigravity`,qwen:`Qwen`,kimi:`Kimi`,copilot:`GitHub Copilot`,iflow:`iFlow`,opencode_go:`OpenCode Go`,xai:`Grok`,grok:`Grok`,openai_compatible:`OpenAI-compatible`};function Ft(e){return e.route||e.provider}function It(e){let t=new Map;for(let n of e){let e=Ft(n),r=t.get(e)??{id:e,provider:n.provider,name:n.route?n.name:Ht(n.provider),accounts:[]};r.accounts.push(n),t.set(e,r)}return[...t.values()]}function Lt(e,t=!1){return t?e:e.replace(/[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}/gi,Z(`private.account`))}function Rt(e){return e.map(e=>typeof e==`string`?e:e.name?Z(`api.errorPrefix`,{name:Lt(e.name),error:e.error}):e.error).join(` `)}var zt={ready:`status.active`,active:`status.active`,disabled:`common.disabled`,exhausted:`status.exhausted`,cooldown:`status.cooldown`,expired:`status.expired`,error:`status.check`};function Bt(e){return Z(e.enabled?zt[e.status]??`status.check`:`common.disabled`)}function Vt(e){return e.enabled&&(!!e.last_error||![`ready`,`active`].includes(e.status))}function Ht(e,t=e){return e===`openai_compatible`?Z(`provider.openaiCompatible`):Pt[e]??t}function Ut(e){return new Intl.NumberFormat(vt(),{maximumFractionDigits:1}).format(e)}function Wt(e){return e==null?`-`:new Intl.NumberFormat(vt(),{notation:e>=1e4?`compact`:`standard`,maximumFractionDigits:1}).format(e)}function Gt(){return _t()===`en`?`numeric`:`2-digit`}function Kt(e){return e?new Intl.DateTimeFormat(vt(),{day:`2-digit`,month:`short`,hour:Gt(),minute:`2-digit`}).format(new Date(e)):`-`}function qt(e){if(!e)return Z(`date.unknown`);let t=new Date(e);if(Number.isNaN(t.getTime()))return Z(`date.unknown`);let n=Math.abs(t.getTime()-Date.now())>6048e5;return new Intl.DateTimeFormat(vt(),{weekday:`long`,...n?{day:`numeric`,month:`short`}:{},hour:Gt(),minute:`2-digit`}).format(t)}function Jt(e,t){return e==null?Z(`credit.unknown`):t===`USD`?new Intl.NumberFormat(vt(),{style:`currency`,currency:`USD`,maximumFractionDigits:2}).format(e):/^[A-Z]{3}_minor$/.test(t)?new Intl.NumberFormat(vt(),{style:`currency`,currency:t.slice(0,3),maximumFractionDigits:2}).format(e/100):`${new Intl.NumberFormat(vt(),{maximumFractionDigits:2}).format(e)} ${t===`credits`?Z(`credit.credits`):t}`}var Yt={weekly:`usage.weekly`,"codex weekly":`usage.weekly`,"grok weekly":`usage.weekly`,monthly:`usage.monthly`,"5 hours":`usage.fiveHours`,"five hour":`usage.fiveHours`,"extra usage":`usage.extra`,"additional usage":`usage.extra`,"codex credits":`usage.codexCredits`,"credit balance":`usage.creditBalance`,"premium requests":`usage.premiumRequests`,chat:`usage.chat`,completions:`usage.completions`};function Xt(e){let t=Yt[e.toLowerCase()];return t?Z(t):e}function Zt(){if(typeof crypto.randomUUID==`function`)return crypto.randomUUID();let e=crypto.getRandomValues(new Uint8Array(16));e[6]=e[6]&15|64,e[8]=e[8]&63|128;let t=Array.from(e,e=>e.toString(16).padStart(2,`0`)).join(``);return`${t.slice(0,8)}-${t.slice(8,12)}-${t.slice(12,16)}-${t.slice(16,20)}-${t.slice(20)}`}var Qt=f(``),$t=f(`
`),en=f(``);function tn(r,i){I(i,!0);let a=e(!1),o=e(``),s=e(!1),u=e(``),f=e(void 0);async function p(){h(o,i.account.name,!0),h(u,``),h(a,!0),await n(),g(f)?.focus(),g(f)?.select()}async function _(){if(g(s)||i.busy)return;let e=g(o).trim();if(!e||e.length>120||/[\x00-\x1f\x7f]/.test(e)){h(u,Z(`name.invalid`),!0);return}if(e===i.account.name){h(a,!1);return}h(s,!0),h(u,``);try{await i.rename(i.account,e),h(a,!1)}catch(e){h(u,Lt(e.message),!0)}finally{h(s,!1)}}var v=L(),b=C(v),x=e=>{var n=$t(),r=l(n);A(r),J(r,e=>h(f,e),()=>g(f));var p=S(r,2),v=l(p);Dt(l(v),{size:20}),k(v);var b=S(v);Pe(l(b),{size:20}),k(b),k(p);var x=S(p,2),C=e=>{var n=Qt(),r=l(n,!0);k(n),y(()=>R(r,g(u))),t(e,n)};m(x,e=>{g(u)&&e(C)}),k(n),y((e,t,n,a,o)=>{M(r,`aria-label`,e),r.disabled=g(s),M(v,`aria-label`,t),M(v,`title`,n),v.disabled=g(s)||!!i.busy,M(b,`aria-label`,a),M(b,`title`,o),b.disabled=g(s)},[()=>Z(`name.input`),()=>Z(`name.save`),()=>Z(`common.save`),()=>Z(`name.cancel`),()=>Z(`common.cancel`)]),d(`submit`,n,e=>{e.preventDefault(),_()}),c(`keydown`,r,e=>{e.key===`Escape`&&!g(s)&&h(a,!1)}),z(r,()=>g(o),e=>h(o,e)),c(`click`,b,()=>h(a,!1)),t(e,n)},w=e=>{var n=en(),r=l(n),a=l(r,!0);k(r),Tt(S(r),{size:15}),k(n),y((e,t)=>{M(n,`title`,e),n.disabled=!!i.busy,R(a,t)},[()=>Z(`name.rename`),()=>Lt(i.account.name)]),c(`click`,n,p),t(e,n)};m(b,e=>{g(a)?e(x):e(w,-1)}),t(r,v),q()}o([`keydown`,`click`]);var nn=new Set([`$$slots`,`$$events`,`$$legacy`]);function rn(e,t){let n=E(t,nn),r=[[`path`,{d:`M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0`}],[`circle`,{cx:`12`,cy:`12`,r:`3`}]];X(e,W({name:`eye`},()=>n,{get iconNode(){return r}}))}var an=new Set([`$$slots`,`$$events`,`$$legacy`]);function on(e,t){let n=E(t,an),r=[[`path`,{d:`M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49`}],[`path`,{d:`M14.084 14.158a3 3 0 0 1-4.242-4.242`}],[`path`,{d:`M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143`}],[`path`,{d:`m2 2 20 20`}]];X(e,W({name:`eye-off`},()=>n,{get iconNode(){return r}}))}var sn=f(``);function cn(n,r){I(r,!0);let i=e(!1);var a=sn(),o=l(a);let s;var u=l(o,!0);k(o);var d=S(o,2),f=e=>{on(e,{size:16})},p=e=>{rn(e,{size:16})};m(d,e=>{g(i)?e(f):e(p,-1)}),k(a),y((e,t)=>{M(a,`aria-label`,e),M(a,`aria-pressed`,g(i)),M(a,`title`,t),M(o,`aria-hidden`,!g(i)),s=Y(o,1,`svelte-1n2y5u`,null,s,{blurred:!g(i)}),R(u,r.email)},[()=>Z(g(i)?`email.hide`:`email.show`),()=>Z(g(i)?`email.hide`:`email.show`)]),c(`click`,a,()=>h(i,!g(i))),t(n,a),q()}o([`click`]);var ln=f(``),un=f(` `),dn=f(``),fn=f(``),pn=f(`

`),mn=f(`

`,1),hn=f(`

`),gn=f(`

`,1),_n=f(`

`,1);function vn(n,r){I(r,!0);let i=e(null),a=e(!1),o=e(!1),s=e(``),u=e(``),f=e(!1),p=``,_=e(void 0),v=j(()=>r.account.enabled&&[`claude`,`codex`].includes(r.account.provider)),w=j(()=>`douane-reset-${r.account.id}`),T=j(()=>g(i)?.status===`ready`&&(g(i).available_count??0)>0);async function E(){if(!(!g(v)||g(a))){h(a,!0),h(s,``);try{h(i,await $.accountResets(r.account.id)),g(i).pending_request_id&&(sessionStorage.setItem(g(w),g(i).pending_request_id),h(f,!0))}catch(e){h(s,Lt(e.message),!0)}finally{h(a,!1)}}}x(()=>{g(v)?b(()=>{h(f,!!sessionStorage.getItem(g(w))),E()}):h(i,null)});function D(){p=g(i)?.pending_request_id??sessionStorage.getItem(g(w))??Zt(),h(s,``),h(u,``),g(_)?.showModal()}async function O(){if(!(g(o)||r.busy)){h(o,!0),h(s,``);try{sessionStorage.setItem(g(w),p),h(f,!0);let e={reset:`resets.reset`,already_redeemed:`resets.alreadyRedeemed`,nothing_to_reset:`resets.nothingToReset`,no_credit:`resets.noCredit`}[(await $.redeemReset(r.account.id,p)).outcome];if(!e)throw Error(Z(`resets.unconfirmed`));h(u,Z(e),!0),sessionStorage.removeItem(g(w)),h(f,!1),await E(),await r.updated()}catch(e){h(s,Lt(e.message),!0)}finally{h(o,!1)}}}var A=L(),N=C(A),P=e=>{var n=_n(),p=C(n),v=l(p),b=e=>{var n=ln(),o=l(n);Ae(o,{size:17});var s=S(o,1,!0);k(n),y(e=>{n.disabled=!!r.busy||g(a),R(s,e)},[()=>g(f)?Z(`resets.resume`):Z(`resets.button`,{count:g(i)?.available_count??0})]),c(`click`,n,D),t(e,n)},x=e=>{var n=un(),r=l(n,!0);k(n),y(e=>R(r,e),[()=>Z(`resets.checking`)]),t(e,n)},w=e=>{var n=un(),r=l(n,!0);k(n),y(e=>R(r,e),[()=>Z(`resets.none`)]),t(e,n)},A=e=>{var n=dn(),i=l(n,!0);k(n),y(e=>{n.disabled=!!r.busy,R(i,e)},[()=>Z(`resets.check`)]),c(`click`,n,E),t(e,n)};m(v,e=>{g(T)||g(f)?e(b):g(a)?e(x,1):g(i)?.status===`ready`?e(w,2):g(i)?.status!==`unsupported`&&e(A,3)});var j=S(v,2),N=e=>{var n=fn(),r=l(n,!0);k(n),y(()=>R(r,g(s))),t(e,n)};m(j,e=>{g(s)&&!g(_)?.open&&e(N)});var P=S(j,2),F=e=>{var n=pn(),r=l(n,!0);k(n),y(e=>R(r,e),[()=>Lt(g(i).error)]),t(e,n)};m(P,e=>{g(i)?.error&&!g(s)&&g(i).status!==`unsupported`&&e(F)}),k(p);var I=S(p,2),L=l(I),z=l(L),B=l(z),V=l(B,!0);k(B);var H=S(B);Pe(l(H),{size:22}),k(H),k(z);var U=S(z,2),W=l(U,!0);k(U);var G=S(U,2),ee=e=>{var n=mn(),r=C(n),i=l(r,!0);k(r);var a=S(r),o=l(a),s=l(o,!0);k(o),k(a),y(e=>{R(i,g(u)),R(s,e)},[()=>Z(`common.close`)]),c(`click`,o,()=>g(_)?.close()),t(e,n)},K=e=>{var n=gn(),a=C(n),u=l(a,!0);k(a);var d=S(a,2),p=e=>{var n=hn(),r=l(n,!0);k(n),y(e=>R(r,e),[()=>Z(`resets.expiresFirst`,{date:Kt(g(i).next_expires_at)})]),t(e,n)};m(d,e=>{g(i)?.next_expires_at&&e(p)});var h=S(d,2),v=e=>{var n=hn(),r=l(n,!0);k(n),y(e=>R(r,e),[()=>Z(`resets.pending`)]),t(e,n)};m(h,e=>{g(f)&&e(v)});var b=S(h,2),x=e=>{var n=fn(),r=l(n,!0);k(n),y(()=>R(r,g(s))),t(e,n)};m(b,e=>{g(s)&&e(x)});var w=S(b,2),T=l(w),E=l(T,!0);k(T);var D=S(T),A=l(D,!0);k(D),k(w),y((e,t,n)=>{R(u,e),T.disabled=g(o),R(E,t),D.disabled=g(o)||!!r.busy,R(A,n)},[()=>Z(`resets.warning`),()=>Z(`common.cancel`),()=>g(o)?Z(`resets.running`):g(f)?Z(`resets.retrySame`):Z(`resets.use`)]),c(`click`,T,()=>g(_)?.close()),c(`click`,D,O),t(e,n)};m(G,e=>{g(u)?e(ee):e(K,-1)}),k(L),k(I),J(I,e=>h(_,e),()=>g(_)),y((e,t,n)=>{R(V,e),M(H,`aria-label`,t),H.disabled=g(o),R(W,n)},[()=>Z(`resets.title`),()=>Z(`resets.closeConfirmation`),()=>Lt(r.account.name)]),d(`cancel`,I,e=>{g(o)&&e.preventDefault()}),c(`click`,H,()=>g(_)?.close()),t(e,n)};m(N,e=>{g(v)&&e(P)}),t(n,A),q()}o([`click`]);var yn=new Set([`$$slots`,`$$events`,`$$legacy`]);function bn(e,t){let n=E(t,yn),r=[[`polyline`,{points:`22 12 16 12 14 15 10 15 8 12 2 12`}],[`path`,{d:`M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z`}]];X(e,W({name:`inbox`},()=>n,{get iconNode(){return r}}))}var xn=f(``),Sn=f(`

`);function Cn(e,n){var r=Sn(),i=l(r);bn(l(i),{size:22}),k(i);var a=S(i,2),o=l(a,!0);k(a);var s=S(a),u=l(s,!0);k(s);var d=S(s,2),f=e=>{var r=xn(),i=l(r,!0);k(r),y(()=>R(i,n.action)),c(`click`,r,function(...e){n.onclick?.apply(this,e)}),t(e,r)};m(d,e=>{n.action&&n.onclick&&e(f)}),k(r),y(()=>{R(o,n.title),R(u,n.description)}),t(e,r)}o([`click`]);var wn=f(``),Tn=f(`
`),En=f(`
`),Dn=f(``,1),On=f(`
`),kn=f(`

`),An=f(`

`),jn=f(`
`),Mn=f(``),Nn=f(`
`),Pn=f(`

`),Fn=f(`

`),In=f(`

`),Ln=f(` `),Rn=f(`

`),zn=f(`
`),Bn=f(`
`),Vn=f(`
`),Hn=f(`

`),Un=f(`
`),Wn=f(`

`,1);function Gn(n,r){I(r,!0);let i=F(r,`providers`,19,()=>[]),a=e(`all`),o=e(``),s=e(`name`),u=e(null),d=[`claude`,`codex`,`opencode_go`,`xai`],f=j(()=>new Set(i().filter(e=>!e.quota).map(e=>e.id))),p=j(()=>[...new Set(r.accounts.map(e=>e.provider).filter(e=>!g(f).has(e)))].sort((e,t)=>(d.indexOf(e)<0?99:d.indexOf(e))-(d.indexOf(t)<0?99:d.indexOf(t))||Ht(e).localeCompare(Ht(t)))),_=j(()=>r.accounts.filter(e=>(g(a)===`all`||!g(p).includes(g(a))||e.provider===g(a))&&`${e.name} ${e.email??``}`.toLowerCase().includes(g(o).toLowerCase())).sort((e,t)=>g(s)===`remaining`?(V(e.id)??101)-(V(t.id)??101):e.name.localeCompare(t.name))),b=j(()=>g(p).map(e=>({id:e,accounts:g(_).filter(t=>t.provider===e)})).filter(e=>e.accounts.length));function x(e){return r.settings?.quota_display?.[e]??`accounts`}async function w(e,t){await r.setQuotaDisplay(e,t.value),t.value=x(e)}function E(e){let t=new Set(r.accounts.filter(t=>t.provider===e).map(e=>e.id)),n=new Map;for(let e of r.quotas)if(t.has(e.account_id))for(let t of e.windows)n.has(t.id)||n.set(t.id,t);return[...n.values()]}function D(e){let t=r.settings?.quota_windows?.[e],n=t?.primary??null;return{hidden:(t?.hidden??[]).filter(e=>e!==n),primary:n}}function O(e,t){let n=D(e),i=n.hidden.includes(t)?n.hidden.filter(e=>e!==t):[...n.hidden,t];return r.setQuotaWindows(e,{...n,hidden:i})}function B(e,t){let n=D(e);return r.setQuotaWindows(e,{hidden:n.hidden.filter(e=>e!==t),primary:t})}function V(e){let t=r.quotas.find(t=>t.account_id===e)?.windows.map(e=>e.remaining_percent).filter(e=>e!=null)??[];return t.length?Math.min(...t):null}var H=Wn(),U=C(H),W=l(U),G=l(W,!0);k(W);var ee=S(W,2),K=l(ee),J=l(K);{let e=j(()=>r.busy===`quotas`?`spinning`:``);Ae(J,{size:18,get class(){return g(e)}})}var te=S(J,1,!0);k(K);var ne=S(K),re=l(ne);Be(re,{size:20});var ie=S(re,1,!0);k(ne),k(ee),k(U);var ae=S(U,2),oe=e=>{var n=Tn(),i=l(n);let o;var s=l(i),u=S(s),d=l(u,!0);k(u),k(i);var f=S(i,2);v(f,16,()=>g(p),e=>e,(e,n)=>{var i=wn();let o;var s=l(i);st(s,{get provider(){return n},size:22});var u=S(s,1,!0),d=S(u),f=l(d,!0);k(d),k(i),y((e,t)=>{M(i,`aria-pressed`,g(a)===n),o=Y(i,1,``,null,o,{active:g(a)===n}),R(u,e),R(f,t)},[()=>Ht(n),()=>r.accounts.filter(e=>e.provider===n).length]),c(`click`,i,()=>h(a,n,!0)),t(e,i)}),k(n),y((e,t,r)=>{M(n,`aria-label`,e),M(i,`aria-pressed`,g(a)===`all`),o=Y(i,1,``,null,o,{active:g(a)===`all`}),R(s,`${t??``} `),R(d,r)},[()=>Z(`quotas.filter`),()=>Z(`quotas.all`),()=>r.accounts.filter(e=>g(p).includes(e.provider)).length]),c(`click`,i,()=>h(a,`all`)),t(e,n)};m(ae,e=>{g(p).length>1&&e(oe)});var se=S(ae,2),ce=l(se),le=l(ce);Re(le,{size:18});var ue=S(le);A(ue),k(ce);var de=S(ce),fe=l(de),X=l(fe,!0);k(fe),fe.value=fe.__value=`name`;var pe=S(fe),me=l(pe,!0);k(pe),pe.value=pe.__value=`remaining`,k(de),k(se);var he=S(se,2),ge=e=>{var n=En(),i=l(n);{let e=j(()=>Z(`common.noAccountConnected`)),t=j(()=>Z(`quotas.emptyDescription`)),n=j(()=>Z(`common.connectAccount`));Cn(i,{get title(){return g(e)},get description(){return g(t)},get action(){return g(n)},get onclick(){return r.connect}})}k(n),t(e,n)},_e=e=>{var n=En(),r=l(n);{let e=j(()=>Z(`common.noMatchingAccount`)),t=j(()=>Z(`common.tryOtherName`));Cn(r,{get title(){return g(e)},get description(){return g(t)}})}k(n),t(e,n)},ve=e=>{var n=Un();v(n,21,()=>g(b),e=>e.id,(e,n)=>{var i=Hn(),a=l(i),o=l(a);st(o,{get provider(){return g(n).id},size:29});var s=S(o),d=l(s,!0);k(s);var f=S(s),p=l(f,!0);k(f);var _=S(f),b=e=>{var i=Dn(),a=C(i),o=l(a),s=l(o,!0);k(o);var d=S(o),f=l(d),p=l(f,!0);k(f),f.value=f.__value=`accounts`;var m=S(f),_=l(m,!0);k(m),m.value=m.__value=`average`,k(d);var v;N(d),k(a);var b=S(a),E=l(b);We(E,{size:16});var D=S(E,1,!0);k(b),y((e,t,i,o,c,l,f)=>{M(a,`title`,e),R(s,t),d.disabled=!!r.busy,R(p,i),R(_,o),v!==(v=c)&&(d.value=(d.__value=c)??``,T(d,c)),M(b,`aria-expanded`,g(u)===g(n).id),M(b,`aria-controls`,`windows-${g(n).id??``}`),M(b,`title`,l),R(D,f)},[()=>Z(`quotas.displayTitle`,{provider:Ht(g(n).id)}),()=>Z(`quotas.displayLabel`),()=>Z(`quotas.perAccount`),()=>Z(`quotas.average`),()=>x(g(n).id),()=>Z(`quotas.windowsTitle`,{provider:Ht(g(n).id)}),()=>Z(`quotas.windows`)]),c(`change`,d,e=>w(g(n).id,e.currentTarget)),c(`click`,b,()=>h(u,g(u)===g(n).id?null:g(n).id,!0)),t(e,i)};m(_,e=>{r.settings&&e(b)}),k(a);var A=S(a,2),P=e=>{let i=j(()=>D(g(n).id));var a=jn(),o=l(a);v(o,17,()=>E(g(n).id),e=>e.id,(e,a)=>{let o=j(()=>g(i).primary===g(a).id),s=j(()=>g(o)||!g(i).hidden.includes(g(a).id));var u=On();let d;var f=l(u),p=l(f,!0);k(f);var m=S(f,2);let h;var _=l(m);Ke(_,{size:16});var v=S(_,1,!0);k(m);var b=S(m,2);let x;k(u),y((e,t,n)=>{d=Y(u,1,`window-choice svelte-137c7x1`,null,d,{"hidden-window":!g(s)}),R(p,e),h=Y(m,1,`primary-choice svelte-137c7x1`,null,h,{on:g(o)}),M(m,`aria-pressed`,g(o)),m.disabled=!!r.busy,R(v,t),x=Y(b,1,`switch`,null,x,{on:g(s)}),M(b,`aria-checked`,g(s)),M(b,`aria-label`,n),b.disabled=!!r.busy||g(o)},[()=>Xt(g(a).label),()=>Z(g(o)?`quotas.primary`:`quotas.makePrimary`),()=>Z(`quotas.showWindow`,{label:Xt(g(a).label)})]),c(`click`,m,()=>B(g(n).id,g(o)?null:g(a).id)),c(`click`,b,()=>O(g(n).id,g(a).id)),t(e,u)},e=>{var n=kn(),r=l(n,!0);k(n),y(e=>R(r,e),[()=>Z(`quotas.noWindow`)]),t(e,n)});var s=S(o,2),u=e=>{var n=An(),r=l(n,!0);k(n),y(e=>R(r,e),[()=>Z(`quotas.defaultWindow`)]),t(e,n)},d=j(()=>!g(i).primary&&E(g(n).id).length);m(s,e=>{g(d)&&e(u)}),k(a),y(e=>{M(a,`id`,`windows-${g(n).id??``}`),M(a,`aria-label`,e)},[()=>Z(`quotas.windowsLabel`,{provider:Ht(g(n).id)})]),t(e,a)};m(A,e=>{r.settings&&g(u)===g(n).id&&e(P)});var F=S(A,2);v(F,21,()=>g(n).accounts,e=>e.id,(e,n)=>{let i=j(()=>r.quotas.find(e=>e.account_id===g(n).id)),a=j(()=>g(i)?.subscription??g(n).subscription);var o=Vn();let s;var u=l(o),d=l(u);tn(d,{get account(){return g(n)},get rename(){return r.rename},get busy(){return r.busy}});var f=S(d),p=e=>{var r=Mn(),i=l(r,!0);k(r),y(()=>R(i,g(a)?.label??g(n).plan)),t(e,r)};m(f,e=>{(g(a)?.label||g(n).plan)&&e(p)});var h=S(f),_=e=>{cn(e,{get email(){return g(n).email}})};m(h,e=>{g(n).email&&e(_)}),vn(S(h),{get account(){return g(n)},get busy(){return r.busy},get updated(){return r.resetUpdated}}),k(u);var b=S(u,2),x=l(b),w=e=>{var r=Fn(),a=l(r),o=l(a,!0);k(a);var s=S(a),c=e=>{var r=Nn(),i=l(r,!0);He(S(i),{size:16}),k(r),y((e,t)=>{M(r,`href`,e),R(i,t)},[()=>`/admin/api/accounts/${encodeURIComponent(g(n).id)}/verification`,()=>Z(`common.verifyGoogle`)]),t(e,r)},u=e=>{var n=Pn(),r=l(n,!0);k(n),y(e=>R(r,e),[()=>Z(`common.openAntigravity`)]),t(e,n)};m(s,e=>{g(i).verification_available?e(c):e(u,-1)}),k(r),y(e=>R(o,e),[()=>Z(`quotas.googleVerify`)]),t(e,r)};m(x,e=>{g(i)?.verification_required&&e(w)});var T=S(x,2),E=l(T),D=e=>{var n=L(),r=C(n);v(r,17,()=>g(i).windows,e=>e.id,(e,n)=>{var r=In(),i=l(r);{let e=j(()=>Xt(g(n).label));Ct(i,{get value(){return g(n).remaining_percent},get label(){return g(e)}})}var a=S(i),o=l(a);Ae(o,{size:16});var s=S(o,1,!0);k(a),k(r),y((e,t)=>{M(a,`title`,e),R(s,t)},[()=>g(n).reset_at?Z(`quotas.resetAt`,{date:Kt(g(n).reset_at)}):void 0,()=>qt(g(n).reset_at)]),t(e,r)}),t(e,n)},O=e=>{var n=kn(),r=l(n,!0);k(n),y(e=>R(r,e),[()=>g(i)?.error?Lt(g(i).error):Z(`quotas.notReported`)]),t(e,n)};m(E,e=>{g(i)?.windows.length?e(D):g(i)?.verification_required||e(O,1)}),k(T);var A=S(T,2),N=e=>{var n=Bn();v(n,21,()=>g(i).credits,e=>e.id,(e,n)=>{var r=zn(),i=l(r),a=l(i),o=l(a,!0);k(a);var s=S(a),c=l(s,!0),u=S(c),d=e=>{var n=Ln(),r=l(n,!0);k(n),y(e=>R(r,e),[()=>` ${Z(`quotas.remaining`)}`]),t(e,n)};m(u,e=>{g(n).enabled!==!1&&g(n).remaining!=null&&e(d)}),k(s),k(i);var f=S(i),p=e=>{var r=Pn(),i=l(r,!0);k(r),y(e=>R(i,e),[()=>g(n).limit==null?Z(`quotas.used`,{used:Jt(g(n).used,g(n).unit)}):Z(`quotas.usedOf`,{used:Jt(g(n).used,g(n).unit),limit:Jt(g(n).limit,g(n).unit)})]),t(e,r)};m(f,e=>{g(n).used!=null&&e(p)});var h=S(f),_=e=>{var r=Rn(),i=l(r);Ae(i,{size:16});var a=S(i,1,!0);k(r),y(e=>R(a,e),[()=>qt(g(n).reset_at)]),t(e,r)};m(h,e=>{g(n).reset_at&&e(_)}),k(r),y((e,t)=>{R(o,e),R(c,t)},[()=>Xt(g(n).label),()=>g(n).enabled===!1?Z(`common.disabled`):g(n).unlimited?Z(`quotas.unlimited`):Jt(g(n).remaining,g(n).unit)]),t(e,r)}),k(n),t(e,n)};m(A,e=>{g(i)?.credits?.length&&e(N)}),k(b);var P=S(b,2),F=l(P);let I;var z=S(l(F),1,!0);k(F);var B=S(F);Ae(l(B),{size:19}),k(B),k(P),k(o),y((e,t,i,a)=>{s=Y(o,1,`quota-row svelte-137c7x1`,null,s,{"disabled-row":!g(n).enabled}),I=Y(F,1,`state-badge`,null,I,e),R(z,t),B.disabled=!!r.busy,M(B,`title`,i),M(B,`aria-label`,a)},[()=>({warning:!!g(i)?.error||Vt(g(n))||g(n).enabled&&!!g(n).reserve_reached,inactive:!g(n).enabled}),()=>g(n).enabled?g(i)?.error?Z(`status.check`):g(n).reserve_reached&&[`ready`,`active`].includes(g(n).status)?Z(`status.reserveReached`):Bt(g(n)):Z(`common.disabled`),()=>Z(`quotas.refreshAccount`),()=>Z(`quotas.refreshNamed`,{name:Lt(g(n).name)})]),c(`click`,B,()=>r.refresh(g(n).id)),t(e,o)}),k(F),k(i),y((e,t,n)=>{M(i,`aria-label`,e),R(d,t),R(p,n)},[()=>Z(`quotas.group`,{provider:Ht(g(n).id)}),()=>Ht(g(n).id),()=>Z(g(n).accounts.length===1?`common.accountCount.one`:`common.accountCount.other`,{count:g(n).accounts.length})]),t(e,i)}),k(n),t(e,n)};m(he,e=>{r.accounts.length?g(_).length?e(ve,-1):e(_e,1):e(ge)}),y((e,t,n,i,a,o,s,c)=>{R(G,e),K.disabled=!!r.busy||!r.accounts.length,R(te,t),R(ie,n),M(ue,`placeholder`,i),M(ue,`aria-label`,a),M(de,`aria-label`,o),R(X,s),R(me,c)},[()=>Z(`nav.quotas`),()=>Z(`quotas.refresh`),()=>Z(`common.connectAccount`),()=>Z(`quotas.search`),()=>Z(`common.searchAccount`),()=>Z(`quotas.sort`),()=>Z(`quotas.byName`),()=>Z(`quotas.byRemaining`)]),c(`click`,K,()=>r.refresh()),c(`click`,ne,function(...e){r.connect?.apply(this,e)}),z(ue,()=>g(o),e=>h(o,e)),P(de,()=>g(s),e=>h(s,e)),t(n,H),q()}o([`click`,`change`]);var Kn=new Set([`$$slots`,`$$events`,`$$legacy`]);function qn(e,t){let n=E(t,Kn),r=[[`path`,{d:`M12 3v12`}],[`path`,{d:`m17 8-5-5-5 5`}],[`path`,{d:`M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4`}]];X(e,W({name:`upload`},()=>n,{get iconNode(){return r}}))}var Jn=new Set([`$$slots`,`$$events`,`$$legacy`]);function Yn(e,t){let n=E(t,Jn),r=[[`path`,{d:`M10 11v6`}],[`path`,{d:`M14 11v6`}],[`path`,{d:`M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6`}],[`path`,{d:`M3 6h18`}],[`path`,{d:`M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2`}]];X(e,W({name:`trash-2`},()=>n,{get iconNode(){return r}}))}var Xn=new Set([`$$slots`,`$$events`,`$$legacy`]);function Zn(e,t){let n=E(t,Xn),r=[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`}],[`path`,{d:`m9 12 2 2 4-4`}]];X(e,W({name:`shield-check`},()=>n,{get iconNode(){return r}}))}var Qn=f(``),$n=f(`
`),er=f(``),tr=f(``),nr=f(`
`),rr=f(`

`),ir=f(`

`),ar=f(` `,1);function or(r,i){I(i,!0);let a=e(!1),o=e(``),s=e(w([])),u=e(!1),f=e(``),p=e(void 0),_=j(()=>i.account.reserve_percent??null),b=j(()=>i.account.reserve_windows??[]),x=j(()=>At.filter(e=>g(b).includes(e)||i.quota?.windows.some(t=>t.remaining_percent!=null&&Mt(t.id)===e))),T=j(()=>At.filter(e=>g(b).includes(e)).map(jt).join(` + `));async function E(){h(o,g(_)==null?``:String(g(_)),!0),h(s,[...g(b)],!0),h(f,``),h(a,!0),await n(),g(p)?.focus(),g(p)?.select()}function D(e){h(s,g(s).includes(e)?g(s).filter(t=>t!==e):[...g(s),e],!0)}async function O(e,t){if(!(g(u)||i.busy)){if(e===g(_)&&t.length===g(b).length&&t.every(e=>g(b).includes(e))){h(a,!1);return}h(u,!0),h(f,``);try{await i.save(i.account,e,t)?h(a,!1):h(f,Z(`reserve.notSaved`),!0)}finally{h(u,!1)}}}function N(){let e=g(o).trim().replace(`,`,`.`);if(!e)return O(null,[]);let t=Number(e);if(!/^\d+(\.\d+)?$/.test(e)||t>=100){h(f,Z(`reserve.invalid`),!0);return}return t===0?O(null,[]):O(t,g(s))}var P=L(),F=C(P),B=e=>{var n=nr(),r=l(n),b=l(r),C=l(b,!0);k(b);var w=S(b);A(w),J(w,e=>h(p,e),()=>g(p)),te(),k(r);var T=S(r,2),E=l(T);Dt(l(E),{size:20}),k(E);var j=S(E);Pe(l(j),{size:20}),k(j),k(T);var P=S(T,2),F=e=>{var n=$n(),r=l(n);let i;var a=l(r,!0);k(r);var o=S(r,2);v(o,16,()=>g(x),e=>e,(e,n)=>{var r=Qn();let i;var a=l(r,!0);k(r),y((e,t,n)=>{i=Y(r,1,`chip svelte-c6cuiu`,null,i,e),M(r,`aria-pressed`,t),r.disabled=g(u),R(a,n)},[()=>({on:g(s).includes(n)}),()=>g(s).includes(n),()=>jt(n)]),c(`click`,r,()=>D(n)),t(e,r)}),k(n),y((e,t,o)=>{M(n,`aria-label`,e),i=Y(r,1,`chip svelte-c6cuiu`,null,i,{on:!g(s).length}),M(r,`aria-pressed`,!g(s).length),M(r,`title`,t),r.disabled=g(u),R(a,o)},[()=>Z(`reserve.watched`),()=>Z(`reserve.longestTitle`),()=>Z(`reserve.longest`)]),c(`click`,r,()=>h(s,[],!0)),t(e,n)};m(P,e=>{g(x).length>1&&e(F)});var I=S(P,2),L=e=>{var n=er(),r=l(n,!0);k(n),y(e=>{n.disabled=g(u)||!!i.busy,R(r,e)},[()=>Z(`reserve.remove`)]),c(`click`,n,()=>O(null,[])),t(e,n)};m(I,e=>{g(_)!=null&&e(L)});var B=S(I,2),V=e=>{var n=tr(),r=l(n,!0);k(n),y(()=>R(r,g(f))),t(e,n)};m(B,e=>{g(f)&&e(V)}),k(n),y((e,t,n,r,a,o)=>{R(C,e),M(w,`aria-label`,t),w.disabled=g(u),M(E,`aria-label`,n),M(E,`title`,r),E.disabled=g(u)||!!i.busy,M(j,`aria-label`,a),M(j,`title`,o),j.disabled=g(u)},[()=>Z(`reserve.keepAtLeast`),()=>Z(`reserve.input`),()=>Z(`reserve.save`),()=>Z(`common.save`),()=>Z(`common.cancel`),()=>Z(`common.cancel`)]),d(`submit`,n,e=>{e.preventDefault(),N()}),c(`keydown`,w,e=>{e.key===`Escape`&&!g(u)&&h(a,!1)}),z(w,()=>g(o),e=>h(o,e)),c(`click`,j,()=>h(a,!1)),t(e,n)},V=e=>{var n=ar(),r=C(n);let a;var o=l(r);Zn(o,{size:16});var s=S(o,1,!0);k(r);var u=S(r,2),d=e=>{var n=rr(),r=l(n,!0);k(n),y(e=>R(r,e),[()=>Z(`reserve.reached`)]),t(e,n)},f=e=>{var n=ir(),r=l(n,!0);k(n),y(e=>R(r,e),[()=>Z(g(b).length?`reserve.inactiveWindows`:`reserve.inactiveAccount`)]),t(e,n)};m(u,e=>{g(_)!=null&&i.account.enabled&&i.account.reserve_reached?e(d):g(_)!=null&&i.account.reserve_measured===!1&&e(f,1)}),y((e,t)=>{a=Y(r,1,`reserve svelte-c6cuiu`,null,a,{set:g(_)!=null}),r.disabled=!!i.busy,M(r,`title`,e),R(s,t)},[()=>g(b).length?Z(`reserve.titleWatched`,{windows:g(T)}):Z(`reserve.titleLongest`),()=>g(_)==null?Z(`reserve.add`):`${Z(`reserve.label`,{percent:Ut(g(_))})}${g(b).length?` ยท ${g(T)}`:``}`]),c(`click`,r,E),t(e,n)};m(F,e=>{g(a)?e(B):e(V,-1)}),t(r,P),q()}o([`keydown`,`click`]);var sr=f(``),cr=f(`
`),lr=f(` `),ur=f(` `),dr=f(`
`);function fr(n,r){I(r,!0);let i=e(!1),a=e(``),o=e(``),s=e(``),u=e(``),f=e(``),p=j(()=>kt(r.account.dialect??``));function _(){h(a,r.account.route??``,!0),h(o,r.account.base_url??``,!0),h(s,r.account.dialect??``,!0),h(u,(r.account.models??[]).join(`, `),!0),h(f,``),h(i,!0)}async function b(e){e.preventDefault();let t={},n=g(a).trim().toLowerCase();n&&n!==(r.account.route??``)&&(t.route=n),g(o).trim()&&g(o).trim()!==(r.account.base_url??``)&&(t.base_url=g(o).trim()),(g(s)||null)!==(r.account.dialect??null)&&(t.dialect=g(s)||null);let c=g(u).split(`,`).map(e=>e.trim()).filter(Boolean);if(c.join(`,`)!==(r.account.models??[]).join(`,`)&&(t.models=c),g(f).trim()&&(t.api_key=g(f).trim()),!Object.keys(t).length){h(i,!1);return}await r.save(r.account,t)&&(h(i,!1),h(f,``))}var x=L(),w=C(x),T=e=>{var n=cr(),p=l(n),m=l(p,!0),_=S(m);A(_),M(_,`pattern`,`[a-z0-9][a-z0-9_\\-]{0,31}`),k(p);var x=S(p,2),C=l(x,!0),w=S(C);A(w),k(x);var T=S(x,2),E=l(T,!0),D=S(E);v(D,20,()=>Ot,e=>e,(e,n)=>{var r=sr(),i=l(r,!0);k(r);var a={};y(e=>{R(i,e),a!==(a=n)&&(r.value=(r.__value=n)??``)},[()=>kt(n)]),t(e,r)}),k(D),k(T);var O=S(T,2),j=l(O,!0),N=S(j);A(N),k(O);var F=S(O,2),I=l(F,!0),L=S(I);A(L),k(F);var B=S(F,2),V=l(B),H=l(V,!0);k(V);var U=S(V),W=l(U,!0);k(U),k(B),k(n),y((e,t,n,i,a,o,s,c,l)=>{R(m,e),R(C,t),R(E,n),R(j,i),M(N,`placeholder`,a),R(I,o),M(L,`placeholder`,s),V.disabled=!!r.busy,R(H,c),R(W,l)},[()=>Z(`endpoint.route`),()=>Z(`endpoint.url`),()=>Z(`endpoint.format`),()=>Z(`endpoint.models`),()=>Z(`endpoint.modelsPlaceholder`),()=>Z(`endpoint.newKey`),()=>Z(`endpoint.unchanged`),()=>Z(`common.save`),()=>Z(`common.cancel`)]),d(`submit`,n,b),z(_,()=>g(a),e=>h(a,e)),z(w,()=>g(o),e=>h(o,e)),P(D,()=>g(s),e=>h(s,e)),z(N,()=>g(u),e=>h(u,e)),z(L,()=>g(f),e=>h(f,e)),c(`click`,U,()=>{h(i,!1),h(f,``)}),t(e,n)},E=e=>{var n=dr(),i=l(n),a=e=>{var n=lr(),i=l(n);k(n),y(()=>R(i,`${r.account.route??``}/`)),t(e,n)};m(i,e=>{r.account.route&&e(a)});var o=S(i,2),s=l(o,!0);k(o);var u=S(o,2),d=e=>{var n=ur(),r=l(n,!0);k(n),y(()=>R(r,g(p))),t(e,n)};m(u,e=>{g(p)&&e(d)});var f=S(u,2);Tt(l(f),{size:15}),k(f),k(n),y((e,t)=>{M(o,`title`,r.account.base_url??``),R(s,r.account.base_url),M(f,`aria-label`,e),M(f,`title`,t),f.disabled=!!r.busy},[()=>Z(`endpoint.edit`),()=>Z(`endpoint.edit`)]),c(`click`,f,_),t(e,n)};m(w,e=>{g(i)?e(T):(r.account.route||r.account.base_url)&&e(E,1)}),t(n,x),q()}o([`click`]);var pr=f(`

`),mr=f(``),hr=f(`

`),gr=f(`
`),_r=f(``),vr=f(`

`,1);function yr(n,r){I(r,!0);let i=e(``),a=e(null),o,s=j(()=>r.accounts.filter(e=>`${e.name} ${e.provider} ${e.route??``} ${e.email??``}`.toLowerCase().includes(g(i).toLowerCase()))),u=e(!1);var f=vr(),p=C(f),_=l(p),b=l(_,!0);k(_);var x=S(_),w=l(x),T=l(w);qn(T,{size:18});var E=S(T,1,!0);k(w);var D=S(w),O=l(D);Be(O,{size:20});var N=S(O,1,!0);k(D),k(x),k(p);var P=S(p,2);J(P,e=>o=e,()=>o);var F=S(P,2),L=l(F),B=l(L,!0);k(L);var V=S(L),H=l(V);Re(H,{size:18});var U=S(H);A(U),k(V),k(F);var W=S(F,2);let G;var ee=l(W);qn(ee,{size:19});var K=S(ee),te=l(K,!0);k(K),k(W);var ne=S(W,2),re=l(ne),ie=e=>{{let t=j(()=>Z(`common.noAccountConnected`)),n=j(()=>Z(`accounts.emptyDescription`)),i=j(()=>Z(`common.connectAccount`));Cn(e,{get title(){return g(t)},get description(){return g(n)},get action(){return g(i)},get onclick(){return r.connect}})}},ae=e=>{{let t=j(()=>Z(`common.noMatchingAccount`)),n=j(()=>Z(`common.tryOtherName`));Cn(e,{get title(){return g(t)},get description(){return g(n)}})}},oe=e=>{var n=_r(),i=l(n),o=l(i),u=l(o),d=l(u),f=l(d,!0);k(d);var p=S(d),_=l(p,!0);k(p);var b=S(p),x=l(b,!0);k(b);var C=S(b),w=l(C,!0);k(C);var T=S(C),E=l(T,!0);k(T);var D=S(T),O=l(D,!0);k(D),k(u),k(o);var A=S(o);v(A,21,()=>g(s),e=>e.id,(e,n)=>{let i=j(()=>r.quotas.find(e=>e.account_id===g(n).id));var o=gr(),s=l(o),u=l(s);tn(u,{get account(){return g(n)},get rename(){return r.rename},get busy(){return r.busy}});var d=S(u),f=e=>{cn(e,{get email(){return g(n).email}})};m(d,e=>{g(n).email&&e(f)});var p=S(d),_=e=>{fr(e,{get account(){return g(n)},get busy(){return r.busy},get save(){return r.updateEndpoint}})};m(p,e=>{g(n).provider===`openai_compatible`&&e(_)});var v=S(p),b=e=>{var r=pr(),i=l(r,!0);k(r),y(e=>R(i,e),[()=>Lt(g(n).last_error)]),t(e,r)};m(v,e=>{g(n).last_error&&e(b)}),k(s);var x=S(s),C=l(x),w=l(C);st(w,{get provider(){return g(n).provider},size:23});var T=S(w,1,!0);k(C);var E=S(C),D=e=>{var r=mr(),a=l(r,!0);k(r),y(()=>R(a,g(i)?.subscription?.label??g(n).subscription?.label??g(n).plan)),t(e,r)};m(E,e=>{(g(i)?.subscription?.label||g(n).subscription?.label||g(n).plan)&&e(D)}),k(x);var O=S(x),A=l(O);let N;var P=S(l(A),1,!0);k(A),k(O);var F=S(O);or(l(F),{get account(){return g(n)},get quota(){return g(i)},get busy(){return r.busy},get save(){return r.setReserve}}),k(F);var I=S(F),L=l(I,!0);k(I);var z=S(I),B=l(z),V=l(B);let H;var U=S(V);Yn(l(U),{size:20}),k(U),k(B);var W=S(B),G=e=>{var i=hr(),o=l(i),s=l(o,!0);k(o);var u=S(o),d=l(u,!0);k(u);var f=S(u),p=l(f,!0);k(f),k(i),y((e,t,n)=>{R(s,e),u.disabled=!!r.busy,R(d,t),R(p,n)},[()=>Z(`accounts.deleteConfirm`),()=>Z(`accounts.deleteButton`),()=>Z(`common.cancel`)]),c(`click`,u,()=>{r.remove(g(n)),h(a,null)}),c(`click`,f,()=>h(a,null)),t(e,i)};m(W,e=>{g(a)===g(n).id&&e(G)}),k(z),k(o),y((e,t,i,a,o,s,c,l)=>{R(T,e),N=Y(A,1,`state-badge`,null,N,t),R(P,i),M(I,`data-label`,a),R(L,o),H=Y(V,1,`switch`,null,H,{on:g(n).enabled}),M(V,`aria-checked`,g(n).enabled),M(V,`aria-label`,s),V.disabled=!!r.busy,M(U,`aria-label`,c),M(U,`title`,l),U.disabled=!!r.busy},[()=>Ht(g(n).provider),()=>({inactive:!g(n).enabled,warning:Vt(g(n))}),()=>Bt(g(n)),()=>Z(`accounts.verifiedPrefix`),()=>g(i)?.updated_at?Kt(g(i).updated_at):Z(`accounts.notVerified`),()=>Z(`common.enable`,{name:Lt(g(n).name)}),()=>Z(`accounts.delete`,{name:Lt(g(n).name)}),()=>Z(`accounts.deleteTitle`)]),c(`click`,V,()=>r.toggle(g(n))),c(`click`,U,()=>h(a,g(n).id,!0)),t(e,o)}),k(A),k(i),k(n),y((e,t,n,r,i,a)=>{R(f,e),R(_,t),R(x,n),R(w,r),R(E,i),R(O,a)},[()=>Z(`accounts.colAccount`),()=>Z(`accounts.colSubscription`),()=>Z(`accounts.colStatus`),()=>Z(`accounts.colReserve`),()=>Z(`accounts.colVerified`),()=>Z(`accounts.colActions`)]),t(e,n)};m(re,e=>{r.accounts.length?g(s).length?e(oe,-1):e(ae,1):e(ie)}),k(ne),y((e,t,n,i,a,o,s,c)=>{R(b,e),w.disabled=!!r.busy,R(E,t),R(N,n),R(B,i),M(U,`placeholder`,a),M(U,`aria-label`,o),G=Y(W,1,`drop-zone svelte-1x1hfd6`,null,G,{dragging:g(u)}),M(W,`aria-label`,s),R(te,c)},[()=>Z(`accounts.title`),()=>Z(`common.import`),()=>Z(`common.connectAccount`),()=>Z(r.accounts.length===1?`common.accountCount.one`:`common.accountCount.other`,{count:r.accounts.length}),()=>Z(`common.searchAccount`),()=>Z(`common.searchAccount`),()=>Z(`accounts.dropLabel`),()=>Z(`accounts.drop`)]),c(`click`,w,()=>o.click()),c(`click`,D,function(...e){r.connect?.apply(this,e)}),c(`change`,P,e=>{e.currentTarget.files?.length&&r.importFiles(e.currentTarget.files),e.currentTarget.value=``}),z(U,()=>g(i),e=>h(i,e)),d(`dragover`,W,e=>{e.preventDefault(),h(u,!0)}),d(`dragleave`,W,()=>h(u,!1)),d(`drop`,W,e=>{e.preventDefault(),h(u,!1),e.dataTransfer?.files.length&&r.importFiles(e.dataTransfer.files)}),t(n,f),q()}o([`click`,`change`]);var br=new Set([`$$slots`,`$$events`,`$$legacy`]);function xr(e,t){let n=E(t,br),r=[[`path`,{d:`M12 7v6`}],[`path`,{d:`M12 9h2`}],[`path`,{d:`M3 12a9 9 0 1 0 9-9 9.74 9.74 0 0 0-6.74 2.74L3 8`}],[`path`,{d:`M3 3v5h5`}],[`circle`,{cx:`12`,cy:`15`,r:`2`}]];X(e,W({name:`rotate-ccw-key`},()=>n,{get iconNode(){return r}}))}var Sr=new Set([`$$slots`,`$$events`,`$$legacy`]);function Cr(e,t){let n=E(t,Sr),r=[[`rect`,{width:`18`,height:`11`,x:`3`,y:`11`,rx:`2`,ry:`2`}],[`path`,{d:`M7 11V7a5 5 0 0 1 10 0v4`}]];X(e,W({name:`lock`},()=>n,{get iconNode(){return r}}))}var wr=new Set([`$$slots`,`$$events`,`$$legacy`]);function Tr(e,t){let n=E(t,wr),r=[[`rect`,{width:`18`,height:`11`,x:`3`,y:`11`,rx:`2`,ry:`2`}],[`path`,{d:`M7 11V7a5 5 0 0 1 9.9-1`}]];X(e,W({name:`lock-open`},()=>n,{get iconNode(){return r}}))}var Er=new Set([`$$slots`,`$$events`,`$$legacy`]);function Dr(e,t){let n=E(t,Er),r=[[`circle`,{cx:`12`,cy:`12`,r:`10`}],[`path`,{d:`M12 16v-4`}],[`path`,{d:`M12 8h.01`}]];X(e,W({name:`info`},()=>n,{get iconNode(){return r}}))}var Or=new Set([`$$slots`,`$$events`,`$$legacy`]);function kr(e,t){let n=E(t,Or),r=[[`path`,{d:`M21 12c.552 0 1.005-.449.95-.998a10 10 0 0 0-8.953-8.951c-.55-.055-.998.398-.998.95v8a1 1 0 0 0 1 1z`}],[`path`,{d:`M21.21 15.89A10 10 0 1 1 8 2.83`}]];X(e,W({name:`chart-pie`},()=>n,{get iconNode(){return r}}))}var Ar=f(`

`);function jr(e,n){I(n,!0);let r=F(n,`locked`,3,!1),i=F(n,`wide`,3,!1),a;H(()=>(a.showModal(),()=>a.close()));var o=Ar();let s;var u=l(o),f=l(u),p=l(f,!0);k(f);var m=S(f);Pe(l(m),{size:20}),k(m),k(u);var h=S(u,2);ae(h,()=>n.children),k(o),J(o,e=>a=e,()=>a),y(e=>{s=Y(o,1,`modal svelte-1k2jq0p`,null,s,{wide:i()}),R(p,n.title),M(m,`aria-label`,e),m.disabled=r()},[()=>Z(`common.close`)]),d(`cancel`,o,e=>{e.preventDefault(),r()||n.close()}),c(`click`,m,function(...e){n.close?.apply(this,e)}),t(e,o),q()}o([`click`]);var Mr=f(``),Nr=f(`
`),Pr=f(`
`),Fr=f(``),Ir=f(``),Lr=f(`

`),Rr=f(``),zr=f(`

`);function Br(n,r){I(r,!0);let i=b(()=>G(r.client)),a=e(w(i?.name??``)),o=e(w(i?.access.all??!0)),s=e(w([...i?.access.pools??[]])),u=e(w([...i?.access.accounts??[]])),f=w(Object.fromEntries(Object.entries(i?.shares??{}).map(([e,t])=>[e,String(t)]))),p=e(!1),_=e(``),x=j(()=>It(r.accounts)),C=j(()=>g(x).filter(e=>g(o)||g(s).includes(e.id)||e.accounts.some(e=>g(u).includes(e.id))));function T(e){return r.clients.reduce((t,n)=>n.id===i?.id?t:t+(n.shares[e]??0),0)}function E(e){let t=Number((f[e]??``).trim().replace(`,`,`.`));return Number.isFinite(t)&&t>0?t:0}function O(e){return 100-T(e)-E(e)}function N(e){h(s,g(s).includes(e)?g(s).filter(t=>t!==e):[...g(s),e],!0)}function P(e){h(u,g(u).includes(e)?g(u).filter(t=>t!==e):[...g(u),e],!0)}async function F(e){if(e.preventDefault(),g(p))return;h(_,``);let t=g(o)?[]:g(x).filter(e=>g(s).includes(e.id)).map(e=>e.id),n=g(o)?[]:r.accounts.filter(e=>g(u).includes(e.id)&&!t.includes(e.route||e.provider)).map(e=>e.id);if(!g(o)&&!t.length&&!n.length){h(_,Z(`clients.pickAccess`),!0);return}let c={};for(let e of g(C)){let t=(f[e.id]??``).trim().replace(`,`,`.`);if(!t)continue;let n=Number(t);if(!/^\d+(\.\d+)?$/.test(t)||n<=0||n>100){h(_,Z(`clients.shareInvalid`),!0);return}c[e.id]=n}let l={name:g(a).trim(),access:{all:g(o),pools:t,accounts:n},shares:c};h(p,!0);try{r.saved(i?await $.updateClient(i.id,l):await $.createClient(l),!i)}catch(e){h(_,e.message,!0)}finally{h(p,!1)}}{let e=j(()=>i?Z(`clients.editTitle`,{name:i.name}):Z(`clients.new`));jr(n,{get title(){return g(e)},get close(){return r.close},get locked(){return g(p)},wide:!0,children:(e,n)=>{var b=zr(),w=l(b),T=l(w),E=l(T,!0);k(T);var I=S(T);A(I),k(w);var L=S(w,2),B=l(L),V=l(B,!0);k(B);var H=S(B,2),U=l(H),W=l(U),G=l(W,!0);k(W);var K=S(W),q=l(K,!0);k(K),k(U);var J=S(U);k(H);var ne=S(H,2),re=e=>{var n=Pr();v(n,21,()=>g(x),e=>e.id,(e,n)=>{let r=j(()=>g(s).includes(g(n).id));var i=Nr(),a=l(i),o=l(a);A(o);var d=S(o);st(d,{get provider(){return g(n).provider},size:20});var f=S(d),p=l(f,!0);k(f),k(a);var m=S(a,2);v(m,21,()=>g(n).accounts,e=>e.id,(e,n)=>{let i=j(()=>g(r)||g(u).includes(g(n).id));var a=Mr(),o=l(a,!0);k(a),y(e=>{Y(a,1,D([`chip`,g(i)&&`on`]),`svelte-vb71yz`),M(a,`aria-pressed`,g(i)),a.disabled=g(r),R(o,e)},[()=>Lt(g(n).name)]),c(`click`,a,()=>P(g(n).id)),t(e,a)}),k(m),k(i),y(e=>{M(a,`title`,e),ee(o,g(r)),R(p,g(n).name)},[()=>Z(`clients.wholePool`,{pool:g(n).name})]),c(`change`,o,()=>N(g(n).id)),t(e,i)}),k(n),t(e,n)};m(ne,e=>{g(o)||e(re)}),k(L);var ie=S(L,2),ae=l(ie),oe=l(ae,!0),se=S(oe);Dr(l(se),{size:16}),k(se),k(ae);var ce=S(ae,2),le=e=>{var n=Ir();v(n,21,()=>g(C),e=>e.id,(e,n)=>{let r=j(()=>O(g(n).id));var i=Fr(),a=l(i),o=l(a);st(o,{get provider(){return g(n).provider},size:22});var s=S(o,1,!0);k(a);var c=S(a),u=l(c);A(u),te(),k(c);var d=S(c),p=l(d,!0);k(d),k(i),y((e,t)=>{R(s,g(n).name),M(u,`aria-label`,e),Y(d,1,D([`share-common`,g(r)<0&&`over`]),`svelte-vb71yz`),R(p,t)},[()=>Z(`clients.shareOf`,{pool:g(n).name}),()=>g(r)<0?Z(`clients.overbooked`):Z(`clients.common`,{value:Ut(g(r))})]),z(u,()=>f[g(n).id],e=>f[g(n).id]=e),t(e,i)}),k(n),t(e,n)},ue=e=>{var n=Lr(),r=l(n,!0);k(n),y(e=>R(r,e),[()=>Z(`clients.noPool`)]),t(e,n)};m(ce,e=>{g(C).length?e(le):e(ue,-1)}),k(ie);var de=S(ie,2),fe=e=>{var n=Rr(),r=l(n,!0);k(n),y(()=>R(r,g(_))),t(e,n)};m(de,e=>{g(_)&&e(fe)});var X=S(de,2),pe=l(X),me=l(pe,!0);k(pe);var he=S(pe),ge=l(he,!0);k(he),k(X),k(b),y((e,t,n,r,i,a,s,c,l,u,d,f)=>{R(E,e),M(I,`placeholder`,t),R(V,n),R(G,r),R(q,i),Y(J,1,D([`switch`,g(o)&&`on`])),M(J,`aria-checked`,g(o)),M(J,`aria-label`,a),R(oe,s),M(se,`title`,c),M(se,`aria-label`,l),pe.disabled=g(p),R(me,u),he.disabled=d,R(ge,f)},[()=>Z(`clients.name`),()=>Z(`clients.namePlaceholder`),()=>Z(`clients.access`),()=>Z(`clients.allAccounts`),()=>Z(`clients.allAccountsHint`),()=>Z(`clients.allAccounts`),()=>Z(`clients.shares`),()=>Z(`clients.sharesInfo`),()=>Z(`clients.sharesInfo`),()=>Z(`common.cancel`),()=>g(p)||!g(a).trim(),()=>Z(i?`common.save`:`clients.create`)]),d(`submit`,b,F),z(I,()=>g(a),e=>h(a,e)),c(`click`,J,()=>h(o,!g(o))),c(`click`,pe,function(...e){r.close?.apply(this,e)}),t(e,b)},$$slots:{default:!0}})}q()}o([`click`,`change`]);var Vr=new Set([`$$slots`,`$$events`,`$$legacy`]);function Hr(e,t){let n=E(t,Vr),r=[[`rect`,{width:`14`,height:`14`,x:`8`,y:`8`,rx:`2`,ry:`2`}],[`path`,{d:`M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2`}]];X(e,W({name:`copy`},()=>n,{get iconNode(){return r}}))}async function Ur(e){try{if(navigator.clipboard?.writeText){await navigator.clipboard.writeText(e);return}}catch{}let t=document.activeElement instanceof HTMLElement?document.activeElement:null,n=t instanceof HTMLInputElement||t instanceof HTMLTextAreaElement?t:null,r=n?.selectionStart!=null&&n.selectionEnd!=null?{start:n.selectionStart,end:n.selectionEnd,direction:n.selectionDirection}:null,i=document.getSelection(),a=i?Array.from({length:i.rangeCount},(e,t)=>i.getRangeAt(t).cloneRange()):[],o=document.createElement(`textarea`);o.value=e,o.readOnly=!0,o.tabIndex=-1,o.setAttribute(`aria-hidden`,`true`),o.style.cssText=`position:fixed;top:0;left:0;opacity:0;pointer-events:none;font-size:16px`;try{if((t?.closest(`dialog[open]`)??document.body).append(o),o.focus({preventScroll:!0}),o.select(),o.setSelectionRange(0,e.length),!document.execCommand(`copy`))throw Error(`Clipboard copy failed.`)}finally{if(o.remove(),t?.focus({preventScroll:!0}),i){i.removeAllRanges();for(let e of a)i.addRange(e)}n&&r&&n.setSelectionRange(r.start,r.end,r.direction??void 0)}}var Wr=f(` `,1),Gr=f(``),Kr=f(`

`,1);function qr(n,r){I(r,!0);let i=e(!1),a=e(``);async function o(){try{await Ur(r.key),h(i,!0),h(a,``)}catch{h(i,!1),h(a,Z(`common.copyRefused`),!0)}}{let e=j(()=>Z(`clients.keyTitle`,{name:r.name}));jr(n,{get title(){return g(e)},get close(){return r.close},children:(e,n)=>{var s=Kr(),u=C(s),d=l(u);be(d,{size:17});var f=S(d,1,!0);k(u);var p=S(u,2),h=l(p),_=l(h,!0);k(h);var v=S(h),b=l(v),x=e=>{var n=Wr(),r=C(n);Dt(r,{size:17});var i=S(r,1,!0);y(e=>R(i,e),[()=>Z(`clients.copied`)]),t(e,n)},w=e=>{var n=Wr(),r=C(n);Hr(r,{size:17});var i=S(r,1,!0);y(e=>R(i,e),[()=>Z(`clients.copyKey`)]),t(e,n)};m(b,e=>{g(i)?e(x):e(w,-1)}),k(v),k(p);var T=S(p,2),E=l(T,!0);k(T);var D=S(T,2),O=e=>{var n=Gr(),r=l(n,!0);k(n),y(()=>R(r,g(a))),t(e,n)};m(D,e=>{g(a)&&e(O)});var A=S(D,2),j=l(A),M=l(j,!0);k(j),k(A),y((e,t,n)=>{R(f,e),R(_,r.key),R(E,t),R(M,n)},[()=>Z(`clients.keyOnce`),()=>Z(`clients.keyBoite`),()=>Z(`common.close`)]),c(`click`,v,o),c(`click`,j,function(...e){r.close?.apply(this,e)}),t(e,s)},$$slots:{default:!0}})}q()}o([`click`]);var Jr=f(` `),Yr=f(` `),Xr=f(`

`),Zr=f(`
`),Qr=f(` `),$r=f(` `),ei=f(` `),ti=f(` `,1),ni=f(``),ri=f(` `),ii=f(``),ai=f(`
`),oi=f(`

`),si=f(`

`),ci=f(`

`),li=f(` `),ui=f(`

`),di=f(``),fi=f(`
`),pi=f(``),mi=f(`

`),hi=f(`
`),gi=f(`

`,1),_i=f(`

`),vi=f(`

`),yi=f(`

`,1),bi=f(``),xi=f(`
`,1),Si=f(`

`,1);function Ci(n,r){I(r,!0);let i=`#d6def0`,a=`#9b8ec4`,o=[`#7899ff`,`#4dd4ac`,`#f4c154`,`#c792ea`,`#5ccfe6`,`#ff9e7a`,`#a3e635`,`#f78fb3`],s=j(()=>r.report?.clients??[]),u=j(()=>r.report?.usage??[]),d=j(()=>It(r.accounts)),f=e(null),p=e(null),_=e(null),b=e(!1),x=e(``),w=j(()=>new Map(g(s).map((e,t)=>[e.id,o[t%o.length]]))),T=j(()=>new Map(g(s).map(e=>[e.id,e.name]))),E=j(()=>g(u).some(e=>(e.clients[``]??0)>0)),O=j(()=>g(u).some(e=>Object.entries(e.clients).some(([e,t])=>e&&!g(T).has(e)&&t>0)));function A(e){return Z(`common.percent`,{value:Ut(e)})}function N(e){return g(d).find(t=>t.id===e)??{id:e,provider:e,name:e,accounts:[]}}function P(e){let t=r.accounts.find(t=>t.id===e);return t?Lt(t.name):Z(`activity.unknownAccount`)}function F(e,t){return At.indexOf(e.kind)-At.indexOf(t.kind)}function L(e,t){return e.access.all||e.access.pools.includes(t.id)||t.accounts.some(t=>e.access.accounts.includes(t.id))}function z(e){return[...new Set([...g(d).filter(t=>L(e,t)).map(e=>e.id),...Object.keys(e.shares)])].map(t=>{let n=N(t),r=new Map;for(let t of g(u)){if(!n.accounts.some(e=>e.id===t.account_id))continue;let i=t.clients[e.id]??0,a=r.get(t.kind);(!a||i>a.points)&&r.set(t.kind,{kind:t.kind,points:i,account:t.account_id})}return{pool:n,share:e.shares[t]??null,kinds:[...r.values()].sort(F)}}).filter(e=>e.kinds.length||e.share!=null)}function B(e){let t=[];for(let n of g(s)){let r=e.clients[n.id]??0;r>0&&t.push({id:n.id,label:n.name,points:r,color:g(w).get(n.id)??o[0],kind:`client`})}let n=e.clients[``]??0;n>0&&t.push({id:`no-key`,label:Z(`clients.noKey`),points:n,color:i,kind:`client`});let r=Object.entries(e.clients).reduce((e,[t,n])=>t&&!g(T).has(t)?e+n:e,0);r>0&&t.push({id:`former`,label:Z(`clients.former`),points:r,color:a,kind:`client`}),e.outside>0&&t.push({id:`outside`,label:Z(`clients.outside`),points:e.outside,color:`#6f80a0`,kind:`outside`});let c=e.used-t.reduce((e,t)=>e+t.points,0);return c>.05&&t.push({id:`rest`,label:Z(`clients.unexplained`),points:c,color:``,kind:`rest`}),t}let V=j(()=>{let e=[],t=new Set;for(let n of g(d))for(let r of n.accounts){let n=g(u).filter(e=>e.account_id===r.id).sort(F);if(t.add(r.id),!n.length)continue;let i=e.find(e=>e.provider===r.provider);i||(i={provider:r.provider,name:Ht(r.provider),accounts:[]},e.push(i)),i.accounts.push({id:r.id,rows:n})}let n=[...new Set(g(u).filter(e=>!t.has(e.account_id)).map(e=>e.account_id))];return n.length&&e.push({provider:``,name:Z(`activity.unknownAccount`),accounts:n.map(e=>({id:e,rows:g(u).filter(t=>t.account_id===e).sort(F)}))}),e});function H(e){return{whole:e.access.pools.map(N),single:r.accounts.filter(t=>e.access.accounts.includes(t.id)&&!e.access.pools.includes(t.route||t.provider)),missing:e.access.accounts.filter(e=>!r.accounts.some(t=>t.id===e))}}function U(e,t){h(f,null),e.key&&h(p,{name:e.client.name,key:e.key},!0),r.updated(Z(t?`notice.clientCreated`:`notice.clientSaved`))}async function W(){let e=g(_);if(!(!e||g(b))){h(b,!0),h(x,``);try{if(e.kind===`rotate`){let t=await $.updateClient(e.client.id,{rotate_key:!0});h(_,null),t.key&&h(p,{name:t.client.name,key:t.key},!0),r.updated(Z(`notice.keyReplaced`))}else await $.deleteClient(e.client.id),h(_,null),r.updated(Z(`notice.clientDeleted`))}catch(e){h(x,e.message,!0)}finally{h(b,!1)}}}var G=Si(),ee=C(G),K=l(ee),J=l(K),te=l(J,!0);k(J);var ne=S(J,2),ae=e=>{var n=Xr(),i=l(n),a=e=>{var n=Jr(),r=l(n);Cr(r,{size:14});var i=S(r,1,!0);k(n),y(e=>R(i,e),[()=>Z(`clients.enforced`)]),t(e,n)},o=e=>{var n=Yr(),r=l(n);Tr(r,{size:16});var i=S(r,1,!0);k(n),y(e=>R(i,e),[()=>Z(`clients.open`)]),t(e,n)};m(i,e=>{r.report.enforced?e(a):e(o,-1)}),k(n),t(e,n)};m(ne,e=>{r.report&&e(ae)}),k(K);var oe=S(K,2),se=l(oe),ce=l(se);Be(ce,{size:20});var le=S(ce,1,!0);k(se),k(oe),k(ee);var ue=S(ee,2),de=e=>{var n=Zr(),r=l(n);{let e=j(()=>Z(`clients.emptyTitle`)),t=j(()=>Z(`clients.emptyDescription`)),n=j(()=>Z(`clients.new`));Cn(r,{get title(){return g(e)},get description(){return g(t)},get action(){return g(n)},onclick:()=>h(f,{client:null},!0)})}k(n),t(e,n)},fe=e=>{var n=gi(),o=C(n);v(o,21,()=>g(s),e=>e.id,(e,n)=>{let i=j(()=>H(g(n))),a=j(()=>Object.entries(g(n).shares));var o=ci();let s;var u=l(o),d=l(u),p=S(l(d)),b=l(p,!0);k(p);var T=S(p),E=l(T,!0);k(T),k(d);var D=S(d,2),O=l(D);Tt(l(O),{size:18}),k(O);var F=S(O,2);xr(l(F),{size:18}),k(F);var I=S(F,2);Yn(l(I),{size:18}),k(I),k(D),k(u);var L=S(u,2),B=l(L),V=e=>{var n=Qr(),r=l(n,!0);k(n),y(e=>R(r,e),[()=>Z(`clients.allAccounts`)]),t(e,n)},U=e=>{var n=ti(),r=C(n);v(r,17,()=>g(i).whole,e=>e.id,(e,n)=>{var r=$r(),i=l(r);st(i,{get provider(){return g(n).provider},size:17});var a=S(i,1,!0);k(r),y(()=>R(a,g(n).name)),t(e,r)});var a=S(r,2);v(a,17,()=>g(i).single,e=>e.id,(e,n)=>{var r=$r(),i=l(r);st(i,{get provider(){return g(n).provider},size:17});var a=S(i,1,!0);k(r),y(e=>R(a,e),[()=>Lt(g(n).name)]),t(e,r)});var o=S(a,2);v(o,16,()=>g(i).missing,e=>e,(e,n)=>{var r=ei(),i=l(r,!0);k(r),y(e=>R(i,e),[()=>Z(`activity.unknownAccount`)]),t(e,r)});var s=S(o,2),c=e=>{var n=ei(),r=l(n,!0);k(n),y(e=>R(r,e),[()=>Z(`clients.noAccess`)]),t(e,n)};m(s,e=>{!g(i).whole.length&&!g(i).single.length&&!g(i).missing.length&&e(c)}),t(e,n)};m(B,e=>{g(n).access.all?e(V):e(U,-1)}),k(L);var W=S(L,2);v(W,21,()=>g(a),([e,t])=>e,(e,n)=>{var r=j(()=>re(g(n),2));let i=()=>g(r)[0],a=()=>g(r)[1],o=j(()=>N(i()));var s=ni(),c=l(s);kr(c,{size:15});var u=S(c,1,!0),d=S(u),f=l(d,!0);k(d),k(s),y((e,t)=>{M(s,`title`,e),R(u,g(o).name),R(f,t)},[()=>Z(`clients.shareOf`,{pool:g(o).name}),()=>A(a())]),t(e,s)},e=>{var n=ri(),r=l(n,!0);k(n),y(e=>R(r,e),[()=>Z(`clients.noShare`)]),t(e,n)}),k(W);var G=S(W,2);v(G,17,()=>z(g(n)),e=>e.pool.id,(e,n)=>{var r=si(),i=l(r),a=l(i);st(a,{get provider(){return g(n).pool.provider},size:18});var o=S(a,1,!0);k(i);var s=S(i,2);v(s,17,()=>g(n).kinds,e=>e.kind,(e,r)=>{var i=ai(),a=l(i),o=l(a,!0);k(a);var s=S(a,2),c=l(s);let u;var d=S(c),f=e=>{var r=ii();let i;y(e=>i=ie(r,``,i,e),[()=>({left:`${Math.min(100,g(n).share)}%`})]),t(e,r)};m(d,e=>{g(n).share!=null&&e(f)}),k(s);var p=S(s,2);let h;var _=l(p,!0);k(p),k(i),y((e,t,a,s)=>{M(i,`title`,e),R(o,t),u=ie(c,``,u,a),h=Y(p,1,`usage-value tabular svelte-15ihc32`,null,h,{over:g(n).share!=null&&g(r).points>=g(n).share}),R(_,s)},[()=>g(n).pool.accounts.length>1?Z(`clients.highest`,{name:P(g(r).account)}):void 0,()=>jt(g(r).kind),()=>({width:`${Math.min(100,g(r).points)}%`}),()=>g(n).share==null?A(g(r).points):Z(`clients.ofShare`,{used:Ut(g(r).points),share:Ut(g(n).share)})]),t(e,i)},e=>{var n=oi(),r=l(n,!0);k(n),y(e=>R(r,e),[()=>Z(`clients.notMeasured`)]),t(e,n)}),k(r),y(()=>R(o,g(n).pool.name)),t(e,r)}),k(o),y((e,t,i,a,c,l,u,d)=>{s=ie(o,``,s,e),R(b,g(n).name),M(T,`title`,t),R(E,g(n).key_hint),M(O,`title`,i),M(O,`aria-label`,a),O.disabled=!!r.busy,M(F,`title`,c),M(F,`aria-label`,l),F.disabled=!!r.busy,M(I,`title`,u),M(I,`aria-label`,d),I.disabled=!!r.busy},[()=>({"--client":g(w).get(g(n).id)}),()=>Z(`clients.createdAt`,{date:Kt(g(n).created_at)}),()=>Z(`clients.editTitle`,{name:g(n).name}),()=>Z(`clients.editTitle`,{name:g(n).name}),()=>Z(`clients.rotate`),()=>Z(`clients.rotateNamed`,{name:g(n).name}),()=>Z(`clients.delete`),()=>Z(`clients.deleteNamed`,{name:g(n).name})]),c(`click`,O,()=>h(f,{client:g(n)},!0)),c(`click`,F,()=>{h(x,``),h(_,{kind:`rotate`,client:g(n)},!0)}),c(`click`,I,()=>{h(x,``),h(_,{kind:`delete`,client:g(n)},!0)}),t(e,o)}),k(o);var u=S(o,2),d=l(u),p=l(d,!0),b=S(p);Dr(l(b),{size:16}),k(b),k(d);var T=S(d,2),F=l(T);v(F,17,()=>g(s),e=>e.id,(e,n)=>{var r=li(),i=l(r);let a;var o=S(i,1,!0);k(r),y(e=>{a=ie(i,``,a,e),R(o,g(n).name)},[()=>({background:g(w).get(g(n).id)})]),t(e,r)});var I=S(F,2),L=e=>{var n=li(),r=l(n);ie(r,``,{},{background:i});var a=S(r,1,!0);k(n),y(e=>R(a,e),[()=>Z(`clients.noKey`)]),t(e,n)};m(I,e=>{g(E)&&e(L)});var U=S(I,2),W=e=>{var n=li(),r=l(n);ie(r,``,{},{background:a});var i=S(r,1,!0);k(n),y(e=>R(i,e),[()=>Z(`clients.former`)]),t(e,n)};m(U,e=>{g(O)&&e(W)});var G=S(U,2),ee=l(G);ie(ee,``,{},{background:`#6f80a0`});var K=S(ee,1,!0);k(G);var q=S(G,2),J=S(l(q),1,!0);k(q),k(T),k(u);var te=S(u,2),ne=e=>{var n=ui(),r=l(n),i=l(r,!0);k(r),k(n),y(e=>R(i,e),[()=>Z(`clients.breakdownEmpty`)]),t(e,n)},ae=e=>{var n=hi();v(n,21,()=>g(V),e=>e.provider,(e,n)=>{var r=mi(),i=l(r),a=l(i),o=e=>{st(e,{get provider(){return g(n).provider},size:24})};m(a,e=>{g(n).provider&&e(o)});var s=S(a),c=l(s,!0);k(s),k(i);var u=S(i,2);v(u,17,()=>g(n).accounts,e=>e.id,(e,n)=>{var r=pi(),i=l(r),a=l(i,!0);k(i);var o=S(i,2);v(o,21,()=>g(n).rows,e=>e.kind,(e,n)=>{var r=fi(),i=l(r),a=l(i,!0);k(i);var o=S(i,2);v(o,21,()=>B(g(n)),e=>e.id,(e,n)=>{var r=di();let i;y((e,t)=>{Y(r,1,D([`segment`,g(n).kind]),`svelte-15ihc32`),M(r,`title`,`${g(n).label??``}: ${e??``}`),i=ie(r,``,i,t)},[()=>A(g(n).points),()=>({width:`${Math.min(100,g(n).points)}%`,background:g(n).color||void 0})]),t(e,r)}),k(o);var s=S(o,2),c=l(s,!0);k(s);var u=S(s,2),d=l(u);Ae(d,{size:14});var f=S(d,1,!0);k(u),k(r),y((e,t,n,r,i)=>{R(a,e),M(o,`aria-label`,t),R(c,n),M(u,`title`,r),R(f,i)},[()=>jt(g(n).kind),()=>B(g(n)).map(e=>`${e.label} ${A(e.points)}`).join(`, `),()=>Z(`clients.used`,{value:Ut(g(n).used)}),()=>Z(`quotas.resetAt`,{date:Kt(new Date(g(n).reset*1e3).toISOString())}),()=>qt(new Date(g(n).reset*1e3).toISOString())]),t(e,r)}),k(o),k(r),y(e=>R(a,e),[()=>P(g(n).id)]),t(e,r)}),k(r),y(()=>R(c,g(n).name)),t(e,r)}),k(n),t(e,n)};m(te,e=>{g(V).length?e(ae,-1):e(ne)}),y((e,t,n,r,i)=>{R(p,e),M(b,`title`,t),M(b,`aria-label`,n),R(K,r),R(J,i)},[()=>Z(`clients.breakdown`),()=>Z(`clients.breakdownInfo`),()=>Z(`clients.breakdownInfo`),()=>Z(`clients.outside`),()=>Z(`clients.unexplained`)]),t(e,n)};m(ue,e=>{r.report&&!g(s).length?e(de):g(s).length&&e(fe,1)});var X=S(ue,2),pe=e=>{Br(e,{get client(){return g(f).client},get clients(){return g(s)},get accounts(){return r.accounts},close:()=>h(f,null),saved:U})};m(X,e=>{g(f)&&e(pe)});var me=S(X,2),he=e=>{qr(e,{get name(){return g(p).name},get key(){return g(p).key},close:()=>h(p,null)})};m(me,e=>{g(p)&&e(he)});var ge=S(me,2),_e=e=>{let n=j(()=>g(_));{let r=j(()=>Z(g(n).kind===`rotate`?`clients.rotateTitle`:`clients.deleteTitle`,{name:g(n).client.name}));jr(e,{get title(){return g(r)},close:()=>h(_,null),get locked(){return g(b)},children:(e,r)=>{var i=xi(),a=C(i),o=e=>{var n=_i(),r=l(n,!0);k(n),y(e=>R(r,e),[()=>Z(`clients.rotateText`)]),t(e,n)},u=e=>{var n=yi(),r=C(n),i=l(r,!0);k(r);var a=S(r),o=e=>{var n=vi(),r=l(n,!0);k(n),y(e=>R(r,e),[()=>Z(`clients.deleteLast`)]),t(e,n)};m(a,e=>{g(s).length===1&&e(o)}),y(e=>R(i,e),[()=>Z(`clients.deleteText`)]),t(e,n)};m(a,e=>{g(n).kind===`rotate`?e(o):e(u,-1)});var d=S(a,2),f=e=>{var n=bi(),r=l(n,!0);k(n),y(()=>R(r,g(x))),t(e,n)};m(d,e=>{g(x)&&e(f)});var p=S(d,2),v=l(p),w=l(v,!0);k(v);var T=S(v),E=l(T,!0);k(T),k(p),y((e,t)=>{v.disabled=g(b),R(w,e),Y(T,1,D([`button`,g(n).kind===`delete`?`danger`:`primary`])),T.disabled=g(b),R(E,t)},[()=>Z(`common.cancel`),()=>Z(g(n).kind===`rotate`?`clients.rotateButton`:`clients.deleteButton`)]),c(`click`,v,()=>h(_,null)),c(`click`,T,W),t(e,i)},$$slots:{default:!0}})}};m(ge,e=>{g(_)&&e(_e)}),y((e,t)=>{R(te,e),se.disabled=!r.report||!!r.busy,R(le,t)},[()=>Z(`clients.title`),()=>Z(`clients.new`)]),c(`click`,se,()=>h(f,{client:null},!0)),t(n,G),q()}o([`click`]);var wi=new Set([`$$slots`,`$$events`,`$$legacy`]);function Ti(e,t){let n=E(t,wi),r=[[`path`,{d:`M7 7h10v10`}],[`path`,{d:`M7 17 17 7`}]];X(e,W({name:`arrow-up-right`},()=>n,{get iconNode(){return r}}))}var Ei=f(` `),Di=f(`
`),Oi=f(`

`,1),ki=f(` `),Ai=f(`

/v1/models

`,1),ji=f(` `),Mi=f(`

`),Ni=f(` `),Pi=f(`
`),Fi=f(`

`,1),Ii=f(`

`),Li=f(`

`),Ri=f(`

douane

`),zi=f(``),Bi=f(`

Claude Code

 

`),Vi=f(``),Hi=f(`

`,1);function Ui(n,r){I(r,!0);let i=F(r,`clients`,19,()=>[]),a=F(r,`showEmails`,3,!1),o=e(``),s=e(!1),u=e(!1),d=e(``),f=e(`openai`),p=j(()=>r.models.filter(e=>`${e.id} ${e.name} ${e.provider}`.toLowerCase().includes(g(o).toLowerCase()))),_=j(()=>new Map(i().map(e=>[e.id,e.name]))),b=j(()=>r.calls.filter(e=>(!g(s)||e.status>=400||e.error)&&`${e.model} ${e.provider} ${e.account_id} ${e.client_id?g(_).get(e.client_id)??``:``}`.toLowerCase().includes(g(o).toLowerCase()))),x=j(()=>r.summary?.requests?Math.round((r.summary.requests-r.summary.errors)/r.summary.requests*100):null),w=j(()=>r.summary?.client_api_base_url??(typeof window>`u`?``:`${window.location.origin}/v1`)),T=j(()=>`$env:ANTHROPIC_BASE_URL = '${g(w).replace(/\/v1$/,``).replace(/'/g,`''`)}'\n$env:ANTHROPIC_AUTH_TOKEN = 'douane'\nclaude`);async function E(e){try{await Ur(e),h(u,!0),h(d,``)}catch{h(u,!1),h(d,Z(`common.copyRefused`),!0)}}var D=L(),N=C(D),P=e=>{var n=Oi(),i=C(n),a=l(i),o=l(a),s=l(o,!0);k(o);var u=S(o),d=l(u,!0);k(u),k(a);var f=S(a);let p;var h=S(l(f),1,!0);k(f),k(i);var _=S(i,2),b=l(_),w=l(b),T=l(w,!0);k(w);var E=S(w),D=l(E,!0);k(E);var O=S(E),A=l(O,!0);k(O),k(b);var M=S(b),N=l(M),P=l(N,!0);k(N);var F=S(N),I=l(F,!0);k(F);var L=S(F),z=l(L,!0);k(L),k(M);var B=S(M),V=l(B),H=l(V,!0);k(V);var U=S(V),W=l(U,!0);k(U);var G=S(U),ee=l(G,!0);k(G),k(B);var K=S(B),q=l(K),J=l(q,!0);k(q);var te=S(q),ne=l(te,!0);k(te);var re=S(te),ie=l(re,!0);k(re),k(K);var ae=S(K),oe=l(ae),se=l(oe,!0);k(oe);var ce=S(oe),le=l(ce,!0);k(ce);var ue=S(ce),de=l(ue,!0);k(ue),k(ae),k(_);var fe=S(_,2),X=l(fe),pe=l(X),me=l(pe,!0);k(pe);var he=S(pe),ge=l(he,!0);k(he),k(X);var _e=S(X),ve=l(_e,!0);Ti(S(ve),{size:14}),k(_e),k(fe);var ye=S(fe,2),be=l(ye),xe=e=>{{let t=j(()=>Z(`overview.emptyTitle`)),n=j(()=>Z(`overview.emptyDescription`)),i=j(()=>Z(`overview.openQuickstart`));Cn(e,{get title(){return g(t)},get description(){return g(n)},get action(){return g(i)},onclick:()=>r.navigate(`quickstart`)})}},Se=e=>{var n=Di(),i=l(n),a=l(i),o=l(a),s=l(o),c=l(s,!0);k(s);var u=S(s),d=l(u,!0);k(u);var f=S(u),p=l(f,!0);k(f);var m=S(f),h=l(m,!0);k(m);var _=S(m),b=l(_,!0);k(_),k(o),k(a);var x=S(a);v(x,21,()=>r.calls.slice(0,8),e=>e.id,(e,n)=>{var r=Ei(),i=l(r),a=l(i,!0);k(i);var o=S(i),s=l(o,!0);k(o);var c=S(o),u=l(c,!0);k(c);var d=S(c),f=l(d);let p;var m=l(f,!0);k(f),k(d);var h=S(d),_=l(h,!0);k(h),k(r),y((e,t,r)=>{R(a,g(n).model),R(s,e),R(u,t),p=Y(f,1,`http-status svelte-15ozkp9`,null,p,{error:g(n).status>=400||!!g(n).error}),R(m,r),R(_,g(n).latency_ms==null?`-`:`${g(n).latency_ms} ms`)},[()=>Ht(g(n).provider),()=>Kt(g(n).started_at),()=>g(n).error?Z(`table.error`):g(n).status]),t(e,r)}),k(x),k(i),k(n),y((e,t,n,r,i)=>{R(c,e),R(d,t),R(p,n),R(h,r),R(b,i)},[()=>Z(`table.model`),()=>Z(`table.provider`),()=>Z(`table.time`),()=>Z(`table.status`),()=>Z(`table.duration`)]),t(e,n)};m(be,e=>{r.calls.length?e(Se,-1):e(xe)}),k(ye),y((e,t,n,i,a,o,c,l,u,m,g,_,v,y,b,x,S,C,w,E)=>{R(s,e),R(d,t),p=Y(f,1,`state-badge`,null,p,{inactive:!r.summary}),R(h,n),R(T,i),R(D,r.summary?r.summary.enabled_accounts:`-`),R(A,a),R(P,o),R(I,c),R(z,l),R(H,u),R(W,m),R(ee,g),R(J,_),R(ne,v),R(ie,y),R(se,b),R(le,x),R(de,S),R(me,C),R(ge,w),R(ve,E)},[()=>Z(`nav.overview`),()=>Z(`overview.description`),()=>Z(r.summary?`overview.connected`:`overview.disconnected`),()=>Z(`overview.activeAccounts`),()=>Z(`overview.ofAccounts`,{count:r.summary?.accounts??0}),()=>Z(`overview.requests`),()=>Wt(r.summary?.requests),()=>Z(`overview.inFlight`,{count:r.summary?.in_flight??0}),()=>Z(`overview.tokens`),()=>r.summary?Wt(r.summary.input_tokens+r.summary.output_tokens):`-`,()=>Z(`overview.tokensDetail`),()=>Z(`overview.cache`),()=>r.summary?Wt(r.summary.cache_read_tokens??0):`-`,()=>Z(`overview.cacheDetail`),()=>Z(`overview.success`),()=>g(x)==null?`-`:Z(`common.percent`,{value:g(x)}),()=>Z(`overview.errors`,{count:r.summary?.errors??0}),()=>Z(`overview.recent`),()=>Z(`overview.recentDescription`),()=>Z(`overview.viewAll`)]),c(`click`,_e,()=>r.navigate(`activity`)),t(e,n)},B=e=>{var n=Ai(),i=C(n),a=l(i),s=l(a),u=l(s,!0);k(s);var d=S(s),f=l(d,!0);k(d),k(a);var _=S(a),b=l(_,!0);k(_),k(i);var x=S(i,2),w=l(x),T=l(w);te(),k(w);var E=S(w),D=l(E);Re(D,{size:15});var O=S(D);A(O),k(E),k(x);var N=S(x,2),P=l(N),F=e=>{{let t=j(()=>Z(`models.emptyTitle`)),n=j(()=>Z(`models.emptyDescription`)),i=j(()=>Z(`models.addAccount`));Cn(e,{get title(){return g(t)},get description(){return g(n)},get action(){return g(i)},onclick:()=>r.navigate(`accounts`)})}},I=e=>{{let t=j(()=>Z(`models.noMatchTitle`)),n=j(()=>Z(`models.noMatchDescription`));Cn(e,{get title(){return g(t)},get description(){return g(n)}})}},L=e=>{var n=Di(),i=l(n),a=l(i),o=l(a),s=l(o),u=l(s,!0);k(s);var d=S(s),f=l(d,!0);k(d);var m=S(d),h=l(m,!0);k(m);var _=S(m),b=l(_,!0);k(_);var x=S(_),C=l(x,!0);k(x),k(o),k(a);var w=S(a);v(w,21,()=>g(p),e=>`${e.provider}:${e.id}`,(e,n)=>{var i=ki(),a=l(i),o=l(a,!0);k(a);var s=S(a),u=l(s,!0);k(s);var d=S(s),f=l(d),p=l(f);st(p,{get provider(){return g(n).provider},size:17});var m=S(p,1,!0);k(f),k(d);var h=S(d),_=l(h,!0);k(h);var v=S(h),b=l(v);let x;k(v),k(i),y((e,t,i)=>{R(o,g(n).name??g(n).id),R(u,g(n).id),R(m,e),R(_,t),x=Y(b,1,`switch`,null,x,{on:g(n).enabled!==!1}),M(b,`aria-checked`,g(n).enabled!==!1),M(b,`aria-label`,i),b.disabled=!!r.busy},[()=>Ht(g(n).provider),()=>Wt(g(n).context_length??void 0),()=>Z(`common.enable`,{name:g(n).name??g(n).id})]),c(`click`,b,()=>r.toggleModel(g(n))),t(e,i)}),k(w),k(i),k(n),y((e,t,n,r,i)=>{R(u,e),R(f,t),R(h,n),R(b,r),R(C,i)},[()=>Z(`table.model`),()=>Z(`table.id`),()=>Z(`table.provider`),()=>Z(`table.context`),()=>Z(`table.available`)]),t(e,n)};m(P,e=>{r.models.length?g(p).length?e(L,-1):e(I,1):e(F)}),k(N),y((e,t,n,r,i,a)=>{R(u,e),R(f,t),R(b,n),R(T,`${r??``} `),M(O,`aria-label`,i),M(O,`placeholder`,a)},[()=>Z(`nav.models`),()=>Z(`models.description`),()=>Z(`models.count`,{count:r.models.length}),()=>Z(`models.endpoint`),()=>Z(`models.search`),()=>Z(`models.search`)]),z(O,()=>g(o),e=>h(o,e)),t(e,n)},V=e=>{var n=Fi(),i=C(n),c=l(i),u=l(c),d=l(u,!0);k(u);var f=S(u),p=l(f,!0);k(f),k(c);var x=S(c),w=l(x,!0);k(x),k(i);var T=S(i,2),E=l(T),D=l(E);A(D);var N=S(D,1,!0);k(E);var P=S(E),F=l(P);Re(F,{size:15});var I=S(F);A(I),k(P),k(T);var L=S(T,2),B=l(L),V=e=>{{let t=j(()=>Z(r.calls.length?`activity.noMatchTitle`:`activity.emptyTitle`)),n=j(()=>Z(r.calls.length?`activity.noMatchDescription`:`activity.emptyDescription`));Cn(e,{get title(){return g(t)},get description(){return g(n)}})}},H=e=>{var n=Pi(),i=l(n),o=l(i),s=l(o),c=l(s),u=l(c,!0);k(c);var d=S(c),f=l(d,!0);k(d);var p=S(d),h=l(p,!0);k(p);var x=S(p),C=l(x,!0);k(x);var w=S(x),T=l(w,!0);k(w);var E=S(w),D=l(E,!0);k(E),k(s),k(o);var O=S(o);v(O,21,()=>g(b),e=>e.id,(e,n)=>{var i=Ni(),o=l(i),s=l(o,!0);k(o);var c=S(o),u=l(c,!0),d=S(u),f=l(d,!0),p=S(f),h=e=>{var r=ji(),i=l(r,!0);k(r),y((e,t)=>{M(r,`title`,e),R(i,t)},[()=>Z(`activity.client`,{name:g(_).get(g(n).client_id)??``}),()=>g(_).get(g(n).client_id)]),t(e,r)},v=j(()=>g(n).client_id&&g(_).has(g(n).client_id));m(p,e=>{g(v)&&e(h)}),k(d);var b=S(d),x=e=>{var r=Mi(),i=l(r,!0);k(r),y(()=>R(i,g(n).error)),t(e,r)};m(b,e=>{g(n).error&&e(x)}),k(c);var C=S(c),w=l(C,!0);k(C);var T=S(C),E=l(T);let D;var O=l(E,!0);k(E),k(T);var A=S(T),N=l(A,!0);k(A);var P=S(A),F=l(P,!0);k(P),k(i),y((e,t,r,i,a)=>{R(s,e),R(u,g(n).model),R(f,t),R(w,r),D=Y(E,1,`http-status svelte-15ozkp9`,null,D,{error:g(n).status>=400||!!g(n).error}),R(O,i),R(N,g(n).latency_ms==null?`-`:`${g(n).latency_ms} ms`),R(F,a)},[()=>Kt(g(n).started_at),()=>Lt(r.accounts.find(e=>e.id===g(n).account_id)?.name??g(n).account_id??Z(`activity.unknownAccount`),a()),()=>Ht(g(n).provider),()=>g(n).error?Z(`table.error`):g(n).status,()=>Wt((g(n).input_tokens??0)+(g(n).output_tokens??0))]),t(e,i)}),k(O),k(i),k(n),y((e,t,n,r,i,a)=>{R(u,e),R(f,t),R(h,n),R(C,r),R(T,i),R(D,a)},[()=>Z(`table.time`),()=>Z(`table.modelAccount`),()=>Z(`table.provider`),()=>Z(`table.status`),()=>Z(`table.duration`),()=>Z(`table.tokens`)]),t(e,n)};m(B,e=>{g(b).length?e(H,-1):e(V)}),k(L),y((e,t,n,r,i,a)=>{R(d,e),R(p,t),R(w,n),R(N,r),M(I,`aria-label`,i),M(I,`placeholder`,a)},[()=>Z(`activity.title`),()=>Z(`activity.description`),()=>Z(`activity.count`,{count:r.calls.length}),()=>Z(`activity.onlyErrors`),()=>Z(`activity.search`),()=>Z(`activity.searchPlaceholder`)]),O(D,()=>g(s),e=>h(s,e)),z(I,()=>g(o),e=>h(o,e)),t(e,n)},H=e=>{var n=Hi(),i=C(n),a=l(i),o=l(a,!0);k(a),k(i);var s=S(i,2),p=l(s);let _;var v=l(p,!0);k(p);var b=S(p);let x;k(s);var D=S(s,2),O=l(D),A=e=>{var n=Ii(),i=l(n),a=l(i),o=l(a,!0);k(a);var s=S(a),u=l(s,!0);Ti(S(u),{size:18}),k(s),k(i),k(n),y((e,t)=>{R(o,e),R(u,t)},[()=>Z(`common.connectAccount`),()=>Z(`quickstart.openAccounts`)]),c(`click`,s,()=>r.navigate(`accounts`)),t(e,n)};m(O,e=>{r.accounts.length||e(A)});var N=S(O,2),P=e=>{var n=Ri(),i=l(n),a=l(i),o=l(a,!0);k(a);var s=S(a),d=l(s),f=l(d,!0);k(d);var p=S(d),h=l(p),_=e=>{Dt(e,{size:20})},v=e=>{Hr(e,{size:20})};m(h,e=>{g(u)?e(_):e(v,-1)}),k(p),k(s);var b=S(s),x=l(b,!0),C=S(x,2,!0);k(b);var T=S(b),D=e=>{var n=Li(),r=l(n,!0);k(n),y(e=>R(r,e),[()=>Z(`quickstart.keyRequired`)]),t(e,n)};m(T,e=>{r.summary?.clients&&e(D)});var O=S(T),A=l(O,!0);Ti(S(A),{size:18}),k(O),k(i),k(n),y((e,t,n,r,i)=>{R(o,e),R(f,g(w)),M(p,`aria-label`,t),R(x,n),R(C,r),R(A,i)},[()=>Z(`quickstart.baseUrl`),()=>Z(`quickstart.copyUrl`),()=>Z(`quickstart.openaiHint1`),()=>Z(`quickstart.openaiHint2`),()=>Z(`quickstart.chooseModel`)]),c(`click`,p,()=>E(g(w))),c(`click`,O,()=>r.navigate(`models`)),t(e,n)},F=e=>{var n=Bi(),i=l(n),a=S(l(i)),o=l(a,!0);k(a);var s=S(a),d=l(s),f=l(d),p=l(f,!0);k(f),k(d);var h=S(d),_=l(h),v=e=>{Dt(e,{size:20})},b=e=>{Hr(e,{size:20})};m(_,e=>{g(u)?e(v):e(b,-1)}),k(h),k(s);var x=S(s),C=l(x,!0);k(x);var w=S(x),D=e=>{var n=Li(),r=l(n,!0);k(n),y(e=>R(r,e),[()=>Z(`quickstart.keyRequired`)]),t(e,n)};m(w,e=>{r.summary?.clients&&e(D)});var O=S(w),A=e=>{var n=zi(),i=l(n,!0);Ti(S(i),{size:18}),k(n),y(e=>R(i,e),[()=>Z(`quickstart.connectClaude`)]),c(`click`,n,()=>r.navigate(`accounts`)),t(e,n)},N=j(()=>!r.accounts.some(e=>e.provider===`claude`&&e.enabled));m(O,e=>{g(N)&&e(A)}),k(i),k(n),y((e,t,n)=>{R(o,e),R(p,g(T)),M(h,`aria-label`,t),R(C,n)},[()=>Z(`quickstart.powershell`),()=>Z(`quickstart.copyClaude`),()=>Z(`quickstart.claudeHint`)]),c(`click`,h,()=>E(g(T))),t(e,n)};m(N,e=>{g(f)===`openai`?e(P):e(F,-1)});var I=S(N,2),L=e=>{var n=Vi(),r=l(n,!0);k(n),y(()=>R(r,g(d))),t(e,n)};m(I,e=>{g(d)&&e(L)}),k(D),y((e,t,n)=>{R(o,e),M(s,`aria-label`,t),_=Y(p,1,`button`,null,_,{primary:g(f)===`openai`}),M(p,`aria-pressed`,g(f)===`openai`),R(v,n),x=Y(b,1,`button`,null,x,{primary:g(f)===`claude`}),M(b,`aria-pressed`,g(f)===`claude`)},[()=>Z(`nav.setupTool`),()=>Z(`quickstart.chooseTool`),()=>Z(`provider.openaiCompatible`)]),c(`click`,p,()=>{h(f,`openai`),h(u,!1),h(d,``)}),c(`click`,b,()=>{h(f,`claude`),h(u,!1),h(d,``)}),t(e,n)};m(N,e=>{r.screen===`overview`?e(P):r.screen===`models`?e(B,1):r.screen===`activity`?e(V,2):r.screen===`quickstart`&&e(H,3)}),t(n,D),q()}o([`click`]);var Wi=new Set([`$$slots`,`$$events`,`$$legacy`]);function Gi(e,t){let n=E(t,Wi),r=[[`path`,{d:`M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z`}],[`path`,{d:`M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7`}],[`path`,{d:`M7 3v4a1 1 0 0 0 1 1h7`}]];X(e,W({name:`save`},()=>n,{get iconNode(){return r}}))}var Ki=new Set([`$$slots`,`$$events`,`$$legacy`]);function qi(e,t){let n=E(t,Ki),r=[[`path`,{d:`M15 6a9 9 0 0 0-9 9V3`}],[`circle`,{cx:`18`,cy:`6`,r:`3`}],[`circle`,{cx:`6`,cy:`18`,r:`3`}]];X(e,W({name:`git-branch`},()=>n,{get iconNode(){return r}}))}var Ji=new Set([`$$slots`,`$$events`,`$$legacy`]);function Yi(e,t){let n=E(t,Ji),r=[[`path`,{d:`m5 8 6 6`}],[`path`,{d:`m4 14 6-6 2-3`}],[`path`,{d:`M2 5h12`}],[`path`,{d:`M7 2h1`}],[`path`,{d:`m22 22-5-10-5 10`}],[`path`,{d:`M14 18h6`}]];X(e,W({name:`languages`},()=>n,{get iconNode(){return r}}))}var Xi=f(`

`);function Zi(e,n){I(n,!0);var r=Xi(),i=l(r),a=l(i),o=l(a,!0);k(a);var s=S(a),u=l(s,!0);k(s),k(i);var d=S(i,2),f=l(d);Yi(f,{size:18});var p=S(f),m=l(p),h=l(m,!0);k(m),m.value=m.__value=`auto`;var g=S(m),_=l(g,!0);k(g),g.value=g.__value=`en`;var v=S(g),b=l(v,!0);k(v),v.value=v.__value=`fr`,k(p);var x;N(p),k(d),k(r),y((e,t,n,r,i,a,s)=>{R(o,e),R(u,t),M(p,`aria-label`,n),R(h,r),R(_,i),R(b,a),x!==(x=s)&&(p.value=(p.__value=s)??``,T(p,s))},[()=>Z(`settings.language`),()=>Z(`settings.languageDescription`),()=>Z(`settings.language`),()=>Z(`settings.languageAuto`),()=>Z(`settings.languageEnglish`),()=>Z(`settings.languageFrench`),()=>gt()]),c(`change`,p,e=>bt(e.currentTarget.value)),t(e,r),q()}o([`change`]);var Qi=new Set([`$$slots`,`$$events`,`$$legacy`]);function $i(e,t){let n=E(t,Qi),r=[[`path`,{d:`M12 15V3`}],[`path`,{d:`M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4`}],[`path`,{d:`m7 10 5 5 5-5`}]];X(e,W({name:`download`},()=>n,{get iconNode(){return r}}))}var ea=new Set([`$$slots`,`$$events`,`$$legacy`]);function ta(e,t){let n=E(t,ea),r=[[`path`,{d:`m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3`}],[`path`,{d:`M12 9v4`}],[`path`,{d:`M12 17h.01`}]];X(e,W({name:`triangle-alert`},()=>n,{get iconNode(){return r}}))}var na=f(``),ra=f(`

`),ia=f(`

`);function aa(n,r){I(r,!0);let i=e(!1),a=e(``),o=e(null),s=e(!1),u=e(void 0);async function d(){h(i,!0),h(a,``);try{let e=await $.exportConfig(),t=typeof e.exported_at==`string`?e.exported_at.slice(0,10):new Date().toISOString().slice(0,10),n=URL.createObjectURL(new Blob([JSON.stringify(e,null,2)],{type:`application/json`}));Object.assign(document.createElement(`a`),{href:n,download:`douane-export-${t}.json`}).click(),setTimeout(()=>URL.revokeObjectURL(n),1e3)}catch(e){h(a,e.message,!0)}finally{h(i,!1)}}async function f(e){h(a,``),h(o,null),h(s,!1);let t=e?.[0];if(g(u)&&(g(u).value=``),!t)return;if(t.size>33554432){h(a,Z(`backup.tooLarge`,{name:t.name}),!0);return}let n;try{n=JSON.parse(await t.text())}catch{h(a,Z(`notice.invalidJson`,{name:t.name}),!0);return}if(n?.format!==`douane-export`||!Array.isArray(n.accounts)){h(a,Z(`backup.notExport`,{name:t.name}),!0);return}h(o,{name:t.name,bundle:n,count:n.accounts.length},!0)}async function p(){g(o)&&await r.restore(g(o).bundle,g(s))&&h(o,null)}var _=ia(),v=l(_),b=l(v),x=l(b,!0);k(b);var C=S(b),w=l(C,!0);k(C),k(v);var T=S(v,2),E=l(T),D=l(E);ta(D,{size:18});var j=S(D),N=l(j,!0);k(j),k(E);var P=S(E,2),F=l(P),L=l(F);$i(L,{size:16});var z=S(L,1,!0);k(F);var B=S(F,2),V=l(B);qn(V,{size:16});var H=S(V,1,!0);k(B);var U=S(B,2);J(U,e=>h(u,e),()=>g(u)),k(P);var W=S(P,2),G=e=>{var n=na(),r=l(n,!0);k(n),y(()=>R(r,g(a))),t(e,n)};m(W,e=>{g(a)&&e(G)});var ee=S(W,2),K=e=>{var n=ra(),i=l(n),a=l(i,!0);k(i);var u=S(i,2),d=l(u);A(d);var f=S(d),m=l(f,!0);k(f),k(u);var _=S(u,2),v=l(_),b=l(v,!0);k(v);var x=S(v,2),C=l(x,!0);k(x),k(_),k(n),y((e,t,i,o,s)=>{M(n,`aria-label`,e),R(a,t),R(m,i),v.disabled=!!r.busy,R(b,o),x.disabled=r.busy===`restore`,R(C,s)},[()=>Z(`backup.restore`),()=>Z(g(o).count===1?`backup.confirm.one`:`backup.confirm.other`,{count:g(o).count,name:g(o).name}),()=>Z(`backup.withSettings`),()=>r.busy===`restore`?Z(`backup.restoring`):Z(`backup.confirmButton`),()=>Z(`common.cancel`)]),O(d,()=>g(s),e=>h(s,e)),c(`click`,v,p),c(`click`,x,()=>h(o,null)),t(e,n)};m(ee,e=>{g(o)&&e(K)}),k(T),k(_),y((e,t,n,a,o,s)=>{R(x,e),R(w,t),R(N,n),F.disabled=g(i)||!!r.busy,R(z,a),B.disabled=!!r.busy,R(H,o),M(U,`aria-label`,s)},[()=>Z(`backup.title`),()=>Z(`backup.description`),()=>Z(`backup.warning`),()=>g(i)?Z(`backup.exporting`):Z(`backup.export`),()=>Z(`backup.restore`),()=>Z(`backup.restore`)]),c(`click`,F,d),c(`click`,B,()=>g(u)?.click()),c(`change`,U,e=>f(e.currentTarget.files)),t(n,_),q()}o([`click`,`change`]);var oa=f(``),sa=f(``),ca=f(``),la=f(`

`),ua=f(`

`,1);function da(n,r){I(r,!0);let i=e(w(b(()=>({...r.settings,provider_strategies:{...r.settings.provider_strategies}})))),a=[`round-robin`,`fill-first`,`reset-first`,`smart`];async function o(e){let t={strategy:g(i).strategy,provider_strategies:g(i).provider_strategies};h(i,{...g(i),...e},!0),await r.save(g(i))||h(i,{...g(i),...t},!0)}function s(e,t){let n={...g(i).provider_strategies};t?n[e]=t:delete n[e],o({provider_strategies:n})}var u=ua(),f=C(u),p=l(f),_=l(p,!0);k(p),k(f);var x=S(f,2),E=l(x);qi(E,{size:18});var D=S(E),O=l(D,!0);k(D),k(x);var j=S(x,2),M=l(j),F=l(M),L=l(F),B=l(L,!0);k(L);var H=S(L),U=l(H,!0);k(H),k(F);var W=S(F);v(W,20,()=>a,e=>e,(e,n)=>{var a=oa();let s;var u=l(a);A(u);var d=S(u),f=l(d,!0),p=S(f),m=l(p,!0);k(p),k(d),k(a),y((e,t)=>{s=Y(a,1,`strategy-option svelte-eyvqa5`,null,s,{chosen:g(i).strategy===n}),V(u,n),ee(u,g(i).strategy===n),u.disabled=!!r.busy,R(f,e),R(m,t)},[()=>Z(`strategy.${n}.label`),()=>Z(`strategy.${n}.desc`)]),c(`change`,u,()=>o({strategy:n})),t(e,a)}),k(W),k(M);var G=S(M,2),K=l(G),J=l(K),te=l(J,!0);k(J);var ne=S(J),re=l(ne,!0);k(ne),k(K);var ie=S(K),ae=l(ie);v(ae,17,()=>r.providers,e=>e.id,(e,n)=>{var o=ca(),u=l(o),d=l(u);st(d,{get provider(){return g(n).id},size:22});var f=S(d,1,!0);k(u);var p=S(u),m=l(p),h=l(m,!0);k(m),m.value=m.__value=``;var _=S(m);v(_,16,()=>a,e=>e,(e,n)=>{var r=sa(),i=l(r,!0);k(r);var a={};y(e=>{R(i,e),a!==(a=n)&&(r.value=(r.__value=n)??``)},[()=>Z(`strategy.${n}.label`)]),t(e,r)}),k(p);var b;N(p),k(o),y((e,t)=>{R(f,e),p.disabled=!!r.busy,R(h,t),b!==(b=g(i).provider_strategies?.[g(n).id]??``)&&(p.value=(p.__value=g(i).provider_strategies?.[g(n).id]??``)??``,T(p,g(i).provider_strategies?.[g(n).id]??``))},[()=>Ht(g(n).id,g(n).name),()=>Z(`settings.defaultRule`)]),c(`change`,p,e=>s(g(n).id,e.currentTarget.value)),t(e,o)});var oe=S(ae),se=e=>{var n=la(),r=l(n,!0);k(n),y(e=>R(r,e),[()=>Z(`settings.noProviders`)]),t(e,n)};m(oe,e=>{r.providers.length||e(se)}),k(ie),k(G);var ce=S(G,2),le=l(ce),ue=l(le),de=l(ue,!0);k(ue);var fe=S(ue),X=l(fe,!0);k(fe),k(le);var pe=S(le),me=l(pe),he=l(me,!0),ge=S(he),_e=l(ge);A(_e);var ve=S(_e),ye=l(ve,!0);k(ve),k(ge),k(me);var be=S(me),xe=l(be,!0),Se=S(xe),Ce=l(Se);A(Ce);var we=S(Ce),Te=l(we,!0);k(we),k(Se),k(be);var Ee=S(be),De=l(Ee,!0),Oe=S(De),ke=l(Oe),Ae=l(ke,!0);k(ke),ke.value=(ke.__value=null,``);var je=S(ke);v(je,17,()=>r.providers,e=>e.id,(e,n)=>{var r=sa(),i=l(r,!0);k(r);var a={};y(e=>{R(i,e),a!==(a=g(n).id)&&(r.value=(r.__value=g(n).id)??``)},[()=>Ht(g(n).id,g(n).name)]),t(e,r)}),k(Oe),k(Ee),k(pe),k(ce);var Me=S(ce,2),Ne=l(Me),Pe=l(Ne),Fe=l(Pe,!0);k(Pe);var Ie=S(Pe),Le=l(Ie,!0);k(Ie),k(Ne);var Re=S(Ne),ze=l(Re),Be=l(ze,!0),Ve=S(Be),He=l(Ve);A(He);var Ue=S(He),We=l(Ue,!0);k(Ue),k(Ve),k(ze),k(Re),k(Me);var Ge=S(Me,2),Ke=l(Ge),qe=l(Ke);Gi(qe,{size:14});var Je=S(qe,1,!0);k(Ke),k(Ge),k(j);var Ye=S(j,2);aa(Ye,{get busy(){return r.busy},get restore(){return r.restore}}),Zi(S(Ye,2),{}),y((e,t,n,i,a,o,s,c,l,u,d,f,p,m,h,g,v,y,b)=>{R(_,e),R(O,t),R(B,n),R(U,i),R(te,a),R(re,o),R(de,s),R(X,c),R(he,l),R(ye,u),R(xe,d),R(Te,f),R(De,p),R(Ae,m),R(Fe,h),R(Le,g),R(Be,v),R(We,y),Ke.disabled=!!r.busy,R(Je,b)},[()=>Z(`nav.settings`),()=>Z(`settings.sessionNote`),()=>Z(`settings.routing`),()=>Z(`settings.routingDescription`),()=>Z(`settings.perProvider`),()=>Z(`settings.perProviderDescription`),()=>Z(`settings.refresh`),()=>Z(`settings.refreshDescription`),()=>Z(`settings.refreshEvery`),()=>Z(`settings.seconds`),()=>Z(`settings.timeout`),()=>Z(`settings.seconds`),()=>Z(`settings.defaultProvider`),()=>Z(`settings.autoProvider`),()=>Z(`settings.weekEnd`),()=>Z(`settings.weekEndDescription`),()=>Z(`settings.freeBefore`),()=>Z(`settings.hours`),()=>r.busy===`settings`?Z(`settings.saving`):Z(`settings.save`)]),d(`submit`,j,e=>{e.preventDefault(),r.save(g(i))}),z(_e,()=>g(i).quota_refresh_seconds,e=>g(i).quota_refresh_seconds=e),z(Ce,()=>g(i).request_timeout_seconds,e=>g(i).request_timeout_seconds=e),P(Oe,()=>g(i).default_provider,e=>g(i).default_provider=e),z(He,()=>g(i).free_before_reset_hours,e=>g(i).free_before_reset_hours=e),t(n,u),q()}o([`change`]);var fa=f(`

`),pa=f(` `),ma=f(`

`),ha=f(`

`),ga=f(``),_a=f(`

`,1),va=f(`

`,1),ya=f(`

`),ba=f(``),xa=f(``),Sa=f(`

deepseek

`),Ca=f(`

`),wa=f(``),Ta=f(`

`),Ea=f(`

`,1),Da=f(`

`),Oa=f(``),ka=f(`

`);function Aa(n,r){I(r,!0);let i,a=e(void 0),o=e(null),s=e(``),u=e(!1),f=e(``),p=e(!1),_=e(!1),b=e(``),w=e(``),T=e(``),E=e(``),D=e(``),O=e(``),N=e(`chat`),F=j(()=>g(w)===`openai_compatible`),B=e(!1),V=!1,U={opencode_go:`https://opencode.ai/zen/go`,xai:`https://cli-chat-proxy.grok.com/v1`,openai_compatible:``,kimi:`https://api.kimi.com/coding/v1`,qwen:`https://portal.qwen.ai/v1`};H(()=>(V=!0,i.showModal(),()=>{V=!1,i.close(),h(E,``),h(s,``)}));async function W(e){h(u,!0),h(f,``),h(s,``),h(b,``),h(_,!1),h(B,!1);try{let t=await $.startOAuth(e);V&&(h(o,t),h(b,t.user_code?Z(`connect.waiting`):``,!0))}catch(e){V&&h(f,e.message,!0)}finally{h(u,!1)}}function G(){h(p,!0),h(_,!0),h(s,``),h(E,``),r.completed()}function ee(e,t){return!V||g(o)?.id!==e.id||!t.verification_required&&(e.provider!==`antigravity`||t.error_code!==`google_project_unavailable`)?!1:(h(o,{...e,error_code:t.error_code,verification_required:t.verification_required,verification_available:t.verification_available}),h(_,!0),h(s,``),h(f,``),h(b,``),!0)}async function K(e=!0){let t=g(o);if(!t||g(u)||g(_))return t?.interval??5;h(u,!0),e&&h(f,``);try{let e=await $.oauth(t.id);return!V||g(o)?.id!==t.id||ee(t,e)?5:((e.account_id||e.account?.id)&&[`complete`,`completed`,`connected`,`success`].includes(e.status)?G():e.status===`expired`?(h(_,!0),h(f,Z(`connect.expired`),!0)):e.error||e.status===`error`?(h(_,!0),h(f,e.error||Z(`connect.refused`),!0)):h(b,Z(e.status===`exchanging`?`connect.exchanging`:t.user_code?`connect.waiting`:`connect.stillWaiting`),!0),Math.min(60,Math.max(5,e.interval??t.interval??5)))}catch(e){return V&&h(f,e.message,!0),t.interval??5}finally{h(u,!1)}}x(()=>{let e=g(o);if(!e?.user_code||g(p)||g(_))return;let t=!1,n;async function r(){let i=document.hidden?e?.interval??5:await K(!1);t||(n=setTimeout(r,(i??5)*1e3))}return n=setTimeout(r,Math.max(5,e.interval??5)*1e3),()=>{t=!0,clearTimeout(n)}});async function te(e){e.preventDefault();let t=g(o);if(!(!t||g(u))){h(u,!0),h(f,``);try{if(!(await $.oauthCallback(t.id,g(s).trim(),t.state)).account?.id)throw Error(Z(`connect.unconfirmed`));V&&G()}catch(e){V&&h(f,e.message,!0);try{let e=await $.oauth(t.id);V&&g(o)?.id===t.id&&(h(_,[`error`,`expired`].includes(e.status),!0),g(_)&&h(s,``),ee(t,e))}catch{}}finally{h(u,!1)}}}async function ne(e){e.preventDefault(),h(u,!0),h(f,``);try{let e=await $.importCredential({type:g(w),name:g(T),access_token:g(E),base_url:g(D),...g(F)?{route:g(O).trim().toLowerCase(),...g(N)?{dialect:g(N)}:{}}:{}});if(e.errors?.length||!e.imported)throw Error(e.errors?.length?Rt(e.errors):Z(`connect.notAdded`));V&&G()}catch(e){V&&h(f,e.message,!0)}finally{h(u,!1)}}function re(){h(o,null),h(w,``),h(E,``),h(s,``),h(f,``),h(b,``),h(_,!1),h(O,``),h(N,`chat`)}async function ie(){if(g(o)?.user_code)try{await Ur(g(o).user_code),h(B,!0),g(f)===Z(`connect.copyRefused`)&&h(f,``)}catch{h(B,!1),h(f,Z(`connect.copyRefused`),!0)}}var ae=ka(),oe=l(ae),Y=l(oe),se=l(Y),ce=l(se,!0);k(se);var le=S(se),ue=l(le,!0);k(le),k(Y);var de=S(Y);Pe(l(de),{size:18}),k(de),k(oe);var fe=S(oe,2),X=e=>{var n=fa(),i=l(n);Dt(l(i),{size:24}),k(i);var a=S(i),o=l(a,!0);k(a);var s=S(a),u=l(s,!0);k(s);var d=S(s),f=l(d,!0);k(d),k(n),y((e,t,n)=>{R(o,e),R(u,t),R(f,n)},[()=>Z(`connect.success`),()=>Z(`connect.successText`),()=>Z(`connect.viewAccounts`)]),c(`click`,d,function(...e){r.close?.apply(this,e)}),t(e,n)},pe=e=>{var n=L(),r=C(n),i=e=>{var n=ha(),r=l(n),i=l(r,!0);k(r);var a=S(r,2),s=e=>{var n=pa(),r=l(n,!0);He(S(r),{size:16}),k(n),y((e,t)=>{M(n,`href`,e),R(r,t)},[()=>`/admin/api/oauth/${encodeURIComponent(g(o).id)}/verification`,()=>Z(`common.verifyGoogle`)]),t(e,n)},d=e=>{var n=ma(),r=l(n,!0);k(n),y(e=>R(r,e),[()=>Z(`common.openAntigravity`)]),t(e,n)};m(a,e=>{g(o).verification_available?e(s):e(d,-1)});var f=S(a,2),p=l(f,!0);k(f);var h=S(f,2),_=l(h),v=l(_,!0);k(_);var b=S(_),x=l(b,!0);k(b),k(h),k(n),y((e,t,n,r)=>{R(i,e),R(p,t),_.disabled=g(u),R(v,n),b.disabled=g(u),R(x,r)},[()=>Z(`connect.googleVerify`),()=>Z(`connect.afterVerify`),()=>Z(`connect.restart`),()=>Z(`common.chooseOtherProvider`)]),c(`click`,_,()=>g(o)&&W(g(o).provider)),c(`click`,b,re),t(e,n)},a=e=>{var n=ga(),r=l(n),i=l(r,!0);k(r);var a=S(r,2),s=l(a,!0);k(a);var d=S(a,2),f=l(d,!0);k(d);var p=S(d,2),m=l(p,!0);He(S(m),{size:16}),k(p);var h=S(p,2),_=l(h),v=l(_,!0);k(_);var b=S(_),x=l(b,!0);k(b),k(h),k(n),y((e,t,n,r,a,o)=>{R(i,e),R(s,t),R(f,n),R(m,r),_.disabled=g(u),R(v,a),b.disabled=g(u),R(x,o)},[()=>Z(`connect.antigravityTitle`),()=>Z(`connect.antigravityProject`),()=>Z(`connect.antigravityFirstUse`),()=>Z(`connect.antigravityGuide`),()=>Z(`connect.restart`),()=>Z(`common.chooseOtherProvider`)]),c(`click`,_,()=>g(o)&&W(g(o).provider)),c(`click`,b,re),t(e,n)},f=e=>{var n=ba(),r=l(n),i=e=>{var n=_a(),r=C(n),i=l(r,!0);k(r);var a=S(r),s=l(a),u=l(s,!0);k(s);var d=S(s),f=l(d),p=e=>{Dt(e,{size:16})},h=e=>{Hr(e,{size:16})};m(f,e=>{g(B)?e(p):e(h,-1)}),k(d),k(a),y((e,t)=>{R(i,e),R(u,g(o).user_code),M(d,`aria-label`,t)},[()=>Z(`connect.enterCode`,{provider:Ht(g(o).provider)}),()=>Z(`connect.copyCode`)]),c(`click`,d,ie),t(e,n)},a=e=>{var n=ma(),r=l(n,!0);k(n),y(e=>R(r,e),[()=>Z(`connect.authorize`)]),t(e,n)};m(r,e=>{g(o).user_code?e(i):e(a,-1)});var f=S(r,2),p=l(f,!0);He(S(p),{size:14}),k(f);var v=S(f,2),x=e=>{var n=va(),r=C(n),i=l(r,!0);k(r);var a=S(r),o=l(a),c=l(o,!0);k(o);var f=S(o);A(f);var p=S(f),m=l(p,!0);k(p),k(a),y((e,t,n,r,a)=>{R(i,e),R(c,t),M(f,`placeholder`,n),p.disabled=r,R(m,a)},[()=>Z(`connect.callbackHint`),()=>Z(`connect.callbackLabel`),()=>Z(`connect.callbackPlaceholder`),()=>g(u)||g(_)||!g(s).trim(),()=>Z(`connect.finish`)]),d(`submit`,a,te),z(f,()=>g(s),e=>h(s,e)),t(e,n)};m(v,e=>{g(o).user_code||e(x)});var w=S(v,2),T=l(w),E=l(T,!0);k(T);var D=S(T),O=l(D,!0);k(D),k(w);var j=S(w),N=e=>{var n=ya(),r=l(n,!0);k(n),y(()=>R(r,g(b))),t(e,n)};m(j,e=>{g(b)&&e(N)}),k(n),y((e,t,n)=>{M(f,`href`,g(o).url),R(p,e),T.disabled=g(u)||g(_),R(E,t),D.disabled=g(u),R(O,n)},[()=>Z(`connect.open`),()=>Z(`connect.check`),()=>Z(`common.chooseOtherProvider`)]),c(`click`,T,()=>K()),c(`click`,D,re),t(e,n)};m(r,e=>{g(o).verification_required?e(i):g(o).provider===`antigravity`&&g(o).error_code===`google_project_unavailable`?e(a,1):e(f,-1)}),t(e,n)},me=e=>{var n=Sa(),r=l(n),i=l(r,!0),a=S(i,2,!0),o=S(a),s=l(o,!0);k(o);var f=S(o,1,!0);k(r);var p=S(r),m=l(p),_=l(m,!0);k(m);var b=S(m);A(b);var x=S(b),C=l(x,!0);k(x);var w=S(x);A(w),M(w,`pattern`,`[a-z0-9][a-z0-9_\\-]{0,31}`);var j=S(w),F=l(j,!0);k(j);var I=S(j);A(I);var L=S(I),B=l(L,!0);k(L);var V=S(L);v(V,20,()=>Ot,e=>e,(e,n)=>{var r=xa(),i=l(r,!0);k(r);var a={};y(e=>{R(i,e),a!==(a=n)&&(r.value=(r.__value=n)??``)},[()=>kt(n)]),t(e,r)}),k(V);var H=S(V),U=l(H,!0);k(H);var W=S(H);A(W);var G=S(W),ee=l(G,!0);k(G),k(p);var K=S(p),q=l(K,!0);k(K),k(n),y((e,t,n,r,o,c,l,d,p,m,h,v)=>{R(i,e),R(a,t),R(s,n),R(f,r),R(_,o),R(C,c),R(F,l),R(B,d),R(U,p),G.disabled=m,R(ee,h),K.disabled=g(u),R(q,v)},[()=>Z(`connect.customIntro1`),()=>Z(`connect.customIntro2`),()=>Z(`connect.customModel`),()=>Z(`connect.customIntro3`),()=>Z(`connect.name`),()=>Z(`endpoint.route`),()=>Z(`endpoint.url`),()=>Z(`endpoint.format`),()=>Z(`endpoint.key`),()=>g(u)||!g(E).trim()||!g(O).trim(),()=>Z(`connect.addEndpoint`),()=>Z(`common.chooseOtherProvider`)]),d(`submit`,p,ne),z(b,()=>g(T),e=>h(T,e)),z(w,()=>g(O),e=>h(O,e)),z(I,()=>g(D),e=>h(D,e)),P(V,()=>g(N),e=>h(N,e)),z(W,()=>g(E),e=>h(E,e)),c(`click`,K,re),t(e,n)},he=e=>{var n=Ca(),r=l(n),i=l(r,!0);k(r);var a=S(r),o=l(a),s=l(o,!0);k(o);var f=S(o);A(f);var p=S(f),m=l(p,!0);k(p);var _=S(p);A(_);var v=S(_),b=l(v,!0);k(v);var x=S(v);A(x);var C=S(x),w=l(C,!0);k(C),k(a);var O=S(a),j=l(O,!0);k(O),k(n),y((e,t,n,r,a,o,c,l,d)=>{R(i,e),R(s,t),M(f,`placeholder`,n),R(m,r),R(b,a),M(x,`placeholder`,o),C.disabled=c,R(w,l),O.disabled=g(u),R(j,d)},[()=>Z(`connect.tokenIntro`),()=>Z(`connect.accountName`),()=>Z(`connect.accountNamePlaceholder`),()=>Z(`connect.token`),()=>Z(`connect.providerUrl`),()=>Z(`connect.providerUrlPlaceholder`),()=>g(u)||!g(E).trim(),()=>Z(`connect.addAccount`),()=>Z(`common.chooseOtherProvider`)]),d(`submit`,a,ne),z(f,()=>g(T),e=>h(T,e)),z(_,()=>g(E),e=>h(E,e)),z(x,()=>g(D),e=>h(D,e)),c(`click`,O,re),t(e,n)},ge=e=>{var n=Ea(),i=C(n),o=l(i);v(o,17,()=>r.providers,e=>e.id,(e,n)=>{var r=wa(),i=l(r);st(l(i),{get provider(){return g(n).id},size:28}),k(i);var a=S(i),o=l(a,!0),s=S(o),d=l(s,!0);k(s),k(a),Ie(S(a),{size:15}),k(r),y((e,t)=>{r.disabled=g(u),R(o,e),R(d,t)},[()=>Ht(g(n).id,g(n).name),()=>Z(g(n).oauth?`connect.oauthOption`:g(n).id===`openai_compatible`?`connect.apiKeyOption`:`connect.tokenOption`)]),c(`click`,r,()=>{g(n).oauth?W(g(n).id):(h(w,g(n).id,!0),h(D,g(n).base_url??U[g(n).id]??``,!0),h(T,g(n).id===`openai_compatible`?``:Ht(g(n).id,g(n).name),!0))}),t(e,r)});var s=S(o),d=e=>{var n=Ta(),r=l(n,!0);k(n),y(e=>R(r,e),[()=>Z(`connect.noProvider`)]),t(e,n)};m(s,e=>{r.providers.length||e(d)}),k(i);var f=S(i,2),p=l(f),_=l(p),b=l(_,!0);k(_);var x=S(_),E=l(x,!0);k(x),k(p);var O=S(p),A=l(O);qn(A,{size:14});var j=S(A,1,!0);k(O);var M=S(O);J(M,e=>h(a,e),()=>g(a)),k(f),y((e,t,n)=>{R(b,e),R(E,t),O.disabled=g(u),R(j,n)},[()=>Z(`connect.haveFile`),()=>Z(`connect.importFiles`),()=>Z(`common.import`)]),c(`click`,O,()=>g(a)?.click()),c(`change`,M,e=>{e.currentTarget.files?.length&&(r.importFiles(e.currentTarget.files),r.close())}),t(e,n)};m(fe,e=>{g(p)?e(X):g(o)?e(pe,1):g(w)&&g(F)?e(me,2):g(w)?e(he,3):e(ge,-1)});var _e=S(fe,2),ve=e=>{var n=Da(),r=l(n,!0);k(n),y(e=>R(r,e),[()=>Z(`connect.pending`)]),t(e,n)};m(_e,e=>{g(u)&&e(ve)});var ye=S(_e,2),be=e=>{var n=Oa(),r=l(n,!0);k(n),y(()=>R(r,g(f))),t(e,n)};m(ye,e=>{g(f)&&e(be)}),k(ae),J(ae,e=>i=e,()=>i),y((e,t,n)=>{R(ce,e),R(ue,t),M(de,`aria-label`,n)},[()=>Z(`common.connectAccount`),()=>Z(`connect.subtitle`),()=>Z(`common.close`)]),d(`cancel`,ae,function(...e){r.close?.apply(this,e)}),c(`click`,de,function(...e){r.close?.apply(this,e)}),t(n,ae),q()}o([`click`,`change`]);var ja=p(``);function Ma(e,n){let r=F(n,`size`,3,38);var i=ja();y(()=>{M(i,`width`,r()),M(i,`height`,r())}),t(e,i)}var Na=f(``),Pa=f(``),Fa=f(` `),Ia=f(``),La=f(``),Ra=f(``),za=f(`
`),Ba=f(`
`),Va=f(`

`,1),Ha=f(``),Ua=f(`
`,1);function Wa(n,a){I(a,!0);let o=[{label:`nav.subscriptions`,items:[{id:`quotas`,label:`nav.quotas`,icon:me},{id:`overview`,label:`nav.overview`,icon:ge},{id:`accounts`,label:`nav.accounts`,icon:ve},{id:`clients`,label:`nav.clients`,icon:be},{id:`models`,label:`nav.models`,icon:Se}]},{label:`nav.service`,items:[{id:`activity`,label:`nav.activity`,icon:we},{id:`settings`,label:`nav.settings`,icon:Ee},{id:`quickstart`,label:`nav.quickstart`,icon:Oe}]}],f=o.flatMap(e=>e.items).filter(e=>[`quotas`,`accounts`,`activity`,`settings`].includes(e.id)),p=e(`quotas`),_=e(!1),b=e(!1),x=e([]),w=e([]),T=e([]),E=e([]),D=e([]),O=e(null),A=e(null),N=e(null),P=e(!0),F=e(``),z=e(``),B=e(``),V=j(()=>Z(o.flatMap(e=>e.items).find(e=>e.id===g(p))?.label??`nav.quotas`)),U=null;async function W(e=!1){if(U)return U;e||h(P,!0),U=(async()=>{let e=await Promise.allSettled([$.accounts(),$.quotas(),$.providers(),$.models(),$.calls(),$.status(),$.settings(),$.clients()]),t=[];e[0].status===`fulfilled`?h(x,e[0].value.accounts):t.push(e[0].reason.message),e[1].status===`fulfilled`?h(w,e[1].value.quotas):t.push(e[1].reason.message),e[2].status===`fulfilled`?h(T,e[2].value.providers):t.push(e[2].reason.message),e[3].status===`fulfilled`?h(E,e[3].value.models):t.push(e[3].reason.message),e[4].status===`fulfilled`?h(D,e[4].value.calls):t.push(e[4].reason.message),e[5].status===`fulfilled`?h(O,e[5].value):(h(O,null),t.push(e[5].reason.message)),e[6].status===`fulfilled`?h(A,e[6].value):t.push(e[6].reason.message),e[7].status===`fulfilled`?h(N,e[7].value):t.push(e[7].reason.message),h(z,[...new Set(t)].join(` `),!0),h(P,!1)})();try{await U}finally{U=null}}function G(e){h(p,e,!0),h(_,!1),h(z,``),h(B,``),location.hash=e,window.scrollTo(0,0)}function ee(){let e=location.hash.slice(1);o.flatMap(e=>e.items).some(t=>t.id===e)&&h(p,e,!0)}async function J(e,t,n=``){if(g(F))return!1;h(F,e,!0),h(z,``),h(B,``);try{return await t(),U&&await U,await W(!0),h(B,n,!0),!0}catch(e){return h(z,e.message,!0),!1}finally{h(F,``)}}function te(e){return J(`quotas`,()=>$.refreshQuotas(e))}async function ne(e,t){let n={...g(A)?.quota_display};t===`average`?n[e]=t:delete n[e],await J(`settings`,()=>$.settingsSave({quota_display:n}),Z(`notice.displaySaved`))}async function re(e,t){let n={...g(A)?.quota_windows};t.hidden?.length||t.primary?n[e]={hidden:t.hidden??[],primary:t.primary??null}:delete n[e],await J(`settings`,()=>$.settingsSave({quota_windows:n}),Z(`notice.windowsSaved`))}async function ie(e,t){if(g(F))throw Error(Z(`notice.busy`));h(F,`rename`);try{let n=await $.renameAccount(e.id,t);h(x,g(x).map(t=>t.id===e.id?n.account:t))}finally{h(F,``)}}function ae(e,t){return J(`endpoint`,()=>$.updateEndpoint(e.id,t),Z(`notice.endpointSaved`))}function se(e,t,n){return J(`reserve`,()=>$.setAccountReserve(e.id,t,n),Z(t==null?`notice.reserveRemoved`:`notice.reserveSaved`))}async function ce(e){let t=Array.from(e);await J(`import`,async()=>{let e=await Promise.all(t.map(async e=>{if(e.size>2097152)throw Error(Z(`notice.fileTooLarge`,{name:e.name}));try{return{name:e.name,content:JSON.parse(await e.text())}}catch{throw Error(Z(`notice.invalidJson`,{name:e.name}))}})),n=await $.importAccounts(e);if(n.errors?.length)throw await W(!0),Error(Z(`notice.partialImport`,{count:n.imported,errors:Rt(n.errors)}));if(!n.imported)throw Error(Z(`notice.nothingImported`))},Z(`notice.imported`))}async function le(e,t){let n=0,r=await J(`restore`,async()=>{let r=await $.restore(e,t);if(n=r.restored,r.errors?.length)throw await W(!0),Error(Z(`notice.partialRestore`,{count:r.restored,errors:Rt(r.errors)}))});return r&&h(B,Z(n===1?`notice.restored.one`:`notice.restored.other`,{count:n}),!0),r}H(()=>{ee(),W();let e=setInterval(()=>{!document.hidden&&!g(F)&&W(!0)},15e3);return()=>clearInterval(e)});var ue=Ua();oe(`1uha8ag`,e=>{var n=Na();y(e=>M(n,`content`,e),[()=>Z(`page.description`)]),s(()=>{u.title=`${g(V)??``} ยท douane`}),t(e,n)}),d(`hashchange`,K,ee),d(`keydown`,K,e=>{e.key===`Escape`&&h(_,!1)}),d(`visibilitychange`,u,()=>{document.hidden||W(!0)});var de=C(ue),fe=l(de),X=e=>{var n=Pa();y(e=>M(n,`aria-label`,e),[()=>Z(`nav.closeMenu`)]),c(`click`,n,()=>h(_,!1)),t(e,n)};m(fe,e=>{g(_)&&e(X)});var pe=S(fe,2);let he;var _e=l(pe),ye=l(_e);Ma(l(ye),{}),k(ye);var xe=S(ye,2);Pe(l(xe),{size:18}),k(xe),k(_e);var Ce=S(_e,2);v(Ce,21,()=>o,e=>e.label,(e,n)=>{var i=La(),a=l(i),o=l(a,!0);k(a);var s=S(a);v(s,17,()=>g(n).items,e=>e.id,(e,n)=>{let i=j(()=>g(n).icon);var a=Ia();let o;var s=l(a);r(s,()=>g(i),(e,t)=>{t(e,{size:17})});var u=S(s),d=l(u,!0);k(u);var f=S(u),h=e=>{var n=Fa(),r=l(n,!0);k(n),y(()=>R(r,g(x).length)),t(e,n)},_=e=>{var n=Fa(),r=l(n,!0);k(n),y(()=>R(r,g(N).clients.length)),t(e,n)};m(f,e=>{g(n).id===`accounts`&&g(x).length?e(h):g(n).id===`clients`&&g(N)?.clients.length&&e(_,1)}),k(a),y(e=>{o=Y(a,1,`nav-link`,null,o,{active:g(p)===g(n).id}),M(a,`aria-current`,g(p)===g(n).id?`page`:void 0),R(d,e)},[()=>Z(g(n).label)]),c(`click`,a,()=>G(g(n).id)),t(e,a)}),k(i),y(e=>R(o,e),[()=>Z(g(n).label)]),t(e,i)}),k(Ce);var Te=S(Ce,2),De=l(Te),ke=l(De,!0);Ie(S(ke),{size:19}),k(De),k(Te),k(pe);var je=S(pe,2),Ne=l(je),Fe=l(Ne),Le=e=>{var n=Ra(),r=l(n),i=l(r,!0);k(r);var a=S(r),o=l(a,!0);k(a),k(n),y(e=>{R(i,g(z)),a.disabled=g(P),R(o,e)},[()=>Z(`common.retry`)]),c(`click`,a,()=>W()),t(e,n)};m(Fe,e=>{g(z)&&e(Le)});var Re=S(Fe,2),ze=e=>{var n=za(),r=l(n,!0),i=S(r);Pe(l(i),{size:14}),k(i),k(n),y(e=>{R(r,g(B)),M(i,`aria-label`,e)},[()=>Z(`page.dismissNotice`)]),c(`click`,i,()=>h(B,``)),t(e,n)};m(Re,e=>{g(B)&&e(ze)});var Be=S(Re,2),Ve=e=>{var n=Ba(),r=l(n);Ae(r,{size:18,class:`spinning`});var i=S(r),a=l(i,!0);k(i),k(n),y(e=>R(a,e),[()=>Z(`page.loading`)]),t(e,n)};m(Be,e=>{g(P)&&!g(O)&&e(Ve)});var He=S(Be,2),Ue=e=>{Gn(e,{get accounts(){return g(x)},get quotas(){return g(w)},get providers(){return g(T)},get busy(){return g(F)},refresh:te,rename:ie,get settings(){return g(A)},setQuotaDisplay:ne,setQuotaWindows:re,resetUpdated:()=>W(!0),connect:()=>h(b,!0)})},We=e=>{yr(e,{get accounts(){return g(x)},get quotas(){return g(w)},get busy(){return g(F)},rename:ie,setReserve:se,updateEndpoint:ae,connect:()=>h(b,!0),importFiles:ce,toggle:e=>J(`account`,()=>$.setAccountEnabled(e.id,!e.enabled),Z(e.enabled?`notice.accountDisabled`:`notice.accountEnabled`)),remove:e=>J(`account`,()=>$.deleteAccount(e.id),Z(`notice.accountDeleted`))})},Ge=e=>{Ci(e,{get report(){return g(N)},get accounts(){return g(x)},get busy(){return g(F)},updated:async e=>{await W(!0),h(B,e,!0)}})},Ke=e=>{var n=L(),r=C(n),a=e=>{var n=L(),r=C(n);i(r,()=>JSON.stringify(g(A)),e=>{da(e,{get settings(){return g(A)},get providers(){return g(T)},get busy(){return g(F)},restore:le,save:e=>J(`settings`,()=>$.settingsSave(e),Z(`notice.settingsSaved`))})}),t(e,n)},o=e=>{var n=Va(),r=C(n),i=l(r),a=l(i),o=l(a,!0);k(a);var s=S(a),c=l(s,!0);k(s),k(i),k(r),Zi(S(r),{}),y((e,t)=>{R(o,e),R(c,t)},[()=>Z(`nav.settings`),()=>Z(`page.settingsUnavailable`)]),t(e,n)};m(r,e=>{g(A)?e(a):e(o,-1)}),t(e,n)},qe=e=>{var n=L(),r=C(n);i(r,()=>g(p),e=>{{let t=j(()=>g(N)?.clients??[]);Ui(e,{get screen(){return g(p)},get summary(){return g(O)},get calls(){return g(D)},get models(){return g(E)},get accounts(){return g(x)},get clients(){return g(t)},get busy(){return g(F)},navigate:G,toggleModel:e=>J(`model`,()=>$.setModelEnabled(e.id,e.enabled===!1),Z(`notice.modelUpdated`))})}}),t(e,n)};m(He,e=>{g(p)===`quotas`?e(Ue):g(p)===`accounts`?e(We,1):g(p)===`clients`?e(Ge,2):g(p)===`settings`?e(Ke,3):e(qe,-1)}),k(Ne),k(je),k(de);var Je=S(de,2),Ye=l(Je);v(Ye,17,()=>f,e=>e.id,(e,n)=>{let i=j(()=>g(n).icon);var a=Ha();let o;var s=l(a);r(s,()=>g(i),(e,t)=>{t(e,{size:19})});var u=S(s),d=l(u,!0);k(u),k(a),y(e=>{M(a,`aria-current`,g(p)===g(n).id?`page`:void 0),o=Y(a,1,``,null,o,{active:g(p)===g(n).id}),R(d,e)},[()=>Z(g(n).label)]),c(`click`,a,()=>G(g(n).id)),t(e,a)});var Xe=S(Ye),Ze=l(Xe);Me(Ze,{size:19});var Qe=S(Ze),$e=l(Qe,!0);k(Qe),k(Xe),k(Je);var et=S(Je,2),tt=e=>{Aa(e,{get providers(){return g(T)},close:()=>h(b,!1),completed:()=>{h(B,Z(`notice.accountConnected`),!0),W(!0)},importFiles:ce})};m(et,e=>{g(b)&&e(tt)}),y((e,t,n,r,i,a)=>{he=Y(pe,1,`sidebar`,null,he,{"mobile-open":g(_)}),M(xe,`aria-label`,e),M(Ce,`aria-label`,t),R(ke,n),M(Je,`aria-label`,r),M(Xe,`aria-label`,i),M(Xe,`aria-expanded`,g(_)),R($e,a)},[()=>Z(`nav.closeMenu`),()=>Z(`nav.main`),()=>Z(`nav.setupTool`),()=>Z(`nav.mobile`),()=>Z(`nav.openMenu`),()=>Z(`nav.menu`)]),c(`click`,xe,()=>h(_,!1)),c(`click`,De,()=>G(`quickstart`)),c(`click`,Xe,()=>h(_,!0)),t(n,ue),q()}o([`click`]);export{Wa as component}; \ No newline at end of file diff --git a/dash/build/_app/immutable/nodes/2.DhfXIWxd.js b/dash/build/_app/immutable/nodes/2.DhfXIWxd.js new file mode 100644 index 0000000..a8f1a2b --- /dev/null +++ b/dash/build/_app/immutable/nodes/2.DhfXIWxd.js @@ -0,0 +1 @@ +import{$ as e,A as t,B as n,C as r,D as i,E as a,F as o,H as s,I as c,J as l,K as u,L as d,M as f,N as p,O as m,Q as h,R as g,S as _,T as v,U as y,V as b,W as x,X as S,Y as C,Z as w,_ as T,a as E,b as D,c as O,ct as k,d as A,et as j,f as M,g as N,h as P,i as F,it as I,j as L,k as R,l as z,lt as B,m as V,n as H,nt as U,o as W,ot as G,p as ee,q as K,rt as te,s as q,st as ne,u as re,ut as ie,v as J,w as ae,x as oe,y as Y}from"../chunks/QjDztciA.js";import"../chunks/xihTtKlq.js";var se={xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":2,"stroke-linecap":`round`,"stroke-linejoin":`round`},ce=e=>{for(let t in e)if(t.startsWith(`aria-`)||t===`role`||t===`title`)return!0;return!1},le=Symbol(`lucide-context`),ue=()=>U(le),de=new Set([`$$slots`,`$$events`,`$$legacy`,`name`,`color`,`size`,`strokeWidth`,`absoluteStrokeWidth`,`iconNode`,`children`]),fe=p(``);function X(e,n){I(n,!0);let r=ue()??{},i=F(n,`color`,19,()=>r.color??`currentColor`),o=F(n,`size`,19,()=>r.size??24),s=F(n,`strokeWidth`,19,()=>r.strokeWidth??2),c=F(n,`absoluteStrokeWidth`,19,()=>r.absoluteStrokeWidth??!1),u=F(n,`iconNode`,19,()=>[]),d=E(n,de),f=j(()=>c()?Number(s())*24/Number(o()):s());var p=fe();re(p,e=>({...se,...e,...d,width:o(),height:o(),stroke:i(),"stroke-width":g(f),class:[`lucide-icon lucide`,r.class,n.name&&`lucide-${n.name}`,n.class]}),[()=>!n.children&&!ce(d)&&{"aria-hidden":`true`}]);var m=l(p);v(m,17,u,a,(e,n)=>{var r=j(()=>ie(g(n),2));let i=()=>g(r)[0],a=()=>g(r)[1];var o=L(),s=C(o);_(s,i,!0,(e,t)=>{re(e,()=>({...a()}))}),t(e,o)});var h=S(m);ae(h,()=>n.children??B),k(p),t(e,p),te()}var pe=new Set([`$$slots`,`$$events`,`$$legacy`]);function me(e,t){let n=E(t,pe),r=[[`path`,{d:`m12 14 4-4`}],[`path`,{d:`M3.34 19a10 10 0 1 1 17.32 0`}]];X(e,W({name:`gauge`},()=>n,{get iconNode(){return r}}))}var he=new Set([`$$slots`,`$$events`,`$$legacy`]);function ge(e,t){let n=E(t,he),r=[[`rect`,{width:`7`,height:`9`,x:`3`,y:`3`,rx:`1`}],[`rect`,{width:`7`,height:`5`,x:`14`,y:`3`,rx:`1`}],[`rect`,{width:`7`,height:`9`,x:`14`,y:`12`,rx:`1`}],[`rect`,{width:`7`,height:`5`,x:`3`,y:`16`,rx:`1`}]];X(e,W({name:`layout-dashboard`},()=>n,{get iconNode(){return r}}))}var _e=new Set([`$$slots`,`$$events`,`$$legacy`]);function ve(e,t){let n=E(t,_e),r=[[`path`,{d:`M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2`}],[`path`,{d:`M16 3.128a4 4 0 0 1 0 7.744`}],[`path`,{d:`M22 21v-2a4 4 0 0 0-3-3.87`}],[`circle`,{cx:`9`,cy:`7`,r:`4`}]];X(e,W({name:`users`},()=>n,{get iconNode(){return r}}))}var ye=new Set([`$$slots`,`$$events`,`$$legacy`]);function be(e,t){let n=E(t,ye),r=[[`path`,{d:`M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z`}],[`circle`,{cx:`16.5`,cy:`7.5`,r:`.5`,fill:`currentColor`}]];X(e,W({name:`key-round`},()=>n,{get iconNode(){return r}}))}var xe=new Set([`$$slots`,`$$events`,`$$legacy`]);function Se(e,t){let n=E(t,xe),r=[[`path`,{d:`M2.97 12.92A2 2 0 0 0 2 14.63v3.24a2 2 0 0 0 .97 1.71l3 1.8a2 2 0 0 0 2.06 0L12 19v-5.5l-5-3-4.03 2.42Z`}],[`path`,{d:`m7 16.5-4.74-2.85`}],[`path`,{d:`m7 16.5 5-3`}],[`path`,{d:`M7 16.5v5.17`}],[`path`,{d:`M12 13.5V19l3.97 2.38a2 2 0 0 0 2.06 0l3-1.8a2 2 0 0 0 .97-1.71v-3.24a2 2 0 0 0-.97-1.71L17 10.5l-5 3Z`}],[`path`,{d:`m17 16.5-5-3`}],[`path`,{d:`m17 16.5 4.74-2.85`}],[`path`,{d:`M17 16.5v5.17`}],[`path`,{d:`M7.97 4.42A2 2 0 0 0 7 6.13v4.37l5 3 5-3V6.13a2 2 0 0 0-.97-1.71l-3-1.8a2 2 0 0 0-2.06 0l-3 1.8Z`}],[`path`,{d:`M12 8 7.26 5.15`}],[`path`,{d:`m12 8 4.74-2.85`}],[`path`,{d:`M12 13.5V8`}]];X(e,W({name:`boxes`},()=>n,{get iconNode(){return r}}))}var Ce=new Set([`$$slots`,`$$events`,`$$legacy`]);function we(e,t){let n=E(t,Ce),r=[[`path`,{d:`M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2`}]];X(e,W({name:`activity`},()=>n,{get iconNode(){return r}}))}var Te=new Set([`$$slots`,`$$events`,`$$legacy`]);function Ee(e,t){let n=E(t,Te),r=[[`path`,{d:`M14 17H5`}],[`path`,{d:`M19 7h-9`}],[`circle`,{cx:`17`,cy:`17`,r:`3`}],[`circle`,{cx:`7`,cy:`7`,r:`3`}]];X(e,W({name:`settings-2`},()=>n,{get iconNode(){return r}}))}var De=new Set([`$$slots`,`$$events`,`$$legacy`]);function Oe(e,t){let n=E(t,De),r=[[`path`,{d:`M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5`}],[`path`,{d:`M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09`}],[`path`,{d:`M9 12a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.4 22.4 0 0 1-4 2z`}],[`path`,{d:`M9 12H4s.55-3.03 2-4c1.62-1.08 5 .05 5 .05`}]];X(e,W({name:`rocket`},()=>n,{get iconNode(){return r}}))}var ke=new Set([`$$slots`,`$$events`,`$$legacy`]);function Ae(e,t){let n=E(t,ke),r=[[`path`,{d:`M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8`}],[`path`,{d:`M21 3v5h-5`}],[`path`,{d:`M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16`}],[`path`,{d:`M8 16H3v5`}]];X(e,W({name:`refresh-cw`},()=>n,{get iconNode(){return r}}))}var je=new Set([`$$slots`,`$$events`,`$$legacy`]);function Me(e,t){let n=E(t,je),r=[[`path`,{d:`M4 5h16`}],[`path`,{d:`M4 12h16`}],[`path`,{d:`M4 19h16`}]];X(e,W({name:`menu`},()=>n,{get iconNode(){return r}}))}var Ne=new Set([`$$slots`,`$$events`,`$$legacy`]);function Pe(e,t){let n=E(t,Ne),r=[[`path`,{d:`M18 6 6 18`}],[`path`,{d:`m6 6 12 12`}]];X(e,W({name:`x`},()=>n,{get iconNode(){return r}}))}var Fe=new Set([`$$slots`,`$$events`,`$$legacy`]);function Ie(e,t){let n=E(t,Fe),r=[[`path`,{d:`m9 18 6-6-6-6`}]];X(e,W({name:`chevron-right`},()=>n,{get iconNode(){return r}}))}var Le=new Set([`$$slots`,`$$events`,`$$legacy`]);function Re(e,t){let n=E(t,Le),r=[[`path`,{d:`m21 21-4.34-4.34`}],[`circle`,{cx:`11`,cy:`11`,r:`8`}]];X(e,W({name:`search`},()=>n,{get iconNode(){return r}}))}var ze=new Set([`$$slots`,`$$events`,`$$legacy`]);function Be(e,t){let n=E(t,ze),r=[[`path`,{d:`M5 12h14`}],[`path`,{d:`M12 5v14`}]];X(e,W({name:`plus`},()=>n,{get iconNode(){return r}}))}var Ve=new Set([`$$slots`,`$$events`,`$$legacy`]);function He(e,t){let n=E(t,Ve),r=[[`path`,{d:`M15 3h6v6`}],[`path`,{d:`M10 14 21 3`}],[`path`,{d:`M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6`}]];X(e,W({name:`external-link`},()=>n,{get iconNode(){return r}}))}var Ue=new Set([`$$slots`,`$$events`,`$$legacy`]);function We(e,t){let n=E(t,Ue),r=[[`path`,{d:`M10 5H3`}],[`path`,{d:`M12 19H3`}],[`path`,{d:`M14 3v4`}],[`path`,{d:`M16 17v4`}],[`path`,{d:`M21 12h-9`}],[`path`,{d:`M21 19h-5`}],[`path`,{d:`M21 5h-7`}],[`path`,{d:`M8 10v4`}],[`path`,{d:`M8 12H3`}]];X(e,W({name:`sliders-horizontal`},()=>n,{get iconNode(){return r}}))}var Ge=new Set([`$$slots`,`$$events`,`$$legacy`]);function Ke(e,t){let n=E(t,Ge),r=[[`path`,{d:`M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z`}]];X(e,W({name:`star`},()=>n,{get iconNode(){return r}}))}var qe=new Set([`$$slots`,`$$events`,`$$legacy`]);function Je(e,t){let n=E(t,qe),r=[[`rect`,{x:`16`,y:`16`,width:`6`,height:`6`,rx:`1`}],[`rect`,{x:`2`,y:`16`,width:`6`,height:`6`,rx:`1`}],[`rect`,{x:`9`,y:`2`,width:`6`,height:`6`,rx:`1`}],[`path`,{d:`M5 16v-3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3`}],[`path`,{d:`M12 12V8`}]];X(e,W({name:`network`},()=>n,{get iconNode(){return r}}))}var Ye=`data:image/svg+xml,%3csvg%20height='24'%20viewBox='0%200%2024%2024'%20width='24'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eClaude%3c/title%3e%3cpath%20d='M4.709%2015.955l4.72-2.647.08-.23-.08-.128H9.2l-.79-.048-2.698-.073-2.339-.097-2.266-.122-.571-.121L0%2011.784l.055-.352.48-.321.686.06%201.52.103%202.278.158%201.652.097%202.449.255h.389l.055-.157-.134-.098-.103-.097-2.358-1.596-2.552-1.688-1.336-.972-.724-.491-.364-.462-.158-1.008.656-.722.881.06.225.061.893.686%201.908%201.476%202.491%201.833.365.304.145-.103.019-.073-.164-.274-1.355-2.446-1.446-2.49-.644-1.032-.17-.619a2.97%202.97%200%2001-.104-.729L6.283.134%206.696%200l.996.134.42.364.62%201.414%201.002%202.229%201.555%203.03.456.898.243.832.091.255h.158V9.01l.128-1.706.237-2.095.23-2.695.08-.76.376-.91.747-.492.584.28.48.685-.067.444-.286%201.851-.559%202.903-.364%201.942h.212l.243-.242.985-1.306%201.652-2.064.73-.82.85-.904.547-.431h1.033l.76%201.129-.34%201.166-1.064%201.347-.881%201.142-1.264%201.7-.79%201.36.073.11.188-.02%202.856-.606%201.543-.28%201.841-.315.833.388.091.395-.328.807-1.969.486-2.309.462-3.439.813-.042.03.049.061%201.549.146.662.036h1.622l3.02.225.79.522.474.638-.079.485-1.215.62-1.64-.389-3.829-.91-1.312-.329h-.182v.11l1.093%201.068%202.006%201.81%202.509%202.33.127.578-.322.455-.34-.049-2.205-1.657-.851-.747-1.926-1.62h-.128v.17l.444.649%202.345%203.521.122%201.08-.17.353-.608.213-.668-.122-1.374-1.925-1.415-2.167-1.143-1.943-.14.08-.674%207.254-.316.37-.729.28-.607-.461-.322-.747.322-1.476.389-1.924.315-1.53.286-1.9.17-.632-.012-.042-.14.018-1.434%201.967-2.18%202.945-1.726%201.845-.414.164-.717-.37.067-.662.401-.589%202.388-3.036%201.44-1.882.93-1.086-.006-.158h-.055L4.132%2018.56l-1.13.146-.487-.456.061-.746.231-.243%201.908-1.312-.006.006z'%20fill='%23D97757'%20fill-rule='nonzero'%3e%3c/path%3e%3c/svg%3e`,Xe=`data:image/svg+xml,%3csvg%20fill='%23ffffff'%20fill-rule='evenodd'%20height='24'%20viewBox='0%200%2024%2024'%20width='24'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eOpenAI%3c/title%3e%3cpath%20d='M9.205%208.658v-2.26c0-.19.072-.333.238-.428l4.543-2.616c.619-.357%201.356-.523%202.117-.523%202.854%200%204.662%202.212%204.662%204.566%200%20.167%200%20.357-.024.547l-4.71-2.759a.797.797%200%2000-.856%200l-5.97%203.473zm10.609%208.8V12.06c0-.333-.143-.57-.429-.737l-5.97-3.473%201.95-1.118a.433.433%200%2001.476%200l4.543%202.617c1.309.76%202.189%202.378%202.189%203.948%200%201.808-1.07%203.473-2.76%204.163zM7.802%2012.703l-1.95-1.142c-.167-.095-.239-.238-.239-.428V5.899c0-2.545%201.95-4.472%204.591-4.472%201%200%201.927.333%202.712.928L8.23%205.067c-.285.166-.428.404-.428.737v6.898zM12%2015.128l-2.795-1.57v-3.33L12%208.658l2.795%201.57v3.33L12%2015.128zm1.796%207.23c-1%200-1.927-.332-2.712-.927l4.686-2.712c.285-.166.428-.404.428-.737v-6.898l1.974%201.142c.167.095.238.238.238.428v5.233c0%202.545-1.974%204.472-4.614%204.472zm-5.637-5.303l-4.544-2.617c-1.308-.761-2.188-2.378-2.188-3.948A4.482%204.482%200%20014.21%206.327v5.423c0%20.333.143.571.428.738l5.947%203.449-1.95%201.118a.432.432%200%2001-.476%200zm-.262%203.9c-2.688%200-4.662-2.021-4.662-4.519%200-.19.024-.38.047-.57l4.686%202.71c.286.167.571.167.856%200l5.97-3.448v2.26c0%20.19-.07.333-.237.428l-4.543%202.616c-.619.357-1.356.523-2.117.523zm5.899%202.83a5.947%205.947%200%20005.827-4.756C22.287%2018.339%2024%2015.84%2024%2013.296c0-1.665-.713-3.282-1.998-4.448.119-.5.19-.999.19-1.498%200-3.401-2.759-5.947-5.946-5.947-.642%200-1.26.095-1.88.31A5.962%205.962%200%200010.205%200a5.947%205.947%200%2000-5.827%204.757C1.713%205.447%200%207.945%200%2010.49c0%201.666.713%203.283%201.998%204.448-.119.5-.19%201-.19%201.499%200%203.401%202.759%205.946%205.946%205.946.642%200%201.26-.095%201.88-.309a5.96%205.96%200%20004.162%201.713z'%3e%3c/path%3e%3c/svg%3e`,Ze=`data:image/svg+xml,%3csvg%20fill='%23ffffff'%20fill-rule='evenodd'%20height='24'%20viewBox='0%200%2024%2024'%20width='24'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eOpenAI%3c/title%3e%3cpath%20d='M9.205%208.658v-2.26c0-.19.072-.333.238-.428l4.543-2.616c.619-.357%201.356-.523%202.117-.523%202.854%200%204.662%202.212%204.662%204.566%200%20.167%200%20.357-.024.547l-4.71-2.759a.797.797%200%2000-.856%200l-5.97%203.473zm10.609%208.8V12.06c0-.333-.143-.57-.429-.737l-5.97-3.473%201.95-1.118a.433.433%200%2001.476%200l4.543%202.617c1.309.76%202.189%202.378%202.189%203.948%200%201.808-1.07%203.473-2.76%204.163zM7.802%2012.703l-1.95-1.142c-.167-.095-.239-.238-.239-.428V5.899c0-2.545%201.95-4.472%204.591-4.472%201%200%201.927.333%202.712.928L8.23%205.067c-.285.166-.428.404-.428.737v6.898zM12%2015.128l-2.795-1.57v-3.33L12%208.658l2.795%201.57v3.33L12%2015.128zm1.796%207.23c-1%200-1.927-.332-2.712-.927l4.686-2.712c.285-.166.428-.404.428-.737v-6.898l1.974%201.142c.167.095.238.238.238.428v5.233c0%202.545-1.974%204.472-4.614%204.472zm-5.637-5.303l-4.544-2.617c-1.308-.761-2.188-2.378-2.188-3.948A4.482%204.482%200%20014.21%206.327v5.423c0%20.333.143.571.428.738l5.947%203.449-1.95%201.118a.432.432%200%2001-.476%200zm-.262%203.9c-2.688%200-4.662-2.021-4.662-4.519%200-.19.024-.38.047-.57l4.686%202.71c.286.167.571.167.856%200l5.97-3.448v2.26c0%20.19-.07.333-.237.428l-4.543%202.616c-.619.357-1.356.523-2.117.523zm5.899%202.83a5.947%205.947%200%20005.827-4.756C22.287%2018.339%2024%2015.84%2024%2013.296c0-1.665-.713-3.282-1.998-4.448.119-.5.19-.999.19-1.498%200-3.401-2.759-5.947-5.946-5.947-.642%200-1.26.095-1.88.31A5.962%205.962%200%200010.205%200a5.947%205.947%200%2000-5.827%204.757C1.713%205.447%200%207.945%200%2010.49c0%201.666.713%203.283%201.998%204.448-.119.5-.19%201-.19%201.499%200%203.401%202.759%205.946%205.946%205.946.642%200%201.26-.095%201.88-.309a5.96%205.96%200%20004.162%201.713z'%3e%3c/path%3e%3c/svg%3e`,Qe=`data:image/svg+xml,%3csvg%20width='240'%20height='300'%20viewBox='0%200%20240%20300'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20clip-path='url(%23clip0_1401_86283)'%3e%3cmask%20id='mask0_1401_86283'%20style='mask-type:luminance'%20maskUnits='userSpaceOnUse'%20x='0'%20y='0'%20width='240'%20height='300'%3e%3cpath%20d='M240%200H0V300H240V0Z'%20fill='white'/%3e%3c/mask%3e%3cg%20mask='url(%23mask0_1401_86283)'%3e%3cpath%20d='M180%20240H60V120H180V240Z'%20fill='%234B4646'/%3e%3cpath%20d='M180%2060H60V240H180V60ZM240%20300H0V0H240V300Z'%20fill='%23F1ECEC'/%3e%3c/g%3e%3c/g%3e%3cdefs%3e%3cclipPath%20id='clip0_1401_86283'%3e%3crect%20width='240'%20height='300'%20fill='white'/%3e%3c/clipPath%3e%3c/defs%3e%3c/svg%3e`,$e=`data:image/svg+xml,%3csvg%20fill='%23ffffff'%20fill-rule='evenodd'%20height='24'%20viewBox='0%200%2024%2024'%20width='24'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eGrok%3c/title%3e%3cpath%20d='M9.27%2015.29l7.978-5.897c.391-.29.95-.177%201.137.272.98%202.369.542%205.215-1.41%207.169-1.951%201.954-4.667%202.382-7.149%201.406l-2.711%201.257c3.889%202.661%208.611%202.003%2011.562-.953%202.341-2.344%203.066-5.539%202.388-8.42l.006.007c-.983-4.232.242-5.924%202.75-9.383.06-.082.12-.164.179-.248l-3.301%203.305v-.01L9.267%2015.292M7.623%2016.723c-2.792-2.67-2.31-6.801.071-9.184%201.761-1.763%204.647-2.483%207.166-1.425l2.705-1.25a7.808%207.808%200%2000-1.829-1A8.975%208.975%200%20005.984%205.83c-2.533%202.536-3.33%206.436-1.962%209.764%201.022%202.487-.653%204.246-2.34%206.022-.599.63-1.199%201.259-1.682%201.925l7.62-6.815'%3e%3c/path%3e%3c/svg%3e`,et=`data:image/svg+xml,%3csvg%20width='180'%20height='180'%20viewBox='0%200%20180%20180'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M144.248%20149.062C151.748%20154.688%20162.998%20150.938%20152.685%20140.625C121.748%20110.625%20128.31%2028.125%2089.8727%2028.125C51.4352%2028.125%2057.9977%20110.625%2027.0602%20140.625C15.8102%20151.875%2027.9977%20154.688%2035.4977%20149.062C64.5602%20129.375%2062.6852%2094.6875%2089.8727%2094.6875C117.06%2094.6875%20115.185%20129.375%20144.248%20149.062Z'%20fill='white'/%3e%3c/svg%3e`,tt=`data:image/svg+xml,%3csvg%20height='24'%20viewBox='0%200%2024%2024'%20width='24'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eGemini%3c/title%3e%3cpath%20d='M20.616%2010.835a14.147%2014.147%200%2001-4.45-3.001%2014.111%2014.111%200%2001-3.678-6.452.503.503%200%2000-.975%200%2014.134%2014.134%200%2001-3.679%206.452%2014.155%2014.155%200%2001-4.45%203.001c-.65.28-1.318.505-2.002.678a.502.502%200%20000%20.975c.684.172%201.35.397%202.002.677a14.147%2014.147%200%20014.45%203.001%2014.112%2014.112%200%20013.679%206.453.502.502%200%2000.975%200c.172-.685.397-1.351.677-2.003a14.145%2014.145%200%20013.001-4.45%2014.113%2014.113%200%20016.453-3.678.503.503%200%20000-.975%2013.245%2013.245%200%2001-2.003-.678z'%20fill='%233186FF'%3e%3c/path%3e%3cpath%20d='M20.616%2010.835a14.147%2014.147%200%2001-4.45-3.001%2014.111%2014.111%200%2001-3.678-6.452.503.503%200%2000-.975%200%2014.134%2014.134%200%2001-3.679%206.452%2014.155%2014.155%200%2001-4.45%203.001c-.65.28-1.318.505-2.002.678a.502.502%200%20000%20.975c.684.172%201.35.397%202.002.677a14.147%2014.147%200%20014.45%203.001%2014.112%2014.112%200%20013.679%206.453.502.502%200%2000.975%200c.172-.685.397-1.351.677-2.003a14.145%2014.145%200%20013.001-4.45%2014.113%2014.113%200%20016.453-3.678.503.503%200%20000-.975%2013.245%2013.245%200%2001-2.003-.678z'%20fill='url(%23lobe-icons-gemini-0-_R_0_)'%3e%3c/path%3e%3cpath%20d='M20.616%2010.835a14.147%2014.147%200%2001-4.45-3.001%2014.111%2014.111%200%2001-3.678-6.452.503.503%200%2000-.975%200%2014.134%2014.134%200%2001-3.679%206.452%2014.155%2014.155%200%2001-4.45%203.001c-.65.28-1.318.505-2.002.678a.502.502%200%20000%20.975c.684.172%201.35.397%202.002.677a14.147%2014.147%200%20014.45%203.001%2014.112%2014.112%200%20013.679%206.453.502.502%200%2000.975%200c.172-.685.397-1.351.677-2.003a14.145%2014.145%200%20013.001-4.45%2014.113%2014.113%200%20016.453-3.678.503.503%200%20000-.975%2013.245%2013.245%200%2001-2.003-.678z'%20fill='url(%23lobe-icons-gemini-1-_R_0_)'%3e%3c/path%3e%3cpath%20d='M20.616%2010.835a14.147%2014.147%200%2001-4.45-3.001%2014.111%2014.111%200%2001-3.678-6.452.503.503%200%2000-.975%200%2014.134%2014.134%200%2001-3.679%206.452%2014.155%2014.155%200%2001-4.45%203.001c-.65.28-1.318.505-2.002.678a.502.502%200%20000%20.975c.684.172%201.35.397%202.002.677a14.147%2014.147%200%20014.45%203.001%2014.112%2014.112%200%20013.679%206.453.502.502%200%2000.975%200c.172-.685.397-1.351.677-2.003a14.145%2014.145%200%20013.001-4.45%2014.113%2014.113%200%20016.453-3.678.503.503%200%20000-.975%2013.245%2013.245%200%2001-2.003-.678z'%20fill='url(%23lobe-icons-gemini-2-_R_0_)'%3e%3c/path%3e%3cdefs%3e%3clinearGradient%20gradientUnits='userSpaceOnUse'%20id='lobe-icons-gemini-0-_R_0_'%20x1='7'%20x2='11'%20y1='15.5'%20y2='12'%3e%3cstop%20stop-color='%2308B962'%3e%3c/stop%3e%3cstop%20offset='1'%20stop-color='%2308B962'%20stop-opacity='0'%3e%3c/stop%3e%3c/linearGradient%3e%3clinearGradient%20gradientUnits='userSpaceOnUse'%20id='lobe-icons-gemini-1-_R_0_'%20x1='8'%20x2='11.5'%20y1='5.5'%20y2='11'%3e%3cstop%20stop-color='%23F94543'%3e%3c/stop%3e%3cstop%20offset='1'%20stop-color='%23F94543'%20stop-opacity='0'%3e%3c/stop%3e%3c/linearGradient%3e%3clinearGradient%20gradientUnits='userSpaceOnUse'%20id='lobe-icons-gemini-2-_R_0_'%20x1='3.5'%20x2='17.5'%20y1='13.5'%20y2='12'%3e%3cstop%20stop-color='%23FABC12'%3e%3c/stop%3e%3cstop%20offset='.46'%20stop-color='%23FABC12'%20stop-opacity='0'%3e%3c/stop%3e%3c/linearGradient%3e%3c/defs%3e%3c/svg%3e`,nt=`data:image/svg+xml,%3csvg%20height='24'%20viewBox='0%200%2024%2024'%20width='24'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eKimi%3c/title%3e%3cpath%20d='M21.846%200a1.923%201.923%200%20110%203.846H20.15a.226.226%200%2001-.227-.226V1.923C19.923.861%2020.784%200%2021.846%200z'%20fill='%231783FF'%3e%3c/path%3e%3cpath%20d='M11.065%2011.199l7.257-7.2c.137-.136.06-.41-.116-.41H14.3a.164.164%200%2000-.117.051l-7.82%207.756c-.122.12-.302.013-.302-.179V3.82c0-.127-.083-.23-.185-.23H3.186c-.103%200-.186.103-.186.23V19.77c0%20.128.083.23.186.23h2.69c.103%200%20.186-.102.186-.23v-3.25c0-.069.025-.135.069-.178l2.424-2.406a.158.158%200%2001.205-.023l6.484%204.772a7.677%207.677%200%20003.453%201.283c.108.012.2-.095.2-.23v-3.06c0-.117-.07-.212-.164-.227a5.028%205.028%200%2001-2.027-.807l-5.613-4.064c-.117-.078-.132-.279-.028-.381z'%20fill='%23fff'%3e%3c/path%3e%3c/svg%3e`,rt=`data:image/svg+xml,%3csvg%20height='24'%20viewBox='0%200%2024%2024'%20width='24'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eQwen%3c/title%3e%3cpath%20d='M12.604%201.34c.393.69.784%201.382%201.174%202.075a.18.18%200%2000.157.091h5.552c.174%200%20.322.11.446.327l1.454%202.57c.19.337.24.478.024.837-.26.43-.513.864-.76%201.3l-.367.658c-.106.196-.223.28-.04.512l2.652%204.637c.172.301.111.494-.043.77-.437.785-.882%201.564-1.335%202.34-.159.272-.352.375-.68.37-.777-.016-1.552-.01-2.327.016a.099.099%200%2000-.081.05%20575.097%20575.097%200%2001-2.705%204.74c-.169.293-.38.363-.725.364-.997.003-2.002.004-3.017.002a.537.537%200%2001-.465-.271l-1.335-2.323a.09.09%200%2000-.083-.049H4.982c-.285.03-.553-.001-.805-.092l-1.603-2.77a.543.543%200%2001-.002-.54l1.207-2.12a.198.198%200%20000-.197%20550.951%20550.951%200%2001-1.875-3.272l-.79-1.395c-.16-.31-.173-.496.095-.965.465-.813.927-1.625%201.387-2.436.132-.234.304-.334.584-.335a338.3%20338.3%200%20012.589-.001.124.124%200%2000.107-.063l2.806-4.895a.488.488%200%2001.422-.246c.524-.001%201.053%200%201.583-.006L11.704%201c.341-.003.724.032.9.34zm-3.432.403a.06.06%200%2000-.052.03L6.254%206.788a.157.157%200%2001-.135.078H3.253c-.056%200-.07.025-.041.074l5.81%2010.156c.025.042.013.062-.034.063l-2.795.015a.218.218%200%2000-.2.116l-1.32%202.31c-.044.078-.021.118.068.118l5.716.008c.046%200%20.08.02.104.061l1.403%202.454c.046.081.092.082.139%200l5.006-8.76.783-1.382a.055.055%200%2001.096%200l1.424%202.53a.122.122%200%2000.107.062l2.763-.02a.04.04%200%2000.035-.02.041.041%200%20000-.04l-2.9-5.086a.108.108%200%20010-.113l.293-.507%201.12-1.977c.024-.041.012-.062-.035-.062H9.2c-.059%200-.073-.026-.043-.077l1.434-2.505a.107.107%200%20000-.114L9.225%201.774a.06.06%200%2000-.053-.031zm6.29%208.02c.046%200%20.058.02.034.06l-.832%201.465-2.613%204.585a.056.056%200%2001-.05.029.058.058%200%2001-.05-.029L8.498%209.841c-.02-.034-.01-.052.028-.054l.216-.012%206.722-.012z'%20fill='url(%23lobe-icons-qwen-_R_0_)'%20fill-rule='nonzero'%3e%3c/path%3e%3cdefs%3e%3clinearGradient%20id='lobe-icons-qwen-_R_0_'%20x1='0%25'%20x2='100%25'%20y1='0%25'%20y2='0%25'%3e%3cstop%20offset='0%25'%20stop-color='%236336E7'%20stop-opacity='.84'%3e%3c/stop%3e%3cstop%20offset='100%25'%20stop-color='%236F69F7'%20stop-opacity='.84'%3e%3c/stop%3e%3c/linearGradient%3e%3c/defs%3e%3c/svg%3e`,it=`data:image/svg+xml,%3csvg%20fill='%23ffffff'%20fill-rule='evenodd'%20height='24'%20viewBox='0%200%2024%2024'%20width='24'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eGithubCopilot%3c/title%3e%3cpath%20d='M19.245%205.364c1.322%201.36%201.877%203.216%202.11%205.817.622%200%201.2.135%201.592.654l.73.964c.21.278.323.61.323.955v2.62c0%20.339-.173.669-.453.868C20.239%2019.602%2016.157%2021.5%2012%2021.5c-4.6%200-9.205-2.583-11.547-4.258-.28-.2-.452-.53-.453-.868v-2.62c0-.345.113-.679.321-.956l.73-.963c.392-.517.974-.654%201.593-.654l.029-.297c.25-2.446.81-4.213%202.082-5.52%202.461-2.54%205.71-2.851%207.146-2.864h.198c1.436.013%204.685.323%207.146%202.864zm-7.244%204.328c-.284%200-.613.016-.962.05-.123.447-.305.85-.57%201.108-1.05%201.023-2.316%201.18-2.994%201.18-.638%200-1.306-.13-1.851-.464-.516.165-1.012.403-1.044.996a65.882%2065.882%200%2000-.063%202.884l-.002.48c-.002.563-.005%201.126-.013%201.69.002.326.204.63.51.765%202.482%201.102%204.83%201.657%206.99%201.657%202.156%200%204.504-.555%206.985-1.657a.854.854%200%2000.51-.766c.03-1.682.006-3.372-.076-5.053-.031-.596-.528-.83-1.046-.996-.546.333-1.212.464-1.85.464-.677%200-1.942-.157-2.993-1.18-.266-.258-.447-.661-.57-1.108-.32-.032-.64-.049-.96-.05zm-2.525%204.013c.539%200%20.976.426.976.95v1.753c0%20.525-.437.95-.976.95a.964.964%200%2001-.976-.95v-1.752c0-.525.437-.951.976-.951zm5%200c.539%200%20.976.426.976.95v1.753c0%20.525-.437.95-.976.95a.964.964%200%2001-.976-.95v-1.752c0-.525.437-.951.976-.951zM7.635%205.087c-1.05.102-1.935.438-2.385.906-.975%201.037-.765%203.668-.21%204.224.405.394%201.17.657%201.995.657h.09c.649-.013%201.785-.176%202.73-1.11.435-.41.705-1.433.675-2.47-.03-.834-.27-1.52-.63-1.813-.39-.336-1.275-.482-2.265-.394zm6.465.394c-.36.292-.6.98-.63%201.813-.03%201.037.24%202.06.675%202.47.968.957%202.136%201.104%202.776%201.11h.044c.825%200%201.59-.263%201.995-.657.555-.556.765-3.187-.21-4.224-.45-.468-1.335-.804-2.385-.906-.99-.088-1.875.058-2.265.394zM12%207.615c-.24%200-.525.015-.84.044.03.16.045.336.06.526l-.001.159a2.94%202.94%200%2001-.014.25c.225-.022.425-.027.612-.028h.366c.187%200%20.387.006.612.028-.015-.146-.015-.277-.015-.409.015-.19.03-.365.06-.526a9.29%209.29%200%2000-.84-.044z'%3e%3c/path%3e%3c/svg%3e`,at=f(``),ot=f(``);function st(e,n){let r=F(n,`size`,3,20),i={claude:Ye,codex:Xe,openai:Ze,opencode_go:Qe,opencode:Qe,xai:$e,grok:$e,antigravity:et,gemini:tt,google:tt,kimi:nt,qwen:rt,copilot:it},a=j(()=>i[n.provider]);var o=ot();let s,c;var u=l(o),d=e=>{var n=at();y(()=>{M(n,`src`,g(a)),M(n,`width`,r()),M(n,`height`,r())}),t(e,n)},f=e=>{Je(e,{get size(){return r()},strokeWidth:1.6})};m(u,e=>{g(a)?e(d):e(f,-1)}),k(o),y(()=>{s=Y(o,1,`provider-mark svelte-1vulm01`,null,s,{"light-mat":n.provider===`qwen`}),c=J(o,``,c,{width:`${r()??``}px`,height:`${r()??``}px`})}),t(e,o)}var ct={"common.save":`Save`,"common.cancel":`Cancel`,"common.close":`Close`,"common.import":`Import`,"common.retry":`Retry`,"common.connectAccount":`Connect an account`,"common.chooseOtherProvider":`Choose another provider`,"common.searchAccount":`Search accounts`,"common.noAccountConnected":`No account connected`,"common.noMatchingAccount":`No matching account`,"common.tryOtherName":`Try another name or provider.`,"common.enable":`Enable {name}`,"common.disabled":`Disabled`,"common.verifyGoogle":`Verify the Google account`,"common.openAntigravity":`Open Antigravity with this account to finish verification.`,"common.percent":`{value}%`,"common.accountCount.one":`{count} account`,"common.accountCount.other":`{count} accounts`,"common.copyRefused":`Copy unavailable. Select the text to copy it.`,"nav.subscriptions":`Subscriptions`,"nav.quotas":`Quotas`,"nav.overview":`Overview`,"nav.accounts":`Accounts`,"nav.models":`Models`,"nav.service":`Service`,"nav.activity":`Requests`,"nav.settings":`Settings`,"nav.quickstart":`Quick start`,"nav.main":`Main navigation`,"nav.mobile":`Mobile navigation`,"nav.openMenu":`Open menu`,"nav.closeMenu":`Close menu`,"nav.menu":`Menu`,"nav.setupTool":`Set up a tool`,"page.description":`Manage your subscriptions, their quotas and your tools' requests.`,"page.loading":`Loading your subscriptions...`,"page.dismissNotice":`Dismiss notification`,"page.settingsUnavailable":`Settings will be available once the server responds.`,"notice.displaySaved":`Boite display saved.`,"notice.windowsSaved":`Windows shown in Boite saved.`,"notice.busy":`Another action is in progress.`,"notice.endpointSaved":`Endpoint saved.`,"notice.reserveRemoved":`Reserve removed.`,"notice.reserveSaved":`Reserve saved.`,"notice.fileTooLarge":`{name} is over the 2 MB limit.`,"notice.invalidJson":`{name}: the file must contain valid JSON.`,"notice.partialImport":`{count} account(s) imported. {errors}`,"notice.nothingImported":`The file added no accounts.`,"notice.imported":`Accounts imported.`,"notice.accountDisabled":`Account disabled.`,"notice.accountEnabled":`Account enabled.`,"notice.accountDeleted":`Account deleted.`,"notice.settingsSaved":`Settings saved.`,"notice.modelUpdated":`Model updated.`,"notice.accountConnected":`Account connected.`,"notice.partialRestore":`{count} account(s) restored. {errors}`,"notice.restored.one":`{count} account restored.`,"notice.restored.other":`{count} accounts restored.`,"api.serverStatus":`The server returned {status}.`,"api.errorPrefix":`{name}: {error}`,"private.account":`account`,"status.active":`Active`,"status.exhausted":`Quota used up`,"status.cooldown":`Paused`,"status.expired":`Sign-in expired`,"status.check":`Needs checking`,"status.reserveReached":`Reserve reached`,"date.unknown":`Date not reported`,"credit.unknown":`Not reported`,"credit.credits":`credits`,"usage.weekly":`Weekly`,"usage.monthly":`Monthly`,"usage.fiveHours":`5 hours`,"usage.extra":`Extra usage`,"usage.codexCredits":`Codex credits`,"usage.creditBalance":`Credit balance`,"usage.premiumRequests":`Premium requests`,"usage.chat":`Chat`,"usage.completions":`Completions`,"dialect.client":`Same as the client`,"reserveWindow.five-hour":`5 h`,"reserveWindow.daily":`Day`,"reserveWindow.weekly":`Week`,"reserveWindow.monthly":`Month`,"provider.openaiCompatible":`OpenAI-compatible`,"accounts.title":`Accounts`,"accounts.dropLabel":`Drop auth files`,"accounts.drop":`Drop your JSON files to import accounts`,"accounts.emptyDescription":`Connect a subscription or import its JSON file.`,"accounts.colAccount":`Account`,"accounts.colSubscription":`Subscription`,"accounts.colStatus":`Status`,"accounts.colReserve":`Reserve`,"accounts.colVerified":`Quotas checked`,"accounts.colActions":`Actions`,"accounts.verifiedPrefix":`Quotas checked: `,"accounts.notVerified":`Not checked`,"accounts.delete":`Delete {name}`,"accounts.deleteTitle":`Delete this account`,"accounts.deleteConfirm":`Delete this account from douane?`,"accounts.deleteButton":`Delete`,"name.invalid":`Enter a name of 1 to 120 characters.`,"name.input":`New account name`,"name.save":`Save name`,"name.cancel":`Cancel rename`,"name.rename":`Rename this account`,"reserve.notSaved":`The reserve was not saved.`,"reserve.invalid":`Enter a percentage from 0 to 99.`,"reserve.keepAtLeast":`Keep at least`,"reserve.input":`Minimum reserve in percent`,"reserve.save":`Save reserve`,"reserve.watched":`Watched limits`,"reserve.longestTitle":`The account's longest limit (month or week)`,"reserve.longest":`Longest`,"reserve.remove":`Remove reserve`,"reserve.titleWatched":`Douane stops using this account when one of these limits reaches this level: {windows}`,"reserve.titleLongest":`Douane stops using this account when its longest quota (month or week) reaches this level`,"reserve.add":`Add a reserve`,"reserve.label":`Reserve {percent}%`,"reserve.reached":`Reserve reached: douane no longer uses this account until the reset.`,"reserve.inactiveWindows":`Inactive: this account does not report these limits.`,"reserve.inactiveAccount":`Inactive: this provider does not report a quota for the whole account.`,"resets.reset":`Quota reset.`,"resets.alreadyRedeemed":`This reset was already applied.`,"resets.nothingToReset":`The quota is already available. No reset used.`,"resets.noCredit":`No reset available.`,"resets.unconfirmed":`The server did not confirm the reset result.`,"resets.resume":`Resume reset`,"resets.button":`Reset ({count})`,"resets.checking":`Checking resets`,"resets.none":`0 resets available`,"resets.check":`Check resets`,"resets.title":`Reset quota`,"resets.closeConfirmation":`Close confirmation`,"resets.warning":`This uses 1 reset to restore the account's quota. It cannot be undone.`,"resets.expiresFirst":`The reset that expires on {date} is used first.`,"resets.pending":`An attempt is waiting for confirmation. Retrying checks the same operation.`,"resets.running":`Resetting`,"resets.retrySame":`Retry the same reset`,"resets.use":`Use 1 reset`,"connect.copyRefused":`The browser refused the copy. Select the code to copy it.`,"connect.waiting":`Waiting for authorization. The connection is checked automatically.`,"connect.expired":`This connection expired. Choose the provider to start again.`,"connect.refused":`The provider refused the connection. Start again to retry.`,"connect.exchanging":`Authorization received, connecting the account.`,"connect.stillWaiting":`The connection is still waiting for your authorization.`,"connect.unconfirmed":`The server did not confirm the new account.`,"connect.notAdded":`The account was not added.`,"connect.subtitle":`Add a subscription to douane.`,"connect.success":`Account connected`,"connect.successText":`Your subscription is now available in douane.`,"connect.viewAccounts":`View my accounts`,"connect.googleVerify":`Google asks you to verify this account before connecting.`,"connect.afterVerify":`Once verification is done, start the connection again.`,"connect.restart":`Start again`,"connect.antigravityTitle":`Antigravity setup incomplete`,"connect.antigravityProject":`The Google sign-in worked, but Google did not provide the project this account needs.`,"connect.antigravityFirstUse":`If this is the first use, open the Antigravity app with this account and finish onboarding. If Antigravity also refuses the sign-in, follow Google's message.`,"connect.antigravityGuide":`Open the Antigravity guide`,"connect.enterCode":`Open the {provider} page and enter this code to authorize the connection.`,"connect.copyCode":`Copy code`,"connect.authorize":`Open the provider's page and authorize the connection.`,"connect.open":`Open sign-in`,"connect.callbackHint":`If the redirect to localhost does not load, copy its full URL. Claude can also show a code to paste here.`,"connect.callbackLabel":`Redirect URL or sign-in code`,"connect.callbackPlaceholder":`Redirect URL or code#state`,"connect.finish":`Finish connecting`,"connect.check":`Check connection`,"connect.customIntro1":`An API key becomes a model prefix: with `,"connect.customIntro2":`, its models are called `,"connect.customModel":`deepseek/model-name`,"connect.customIntro3":`. Several keys under the same prefix take turns. The key leaves this form once saved.`,"connect.name":`Name`,"connect.addEndpoint":`Add endpoint`,"connect.tokenIntro":`Add your subscription's access token. It leaves this form once saved.`,"connect.accountName":`Account name`,"connect.accountNamePlaceholder":`My subscription`,"connect.token":`Access token`,"connect.providerUrl":`Provider URL`,"connect.providerUrlPlaceholder":`https://your-provider/v1`,"connect.addAccount":`Add account`,"connect.oauthOption":`Connect my subscription`,"connect.apiKeyOption":`Add an API key`,"connect.tokenOption":`Add a token`,"connect.noProvider":`No provider available. Import an auth file to add an account.`,"connect.haveFile":`Already have a file?`,"connect.importFiles":`Import one or more JSON auth files.`,"connect.pending":`Connecting...`,"endpoint.route":`Model prefix`,"endpoint.url":`API URL`,"endpoint.format":`API format`,"endpoint.key":`API key`,"endpoint.models":`Served models`,"endpoint.modelsPlaceholder":`All models from the API`,"endpoint.newKey":`New API key`,"endpoint.unchanged":`Unchanged`,"endpoint.edit":`Edit endpoint`,"email.hide":`Hide this email`,"email.show":`Show this email`,"meter.left":`Quota left`,"meter.unavailable":`Unavailable`,"meter.valueLeft":`{value}% left`,"quotas.refresh":`Refresh quotas`,"quotas.filter":`Filter by provider`,"quotas.all":`All`,"quotas.search":`Search`,"quotas.sort":`Sort accounts`,"quotas.byName":`By name`,"quotas.byRemaining":`Quota left`,"quotas.emptyDescription":`Connect a subscription to see its quotas.`,"quotas.group":`{provider} quotas`,"quotas.displayTitle":`How {provider} quotas show in Boite and /v1/quotas clients`,"quotas.displayLabel":`In Boite / clients`,"quotas.perAccount":`Per account`,"quotas.average":`Account average`,"quotas.windowsTitle":`{provider} quota windows shown in Boite`,"quotas.windows":`Windows`,"quotas.windowsLabel":`{provider} windows in Boite`,"quotas.primary":`Main`,"quotas.makePrimary":`Make main`,"quotas.showWindow":`Show {label} in Boite`,"quotas.noWindow":`No window read for this provider.`,"quotas.defaultWindow":`Without a main window, Boite highlights the weekly one.`,"quotas.googleVerify":`Google asks you to verify this account.`,"quotas.resetAt":`Resets: {date}`,"quotas.notReported":`Quota not reported`,"quotas.unlimited":`Unlimited`,"quotas.remaining":`left`,"quotas.used":`{used} used`,"quotas.usedOf":`{used} used of {limit}`,"quotas.refreshAccount":`Refresh this account`,"quotas.refreshNamed":`Refresh {name}`,"overview.description":`Activity across your subscriptions`,"overview.connected":`Service connected`,"overview.disconnected":`Connection unavailable`,"overview.activeAccounts":`Active accounts`,"overview.ofAccounts":`of {count} accounts`,"overview.requests":`Requests`,"overview.inFlight":`{count} in progress`,"overview.tokens":`Tokens exchanged`,"overview.tokensDetail":`input and output`,"overview.cache":`Cache read`,"overview.cacheDetail":`tokens reused`,"overview.success":`Successful requests`,"overview.errors":`{count} errors`,"overview.recent":`Recent activity`,"overview.recentDescription":`The latest requests douane handled`,"overview.viewAll":`View all`,"overview.emptyTitle":`Your activity will show here`,"overview.emptyDescription":`Connect an account, then send a first request from your tool.`,"overview.openQuickstart":`Open quick start`,"table.model":`Model`,"table.provider":`Provider`,"table.time":`Time`,"table.status":`Status`,"table.duration":`Duration`,"table.id":`ID`,"table.context":`Context`,"table.available":`Available`,"table.modelAccount":`Model and account`,"table.tokens":`Tokens`,"table.error":`Error`,"models.description":`Models available with your accounts`,"models.count":`{count} models`,"models.endpoint":`OpenAI-compatible URL`,"models.search":`Search models`,"models.emptyTitle":`No model available`,"models.emptyDescription":`Add an account to load its subscription's models.`,"models.addAccount":`Add an account`,"models.noMatchTitle":`No matching model`,"models.noMatchDescription":`Try another model or provider name.`,"activity.title":`Request log`,"activity.description":`Each call, its account and its usage`,"activity.count":`Last {count} requests`,"activity.onlyErrors":`Show errors only`,"activity.search":`Search requests`,"activity.searchPlaceholder":`Model, account or provider`,"activity.noMatchTitle":`No matching request`,"activity.emptyTitle":`No requests yet`,"activity.noMatchDescription":`Change your search or the error filter.`,"activity.emptyDescription":`Your tools' calls will show here with their real result.`,"activity.unknownAccount":`Account not reported`,"quickstart.chooseTool":`Choose a tool`,"quickstart.openAccounts":`Open accounts`,"quickstart.baseUrl":`Base URL`,"quickstart.copyUrl":`Copy URL`,"quickstart.openaiHint1":`Pick your tool's OpenAI-compatible mode. As its API key, enter a client key `,"quickstart.openaiHint2":` from the Clients page.`,"quickstart.chooseModel":`Choose a model`,"quickstart.powershell":`Run these commands in PowerShell.`,"quickstart.copyClaude":`Copy the Claude Code setup`,"quickstart.claudeHint":`Replace dk_... with a client key from the Clients page. Claude Code will send its requests through the connected Claude account.`,"quickstart.connectClaude":`Connect a Claude account`,"strategy.round-robin.label":`Round robin`,"strategy.round-robin.desc":`Each active account takes requests in turn.`,"strategy.fill-first.label":`Use up one account`,"strategy.fill-first.desc":`Uses the first available account before moving to the next.`,"strategy.reset-first.label":`Nearest reset`,"strategy.reset-first.desc":`Uses the account whose weekly quota resets first. The others serve only when it is unavailable.`,"strategy.smart.label":`Smart split`,"strategy.smart.desc":`Within 48 h of the reset, 90% of new conversations use this account until it runs out.`,"settings.sessionNote":`A conversation keeps its account while it stays available. With Nearest reset, it returns to the account with the nearest reset as soon as that account is available.`,"settings.routing":`Request routing`,"settings.routingDescription":`The default rule applies to providers without their own choice. Each choice saves on click.`,"settings.perProvider":`Per provider`,"settings.perProviderDescription":`Adjust routing for each of your subscriptions.`,"settings.defaultRule":`Default rule`,"settings.noProviders":`Providers will show once the service is connected.`,"settings.refresh":`Refresh and timeouts`,"settings.refreshDescription":`Quotas and account selection are recomputed after each refresh.`,"settings.refreshEvery":`Refresh quotas every`,"settings.seconds":`seconds`,"settings.timeout":`Request timeout`,"settings.defaultProvider":`Default provider`,"settings.weekEnd":`End of the week`,"settings.weekEndDescription":`Before an account's weekly reset, its reserve and client shares stop applying, so what is left gets used. 0 keeps them to the end.`,"settings.freeBefore":`Lift limits before the reset`,"settings.hours":`hours`,"settings.autoProvider":`Automatic selection`,"settings.saving":`Saving...`,"settings.save":`Save settings`,"settings.language":`Language`,"settings.languageDescription":`Language of this dashboard, saved in this browser.`,"settings.languageAuto":`Automatic`,"settings.languageEnglish":`English`,"settings.languageFrench":`Franรงais`,"backup.title":`Backup`,"backup.description":`Move this configuration to another douane: settings, disabled models and every account.`,"backup.warning":`The file holds live sign-ins and keys. Refresh tokens rotate, so an account works in one douane at a time: after a restore, remove it here. Keep the file private.`,"backup.export":`Export`,"backup.exporting":`Exporting...`,"backup.restore":`Restore`,"backup.restoring":`Restoring...`,"backup.confirm.one":`{name} holds {count} account. Accounts already here are updated, the others are added.`,"backup.confirm.other":`{name} holds {count} accounts. Accounts already here are updated, the others are added.`,"backup.withSettings":`Also apply its settings and disabled models`,"backup.confirmButton":`Restore accounts`,"backup.notExport":`{name} is not a douane export.`,"backup.tooLarge":`{name} is over the 32 MB limit.`,"nav.clients":`Clients`,"clients.enforcedInfo":`Every call needs a client key, so each call is counted for its client.`,"clients.keys":`Keys and limits`,"stats.title":`Consumption`,"stats.info":`Calls and tokens of each client, from the request log. Tokens count input, cache reads included, and output.`,"stats.period":`Period`,"stats.day":`24 h`,"stats.week":`7 days`,"stats.month":`30 days`,"stats.tokens":`Tokens`,"stats.calls":`Calls`,"stats.activeClients":`Active clients`,"stats.errors":`Errors`,"stats.chart":`Tokens by client over the period`,"stats.none":`No call`,"stats.tokensUnit":`tokens`,"stats.callsUnit":`calls`,"stats.cache":`cache {value}%`,"stats.cacheInfo":`Share of input tokens read from the prompt cache`,"stats.errorCount":`{count} errors`,"stats.noError":`no error`,"stats.idle":`No call over this period`,"stats.model":`Model`,"stats.input":`Input`,"stats.output":`Output`,"stats.cacheRead":`Cache read`,"stats.latency":`Avg. time`,"stats.empty":`No call over this period.`,"clients.title":`Clients`,"clients.new":`New client`,"clients.enforced":`Keys required`,"clients.emptyTitle":`No client yet`,"clients.emptyDescription":`douane refuses every call until a client exists. Give each Boite or tool its own key, the accounts it may use and, if you want, its share of each quota.`,"clients.allAccounts":`All accounts`,"clients.allAccountsHint":`Accounts connected later included`,"clients.noAccess":`No account`,"clients.noShare":`Common part only`,"clients.createdAt":`Created {date}`,"clients.ofShare":`{used} / {share}%`,"clients.highest":`Highest account: {name}`,"clients.notMeasured":`Not measured yet`,"clients.rotate":`New key`,"clients.rotateNamed":`New key for {name}`,"clients.delete":`Delete`,"clients.deleteNamed":`Delete {name}`,"clients.breakdown":`Breakdown`,"clients.breakdownInfo":`Each rise of a window goes to the clients whose calls ended on that account, weighted by tokens. A rise no call through douane explains counts as outside douane.`,"clients.breakdownEmpty":`No window measured since the first client.`,"clients.noKey":`Without key`,"clients.former":`Deleted clients`,"clients.outside":`Outside douane`,"clients.unexplained":`Unattributed`,"clients.used":`{value}% used`,"clients.editTitle":`Edit {name}`,"clients.name":`Name`,"clients.namePlaceholder":`Desktop`,"clients.access":`Accounts`,"clients.wholePool":`Every {pool} account, later ones included`,"clients.shares":`Quota shares`,"clients.sharesInfo":`A share reserves this percent of each window (5 h, day, week, month) of every account of the provider. An unused share frees up in the last seventh of the window. What no share covers is common to every client.`,"clients.shareOf":`Share of {pool}`,"clients.common":`Common {value}%`,"clients.overbooked":`Over 100%`,"clients.noPool":`Choose accounts first.`,"clients.shareInvalid":`A share is a number above 0 and at most 100.`,"clients.pickAccess":`Choose at least one account.`,"clients.create":`Create`,"clients.keyTitle":`Key for {name}`,"clients.keyOnce":`Shown once. Copy it now.`,"clients.keyBoite":`Paste it in Boite: Settings, subscription proxy, key.`,"clients.copyKey":`Copy`,"clients.copied":`Copied`,"clients.rotateTitle":`New key for {name}?`,"clients.rotateText":`The current key stops working at once. Paste the new one in the tool that uses it.`,"clients.rotateButton":`Replace the key`,"clients.deleteTitle":`Delete {name}?`,"clients.deleteText":`Calls with its key are refused.`,"clients.deleteLast":`It is the last client: douane will refuse every call until you create another.`,"clients.deleteButton":`Delete`,"notice.clientCreated":`Client created.`,"notice.clientSaved":`Client saved.`,"notice.clientDeleted":`Client deleted.`,"notice.keyReplaced":`Key replaced.`,"activity.client":`Client {name}`,"quickstart.keyRequired":`No client yet: create one on the Clients page first. douane refuses every call without a client key.`},lt={"common.save":`Enregistrer`,"common.cancel":`Annuler`,"common.close":`Fermer`,"common.import":`Importer`,"common.retry":`Rรฉessayer`,"common.connectAccount":`Connecter un compte`,"common.chooseOtherProvider":`Choisir un autre fournisseur`,"common.searchAccount":`Rechercher un compte`,"common.noAccountConnected":`Aucun compte connectรฉ`,"common.noMatchingAccount":`Aucun compte correspondant`,"common.tryOtherName":`Essayez un autre nom ou fournisseur.`,"common.enable":`Activer {name}`,"common.disabled":`Dรฉsactivรฉ`,"common.verifyGoogle":`Vรฉrifier le compte Google`,"common.openAntigravity":`Ouvrez Antigravity avec ce compte pour terminer la vรฉrification.`,"common.percent":`{value} %`,"common.accountCount.one":`{count} compte`,"common.accountCount.other":`{count} comptes`,"common.copyRefused":`Copie indisponible. Sรฉlectionnez le texte pour le copier.`,"nav.subscriptions":`Abonnements`,"nav.quotas":`Quotas`,"nav.overview":`Vue d'ensemble`,"nav.accounts":`Comptes`,"nav.models":`Modรจles`,"nav.service":`Service`,"nav.activity":`Requรชtes`,"nav.settings":`Rรฉglages`,"nav.quickstart":`Dรฉmarrage rapide`,"nav.main":`Navigation principale`,"nav.mobile":`Navigation mobile`,"nav.openMenu":`Ouvrir le menu`,"nav.closeMenu":`Fermer le menu`,"nav.menu":`Menu`,"nav.setupTool":`Configurer un outil`,"page.description":`Gรฉrez vos abonnements, leurs quotas et les requรชtes de vos outils.`,"page.loading":`Chargement de vos abonnements...`,"page.dismissNotice":`Fermer la notification`,"page.settingsUnavailable":`Les rรฉglages seront disponibles lorsque le serveur rรฉpondra.`,"notice.displaySaved":`Affichage dans Boite enregistrรฉ.`,"notice.windowsSaved":`Fenรชtres affichรฉes dans Boite enregistrรฉes.`,"notice.busy":`Une action est dรฉjร  en cours.`,"notice.endpointSaved":`Endpoint enregistrรฉ.`,"notice.reserveRemoved":`Rรฉserve retirรฉe.`,"notice.reserveSaved":`Rรฉserve enregistrรฉe.`,"notice.fileTooLarge":`{name} dรฉpasse la limite de 2 Mo.`,"notice.invalidJson":`{name} : le fichier doit contenir du JSON valide.`,"notice.partialImport":`{count} compte(s) importรฉ(s). {errors}`,"notice.nothingImported":`Le fichier n'a ajoutรฉ aucun compte.`,"notice.imported":`Comptes importรฉs.`,"notice.accountDisabled":`Compte dรฉsactivรฉ.`,"notice.accountEnabled":`Compte activรฉ.`,"notice.accountDeleted":`Compte supprimรฉ.`,"notice.settingsSaved":`Rรฉglages enregistrรฉs.`,"notice.modelUpdated":`Modรจle mis ร  jour.`,"notice.accountConnected":`Compte connectรฉ.`,"notice.partialRestore":`{count} compte(s) restaurรฉ(s). {errors}`,"notice.restored.one":`{count} compte restaurรฉ.`,"notice.restored.other":`{count} comptes restaurรฉs.`,"api.serverStatus":`Le serveur a rรฉpondu {status}.`,"api.errorPrefix":`{name} : {error}`,"private.account":`compte`,"status.active":`Actif`,"status.exhausted":`Quota รฉpuisรฉ`,"status.cooldown":`En pause`,"status.expired":`Connexion expirรฉe`,"status.check":`ร€ vรฉrifier`,"status.reserveReached":`Rรฉserve atteinte`,"date.unknown":`Date non communiquรฉe`,"credit.unknown":`Non communiquรฉ`,"credit.credits":`crรฉdits`,"usage.weekly":`Semaine`,"usage.monthly":`Mois`,"usage.fiveHours":`5 heures`,"usage.extra":`Usage supplรฉmentaire`,"usage.codexCredits":`Crรฉdits Codex`,"usage.creditBalance":`Solde des crรฉdits`,"usage.premiumRequests":`Requรชtes premium`,"usage.chat":`Chat`,"usage.completions":`Complรฉtions`,"dialect.client":`Celui du client`,"reserveWindow.five-hour":`5 h`,"reserveWindow.daily":`Jour`,"reserveWindow.weekly":`Semaine`,"reserveWindow.monthly":`Mois`,"provider.openaiCompatible":`Compatible OpenAI`,"accounts.title":`Comptes`,"accounts.dropLabel":`Dรฉposer des fichiers d'authentification`,"accounts.drop":`Dรฉposez vos fichiers JSON pour importer des comptes`,"accounts.emptyDescription":`Connectez un abonnement ou importez son fichier JSON.`,"accounts.colAccount":`Compte`,"accounts.colSubscription":`Abonnement`,"accounts.colStatus":`ร‰tat`,"accounts.colReserve":`Rรฉserve`,"accounts.colVerified":`Quotas vรฉrifiรฉs`,"accounts.colActions":`Actions`,"accounts.verifiedPrefix":`Quotas vรฉrifiรฉs : `,"accounts.notVerified":`Non vรฉrifiรฉs`,"accounts.delete":`Supprimer {name}`,"accounts.deleteTitle":`Supprimer ce compte`,"accounts.deleteConfirm":`Supprimer ce compte de douane ?`,"accounts.deleteButton":`Supprimer`,"name.invalid":`Saisissez un nom de 1 ร  120 caractรจres.`,"name.input":`Nouveau nom du compte`,"name.save":`Enregistrer le nom`,"name.cancel":`Annuler le renommage`,"name.rename":`Renommer ce compte`,"reserve.notSaved":`La rรฉserve n'a pas รฉtรฉ enregistrรฉe.`,"reserve.invalid":`Saisissez un pourcentage entre 0 et 99.`,"reserve.keepAtLeast":`Garder au moins`,"reserve.input":`Rรฉserve minimale en pourcentage`,"reserve.save":`Enregistrer la rรฉserve`,"reserve.watched":`Limites surveillรฉes`,"reserve.longestTitle":`La limite la plus longue du compte (mois ou semaine)`,"reserve.longest":`Plus longue`,"reserve.remove":`Retirer la rรฉserve`,"reserve.titleWatched":`Douane cesse d'utiliser ce compte quand une de ces limites atteint ce seuil : {windows}`,"reserve.titleLongest":`Douane cesse d'utiliser ce compte quand son quota le plus long (mois ou semaine) atteint ce seuil`,"reserve.add":`Ajouter une rรฉserve`,"reserve.label":`Rรฉserve {percent} %`,"reserve.reached":`Rรฉserve atteinte : douane n'utilise plus ce compte jusqu'ร  la rรฉinitialisation.`,"reserve.inactiveWindows":`Inactive : ce compte ne communique pas ces limites.`,"reserve.inactiveAccount":`Inactive : ce fournisseur ne communique pas de quota pour l'ensemble du compte.`,"resets.reset":`Quota rรฉinitialisรฉ.`,"resets.alreadyRedeemed":`Ce reset a dรฉjร  รฉtรฉ appliquรฉ.`,"resets.nothingToReset":`Le quota est dรฉjร  disponible. Aucun reset utilisรฉ.`,"resets.noCredit":`Aucun reset disponible.`,"resets.unconfirmed":`Le serveur nโ€™a pas confirmรฉ le rรฉsultat du reset.`,"resets.resume":`Reprendre le reset`,"resets.button":`Rรฉinitialiser ({count})`,"resets.checking":`Vรฉrification des resets`,"resets.none":`0 reset disponible`,"resets.check":`Vรฉrifier les resets`,"resets.title":`Rรฉinitialiser le quota`,"resets.closeConfirmation":`Fermer la confirmation`,"resets.warning":`Cette action consomme 1 reset pour rรฉtablir le quota du compte. Elle est irrรฉversible.`,"resets.expiresFirst":`Le reset qui expire le {date} sera utilisรฉ en premier.`,"resets.pending":`Une tentative est en attente de confirmation. Rรฉessayer vรฉrifie la mรชme opรฉration.`,"resets.running":`Rรฉinitialisation en cours`,"resets.retrySame":`Rรฉessayer le mรชme reset`,"resets.use":`Utiliser 1 reset`,"connect.copyRefused":`Copie refusรฉe par le navigateur. Sรฉlectionnez le code pour le copier.`,"connect.waiting":`En attente d'autorisation. La connexion est vรฉrifiรฉe automatiquement.`,"connect.expired":`Cette connexion a expirรฉ. Choisissez le fournisseur pour recommencer.`,"connect.refused":`Le fournisseur a refusรฉ la connexion. Recommencez pour rรฉessayer.`,"connect.exchanging":`Autorisation reรงue, connexion du compte en cours.`,"connect.stillWaiting":`La connexion attend encore votre autorisation.`,"connect.unconfirmed":`Le serveur n'a pas confirmรฉ l'ajout du compte.`,"connect.notAdded":`Le compte n'a pas รฉtรฉ ajoutรฉ.`,"connect.subtitle":`Ajoutez un abonnement ร  douane.`,"connect.success":`Compte connectรฉ`,"connect.successText":`Votre abonnement est maintenant disponible dans douane.`,"connect.viewAccounts":`Voir mes comptes`,"connect.googleVerify":`Google demande de vรฉrifier ce compte avant la connexion.`,"connect.afterVerify":`Une fois la vรฉrification terminรฉe, recommencez la connexion.`,"connect.restart":`Recommencer la connexion`,"connect.antigravityTitle":`Activation Antigravity incomplรจte`,"connect.antigravityProject":`La connexion Google a rรฉussi, mais Google n'a pas fourni le projet nรฉcessaire ร  ce compte.`,"connect.antigravityFirstUse":`Pour une premiรจre utilisation, ouvrez l'application Antigravity avec ce compte et terminez l'accueil. Si Antigravity refuse aussi la connexion, suivez le message affichรฉ par Google.`,"connect.antigravityGuide":`Ouvrir le guide Antigravity`,"connect.enterCode":`Ouvrez la page {provider} et saisissez ce code pour autoriser la connexion.`,"connect.copyCode":`Copier le code`,"connect.authorize":`Ouvrez la page du fournisseur et autorisez la connexion.`,"connect.open":`Ouvrir la connexion`,"connect.callbackHint":`Si le retour vers localhost ne charge pas, copiez son URL complรจte. Claude peut aussi afficher un code ร  coller ici.`,"connect.callbackLabel":`URL de retour ou code de connexion`,"connect.callbackPlaceholder":`URL de retour ou code#state`,"connect.finish":`Terminer la connexion`,"connect.check":`Vรฉrifier la connexion`,"connect.customIntro1":`Une clรฉ d'API devient un prรฉfixe de modรจles : avec `,"connect.customIntro2":`, ses modรจles s'appellent `,"connect.customModel":`deepseek/nom-du-modรจle`,"connect.customIntro3":`. Plusieurs clรฉs sous le mรชme prรฉfixe tournent entre elles. La clรฉ disparaรฎt de ce formulaire aprรจs l'enregistrement.`,"connect.name":`Nom`,"connect.addEndpoint":`Ajouter l'endpoint`,"connect.tokenIntro":`Ajoutez le jeton de connexion de votre abonnement. Il disparaรฎt de ce formulaire aprรจs l'enregistrement.`,"connect.accountName":`Nom du compte`,"connect.accountNamePlaceholder":`Mon abonnement`,"connect.token":`Jeton de connexion`,"connect.providerUrl":`Adresse du fournisseur`,"connect.providerUrlPlaceholder":`https://votre-fournisseur/v1`,"connect.addAccount":`Ajouter le compte`,"connect.oauthOption":`Connecter mon abonnement`,"connect.apiKeyOption":`Ajouter une clรฉ d'API`,"connect.tokenOption":`Ajouter un jeton`,"connect.noProvider":`Aucun fournisseur disponible. Importez un fichier d'authentification pour ajouter un compte.`,"connect.haveFile":`Vous avez dรฉjร  un fichier ?`,"connect.importFiles":`Importez un ou plusieurs fichiers d'authentification JSON.`,"connect.pending":`Connexion en cours...`,"endpoint.route":`Prรฉfixe des modรจles`,"endpoint.url":`Adresse de l'API`,"endpoint.format":`Format de l'API`,"endpoint.key":`Clรฉ d'API`,"endpoint.models":`Modรจles servis`,"endpoint.modelsPlaceholder":`Tous les modรจles de l'API`,"endpoint.newKey":`Nouvelle clรฉ d'API`,"endpoint.unchanged":`Inchangรฉe`,"endpoint.edit":`Modifier l'endpoint`,"email.hide":`Masquer cet email`,"email.show":`Afficher cet email`,"meter.left":`Quota restant`,"meter.unavailable":`Indisponible`,"meter.valueLeft":`{value} % restants`,"quotas.refresh":`Actualiser les quotas`,"quotas.filter":`Filtrer par fournisseur`,"quotas.all":`Tous`,"quotas.search":`Rechercher`,"quotas.sort":`Trier les comptes`,"quotas.byName":`Par nom`,"quotas.byRemaining":`Quota restant`,"quotas.emptyDescription":`Connectez un abonnement pour afficher ses quotas.`,"quotas.group":`Quotas {provider}`,"quotas.displayTitle":`Affichage des quotas {provider} dans Boite et les clients de /v1/quotas`,"quotas.displayLabel":`Dans Boite / les clients`,"quotas.perAccount":`Dรฉtail par compte`,"quotas.average":`Moyenne des comptes`,"quotas.windowsTitle":`Fenรชtres de quota {provider} montrรฉes dans Boite`,"quotas.windows":`Fenรชtres`,"quotas.windowsLabel":`Fenรชtres {provider} dans Boite`,"quotas.primary":`Principale`,"quotas.makePrimary":`Rendre principale`,"quotas.showWindow":`Afficher {label} dans Boite`,"quotas.noWindow":`Aucune fenรชtre lue pour ce fournisseur.`,"quotas.defaultWindow":`Sans fenรชtre principale, Boite met la semaine en avant.`,"quotas.googleVerify":`Google demande de vรฉrifier ce compte.`,"quotas.resetAt":`Rรฉinitialisation : {date}`,"quotas.notReported":`Quota non communiquรฉ`,"quotas.unlimited":`Illimitรฉs`,"quotas.remaining":`restants`,"quotas.used":`{used} utilisรฉs`,"quotas.usedOf":`{used} utilisรฉs sur {limit}`,"quotas.refreshAccount":`Actualiser ce compte`,"quotas.refreshNamed":`Actualiser {name}`,"overview.description":`L'activitรฉ de vos abonnements`,"overview.connected":`Service connectรฉ`,"overview.disconnected":`Connexion indisponible`,"overview.activeAccounts":`Comptes actifs`,"overview.ofAccounts":`sur {count} comptes`,"overview.requests":`Requรชtes`,"overview.inFlight":`{count} en cours`,"overview.tokens":`Tokens รฉchangรฉs`,"overview.tokensDetail":`entrรฉe et sortie`,"overview.cache":`Cache relu`,"overview.cacheDetail":`tokens rรฉutilisรฉs`,"overview.success":`Requรชtes rรฉussies`,"overview.errors":`{count} erreurs`,"overview.recent":`Activitรฉ rรฉcente`,"overview.recentDescription":`Les derniรจres requรชtes traitรฉes par douane`,"overview.viewAll":`Tout voir`,"overview.emptyTitle":`Votre activitรฉ apparaรฎtra ici`,"overview.emptyDescription":`Connectez un compte puis envoyez une premiรจre requรชte depuis votre outil.`,"overview.openQuickstart":`Ouvrir le dรฉmarrage rapide`,"table.model":`Modรจle`,"table.provider":`Fournisseur`,"table.time":`Heure`,"table.status":`Statut`,"table.duration":`Durรฉe`,"table.id":`Identifiant`,"table.context":`Contexte`,"table.available":`Disponible`,"table.modelAccount":`Modรจle et compte`,"table.tokens":`Tokens`,"table.error":`Erreur`,"models.description":`Les modรจles disponibles avec vos comptes`,"models.count":`{count} modรจles`,"models.endpoint":`Adresse compatible OpenAI`,"models.search":`Rechercher un modรจle`,"models.emptyTitle":`Aucun modรจle disponible`,"models.emptyDescription":`Ajoutez un compte pour charger les modรจles de son abonnement.`,"models.addAccount":`Ajouter un compte`,"models.noMatchTitle":`Aucun modรจle correspondant`,"models.noMatchDescription":`Essayez un autre nom de modรจle ou de fournisseur.`,"activity.title":`Journal des requรชtes`,"activity.description":`Chaque appel, son compte et sa consommation`,"activity.count":`{count} derniรจres requรชtes`,"activity.onlyErrors":`Afficher les erreurs seulement`,"activity.search":`Rechercher une requรชte`,"activity.searchPlaceholder":`Modรจle, compte ou fournisseur`,"activity.noMatchTitle":`Aucune requรชte correspondante`,"activity.emptyTitle":`Aucune requรชte pour le moment`,"activity.noMatchDescription":`Modifiez votre recherche ou le filtre des erreurs.`,"activity.emptyDescription":`Les appels de vos outils apparaรฎtront ici avec leur rรฉsultat rรฉel.`,"activity.unknownAccount":`Compte non communiquรฉ`,"quickstart.chooseTool":`Choisir un outil`,"quickstart.openAccounts":`Ouvrir les comptes`,"quickstart.baseUrl":`Adresse de base`,"quickstart.copyUrl":`Copier l'adresse`,"quickstart.openaiHint1":`Choisissez le mode compatible OpenAI de l'outil. Comme clรฉ d'API, entrez une clรฉ client `,"quickstart.openaiHint2":` de la page Clients.`,"quickstart.chooseModel":`Choisir un modรจle`,"quickstart.powershell":`Exรฉcutez ces commandes dans PowerShell.`,"quickstart.copyClaude":`Copier la configuration Claude Code`,"quickstart.claudeHint":`Remplacez dk_... par une clรฉ client de la page Clients. Claude Code enverra ses requรชtes via le compte Claude connectรฉ.`,"quickstart.connectClaude":`Connecter un compte Claude`,"strategy.round-robin.label":`Rotation`,"strategy.round-robin.desc":`Chaque compte actif reรงoit les requรชtes ร  tour de rรดle.`,"strategy.fill-first.label":`ร‰puiser un compte`,"strategy.fill-first.desc":`Utilise le premier compte disponible avant de passer au suivant.`,"strategy.reset-first.label":`Reset le plus proche`,"strategy.reset-first.desc":`Utilise le compte dont le quota hebdomadaire se rรฉinitialise en premier. Les autres servent seulement sโ€™il est indisponible.`,"strategy.smart.label":`Rรฉpartition intelligente`,"strategy.smart.desc":`ร€ moins de 48 h du reset, 90 % des nouvelles conversations utilisent ce compte jusquโ€™ร  รฉpuisement.`,"settings.sessionNote":`Une conversation garde son compte tant qu'il reste disponible. Avec Reset le plus proche, elle revient au compte dont le reset est le plus proche dรจs qu'il est disponible.`,"settings.routing":`Rรฉpartition des requรชtes`,"settings.routingDescription":`La rรจgle par dรฉfaut s'applique aux fournisseurs sans choix particulier. Chaque choix est enregistrรฉ dรจs le clic.`,"settings.perProvider":`Par fournisseur`,"settings.perProviderDescription":`Adaptez la rรฉpartition ร  chacun de vos abonnements.`,"settings.defaultRule":`Rรจgle par dรฉfaut`,"settings.noProviders":`Les fournisseurs apparaรฎtront lorsque le service sera connectรฉ.`,"settings.refresh":`Actualisation et dรฉlais`,"settings.refreshDescription":`Les quotas et la sรฉlection des comptes sont recalculรฉs aprรจs chaque actualisation.`,"settings.refreshEvery":`Actualiser les quotas toutes les`,"settings.seconds":`secondes`,"settings.timeout":`Dรฉlai maximal d'une requรชte`,"settings.defaultProvider":`Fournisseur par dรฉfaut`,"settings.weekEnd":`Fin de semaine`,"settings.weekEndDescription":`Avant le reset hebdomadaire d'un compte, sa rรฉserve et les parts des clients ne s'appliquent plus, pour que le reste serve. 0 les garde jusqu'au bout.`,"settings.freeBefore":`Lever les limites avant le reset`,"settings.hours":`heures`,"settings.autoProvider":`Sรฉlection automatique`,"settings.saving":`Enregistrement...`,"settings.save":`Enregistrer les rรฉglages`,"settings.language":`Langue`,"settings.languageDescription":`Langue de ce tableau de bord, enregistrรฉe dans ce navigateur.`,"settings.languageAuto":`Automatique`,"settings.languageEnglish":`English`,"settings.languageFrench":`Franรงais`,"backup.title":`Sauvegarde`,"backup.description":`Dรฉplacez cette configuration vers une autre douane : rรฉglages, modรจles dรฉsactivรฉs et tous les comptes.`,"backup.warning":`Le fichier contient des connexions et des clรฉs actives. Les jetons de renouvellement changent ร  chaque usage : un compte ne fonctionne que dans une douane ร  la fois. Aprรจs une restauration, retirez-le ici. Gardez le fichier privรฉ.`,"backup.export":`Exporter`,"backup.exporting":`Export...`,"backup.restore":`Restaurer`,"backup.restoring":`Restauration...`,"backup.confirm.one":`{name} contient {count} compte. Les comptes dรฉjร  prรฉsents sont mis ร  jour, les autres sont ajoutรฉs.`,"backup.confirm.other":`{name} contient {count} comptes. Les comptes dรฉjร  prรฉsents sont mis ร  jour, les autres sont ajoutรฉs.`,"backup.withSettings":`Appliquer aussi ses rรฉglages et modรจles dรฉsactivรฉs`,"backup.confirmButton":`Restaurer les comptes`,"backup.notExport":`{name} n'est pas un export douane.`,"backup.tooLarge":`{name} dรฉpasse la limite de 32 Mo.`,"nav.clients":`Clients`,"clients.enforcedInfo":`Chaque appel exige une clรฉ client, donc chaque appel est comptรฉ pour son client.`,"clients.keys":`Clรฉs et limites`,"stats.title":`Consommation`,"stats.info":`Appels et tokens de chaque client, tirรฉs du journal des requรชtes. Les tokens comptent lโ€™entrรฉe, lectures de cache comprises, et la sortie.`,"stats.period":`Pรฉriode`,"stats.day":`24 h`,"stats.week":`7 jours`,"stats.month":`30 jours`,"stats.tokens":`Tokens`,"stats.calls":`Appels`,"stats.activeClients":`Clients actifs`,"stats.errors":`Erreurs`,"stats.chart":`Tokens par client sur la pรฉriode`,"stats.none":`Aucun appel`,"stats.tokensUnit":`tokens`,"stats.callsUnit":`appels`,"stats.cache":`cache {value} %`,"stats.cacheInfo":`Part des tokens dโ€™entrรฉe lus dans le cache de prompt`,"stats.errorCount":`{count} erreurs`,"stats.noError":`aucune erreur`,"stats.idle":`Aucun appel sur la pรฉriode`,"stats.model":`Modรจle`,"stats.input":`Entrรฉe`,"stats.output":`Sortie`,"stats.cacheRead":`Cache lu`,"stats.latency":`Temps moyen`,"stats.empty":`Aucun appel sur la pรฉriode.`,"clients.title":`Clients`,"clients.new":`Nouveau client`,"clients.enforced":`Clรฉ obligatoire`,"clients.emptyTitle":`Aucun client`,"clients.emptyDescription":`douane refuse tout appel tant qu'aucun client n'existe. Donnez ร  chaque Boite ou outil sa clรฉ, les comptes qu'il peut utiliser et, si vous voulez, sa part de chaque quota.`,"clients.allAccounts":`Tous les comptes`,"clients.allAccountsHint":`Comptes connectรฉs plus tard compris`,"clients.noAccess":`Aucun compte`,"clients.noShare":`Part commune seulement`,"clients.createdAt":`Crรฉรฉ le {date}`,"clients.ofShare":`{used} / {share} %`,"clients.highest":`Compte le plus utilisรฉ : {name}`,"clients.notMeasured":`Pas encore mesurรฉ`,"clients.rotate":`Nouvelle clรฉ`,"clients.rotateNamed":`Nouvelle clรฉ pour {name}`,"clients.delete":`Supprimer`,"clients.deleteNamed":`Supprimer {name}`,"clients.breakdown":`Rรฉpartition`,"clients.breakdownInfo":`Chaque hausse d'une fenรชtre revient aux clients dont les appels ont fini sur ce compte, au prorata des tokens. Une hausse qu'aucun appel par douane n'explique compte comme hors douane.`,"clients.breakdownEmpty":`Aucune fenรชtre mesurรฉe depuis le premier client.`,"clients.noKey":`Sans clรฉ`,"clients.former":`Clients supprimรฉs`,"clients.outside":`Hors douane`,"clients.unexplained":`Non attribuรฉ`,"clients.used":`{value} % utilisรฉs`,"clients.editTitle":`Modifier {name}`,"clients.name":`Nom`,"clients.namePlaceholder":`PC fixe`,"clients.access":`Comptes`,"clients.wholePool":`Tous les comptes {pool}, futurs compris`,"clients.shares":`Parts de quota`,"clients.sharesInfo":`Une part rรฉserve ce pourcentage de chaque fenรชtre (5 h, jour, semaine, mois) de chaque compte du fournisseur. Une part inutilisรฉe se libรจre dans le dernier septiรจme de la fenรชtre. Ce qu'aucune part ne couvre est commun ร  tous les clients.`,"clients.shareOf":`Part de {pool}`,"clients.common":`Commun {value} %`,"clients.overbooked":`Plus de 100 %`,"clients.noPool":`Choisissez d'abord des comptes.`,"clients.shareInvalid":`Une part est un nombre supรฉrieur ร  0 et au plus 100.`,"clients.pickAccess":`Choisissez au moins un compte.`,"clients.create":`Crรฉer`,"clients.keyTitle":`Clรฉ de {name}`,"clients.keyOnce":`Affichรฉe une seule fois. Copiez-la maintenant.`,"clients.keyBoite":`Collez-la dans Boite : Rรฉglages, proxy d'abonnements, clรฉ.`,"clients.copyKey":`Copier`,"clients.copied":`Copiรฉe`,"clients.rotateTitle":`Nouvelle clรฉ pour {name} ?`,"clients.rotateText":`La clรฉ actuelle cesse de fonctionner tout de suite. Collez la nouvelle dans l'outil qui l'utilise.`,"clients.rotateButton":`Remplacer la clรฉ`,"clients.deleteTitle":`Supprimer {name} ?`,"clients.deleteText":`Les appels avec sa clรฉ sont refusรฉs.`,"clients.deleteLast":`C'est le dernier client : douane refusera tout appel jusqu'ร  ce que vous en crรฉiez un autre.`,"clients.deleteButton":`Supprimer`,"notice.clientCreated":`Client crรฉรฉ.`,"notice.clientSaved":`Client enregistrรฉ.`,"notice.clientDeleted":`Client supprimรฉ.`,"notice.keyReplaced":`Clรฉ remplacรฉe.`,"activity.client":`Client {name}`,"quickstart.keyRequired":`Aucun client pour l'instant : crรฉez-en un sur la page Clients d'abord. douane refuse tout appel sans clรฉ client.`},ut=`douane-language`,dt={en:ct,fr:lt},ft={en:`en-US`,fr:`fr-FR`};function pt(){try{let e=localStorage.getItem(ut);return e===`en`||e===`fr`?e:`auto`}catch{return`auto`}}function mt(){if(typeof navigator>`u`)return`en`;let e=navigator.languages?.length?navigator.languages:[navigator.language];for(let t of e){let e=t?.toLowerCase()??``;if(e.startsWith(`fr`))return`fr`;if(e.startsWith(`en`))return`en`}return`en`}var ht=w({choice:typeof window>`u`?`auto`:pt(),detected:mt()});function gt(){return ht.choice}function _t(){return ht.choice===`auto`?ht.detected:ht.choice}function vt(){return ft[_t()]}function yt(){typeof document<`u`&&(document.documentElement.lang=_t())}function bt(e){ht.choice=e;try{e===`auto`?localStorage.removeItem(ut):localStorage.setItem(ut,e)}catch{}yt()}typeof window<`u`&&(yt(),window.addEventListener(`languagechange`,()=>{ht.detected=mt(),yt()}));function Z(e,t){let n=dt[_t()][e]??ct[e];return t?n.replace(/\{(\w+)\}/g,(e,n)=>n in t?String(t[n]):e):n}var xt=f(`
`),St=f(`
`);function Ct(e,n){I(n,!0);let r=F(n,`compact`,3,!1),i=j(()=>n.label??Z(`meter.left`)),a=j(()=>n.value==null?null:Math.min(100,Math.max(0,n.value)));var o=St();let s;var c=l(o),u=l(c),d=l(u,!0);k(u);var f=S(u),p=l(f,!0);k(f),k(c);var h=S(c,2),_=l(h),v=e=>{var n=xt();let r,i;y(()=>{r=Y(n,1,`meter-fill svelte-1dmbtuk`,null,r,{low:g(a)<25,medium:g(a)>=25&&g(a)<60}),i=J(n,``,i,{width:`${g(a)??``}%`})}),t(e,n)};m(_,e=>{g(a)!=null&&e(v)}),k(h),k(o),y((e,t)=>{s=Y(o,1,`quota-meter svelte-1dmbtuk`,null,s,{compact:r()}),R(d,g(i)),R(p,e),M(h,`aria-label`,g(i)),M(h,`aria-valuenow`,g(a)??void 0),M(h,`aria-valuetext`,t)},[()=>g(a)==null?Z(`meter.unavailable`):Z(`common.percent`,{value:Math.round(g(a))}),()=>g(a)==null?Z(`meter.unavailable`):Z(`meter.valueLeft`,{value:Math.round(g(a))})]),t(e,o),te()}var wt=new Set([`$$slots`,`$$events`,`$$legacy`]);function Tt(e,t){let n=E(t,wt),r=[[`path`,{d:`M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z`}],[`path`,{d:`m15 5 4 4`}]];X(e,W({name:`pencil`},()=>n,{get iconNode(){return r}}))}var Et=new Set([`$$slots`,`$$events`,`$$legacy`]);function Dt(e,t){let n=E(t,Et),r=[[`path`,{d:`M20 6 9 17l-5-5`}]];X(e,W({name:`check`},()=>n,{get iconNode(){return r}}))}var Ot=[`chat`,`responses`,`messages`,``];function kt(e){return e===``?Z(`dialect.client`):{chat:`Chat Completions`,responses:`Responses`,messages:`Messages (Anthropic)`}[e]}var At=[`five-hour`,`daily`,`weekly`,`monthly`];function jt(e){return Z(`reserveWindow.${e}`)}function Mt(e){return{"five-hour":`five-hour`,daily:`daily`,weekly:`weekly`,"seven-day":`weekly`,seven_day:`weekly`,monthly:`monthly`}[e]??null}var Nt=class extends Error{status;constructor(e,t){super(t),this.status=e}};async function Q(e,t){let n=await fetch(`/admin/api${e}`,{...t,headers:{...t?.body?{"content-type":`application/json`}:{},...t?.headers}});if(!n.ok){let e=Z(`api.serverStatus`,{status:n.status});try{let t=await n.json();e=t.errors?.length?Rt(t.errors):typeof t.error==`string`?t.error:t.error?.message??t.message??e}catch{}throw new Nt(n.status,e)}return n.status===204?void 0:n.json()}var $={status:()=>Q(`/summary`),providers:()=>Q(`/providers`),accounts:()=>Q(`/accounts`),quotas:()=>Q(`/quotas`),models:()=>Q(`/models`),calls:()=>Q(`/calls?limit=100`),settings:()=>Q(`/settings`),refreshQuotas:e=>Q(`/quotas/refresh`,{method:`POST`,body:JSON.stringify({account_id:e})}),importAccounts:e=>Q(`/accounts/import`,{method:`POST`,body:JSON.stringify({files:e})}),importCredential:e=>Q(`/accounts/import`,{method:`POST`,body:JSON.stringify(e)}),updateEndpoint:(e,t)=>Q(`/accounts/${encodeURIComponent(e)}`,{method:`PATCH`,body:JSON.stringify(t)}),setAccountEnabled:(e,t)=>Q(`/accounts/${encodeURIComponent(e)}`,{method:`PATCH`,body:JSON.stringify({enabled:t})}),renameAccount:(e,t)=>Q(`/accounts/${encodeURIComponent(e)}`,{method:`PATCH`,body:JSON.stringify({name:t})}),setAccountReserve:(e,t,n)=>Q(`/accounts/${encodeURIComponent(e)}`,{method:`PATCH`,body:JSON.stringify({reserve_percent:t,reserve_windows:n})}),accountResets:e=>Q(`/accounts/${encodeURIComponent(e)}/resets`),redeemReset:(e,t)=>Q(`/accounts/${encodeURIComponent(e)}/resets/redeem`,{method:`POST`,body:JSON.stringify({confirmation:!0,request_id:t})}),deleteAccount:e=>Q(`/accounts/${encodeURIComponent(e)}`,{method:`DELETE`}),startOAuth:e=>Q(`/oauth/start`,{method:`POST`,body:JSON.stringify({provider:e})}),oauth:e=>Q(`/oauth/${encodeURIComponent(e)}`),oauthCallback:(e,t,n)=>Q(`/oauth/callback`,{method:`POST`,body:JSON.stringify({id:e,code:t,state:n})}),setModelEnabled:(e,t)=>Q(`/models/${encodeURIComponent(e)}`,{method:`PATCH`,body:JSON.stringify({enabled:t})}),settingsSave:e=>Q(`/settings`,{method:`PATCH`,body:JSON.stringify(e)}),clients:()=>Q(`/clients`),clientStats:e=>Q(`/clients/stats?hours=${e}`),createClient:e=>Q(`/clients`,{method:`POST`,body:JSON.stringify(e)}),updateClient:(e,t)=>Q(`/clients/${encodeURIComponent(e)}`,{method:`PATCH`,body:JSON.stringify(t)}),deleteClient:e=>Q(`/clients/${encodeURIComponent(e)}`,{method:`DELETE`}),exportConfig:()=>Q(`/export`),restore:(e,t)=>Q(`/restore`,{method:`POST`,body:JSON.stringify({bundle:e,settings:t})})},Pt={codex:`Codex`,claude:`Claude`,gemini:`Gemini`,antigravity:`Antigravity`,qwen:`Qwen`,kimi:`Kimi`,copilot:`GitHub Copilot`,iflow:`iFlow`,opencode_go:`OpenCode Go`,xai:`Grok`,grok:`Grok`,openai_compatible:`OpenAI-compatible`};function Ft(e){return e.route||e.provider}function It(e){let t=new Map;for(let n of e){let e=Ft(n),r=t.get(e)??{id:e,provider:n.provider,name:n.route?n.name:Ht(n.provider),accounts:[]};r.accounts.push(n),t.set(e,r)}return[...t.values()]}function Lt(e,t=!1){return t?e:e.replace(/[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}/gi,Z(`private.account`))}function Rt(e){return e.map(e=>typeof e==`string`?e:e.name?Z(`api.errorPrefix`,{name:Lt(e.name),error:e.error}):e.error).join(` `)}var zt={ready:`status.active`,active:`status.active`,disabled:`common.disabled`,exhausted:`status.exhausted`,cooldown:`status.cooldown`,expired:`status.expired`,error:`status.check`};function Bt(e){return Z(e.enabled?zt[e.status]??`status.check`:`common.disabled`)}function Vt(e){return e.enabled&&(!!e.last_error||![`ready`,`active`].includes(e.status))}function Ht(e,t=e){return e===`openai_compatible`?Z(`provider.openaiCompatible`):Pt[e]??t}function Ut(e){return new Intl.NumberFormat(vt(),{maximumFractionDigits:1}).format(e)}function Wt(e){return e==null?`-`:new Intl.NumberFormat(vt(),{notation:e>=1e4?`compact`:`standard`,maximumFractionDigits:1}).format(e)}function Gt(){return _t()===`en`?`numeric`:`2-digit`}function Kt(e){return e?new Intl.DateTimeFormat(vt(),{day:`2-digit`,month:`short`,hour:Gt(),minute:`2-digit`}).format(new Date(e)):`-`}function qt(e){if(!e)return Z(`date.unknown`);let t=new Date(e);if(Number.isNaN(t.getTime()))return Z(`date.unknown`);let n=Math.abs(t.getTime()-Date.now())>6048e5;return new Intl.DateTimeFormat(vt(),{weekday:`long`,...n?{day:`numeric`,month:`short`}:{},hour:Gt(),minute:`2-digit`}).format(t)}function Jt(e,t){return e==null?Z(`credit.unknown`):t===`USD`?new Intl.NumberFormat(vt(),{style:`currency`,currency:`USD`,maximumFractionDigits:2}).format(e):/^[A-Z]{3}_minor$/.test(t)?new Intl.NumberFormat(vt(),{style:`currency`,currency:t.slice(0,3),maximumFractionDigits:2}).format(e/100):`${new Intl.NumberFormat(vt(),{maximumFractionDigits:2}).format(e)} ${t===`credits`?Z(`credit.credits`):t}`}var Yt={weekly:`usage.weekly`,"codex weekly":`usage.weekly`,"grok weekly":`usage.weekly`,monthly:`usage.monthly`,"5 hours":`usage.fiveHours`,"five hour":`usage.fiveHours`,"extra usage":`usage.extra`,"additional usage":`usage.extra`,"codex credits":`usage.codexCredits`,"credit balance":`usage.creditBalance`,"premium requests":`usage.premiumRequests`,chat:`usage.chat`,completions:`usage.completions`};function Xt(e){let t=Yt[e.toLowerCase()];return t?Z(t):e}function Zt(){if(typeof crypto.randomUUID==`function`)return crypto.randomUUID();let e=crypto.getRandomValues(new Uint8Array(16));e[6]=e[6]&15|64,e[8]=e[8]&63|128;let t=Array.from(e,e=>e.toString(16).padStart(2,`0`)).join(``);return`${t.slice(0,8)}-${t.slice(8,12)}-${t.slice(12,16)}-${t.slice(16,20)}-${t.slice(20)}`}var Qt=f(``),$t=f(`
`),en=f(``);function tn(r,i){I(i,!0);let a=e(!1),o=e(``),s=e(!1),u=e(``),f=e(void 0);async function p(){h(o,i.account.name,!0),h(u,``),h(a,!0),await n(),g(f)?.focus(),g(f)?.select()}async function _(){if(g(s)||i.busy)return;let e=g(o).trim();if(!e||e.length>120||/[\x00-\x1f\x7f]/.test(e)){h(u,Z(`name.invalid`),!0);return}if(e===i.account.name){h(a,!1);return}h(s,!0),h(u,``);try{await i.rename(i.account,e),h(a,!1)}catch(e){h(u,Lt(e.message),!0)}finally{h(s,!1)}}var v=L(),b=C(v),x=e=>{var n=$t(),r=l(n);A(r),q(r,e=>h(f,e),()=>g(f));var p=S(r,2),v=l(p);Dt(l(v),{size:20}),k(v);var b=S(v);Pe(l(b),{size:20}),k(b),k(p);var x=S(p,2),C=e=>{var n=Qt(),r=l(n,!0);k(n),y(()=>R(r,g(u))),t(e,n)};m(x,e=>{g(u)&&e(C)}),k(n),y((e,t,n,a,o)=>{M(r,`aria-label`,e),r.disabled=g(s),M(v,`aria-label`,t),M(v,`title`,n),v.disabled=g(s)||!!i.busy,M(b,`aria-label`,a),M(b,`title`,o),b.disabled=g(s)},[()=>Z(`name.input`),()=>Z(`name.save`),()=>Z(`common.save`),()=>Z(`name.cancel`),()=>Z(`common.cancel`)]),d(`submit`,n,e=>{e.preventDefault(),_()}),c(`keydown`,r,e=>{e.key===`Escape`&&!g(s)&&h(a,!1)}),z(r,()=>g(o),e=>h(o,e)),c(`click`,b,()=>h(a,!1)),t(e,n)},w=e=>{var n=en(),r=l(n),a=l(r,!0);k(r),Tt(S(r),{size:15}),k(n),y((e,t)=>{M(n,`title`,e),n.disabled=!!i.busy,R(a,t)},[()=>Z(`name.rename`),()=>Lt(i.account.name)]),c(`click`,n,p),t(e,n)};m(b,e=>{g(a)?e(x):e(w,-1)}),t(r,v),te()}o([`keydown`,`click`]);var nn=new Set([`$$slots`,`$$events`,`$$legacy`]);function rn(e,t){let n=E(t,nn),r=[[`path`,{d:`M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0`}],[`circle`,{cx:`12`,cy:`12`,r:`3`}]];X(e,W({name:`eye`},()=>n,{get iconNode(){return r}}))}var an=new Set([`$$slots`,`$$events`,`$$legacy`]);function on(e,t){let n=E(t,an),r=[[`path`,{d:`M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49`}],[`path`,{d:`M14.084 14.158a3 3 0 0 1-4.242-4.242`}],[`path`,{d:`M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143`}],[`path`,{d:`m2 2 20 20`}]];X(e,W({name:`eye-off`},()=>n,{get iconNode(){return r}}))}var sn=f(``);function cn(n,r){I(r,!0);let i=e(!1);var a=sn(),o=l(a);let s;var u=l(o,!0);k(o);var d=S(o,2),f=e=>{on(e,{size:16})},p=e=>{rn(e,{size:16})};m(d,e=>{g(i)?e(f):e(p,-1)}),k(a),y((e,t)=>{M(a,`aria-label`,e),M(a,`aria-pressed`,g(i)),M(a,`title`,t),M(o,`aria-hidden`,!g(i)),s=Y(o,1,`svelte-1n2y5u`,null,s,{blurred:!g(i)}),R(u,r.email)},[()=>Z(g(i)?`email.hide`:`email.show`),()=>Z(g(i)?`email.hide`:`email.show`)]),c(`click`,a,()=>h(i,!g(i))),t(n,a),te()}o([`click`]);var ln=f(``),un=f(` `),dn=f(``),fn=f(``),pn=f(`

`),mn=f(`

`,1),hn=f(`

`),gn=f(`

`,1),_n=f(`

`,1);function vn(n,r){I(r,!0);let i=e(null),a=e(!1),o=e(!1),s=e(``),u=e(``),f=e(!1),p=``,_=e(void 0),v=j(()=>r.account.enabled&&[`claude`,`codex`].includes(r.account.provider)),w=j(()=>`douane-reset-${r.account.id}`),T=j(()=>g(i)?.status===`ready`&&(g(i).available_count??0)>0);async function E(){if(!(!g(v)||g(a))){h(a,!0),h(s,``);try{h(i,await $.accountResets(r.account.id)),g(i).pending_request_id&&(sessionStorage.setItem(g(w),g(i).pending_request_id),h(f,!0))}catch(e){h(s,Lt(e.message),!0)}finally{h(a,!1)}}}x(()=>{g(v)?b(()=>{h(f,!!sessionStorage.getItem(g(w))),E()}):h(i,null)});function D(){p=g(i)?.pending_request_id??sessionStorage.getItem(g(w))??Zt(),h(s,``),h(u,``),g(_)?.showModal()}async function O(){if(!(g(o)||r.busy)){h(o,!0),h(s,``);try{sessionStorage.setItem(g(w),p),h(f,!0);let e={reset:`resets.reset`,already_redeemed:`resets.alreadyRedeemed`,nothing_to_reset:`resets.nothingToReset`,no_credit:`resets.noCredit`}[(await $.redeemReset(r.account.id,p)).outcome];if(!e)throw Error(Z(`resets.unconfirmed`));h(u,Z(e),!0),sessionStorage.removeItem(g(w)),h(f,!1),await E(),await r.updated()}catch(e){h(s,Lt(e.message),!0)}finally{h(o,!1)}}}var A=L(),N=C(A),P=e=>{var n=_n(),p=C(n),v=l(p),b=e=>{var n=ln(),o=l(n);Ae(o,{size:17});var s=S(o,1,!0);k(n),y(e=>{n.disabled=!!r.busy||g(a),R(s,e)},[()=>g(f)?Z(`resets.resume`):Z(`resets.button`,{count:g(i)?.available_count??0})]),c(`click`,n,D),t(e,n)},x=e=>{var n=un(),r=l(n,!0);k(n),y(e=>R(r,e),[()=>Z(`resets.checking`)]),t(e,n)},w=e=>{var n=un(),r=l(n,!0);k(n),y(e=>R(r,e),[()=>Z(`resets.none`)]),t(e,n)},A=e=>{var n=dn(),i=l(n,!0);k(n),y(e=>{n.disabled=!!r.busy,R(i,e)},[()=>Z(`resets.check`)]),c(`click`,n,E),t(e,n)};m(v,e=>{g(T)||g(f)?e(b):g(a)?e(x,1):g(i)?.status===`ready`?e(w,2):g(i)?.status!==`unsupported`&&e(A,3)});var j=S(v,2),N=e=>{var n=fn(),r=l(n,!0);k(n),y(()=>R(r,g(s))),t(e,n)};m(j,e=>{g(s)&&!g(_)?.open&&e(N)});var P=S(j,2),F=e=>{var n=pn(),r=l(n,!0);k(n),y(e=>R(r,e),[()=>Lt(g(i).error)]),t(e,n)};m(P,e=>{g(i)?.error&&!g(s)&&g(i).status!==`unsupported`&&e(F)}),k(p);var I=S(p,2),L=l(I),z=l(L),B=l(z),V=l(B,!0);k(B);var H=S(B);Pe(l(H),{size:22}),k(H),k(z);var U=S(z,2),W=l(U,!0);k(U);var G=S(U,2),ee=e=>{var n=mn(),r=C(n),i=l(r,!0);k(r);var a=S(r),o=l(a),s=l(o,!0);k(o),k(a),y(e=>{R(i,g(u)),R(s,e)},[()=>Z(`common.close`)]),c(`click`,o,()=>g(_)?.close()),t(e,n)},K=e=>{var n=gn(),a=C(n),u=l(a,!0);k(a);var d=S(a,2),p=e=>{var n=hn(),r=l(n,!0);k(n),y(e=>R(r,e),[()=>Z(`resets.expiresFirst`,{date:Kt(g(i).next_expires_at)})]),t(e,n)};m(d,e=>{g(i)?.next_expires_at&&e(p)});var h=S(d,2),v=e=>{var n=hn(),r=l(n,!0);k(n),y(e=>R(r,e),[()=>Z(`resets.pending`)]),t(e,n)};m(h,e=>{g(f)&&e(v)});var b=S(h,2),x=e=>{var n=fn(),r=l(n,!0);k(n),y(()=>R(r,g(s))),t(e,n)};m(b,e=>{g(s)&&e(x)});var w=S(b,2),T=l(w),E=l(T,!0);k(T);var D=S(T),A=l(D,!0);k(D),k(w),y((e,t,n)=>{R(u,e),T.disabled=g(o),R(E,t),D.disabled=g(o)||!!r.busy,R(A,n)},[()=>Z(`resets.warning`),()=>Z(`common.cancel`),()=>g(o)?Z(`resets.running`):g(f)?Z(`resets.retrySame`):Z(`resets.use`)]),c(`click`,T,()=>g(_)?.close()),c(`click`,D,O),t(e,n)};m(G,e=>{g(u)?e(ee):e(K,-1)}),k(L),k(I),q(I,e=>h(_,e),()=>g(_)),y((e,t,n)=>{R(V,e),M(H,`aria-label`,t),H.disabled=g(o),R(W,n)},[()=>Z(`resets.title`),()=>Z(`resets.closeConfirmation`),()=>Lt(r.account.name)]),d(`cancel`,I,e=>{g(o)&&e.preventDefault()}),c(`click`,H,()=>g(_)?.close()),t(e,n)};m(N,e=>{g(v)&&e(P)}),t(n,A),te()}o([`click`]);var yn=new Set([`$$slots`,`$$events`,`$$legacy`]);function bn(e,t){let n=E(t,yn),r=[[`polyline`,{points:`22 12 16 12 14 15 10 15 8 12 2 12`}],[`path`,{d:`M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z`}]];X(e,W({name:`inbox`},()=>n,{get iconNode(){return r}}))}var xn=f(``),Sn=f(`

`);function Cn(e,n){var r=Sn(),i=l(r);bn(l(i),{size:22}),k(i);var a=S(i,2),o=l(a,!0);k(a);var s=S(a),u=l(s,!0);k(s);var d=S(s,2),f=e=>{var r=xn(),i=l(r,!0);k(r),y(()=>R(i,n.action)),c(`click`,r,function(...e){n.onclick?.apply(this,e)}),t(e,r)};m(d,e=>{n.action&&n.onclick&&e(f)}),k(r),y(()=>{R(o,n.title),R(u,n.description)}),t(e,r)}o([`click`]);var wn=f(``),Tn=f(`
`),En=f(`
`),Dn=f(``,1),On=f(`
`),kn=f(`

`),An=f(`

`),jn=f(`
`),Mn=f(``),Nn=f(` `),Pn=f(`

`),Fn=f(`

`),In=f(`

`),Ln=f(` `),Rn=f(`

`),zn=f(`
`),Bn=f(`
`),Vn=f(`
`),Hn=f(`

`),Un=f(`
`),Wn=f(`

`,1);function Gn(n,r){I(r,!0);let i=F(r,`providers`,19,()=>[]),a=e(`all`),o=e(``),s=e(`name`),u=e(null),d=[`claude`,`codex`,`opencode_go`,`xai`],f=j(()=>new Set(i().filter(e=>!e.quota).map(e=>e.id))),p=j(()=>[...new Set(r.accounts.map(e=>e.provider).filter(e=>!g(f).has(e)))].sort((e,t)=>(d.indexOf(e)<0?99:d.indexOf(e))-(d.indexOf(t)<0?99:d.indexOf(t))||Ht(e).localeCompare(Ht(t)))),_=j(()=>r.accounts.filter(e=>(g(a)===`all`||!g(p).includes(g(a))||e.provider===g(a))&&`${e.name} ${e.email??``}`.toLowerCase().includes(g(o).toLowerCase())).sort((e,t)=>g(s)===`remaining`?(V(e.id)??101)-(V(t.id)??101):e.name.localeCompare(t.name))),b=j(()=>g(p).map(e=>({id:e,accounts:g(_).filter(t=>t.provider===e)})).filter(e=>e.accounts.length));function x(e){return r.settings?.quota_display?.[e]??`accounts`}async function w(e,t){await r.setQuotaDisplay(e,t.value),t.value=x(e)}function E(e){let t=new Set(r.accounts.filter(t=>t.provider===e).map(e=>e.id)),n=new Map;for(let e of r.quotas)if(t.has(e.account_id))for(let t of e.windows)n.has(t.id)||n.set(t.id,t);return[...n.values()]}function D(e){let t=r.settings?.quota_windows?.[e],n=t?.primary??null;return{hidden:(t?.hidden??[]).filter(e=>e!==n),primary:n}}function O(e,t){let n=D(e),i=n.hidden.includes(t)?n.hidden.filter(e=>e!==t):[...n.hidden,t];return r.setQuotaWindows(e,{...n,hidden:i})}function B(e,t){let n=D(e);return r.setQuotaWindows(e,{hidden:n.hidden.filter(e=>e!==t),primary:t})}function V(e){let t=r.quotas.find(t=>t.account_id===e)?.windows.map(e=>e.remaining_percent).filter(e=>e!=null)??[];return t.length?Math.min(...t):null}var H=Wn(),U=C(H),W=l(U),G=l(W,!0);k(W);var ee=S(W,2),K=l(ee),q=l(K);{let e=j(()=>r.busy===`quotas`?`spinning`:``);Ae(q,{size:18,get class(){return g(e)}})}var ne=S(q,1,!0);k(K);var re=S(K),ie=l(re);Be(ie,{size:20});var J=S(ie,1,!0);k(re),k(ee),k(U);var ae=S(U,2),oe=e=>{var n=Tn(),i=l(n);let o;var s=l(i),u=S(s),d=l(u,!0);k(u),k(i);var f=S(i,2);v(f,16,()=>g(p),e=>e,(e,n)=>{var i=wn();let o;var s=l(i);st(s,{get provider(){return n},size:22});var u=S(s,1,!0),d=S(u),f=l(d,!0);k(d),k(i),y((e,t)=>{M(i,`aria-pressed`,g(a)===n),o=Y(i,1,``,null,o,{active:g(a)===n}),R(u,e),R(f,t)},[()=>Ht(n),()=>r.accounts.filter(e=>e.provider===n).length]),c(`click`,i,()=>h(a,n,!0)),t(e,i)}),k(n),y((e,t,r)=>{M(n,`aria-label`,e),M(i,`aria-pressed`,g(a)===`all`),o=Y(i,1,``,null,o,{active:g(a)===`all`}),R(s,`${t??``} `),R(d,r)},[()=>Z(`quotas.filter`),()=>Z(`quotas.all`),()=>r.accounts.filter(e=>g(p).includes(e.provider)).length]),c(`click`,i,()=>h(a,`all`)),t(e,n)};m(ae,e=>{g(p).length>1&&e(oe)});var se=S(ae,2),ce=l(se),le=l(ce);Re(le,{size:18});var ue=S(le);A(ue),k(ce);var de=S(ce),fe=l(de),X=l(fe,!0);k(fe),fe.value=fe.__value=`name`;var pe=S(fe),me=l(pe,!0);k(pe),pe.value=pe.__value=`remaining`,k(de),k(se);var he=S(se,2),ge=e=>{var n=En(),i=l(n);{let e=j(()=>Z(`common.noAccountConnected`)),t=j(()=>Z(`quotas.emptyDescription`)),n=j(()=>Z(`common.connectAccount`));Cn(i,{get title(){return g(e)},get description(){return g(t)},get action(){return g(n)},get onclick(){return r.connect}})}k(n),t(e,n)},_e=e=>{var n=En(),r=l(n);{let e=j(()=>Z(`common.noMatchingAccount`)),t=j(()=>Z(`common.tryOtherName`));Cn(r,{get title(){return g(e)},get description(){return g(t)}})}k(n),t(e,n)},ve=e=>{var n=Un();v(n,21,()=>g(b),e=>e.id,(e,n)=>{var i=Hn(),a=l(i),o=l(a);st(o,{get provider(){return g(n).id},size:29});var s=S(o),d=l(s,!0);k(s);var f=S(s),p=l(f,!0);k(f);var _=S(f),b=e=>{var i=Dn(),a=C(i),o=l(a),s=l(o,!0);k(o);var d=S(o),f=l(d),p=l(f,!0);k(f),f.value=f.__value=`accounts`;var m=S(f),_=l(m,!0);k(m),m.value=m.__value=`average`,k(d);var v;N(d),k(a);var b=S(a),E=l(b);We(E,{size:16});var D=S(E,1,!0);k(b),y((e,t,i,o,c,l,f)=>{M(a,`title`,e),R(s,t),d.disabled=!!r.busy,R(p,i),R(_,o),v!==(v=c)&&(d.value=(d.__value=c)??``,T(d,c)),M(b,`aria-expanded`,g(u)===g(n).id),M(b,`aria-controls`,`windows-${g(n).id??``}`),M(b,`title`,l),R(D,f)},[()=>Z(`quotas.displayTitle`,{provider:Ht(g(n).id)}),()=>Z(`quotas.displayLabel`),()=>Z(`quotas.perAccount`),()=>Z(`quotas.average`),()=>x(g(n).id),()=>Z(`quotas.windowsTitle`,{provider:Ht(g(n).id)}),()=>Z(`quotas.windows`)]),c(`change`,d,e=>w(g(n).id,e.currentTarget)),c(`click`,b,()=>h(u,g(u)===g(n).id?null:g(n).id,!0)),t(e,i)};m(_,e=>{r.settings&&e(b)}),k(a);var A=S(a,2),P=e=>{let i=j(()=>D(g(n).id));var a=jn(),o=l(a);v(o,17,()=>E(g(n).id),e=>e.id,(e,a)=>{let o=j(()=>g(i).primary===g(a).id),s=j(()=>g(o)||!g(i).hidden.includes(g(a).id));var u=On();let d;var f=l(u),p=l(f,!0);k(f);var m=S(f,2);let h;var _=l(m);Ke(_,{size:16});var v=S(_,1,!0);k(m);var b=S(m,2);let x;k(u),y((e,t,n)=>{d=Y(u,1,`window-choice svelte-137c7x1`,null,d,{"hidden-window":!g(s)}),R(p,e),h=Y(m,1,`primary-choice svelte-137c7x1`,null,h,{on:g(o)}),M(m,`aria-pressed`,g(o)),m.disabled=!!r.busy,R(v,t),x=Y(b,1,`switch`,null,x,{on:g(s)}),M(b,`aria-checked`,g(s)),M(b,`aria-label`,n),b.disabled=!!r.busy||g(o)},[()=>Xt(g(a).label),()=>Z(g(o)?`quotas.primary`:`quotas.makePrimary`),()=>Z(`quotas.showWindow`,{label:Xt(g(a).label)})]),c(`click`,m,()=>B(g(n).id,g(o)?null:g(a).id)),c(`click`,b,()=>O(g(n).id,g(a).id)),t(e,u)},e=>{var n=kn(),r=l(n,!0);k(n),y(e=>R(r,e),[()=>Z(`quotas.noWindow`)]),t(e,n)});var s=S(o,2),u=e=>{var n=An(),r=l(n,!0);k(n),y(e=>R(r,e),[()=>Z(`quotas.defaultWindow`)]),t(e,n)},d=j(()=>!g(i).primary&&E(g(n).id).length);m(s,e=>{g(d)&&e(u)}),k(a),y(e=>{M(a,`id`,`windows-${g(n).id??``}`),M(a,`aria-label`,e)},[()=>Z(`quotas.windowsLabel`,{provider:Ht(g(n).id)})]),t(e,a)};m(A,e=>{r.settings&&g(u)===g(n).id&&e(P)});var F=S(A,2);v(F,21,()=>g(n).accounts,e=>e.id,(e,n)=>{let i=j(()=>r.quotas.find(e=>e.account_id===g(n).id)),a=j(()=>g(i)?.subscription??g(n).subscription);var o=Vn();let s;var u=l(o),d=l(u);tn(d,{get account(){return g(n)},get rename(){return r.rename},get busy(){return r.busy}});var f=S(d),p=e=>{var r=Mn(),i=l(r,!0);k(r),y(()=>R(i,g(a)?.label??g(n).plan)),t(e,r)};m(f,e=>{(g(a)?.label||g(n).plan)&&e(p)});var h=S(f),_=e=>{cn(e,{get email(){return g(n).email}})};m(h,e=>{g(n).email&&e(_)}),vn(S(h),{get account(){return g(n)},get busy(){return r.busy},get updated(){return r.resetUpdated}}),k(u);var b=S(u,2),x=l(b),w=e=>{var r=Fn(),a=l(r),o=l(a,!0);k(a);var s=S(a),c=e=>{var r=Nn(),i=l(r,!0);He(S(i),{size:16}),k(r),y((e,t)=>{M(r,`href`,e),R(i,t)},[()=>`/admin/api/accounts/${encodeURIComponent(g(n).id)}/verification`,()=>Z(`common.verifyGoogle`)]),t(e,r)},u=e=>{var n=Pn(),r=l(n,!0);k(n),y(e=>R(r,e),[()=>Z(`common.openAntigravity`)]),t(e,n)};m(s,e=>{g(i).verification_available?e(c):e(u,-1)}),k(r),y(e=>R(o,e),[()=>Z(`quotas.googleVerify`)]),t(e,r)};m(x,e=>{g(i)?.verification_required&&e(w)});var T=S(x,2),E=l(T),D=e=>{var n=L(),r=C(n);v(r,17,()=>g(i).windows,e=>e.id,(e,n)=>{var r=In(),i=l(r);{let e=j(()=>Xt(g(n).label));Ct(i,{get value(){return g(n).remaining_percent},get label(){return g(e)}})}var a=S(i),o=l(a);Ae(o,{size:16});var s=S(o,1,!0);k(a),k(r),y((e,t)=>{M(a,`title`,e),R(s,t)},[()=>g(n).reset_at?Z(`quotas.resetAt`,{date:Kt(g(n).reset_at)}):void 0,()=>qt(g(n).reset_at)]),t(e,r)}),t(e,n)},O=e=>{var n=kn(),r=l(n,!0);k(n),y(e=>R(r,e),[()=>g(i)?.error?Lt(g(i).error):Z(`quotas.notReported`)]),t(e,n)};m(E,e=>{g(i)?.windows.length?e(D):g(i)?.verification_required||e(O,1)}),k(T);var A=S(T,2),N=e=>{var n=Bn();v(n,21,()=>g(i).credits,e=>e.id,(e,n)=>{var r=zn(),i=l(r),a=l(i),o=l(a,!0);k(a);var s=S(a),c=l(s,!0),u=S(c),d=e=>{var n=Ln(),r=l(n,!0);k(n),y(e=>R(r,e),[()=>` ${Z(`quotas.remaining`)}`]),t(e,n)};m(u,e=>{g(n).enabled!==!1&&g(n).remaining!=null&&e(d)}),k(s),k(i);var f=S(i),p=e=>{var r=Pn(),i=l(r,!0);k(r),y(e=>R(i,e),[()=>g(n).limit==null?Z(`quotas.used`,{used:Jt(g(n).used,g(n).unit)}):Z(`quotas.usedOf`,{used:Jt(g(n).used,g(n).unit),limit:Jt(g(n).limit,g(n).unit)})]),t(e,r)};m(f,e=>{g(n).used!=null&&e(p)});var h=S(f),_=e=>{var r=Rn(),i=l(r);Ae(i,{size:16});var a=S(i,1,!0);k(r),y(e=>R(a,e),[()=>qt(g(n).reset_at)]),t(e,r)};m(h,e=>{g(n).reset_at&&e(_)}),k(r),y((e,t)=>{R(o,e),R(c,t)},[()=>Xt(g(n).label),()=>g(n).enabled===!1?Z(`common.disabled`):g(n).unlimited?Z(`quotas.unlimited`):Jt(g(n).remaining,g(n).unit)]),t(e,r)}),k(n),t(e,n)};m(A,e=>{g(i)?.credits?.length&&e(N)}),k(b);var P=S(b,2),F=l(P);let I;var z=S(l(F),1,!0);k(F);var B=S(F);Ae(l(B),{size:19}),k(B),k(P),k(o),y((e,t,i,a)=>{s=Y(o,1,`quota-row svelte-137c7x1`,null,s,{"disabled-row":!g(n).enabled}),I=Y(F,1,`state-badge`,null,I,e),R(z,t),B.disabled=!!r.busy,M(B,`title`,i),M(B,`aria-label`,a)},[()=>({warning:!!g(i)?.error||Vt(g(n))||g(n).enabled&&!!g(n).reserve_reached,inactive:!g(n).enabled}),()=>g(n).enabled?g(i)?.error?Z(`status.check`):g(n).reserve_reached&&[`ready`,`active`].includes(g(n).status)?Z(`status.reserveReached`):Bt(g(n)):Z(`common.disabled`),()=>Z(`quotas.refreshAccount`),()=>Z(`quotas.refreshNamed`,{name:Lt(g(n).name)})]),c(`click`,B,()=>r.refresh(g(n).id)),t(e,o)}),k(F),k(i),y((e,t,n)=>{M(i,`aria-label`,e),R(d,t),R(p,n)},[()=>Z(`quotas.group`,{provider:Ht(g(n).id)}),()=>Ht(g(n).id),()=>Z(g(n).accounts.length===1?`common.accountCount.one`:`common.accountCount.other`,{count:g(n).accounts.length})]),t(e,i)}),k(n),t(e,n)};m(he,e=>{r.accounts.length?g(_).length?e(ve,-1):e(_e,1):e(ge)}),y((e,t,n,i,a,o,s,c)=>{R(G,e),K.disabled=!!r.busy||!r.accounts.length,R(ne,t),R(J,n),M(ue,`placeholder`,i),M(ue,`aria-label`,a),M(de,`aria-label`,o),R(X,s),R(me,c)},[()=>Z(`nav.quotas`),()=>Z(`quotas.refresh`),()=>Z(`common.connectAccount`),()=>Z(`quotas.search`),()=>Z(`common.searchAccount`),()=>Z(`quotas.sort`),()=>Z(`quotas.byName`),()=>Z(`quotas.byRemaining`)]),c(`click`,K,()=>r.refresh()),c(`click`,re,function(...e){r.connect?.apply(this,e)}),z(ue,()=>g(o),e=>h(o,e)),P(de,()=>g(s),e=>h(s,e)),t(n,H),te()}o([`click`,`change`]);var Kn=new Set([`$$slots`,`$$events`,`$$legacy`]);function qn(e,t){let n=E(t,Kn),r=[[`path`,{d:`M12 3v12`}],[`path`,{d:`m17 8-5-5-5 5`}],[`path`,{d:`M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4`}]];X(e,W({name:`upload`},()=>n,{get iconNode(){return r}}))}var Jn=new Set([`$$slots`,`$$events`,`$$legacy`]);function Yn(e,t){let n=E(t,Jn),r=[[`path`,{d:`M10 11v6`}],[`path`,{d:`M14 11v6`}],[`path`,{d:`M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6`}],[`path`,{d:`M3 6h18`}],[`path`,{d:`M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2`}]];X(e,W({name:`trash-2`},()=>n,{get iconNode(){return r}}))}var Xn=new Set([`$$slots`,`$$events`,`$$legacy`]);function Zn(e,t){let n=E(t,Xn),r=[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`}],[`path`,{d:`m9 12 2 2 4-4`}]];X(e,W({name:`shield-check`},()=>n,{get iconNode(){return r}}))}var Qn=f(``),$n=f(`
`),er=f(``),tr=f(``),nr=f(`
`),rr=f(`

`),ir=f(`

`),ar=f(` `,1);function or(r,i){I(i,!0);let a=e(!1),o=e(``),s=e(w([])),u=e(!1),f=e(``),p=e(void 0),_=j(()=>i.account.reserve_percent??null),b=j(()=>i.account.reserve_windows??[]),x=j(()=>At.filter(e=>g(b).includes(e)||i.quota?.windows.some(t=>t.remaining_percent!=null&&Mt(t.id)===e))),T=j(()=>At.filter(e=>g(b).includes(e)).map(jt).join(` + `));async function E(){h(o,g(_)==null?``:String(g(_)),!0),h(s,[...g(b)],!0),h(f,``),h(a,!0),await n(),g(p)?.focus(),g(p)?.select()}function D(e){h(s,g(s).includes(e)?g(s).filter(t=>t!==e):[...g(s),e],!0)}async function O(e,t){if(!(g(u)||i.busy)){if(e===g(_)&&t.length===g(b).length&&t.every(e=>g(b).includes(e))){h(a,!1);return}h(u,!0),h(f,``);try{await i.save(i.account,e,t)?h(a,!1):h(f,Z(`reserve.notSaved`),!0)}finally{h(u,!1)}}}function N(){let e=g(o).trim().replace(`,`,`.`);if(!e)return O(null,[]);let t=Number(e);if(!/^\d+(\.\d+)?$/.test(e)||t>=100){h(f,Z(`reserve.invalid`),!0);return}return t===0?O(null,[]):O(t,g(s))}var P=L(),F=C(P),B=e=>{var n=nr(),r=l(n),b=l(r),C=l(b,!0);k(b);var w=S(b);A(w),q(w,e=>h(p,e),()=>g(p)),ne(),k(r);var T=S(r,2),E=l(T);Dt(l(E),{size:20}),k(E);var j=S(E);Pe(l(j),{size:20}),k(j),k(T);var P=S(T,2),F=e=>{var n=$n(),r=l(n);let i;var a=l(r,!0);k(r);var o=S(r,2);v(o,16,()=>g(x),e=>e,(e,n)=>{var r=Qn();let i;var a=l(r,!0);k(r),y((e,t,n)=>{i=Y(r,1,`chip svelte-c6cuiu`,null,i,e),M(r,`aria-pressed`,t),r.disabled=g(u),R(a,n)},[()=>({on:g(s).includes(n)}),()=>g(s).includes(n),()=>jt(n)]),c(`click`,r,()=>D(n)),t(e,r)}),k(n),y((e,t,o)=>{M(n,`aria-label`,e),i=Y(r,1,`chip svelte-c6cuiu`,null,i,{on:!g(s).length}),M(r,`aria-pressed`,!g(s).length),M(r,`title`,t),r.disabled=g(u),R(a,o)},[()=>Z(`reserve.watched`),()=>Z(`reserve.longestTitle`),()=>Z(`reserve.longest`)]),c(`click`,r,()=>h(s,[],!0)),t(e,n)};m(P,e=>{g(x).length>1&&e(F)});var I=S(P,2),L=e=>{var n=er(),r=l(n,!0);k(n),y(e=>{n.disabled=g(u)||!!i.busy,R(r,e)},[()=>Z(`reserve.remove`)]),c(`click`,n,()=>O(null,[])),t(e,n)};m(I,e=>{g(_)!=null&&e(L)});var B=S(I,2),V=e=>{var n=tr(),r=l(n,!0);k(n),y(()=>R(r,g(f))),t(e,n)};m(B,e=>{g(f)&&e(V)}),k(n),y((e,t,n,r,a,o)=>{R(C,e),M(w,`aria-label`,t),w.disabled=g(u),M(E,`aria-label`,n),M(E,`title`,r),E.disabled=g(u)||!!i.busy,M(j,`aria-label`,a),M(j,`title`,o),j.disabled=g(u)},[()=>Z(`reserve.keepAtLeast`),()=>Z(`reserve.input`),()=>Z(`reserve.save`),()=>Z(`common.save`),()=>Z(`common.cancel`),()=>Z(`common.cancel`)]),d(`submit`,n,e=>{e.preventDefault(),N()}),c(`keydown`,w,e=>{e.key===`Escape`&&!g(u)&&h(a,!1)}),z(w,()=>g(o),e=>h(o,e)),c(`click`,j,()=>h(a,!1)),t(e,n)},V=e=>{var n=ar(),r=C(n);let a;var o=l(r);Zn(o,{size:16});var s=S(o,1,!0);k(r);var u=S(r,2),d=e=>{var n=rr(),r=l(n,!0);k(n),y(e=>R(r,e),[()=>Z(`reserve.reached`)]),t(e,n)},f=e=>{var n=ir(),r=l(n,!0);k(n),y(e=>R(r,e),[()=>Z(g(b).length?`reserve.inactiveWindows`:`reserve.inactiveAccount`)]),t(e,n)};m(u,e=>{g(_)!=null&&i.account.enabled&&i.account.reserve_reached?e(d):g(_)!=null&&i.account.reserve_measured===!1&&e(f,1)}),y((e,t)=>{a=Y(r,1,`reserve svelte-c6cuiu`,null,a,{set:g(_)!=null}),r.disabled=!!i.busy,M(r,`title`,e),R(s,t)},[()=>g(b).length?Z(`reserve.titleWatched`,{windows:g(T)}):Z(`reserve.titleLongest`),()=>g(_)==null?Z(`reserve.add`):`${Z(`reserve.label`,{percent:Ut(g(_))})}${g(b).length?` ยท ${g(T)}`:``}`]),c(`click`,r,E),t(e,n)};m(F,e=>{g(a)?e(B):e(V,-1)}),t(r,P),te()}o([`keydown`,`click`]);var sr=f(``),cr=f(`
`),lr=f(` `),ur=f(` `),dr=f(`
`);function fr(n,r){I(r,!0);let i=e(!1),a=e(``),o=e(``),s=e(``),u=e(``),f=e(``),p=j(()=>kt(r.account.dialect??``));function _(){h(a,r.account.route??``,!0),h(o,r.account.base_url??``,!0),h(s,r.account.dialect??``,!0),h(u,(r.account.models??[]).join(`, `),!0),h(f,``),h(i,!0)}async function b(e){e.preventDefault();let t={},n=g(a).trim().toLowerCase();n&&n!==(r.account.route??``)&&(t.route=n),g(o).trim()&&g(o).trim()!==(r.account.base_url??``)&&(t.base_url=g(o).trim()),(g(s)||null)!==(r.account.dialect??null)&&(t.dialect=g(s)||null);let c=g(u).split(`,`).map(e=>e.trim()).filter(Boolean);if(c.join(`,`)!==(r.account.models??[]).join(`,`)&&(t.models=c),g(f).trim()&&(t.api_key=g(f).trim()),!Object.keys(t).length){h(i,!1);return}await r.save(r.account,t)&&(h(i,!1),h(f,``))}var x=L(),w=C(x),T=e=>{var n=cr(),p=l(n),m=l(p,!0),_=S(m);A(_),M(_,`pattern`,`[a-z0-9][a-z0-9_\\-]{0,31}`),k(p);var x=S(p,2),C=l(x,!0),w=S(C);A(w),k(x);var T=S(x,2),E=l(T,!0),D=S(E);v(D,20,()=>Ot,e=>e,(e,n)=>{var r=sr(),i=l(r,!0);k(r);var a={};y(e=>{R(i,e),a!==(a=n)&&(r.value=(r.__value=n)??``)},[()=>kt(n)]),t(e,r)}),k(D),k(T);var O=S(T,2),j=l(O,!0),N=S(j);A(N),k(O);var F=S(O,2),I=l(F,!0),L=S(I);A(L),k(F);var B=S(F,2),V=l(B),H=l(V,!0);k(V);var U=S(V),W=l(U,!0);k(U),k(B),k(n),y((e,t,n,i,a,o,s,c,l)=>{R(m,e),R(C,t),R(E,n),R(j,i),M(N,`placeholder`,a),R(I,o),M(L,`placeholder`,s),V.disabled=!!r.busy,R(H,c),R(W,l)},[()=>Z(`endpoint.route`),()=>Z(`endpoint.url`),()=>Z(`endpoint.format`),()=>Z(`endpoint.models`),()=>Z(`endpoint.modelsPlaceholder`),()=>Z(`endpoint.newKey`),()=>Z(`endpoint.unchanged`),()=>Z(`common.save`),()=>Z(`common.cancel`)]),d(`submit`,n,b),z(_,()=>g(a),e=>h(a,e)),z(w,()=>g(o),e=>h(o,e)),P(D,()=>g(s),e=>h(s,e)),z(N,()=>g(u),e=>h(u,e)),z(L,()=>g(f),e=>h(f,e)),c(`click`,U,()=>{h(i,!1),h(f,``)}),t(e,n)},E=e=>{var n=dr(),i=l(n),a=e=>{var n=lr(),i=l(n);k(n),y(()=>R(i,`${r.account.route??``}/`)),t(e,n)};m(i,e=>{r.account.route&&e(a)});var o=S(i,2),s=l(o,!0);k(o);var u=S(o,2),d=e=>{var n=ur(),r=l(n,!0);k(n),y(()=>R(r,g(p))),t(e,n)};m(u,e=>{g(p)&&e(d)});var f=S(u,2);Tt(l(f),{size:15}),k(f),k(n),y((e,t)=>{M(o,`title`,r.account.base_url??``),R(s,r.account.base_url),M(f,`aria-label`,e),M(f,`title`,t),f.disabled=!!r.busy},[()=>Z(`endpoint.edit`),()=>Z(`endpoint.edit`)]),c(`click`,f,_),t(e,n)};m(w,e=>{g(i)?e(T):(r.account.route||r.account.base_url)&&e(E,1)}),t(n,x),te()}o([`click`]);var pr=f(`

`),mr=f(``),hr=f(`

`),gr=f(`
`),_r=f(``),vr=f(`

`,1);function yr(n,r){I(r,!0);let i=e(``),a=e(null),o,s=j(()=>r.accounts.filter(e=>`${e.name} ${e.provider} ${e.route??``} ${e.email??``}`.toLowerCase().includes(g(i).toLowerCase()))),u=e(!1);var f=vr(),p=C(f),_=l(p),b=l(_,!0);k(_);var x=S(_),w=l(x),T=l(w);qn(T,{size:18});var E=S(T,1,!0);k(w);var D=S(w),O=l(D);Be(O,{size:20});var N=S(O,1,!0);k(D),k(x),k(p);var P=S(p,2);q(P,e=>o=e,()=>o);var F=S(P,2),L=l(F),B=l(L,!0);k(L);var V=S(L),H=l(V);Re(H,{size:18});var U=S(H);A(U),k(V),k(F);var W=S(F,2);let G;var ee=l(W);qn(ee,{size:19});var K=S(ee),ne=l(K,!0);k(K),k(W);var re=S(W,2),ie=l(re),J=e=>{{let t=j(()=>Z(`common.noAccountConnected`)),n=j(()=>Z(`accounts.emptyDescription`)),i=j(()=>Z(`common.connectAccount`));Cn(e,{get title(){return g(t)},get description(){return g(n)},get action(){return g(i)},get onclick(){return r.connect}})}},ae=e=>{{let t=j(()=>Z(`common.noMatchingAccount`)),n=j(()=>Z(`common.tryOtherName`));Cn(e,{get title(){return g(t)},get description(){return g(n)}})}},oe=e=>{var n=_r(),i=l(n),o=l(i),u=l(o),d=l(u),f=l(d,!0);k(d);var p=S(d),_=l(p,!0);k(p);var b=S(p),x=l(b,!0);k(b);var C=S(b),w=l(C,!0);k(C);var T=S(C),E=l(T,!0);k(T);var D=S(T),O=l(D,!0);k(D),k(u),k(o);var A=S(o);v(A,21,()=>g(s),e=>e.id,(e,n)=>{let i=j(()=>r.quotas.find(e=>e.account_id===g(n).id));var o=gr(),s=l(o),u=l(s);tn(u,{get account(){return g(n)},get rename(){return r.rename},get busy(){return r.busy}});var d=S(u),f=e=>{cn(e,{get email(){return g(n).email}})};m(d,e=>{g(n).email&&e(f)});var p=S(d),_=e=>{fr(e,{get account(){return g(n)},get busy(){return r.busy},get save(){return r.updateEndpoint}})};m(p,e=>{g(n).provider===`openai_compatible`&&e(_)});var v=S(p),b=e=>{var r=pr(),i=l(r,!0);k(r),y(e=>R(i,e),[()=>Lt(g(n).last_error)]),t(e,r)};m(v,e=>{g(n).last_error&&e(b)}),k(s);var x=S(s),C=l(x),w=l(C);st(w,{get provider(){return g(n).provider},size:23});var T=S(w,1,!0);k(C);var E=S(C),D=e=>{var r=mr(),a=l(r,!0);k(r),y(()=>R(a,g(i)?.subscription?.label??g(n).subscription?.label??g(n).plan)),t(e,r)};m(E,e=>{(g(i)?.subscription?.label||g(n).subscription?.label||g(n).plan)&&e(D)}),k(x);var O=S(x),A=l(O);let N;var P=S(l(A),1,!0);k(A),k(O);var F=S(O);or(l(F),{get account(){return g(n)},get quota(){return g(i)},get busy(){return r.busy},get save(){return r.setReserve}}),k(F);var I=S(F),L=l(I,!0);k(I);var z=S(I),B=l(z),V=l(B);let H;var U=S(V);Yn(l(U),{size:20}),k(U),k(B);var W=S(B),G=e=>{var i=hr(),o=l(i),s=l(o,!0);k(o);var u=S(o),d=l(u,!0);k(u);var f=S(u),p=l(f,!0);k(f),k(i),y((e,t,n)=>{R(s,e),u.disabled=!!r.busy,R(d,t),R(p,n)},[()=>Z(`accounts.deleteConfirm`),()=>Z(`accounts.deleteButton`),()=>Z(`common.cancel`)]),c(`click`,u,()=>{r.remove(g(n)),h(a,null)}),c(`click`,f,()=>h(a,null)),t(e,i)};m(W,e=>{g(a)===g(n).id&&e(G)}),k(z),k(o),y((e,t,i,a,o,s,c,l)=>{R(T,e),N=Y(A,1,`state-badge`,null,N,t),R(P,i),M(I,`data-label`,a),R(L,o),H=Y(V,1,`switch`,null,H,{on:g(n).enabled}),M(V,`aria-checked`,g(n).enabled),M(V,`aria-label`,s),V.disabled=!!r.busy,M(U,`aria-label`,c),M(U,`title`,l),U.disabled=!!r.busy},[()=>Ht(g(n).provider),()=>({inactive:!g(n).enabled,warning:Vt(g(n))}),()=>Bt(g(n)),()=>Z(`accounts.verifiedPrefix`),()=>g(i)?.updated_at?Kt(g(i).updated_at):Z(`accounts.notVerified`),()=>Z(`common.enable`,{name:Lt(g(n).name)}),()=>Z(`accounts.delete`,{name:Lt(g(n).name)}),()=>Z(`accounts.deleteTitle`)]),c(`click`,V,()=>r.toggle(g(n))),c(`click`,U,()=>h(a,g(n).id,!0)),t(e,o)}),k(A),k(i),k(n),y((e,t,n,r,i,a)=>{R(f,e),R(_,t),R(x,n),R(w,r),R(E,i),R(O,a)},[()=>Z(`accounts.colAccount`),()=>Z(`accounts.colSubscription`),()=>Z(`accounts.colStatus`),()=>Z(`accounts.colReserve`),()=>Z(`accounts.colVerified`),()=>Z(`accounts.colActions`)]),t(e,n)};m(ie,e=>{r.accounts.length?g(s).length?e(oe,-1):e(ae,1):e(J)}),k(re),y((e,t,n,i,a,o,s,c)=>{R(b,e),w.disabled=!!r.busy,R(E,t),R(N,n),R(B,i),M(U,`placeholder`,a),M(U,`aria-label`,o),G=Y(W,1,`drop-zone svelte-1x1hfd6`,null,G,{dragging:g(u)}),M(W,`aria-label`,s),R(ne,c)},[()=>Z(`accounts.title`),()=>Z(`common.import`),()=>Z(`common.connectAccount`),()=>Z(r.accounts.length===1?`common.accountCount.one`:`common.accountCount.other`,{count:r.accounts.length}),()=>Z(`common.searchAccount`),()=>Z(`common.searchAccount`),()=>Z(`accounts.dropLabel`),()=>Z(`accounts.drop`)]),c(`click`,w,()=>o.click()),c(`click`,D,function(...e){r.connect?.apply(this,e)}),c(`change`,P,e=>{e.currentTarget.files?.length&&r.importFiles(e.currentTarget.files),e.currentTarget.value=``}),z(U,()=>g(i),e=>h(i,e)),d(`dragover`,W,e=>{e.preventDefault(),h(u,!0)}),d(`dragleave`,W,()=>h(u,!1)),d(`drop`,W,e=>{e.preventDefault(),h(u,!1),e.dataTransfer?.files.length&&r.importFiles(e.dataTransfer.files)}),t(n,f),te()}o([`click`,`change`]);var br=new Set([`$$slots`,`$$events`,`$$legacy`]);function xr(e,t){let n=E(t,br),r=[[`path`,{d:`M12 7v6`}],[`path`,{d:`M12 9h2`}],[`path`,{d:`M3 12a9 9 0 1 0 9-9 9.74 9.74 0 0 0-6.74 2.74L3 8`}],[`path`,{d:`M3 3v5h5`}],[`circle`,{cx:`12`,cy:`15`,r:`2`}]];X(e,W({name:`rotate-ccw-key`},()=>n,{get iconNode(){return r}}))}var Sr=new Set([`$$slots`,`$$events`,`$$legacy`]);function Cr(e,t){let n=E(t,Sr),r=[[`rect`,{width:`18`,height:`11`,x:`3`,y:`11`,rx:`2`,ry:`2`}],[`path`,{d:`M7 11V7a5 5 0 0 1 10 0v4`}]];X(e,W({name:`lock`},()=>n,{get iconNode(){return r}}))}var wr=new Set([`$$slots`,`$$events`,`$$legacy`]);function Tr(e,t){let n=E(t,wr),r=[[`circle`,{cx:`12`,cy:`12`,r:`10`}],[`path`,{d:`M12 16v-4`}],[`path`,{d:`M12 8h.01`}]];X(e,W({name:`info`},()=>n,{get iconNode(){return r}}))}var Er=new Set([`$$slots`,`$$events`,`$$legacy`]);function Dr(e,t){let n=E(t,Er),r=[[`path`,{d:`M21 12c.552 0 1.005-.449.95-.998a10 10 0 0 0-8.953-8.951c-.55-.055-.998.398-.998.95v8a1 1 0 0 0 1 1z`}],[`path`,{d:`M21.21 15.89A10 10 0 1 1 8 2.83`}]];X(e,W({name:`chart-pie`},()=>n,{get iconNode(){return r}}))}var Or=f(`

`);function kr(e,n){I(n,!0);let r=F(n,`locked`,3,!1),i=F(n,`wide`,3,!1),a;H(()=>(a.showModal(),()=>a.close()));var o=Or();let s;var u=l(o),f=l(u),p=l(f,!0);k(f);var m=S(f);Pe(l(m),{size:20}),k(m),k(u);var h=S(u,2);ae(h,()=>n.children),k(o),q(o,e=>a=e,()=>a),y(e=>{s=Y(o,1,`modal svelte-1k2jq0p`,null,s,{wide:i()}),R(p,n.title),M(m,`aria-label`,e),m.disabled=r()},[()=>Z(`common.close`)]),d(`cancel`,o,e=>{e.preventDefault(),r()||n.close()}),c(`click`,m,function(...e){n.close?.apply(this,e)}),t(e,o),te()}o([`click`]);var Ar=f(``),jr=f(`
`),Mr=f(`
`),Nr=f(``),Pr=f(``),Fr=f(`

`),Ir=f(``),Lr=f(`

`);function Rr(n,r){I(r,!0);let i=b(()=>G(r.client)),a=e(w(i?.name??``)),o=e(w(i?.access.all??!0)),s=e(w([...i?.access.pools??[]])),u=e(w([...i?.access.accounts??[]])),f=w(Object.fromEntries(Object.entries(i?.shares??{}).map(([e,t])=>[e,String(t)]))),p=e(!1),_=e(``),x=j(()=>It(r.accounts)),C=j(()=>g(x).filter(e=>g(o)||g(s).includes(e.id)||e.accounts.some(e=>g(u).includes(e.id))));function T(e){return r.clients.reduce((t,n)=>n.id===i?.id?t:t+(n.shares[e]??0),0)}function E(e){let t=Number((f[e]??``).trim().replace(`,`,`.`));return Number.isFinite(t)&&t>0?t:0}function O(e){return 100-T(e)-E(e)}function N(e){h(s,g(s).includes(e)?g(s).filter(t=>t!==e):[...g(s),e],!0)}function P(e){h(u,g(u).includes(e)?g(u).filter(t=>t!==e):[...g(u),e],!0)}async function F(e){if(e.preventDefault(),g(p))return;h(_,``);let t=g(o)?[]:g(x).filter(e=>g(s).includes(e.id)).map(e=>e.id),n=g(o)?[]:r.accounts.filter(e=>g(u).includes(e.id)&&!t.includes(e.route||e.provider)).map(e=>e.id);if(!g(o)&&!t.length&&!n.length){h(_,Z(`clients.pickAccess`),!0);return}let c={};for(let e of g(C)){let t=(f[e.id]??``).trim().replace(`,`,`.`);if(!t)continue;let n=Number(t);if(!/^\d+(\.\d+)?$/.test(t)||n<=0||n>100){h(_,Z(`clients.shareInvalid`),!0);return}c[e.id]=n}let l={name:g(a).trim(),access:{all:g(o),pools:t,accounts:n},shares:c};h(p,!0);try{r.saved(i?await $.updateClient(i.id,l):await $.createClient(l),!i)}catch(e){h(_,e.message,!0)}finally{h(p,!1)}}{let e=j(()=>i?Z(`clients.editTitle`,{name:i.name}):Z(`clients.new`));kr(n,{get title(){return g(e)},get close(){return r.close},get locked(){return g(p)},wide:!0,children:(e,n)=>{var b=Lr(),w=l(b),T=l(w),E=l(T,!0);k(T);var I=S(T);A(I),k(w);var L=S(w,2),B=l(L),V=l(B,!0);k(B);var H=S(B,2),U=l(H),W=l(U),G=l(W,!0);k(W);var K=S(W),te=l(K,!0);k(K),k(U);var q=S(U);k(H);var re=S(H,2),ie=e=>{var n=Mr();v(n,21,()=>g(x),e=>e.id,(e,n)=>{let r=j(()=>g(s).includes(g(n).id));var i=jr(),a=l(i),o=l(a);A(o);var d=S(o);st(d,{get provider(){return g(n).provider},size:20});var f=S(d),p=l(f,!0);k(f),k(a);var m=S(a,2);v(m,21,()=>g(n).accounts,e=>e.id,(e,n)=>{let i=j(()=>g(r)||g(u).includes(g(n).id));var a=Ar(),o=l(a,!0);k(a),y(e=>{Y(a,1,D([`chip`,g(i)&&`on`]),`svelte-vb71yz`),M(a,`aria-pressed`,g(i)),a.disabled=g(r),R(o,e)},[()=>Lt(g(n).name)]),c(`click`,a,()=>P(g(n).id)),t(e,a)}),k(m),k(i),y(e=>{M(a,`title`,e),ee(o,g(r)),R(p,g(n).name)},[()=>Z(`clients.wholePool`,{pool:g(n).name})]),c(`change`,o,()=>N(g(n).id)),t(e,i)}),k(n),t(e,n)};m(re,e=>{g(o)||e(ie)}),k(L);var J=S(L,2),ae=l(J),oe=l(ae,!0),se=S(oe);Tr(l(se),{size:16}),k(se),k(ae);var ce=S(ae,2),le=e=>{var n=Pr();v(n,21,()=>g(C),e=>e.id,(e,n)=>{let r=j(()=>O(g(n).id));var i=Nr(),a=l(i),o=l(a);st(o,{get provider(){return g(n).provider},size:22});var s=S(o,1,!0);k(a);var c=S(a),u=l(c);A(u),ne(),k(c);var d=S(c),p=l(d,!0);k(d),k(i),y((e,t)=>{R(s,g(n).name),M(u,`aria-label`,e),Y(d,1,D([`share-common`,g(r)<0&&`over`]),`svelte-vb71yz`),R(p,t)},[()=>Z(`clients.shareOf`,{pool:g(n).name}),()=>g(r)<0?Z(`clients.overbooked`):Z(`clients.common`,{value:Ut(g(r))})]),z(u,()=>f[g(n).id],e=>f[g(n).id]=e),t(e,i)}),k(n),t(e,n)},ue=e=>{var n=Fr(),r=l(n,!0);k(n),y(e=>R(r,e),[()=>Z(`clients.noPool`)]),t(e,n)};m(ce,e=>{g(C).length?e(le):e(ue,-1)}),k(J);var de=S(J,2),fe=e=>{var n=Ir(),r=l(n,!0);k(n),y(()=>R(r,g(_))),t(e,n)};m(de,e=>{g(_)&&e(fe)});var X=S(de,2),pe=l(X),me=l(pe,!0);k(pe);var he=S(pe),ge=l(he,!0);k(he),k(X),k(b),y((e,t,n,r,i,a,s,c,l,u,d,f)=>{R(E,e),M(I,`placeholder`,t),R(V,n),R(G,r),R(te,i),Y(q,1,D([`switch`,g(o)&&`on`])),M(q,`aria-checked`,g(o)),M(q,`aria-label`,a),R(oe,s),M(se,`title`,c),M(se,`aria-label`,l),pe.disabled=g(p),R(me,u),he.disabled=d,R(ge,f)},[()=>Z(`clients.name`),()=>Z(`clients.namePlaceholder`),()=>Z(`clients.access`),()=>Z(`clients.allAccounts`),()=>Z(`clients.allAccountsHint`),()=>Z(`clients.allAccounts`),()=>Z(`clients.shares`),()=>Z(`clients.sharesInfo`),()=>Z(`clients.sharesInfo`),()=>Z(`common.cancel`),()=>g(p)||!g(a).trim(),()=>Z(i?`common.save`:`clients.create`)]),d(`submit`,b,F),z(I,()=>g(a),e=>h(a,e)),c(`click`,q,()=>h(o,!g(o))),c(`click`,pe,function(...e){r.close?.apply(this,e)}),t(e,b)},$$slots:{default:!0}})}te()}o([`click`,`change`]);var zr=new Set([`$$slots`,`$$events`,`$$legacy`]);function Br(e,t){let n=E(t,zr),r=[[`rect`,{width:`14`,height:`14`,x:`8`,y:`8`,rx:`2`,ry:`2`}],[`path`,{d:`M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2`}]];X(e,W({name:`copy`},()=>n,{get iconNode(){return r}}))}async function Vr(e){try{if(navigator.clipboard?.writeText){await navigator.clipboard.writeText(e);return}}catch{}let t=document.activeElement instanceof HTMLElement?document.activeElement:null,n=t instanceof HTMLInputElement||t instanceof HTMLTextAreaElement?t:null,r=n?.selectionStart!=null&&n.selectionEnd!=null?{start:n.selectionStart,end:n.selectionEnd,direction:n.selectionDirection}:null,i=document.getSelection(),a=i?Array.from({length:i.rangeCount},(e,t)=>i.getRangeAt(t).cloneRange()):[],o=document.createElement(`textarea`);o.value=e,o.readOnly=!0,o.tabIndex=-1,o.setAttribute(`aria-hidden`,`true`),o.style.cssText=`position:fixed;top:0;left:0;opacity:0;pointer-events:none;font-size:16px`;try{if((t?.closest(`dialog[open]`)??document.body).append(o),o.focus({preventScroll:!0}),o.select(),o.setSelectionRange(0,e.length),!document.execCommand(`copy`))throw Error(`Clipboard copy failed.`)}finally{if(o.remove(),t?.focus({preventScroll:!0}),i){i.removeAllRanges();for(let e of a)i.addRange(e)}n&&r&&n.setSelectionRange(r.start,r.end,r.direction??void 0)}}var Hr=f(` `,1),Ur=f(``),Wr=f(`

`,1);function Gr(n,r){I(r,!0);let i=e(!1),a=e(``);async function o(){try{await Vr(r.key),h(i,!0),h(a,``)}catch{h(i,!1),h(a,Z(`common.copyRefused`),!0)}}{let e=j(()=>Z(`clients.keyTitle`,{name:r.name}));kr(n,{get title(){return g(e)},get close(){return r.close},children:(e,n)=>{var s=Wr(),u=C(s),d=l(u);be(d,{size:17});var f=S(d,1,!0);k(u);var p=S(u,2),h=l(p),_=l(h,!0);k(h);var v=S(h),b=l(v),x=e=>{var n=Hr(),r=C(n);Dt(r,{size:17});var i=S(r,1,!0);y(e=>R(i,e),[()=>Z(`clients.copied`)]),t(e,n)},w=e=>{var n=Hr(),r=C(n);Br(r,{size:17});var i=S(r,1,!0);y(e=>R(i,e),[()=>Z(`clients.copyKey`)]),t(e,n)};m(b,e=>{g(i)?e(x):e(w,-1)}),k(v),k(p);var T=S(p,2),E=l(T,!0);k(T);var D=S(T,2),O=e=>{var n=Ur(),r=l(n,!0);k(n),y(()=>R(r,g(a))),t(e,n)};m(D,e=>{g(a)&&e(O)});var A=S(D,2),j=l(A),M=l(j,!0);k(j),k(A),y((e,t,n)=>{R(f,e),R(_,r.key),R(E,t),R(M,n)},[()=>Z(`clients.keyOnce`),()=>Z(`clients.keyBoite`),()=>Z(`common.close`)]),c(`click`,v,o),c(`click`,j,function(...e){r.close?.apply(this,e)}),t(e,s)},$$slots:{default:!0}})}te()}o([`click`]);var Kr=new Set([`$$slots`,`$$events`,`$$legacy`]);function qr(e,t){let n=E(t,Kr),r=[[`path`,{d:`m6 9 6 6 6-6`}]];X(e,W({name:`chevron-down`},()=>n,{get iconNode(){return r}}))}var Jr=f(``),Yr=f(``),Xr=f(``),Zr=f(``),Qr=f(`

`),$r=f(`

`),ei=f(`

`),ti=f(` `,1),ni=f(` `),ri=f(`
`),ii=f(`
`),ai=f(`
`),oi=f(`

`),si=f(`

`);function ci(n,r){I(r,!0);let i=[{id:`day`,hours:24},{id:`week`,hours:168},{id:`month`,hours:720}],a=e(w(i[0])),o=e(null),s=e(``),u=e(null),f=e(null),p=j(()=>new Map(r.clients.map(e=>[e.id,e.name])));x(()=>{let e=g(a).hours;r.version;let t=!0;return $.clientStats(e).then(e=>{t&&(h(o,e),h(s,``))},e=>{t&&h(s,e.message,!0)}),()=>{t=!1}});function _(e){return e?g(p).has(e)?{id:e,label:g(p).get(e),color:r.colors.get(e)??r.noKeyColor}:{id:`former`,label:Z(`clients.former`),color:r.formerColor}:{id:`no-key`,label:Z(`clients.noKey`),color:r.noKeyColor}}let b=j(()=>{let e=new Map;for(let t of r.clients)e.set(t.id,{..._(t.id),calls:0,errors:0,input:0,output:0,cache:0,latency:0,last:``,models:[]});for(let t of g(o)?.totals??[]){let n=_(t.client_id),r=e.get(n.id);r||(r={...n,calls:0,errors:0,input:0,output:0,cache:0,latency:0,last:``,models:[]},e.set(n.id,r)),T(r,t),t.last_at>r.last&&(r.last=t.last_at);let i=`${t.provider}/${t.model}`,a=r.models.find(e=>e.key===i);a||(a={key:i,provider:t.provider,model:t.model,calls:0,errors:0,input:0,output:0,cache:0,latency:0},r.models.push(a)),T(a,t)}for(let t of e.values())t.models.sort((e,t)=>t.input+t.output-(e.input+e.output));return[...e.values()].sort((e,t)=>t.input+t.output-(e.input+e.output)||t.calls-e.calls||e.label.localeCompare(t.label))});function T(e,t){e.calls+=t.calls,e.errors+=t.errors,e.input+=t.input_tokens,e.output+=t.output_tokens,e.cache+=t.cache_read_tokens,e.latency+=t.latency_ms}let E=j(()=>g(b).reduce((e,t)=>({calls:e.calls+t.calls,errors:e.errors+t.errors,tokens:e.tokens+t.input+t.output}),{calls:0,errors:0,tokens:0})),D=j(()=>g(b).filter(e=>e.calls>0).length),O=j(()=>{let e=g(a).hours<=24,t=new Date,n=[];if(e){let e=new Date(t);e.setMinutes(0,0,0);for(let t=g(a).hours-1;t>=0;t--)n.push({start:new Date(e.getTime()-t*36e5),label:``,values:new Map,total:0})}else{let e=g(a).hours/24;for(let r=e-1;r>=0;r--){let e=new Date(t.getFullYear(),t.getMonth(),t.getDate()-r);n.push({start:e,label:``,values:new Map,total:0})}}let r=new Intl.DateTimeFormat(vt(),e?{hour:_t()===`en`?`numeric`:`2-digit`,minute:`2-digit`}:{weekday:g(a).hours<=168?`short`:void 0,day:`numeric`,month:`short`});for(let e of n)e.label=r.format(e.start);for(let t of g(o)?.hours??[]){let r=new Date(`${t.hour}:00:00Z`),i=e?n.findIndex(e=>e.start.getTime()===r.getTime()):n.findIndex(e=>e.start.getFullYear()===r.getFullYear()&&e.start.getMonth()===r.getMonth()&&e.start.getDate()===r.getDate());if(i<0)continue;let a=_(t.client_id).id;n[i].values.set(a,(n[i].values.get(a)??0)+t.tokens),n[i].total+=t.tokens}return n}),A=j(()=>Math.max(1,...g(O).map(e=>e.total))),N=j(()=>g(b).filter(e=>e.input+e.output>0));function P(e,t){return t?e/t*100:0}function F(e){return Z(`common.percent`,{value:Ut(e)})}function z(e){let t=g(O)[e];return`${t.label}: ${g(N).filter(e=>t.values.get(e.id)).map(e=>`${e.label} ${Wt(t.values.get(e.id))}`).join(`, `)||Z(`stats.none`)}`}var B=si(),V=l(B),H=l(V),U=l(H,!0),W=S(U);Tr(l(W),{size:16}),k(W),k(H);var G=S(H,2);v(G,21,()=>i,e=>e.id,(e,n)=>{var r=Jr();let i;var o=l(r,!0);k(r),y(e=>{M(r,`aria-pressed`,g(a).id===g(n).id),i=Y(r,1,`svelte-1gmdt1j`,null,i,{active:g(a).id===g(n).id}),R(o,e)},[()=>Z(`stats.${g(n).id}`)]),c(`click`,r,()=>{h(a,g(n),!0),h(f,null)}),t(e,r)}),k(G),k(V);var ee=S(V,2),K=e=>{var n=Yr(),r=l(n,!0);k(n),y(()=>R(r,g(s))),t(e,n)};m(ee,e=>{g(s)&&e(K)});var q=S(ee,2),ne=l(q),re=l(ne),ie=l(re),ae=l(ie,!0);k(ie);var oe=S(ie),se=l(oe,!0);k(oe),k(re);var ce=S(re,2),le=l(ce),ue=l(le,!0);k(le);var de=S(le),fe=l(de,!0);k(de),k(ce);var X=S(ce,2),pe=l(X),me=l(pe,!0);k(pe);var he=S(pe),ge=l(he,!0);k(he),k(X);var _e=S(X,2),ve=l(_e),ye=l(ve,!0);k(ve);var be=S(ve);let xe;var Se=l(be,!0);k(be),k(_e),k(ne);var Ce=S(ne,2),we=l(Ce),Te=l(we,!0);k(we);var Ee=S(we,2);let De;v(Ee,23,()=>g(O),e=>e.start.getTime(),(e,n,r)=>{var i=Zr();let a;var o=l(i);let s;v(o,21,()=>g(N),e=>e.id,(e,r)=>{let i=j(()=>g(n).values.get(g(r).id)??0);var a=L(),o=C(a),s=e=>{var n=Xr();let a;y(()=>a=J(n,``,a,{"flex-grow":g(i),background:g(r).color})),t(e,n)};m(o,e=>{g(i)&&e(s)}),t(e,a)}),k(o),k(i),y((e,t)=>{a=Y(i,1,`column svelte-1gmdt1j`,null,a,{dim:g(f)!=null&&g(f)!==g(r)}),M(i,`aria-label`,e),s=J(o,``,s,t)},[()=>z(g(r)),()=>({height:`${P(g(n).total,g(A))??``}%`})]),d(`mouseenter`,i,()=>h(f,g(r),!0)),d(`focus`,i,()=>h(f,g(r),!0)),d(`blur`,i,()=>h(f,null)),t(e,i)}),k(Ee);var Oe=S(Ee,2),ke=l(Oe),Ae=l(ke,!0);k(ke);var je=S(ke),Me=l(je,!0);k(je);var Ne=S(je),Pe=l(Ne,!0);k(Ne),k(Oe);var Fe=S(Oe,2),Ie=e=>{let n=j(()=>g(O)[g(f)]);var r=ei();let i,a;var o=l(r),s=l(o,!0);k(o);var c=S(o,2);v(c,17,()=>g(N).filter(e=>g(n).values.get(e.id)),e=>e.id,(e,r)=>{var i=Qr(),a=l(i);let o;var s=S(a,1,!0),c=S(s),u=l(c,!0);k(c),k(i),y(e=>{o=J(a,``,o,{background:g(r).color}),R(s,g(r).label),R(u,e)},[()=>Wt(g(n).values.get(g(r).id))]),t(e,i)},e=>{var n=$r(),r=l(n,!0);k(n),y(e=>R(r,e),[()=>Z(`stats.none`)]),t(e,n)}),k(r),y(()=>{i=Y(r,1,`tip svelte-1gmdt1j`,null,i,{right:g(f)>g(O).length/2}),a=J(r,``,a,{left:`${(g(f)+.5)/g(O).length*100}%`}),R(s,g(n).label)}),t(e,r)};m(Fe,e=>{g(f)!=null&&e(Ie)}),k(Ce);var Le=S(Ce,2);v(Le,21,()=>g(b),e=>e.id,(e,n)=>{let r=j(()=>g(n).input+g(n).output);var i=ai();let a;var o=l(i),s=l(o),d=l(s);let f;var p=S(d),_=l(p,!0);k(p),k(s);var b=S(s,2),x=l(b),w=l(x);let T;k(x);var D=S(x),O=l(D,!0);k(D),k(b);var A=S(b,2),N=e=>{var i=ti(),a=C(i),o=l(a),s=l(o,!0);k(o);var c=S(o);k(a);var u=S(a,2),d=l(u),f=l(d,!0);k(d);var p=S(d);k(u);var m=S(u,2),h=l(m,!0);k(m);var _=S(m,2);let v;var b=l(_,!0);k(_);var x=S(_,2),w=l(x,!0);k(x),qr(S(x,2),{size:18,class:`chevron`}),y((e,t,r,i,a,o,l,u)=>{R(s,e),R(c,` ${t??``}`),R(f,r),R(p,` ${i??``}`),M(m,`title`,a),R(h,o),v=Y(_,1,`figure tabular errors svelte-1gmdt1j`,null,v,{bad:g(n).errors>0}),R(b,l),R(w,u)},[()=>Wt(g(r)),()=>Z(`stats.tokensUnit`),()=>Wt(g(n).calls),()=>Z(`stats.callsUnit`),()=>Z(`stats.cacheInfo`),()=>Z(`stats.cache`,{value:Ut(P(g(n).cache,g(n).input))}),()=>g(n).errors?Z(`stats.errorCount`,{count:Wt(g(n).errors)}):Z(`stats.noError`),()=>Kt(g(n).last)]),t(e,i)},I=e=>{var n=ni(),r=l(n,!0);k(n),y(e=>R(r,e),[()=>Z(`stats.idle`)]),t(e,n)};m(A,e=>{g(n).calls?e(N):e(I,-1)}),k(o);var L=S(o,2),z=e=>{var r=ii(),i=l(r),a=l(i),o=l(a,!0);k(a);var s=S(a),c=l(s,!0);k(s);var u=S(s),d=l(u,!0);k(u);var f=S(u),p=l(f,!0);k(f);var m=S(f),h=l(m,!0);k(m);var _=S(m),b=l(_,!0);k(_);var x=S(_),C=l(x,!0);k(x),k(i);var w=S(i,2);v(w,17,()=>g(n).models,e=>e.key,(e,n)=>{var r=ri(),i=l(r),a=l(i);st(a,{get provider(){return g(n).provider},size:16});var o=S(a,1,!0);k(i);var s=S(i),c=l(s,!0);k(s);var u=S(s),d=l(u,!0);k(u);var f=S(u),p=l(f,!0);k(f);var m=S(f),h=l(m,!0);k(m);var _=S(m),v=l(_,!0);k(_);var b=S(_);let x;var C=l(b,!0);k(b),k(r),y((e,t,r,i,a,s)=>{R(o,g(n).model),R(c,e),R(d,t),R(p,r),R(h,i),R(v,a),x=Y(b,1,`tabular svelte-1gmdt1j`,null,x,{bad:g(n).errors>0}),R(C,s)},[()=>Wt(g(n).calls),()=>Wt(g(n).input),()=>Wt(g(n).output),()=>Wt(g(n).cache),()=>g(n).calls?`${Ut(g(n).latency/g(n).calls/1e3)} s`:`-`,()=>Wt(g(n).errors)]),t(e,r)}),k(r),y((e,t,n,r,i,a,s)=>{R(o,e),R(c,t),R(d,n),R(p,r),R(h,i),R(b,a),R(C,s)},[()=>Z(`stats.model`),()=>Z(`stats.calls`),()=>Z(`stats.input`),()=>Z(`stats.output`),()=>Z(`stats.cacheRead`),()=>Z(`stats.latency`),()=>Z(`stats.errors`)]),t(e,r)};m(L,e=>{g(u)===g(n).id&&e(z)}),k(i),y((e,t)=>{a=Y(i,1,`client-row svelte-1gmdt1j`,null,a,{idle:!g(n).calls}),M(o,`aria-expanded`,g(u)===g(n).id),o.disabled=!g(n).calls,f=J(d,``,f,{background:g(n).color}),R(_,g(n).label),T=J(w,``,T,e),R(O,t)},[()=>({width:`${P(g(r),g(E).tokens)??``}%`,background:g(n).color}),()=>g(n).calls?F(P(g(r),g(E).tokens)):``]),c(`click`,o,()=>h(u,g(u)===g(n).id?null:g(n).id,!0)),t(e,i)},e=>{var n=oi(),r=l(n,!0);k(n),y(e=>R(r,e),[()=>Z(`stats.empty`)]),t(e,n)}),k(Le),k(q),k(B),y((e,t,n,r,i,a,o,s,c,l,u,d,f,p,m)=>{R(U,e),M(W,`title`,t),M(W,`aria-label`,n),M(G,`aria-label`,r),R(ae,i),R(se,a),R(ue,o),R(fe,s),R(me,c),R(ge,g(D)),R(ye,l),xe=Y(be,1,`tabular svelte-1gmdt1j`,null,xe,{bad:g(E).errors>0}),R(Se,u),M(Ce,`aria-label`,d),R(Te,f),De=J(Ee,``,De,{"--count":g(O).length}),R(Ae,g(O)[0]?.label),R(Me,p),R(Pe,m)},[()=>Z(`stats.title`),()=>Z(`stats.info`),()=>Z(`stats.info`),()=>Z(`stats.period`),()=>Z(`stats.tokens`),()=>Wt(g(E).tokens),()=>Z(`stats.calls`),()=>Wt(g(E).calls),()=>Z(`stats.activeClients`),()=>Z(`stats.errors`),()=>g(E).calls?F(P(g(E).errors,g(E).calls)):`-`,()=>Z(`stats.chart`),()=>Wt(g(A)===1?0:g(A)),()=>g(O)[Math.floor(g(O).length/2)]?.label,()=>g(O).at(-1)?.label]),d(`mouseleave`,Ce,()=>h(f,null)),t(n,B),te()}o([`click`]);var li=f(`

`),ui=f(`
`),di=f(` `),fi=f(` `),pi=f(` `),mi=f(` `,1),hi=f(``),gi=f(` `),_i=f(``),vi=f(`
`),yi=f(`

`),bi=f(`

`),xi=f(`

`),Si=f(` `),Ci=f(`

`),wi=f(``),Ti=f(`
`),Ei=f(``),Di=f(`

`),Oi=f(`
`),ki=f(`

`,1),Ai=f(`

`),ji=f(`

`),Mi=f(`

`,1),Ni=f(``),Pi=f(`
`,1),Fi=f(`

`,1);function Ii(n,r){I(r,!0);let i=`#d6def0`,a=`#9b8ec4`,o=[`#7899ff`,`#4dd4ac`,`#f4c154`,`#c792ea`,`#5ccfe6`,`#ff9e7a`,`#a3e635`,`#f78fb3`],s=j(()=>r.report?.clients??[]),u=j(()=>r.report?.usage??[]),d=j(()=>It(r.accounts)),f=e(null),p=e(null),_=e(null),b=e(!1),x=e(``),w=j(()=>new Map(g(s).map((e,t)=>[e.id,o[t%o.length]]))),T=j(()=>new Map(g(s).map(e=>[e.id,e.name]))),E=j(()=>g(u).some(e=>(e.clients[``]??0)>0)),O=j(()=>g(u).some(e=>Object.entries(e.clients).some(([e,t])=>e&&!g(T).has(e)&&t>0)));function A(e){return Z(`common.percent`,{value:Ut(e)})}function N(e){return g(d).find(t=>t.id===e)??{id:e,provider:e,name:e,accounts:[]}}function P(e){let t=r.accounts.find(t=>t.id===e);return t?Lt(t.name):Z(`activity.unknownAccount`)}function F(e,t){return At.indexOf(e.kind)-At.indexOf(t.kind)}function L(e,t){return e.access.all||e.access.pools.includes(t.id)||t.accounts.some(t=>e.access.accounts.includes(t.id))}function z(e){return[...new Set([...g(d).filter(t=>L(e,t)).map(e=>e.id),...Object.keys(e.shares)])].map(t=>{let n=N(t),r=new Map;for(let t of g(u)){if(!n.accounts.some(e=>e.id===t.account_id))continue;let i=t.clients[e.id]??0,a=r.get(t.kind);(!a||i>a.points)&&r.set(t.kind,{kind:t.kind,points:i,account:t.account_id})}return{pool:n,share:e.shares[t]??null,kinds:[...r.values()].sort(F)}}).filter(e=>e.kinds.length||e.share!=null)}function B(e){let t=[];for(let n of g(s)){let r=e.clients[n.id]??0;r>0&&t.push({id:n.id,label:n.name,points:r,color:g(w).get(n.id)??o[0],kind:`client`})}let n=e.clients[``]??0;n>0&&t.push({id:`no-key`,label:Z(`clients.noKey`),points:n,color:i,kind:`client`});let r=Object.entries(e.clients).reduce((e,[t,n])=>t&&!g(T).has(t)?e+n:e,0);r>0&&t.push({id:`former`,label:Z(`clients.former`),points:r,color:a,kind:`client`}),e.outside>0&&t.push({id:`outside`,label:Z(`clients.outside`),points:e.outside,color:`#6f80a0`,kind:`outside`});let c=e.used-t.reduce((e,t)=>e+t.points,0);return c>.05&&t.push({id:`rest`,label:Z(`clients.unexplained`),points:c,color:``,kind:`rest`}),t}let V=j(()=>{let e=[],t=new Set;for(let n of g(d))for(let r of n.accounts){let n=g(u).filter(e=>e.account_id===r.id).sort(F);if(t.add(r.id),!n.length)continue;let i=e.find(e=>e.provider===r.provider);i||(i={provider:r.provider,name:Ht(r.provider),accounts:[]},e.push(i)),i.accounts.push({id:r.id,rows:n})}let n=[...new Set(g(u).filter(e=>!t.has(e.account_id)).map(e=>e.account_id))];return n.length&&e.push({provider:``,name:Z(`activity.unknownAccount`),accounts:n.map(e=>({id:e,rows:g(u).filter(t=>t.account_id===e).sort(F)}))}),e});function H(e){return{whole:e.access.pools.map(N),single:r.accounts.filter(t=>e.access.accounts.includes(t.id)&&!e.access.pools.includes(t.route||t.provider)),missing:e.access.accounts.filter(e=>!r.accounts.some(t=>t.id===e))}}function U(e,t){h(f,null),e.key&&h(p,{name:e.client.name,key:e.key},!0),r.updated(Z(t?`notice.clientCreated`:`notice.clientSaved`))}async function W(){let e=g(_);if(!(!e||g(b))){h(b,!0),h(x,``);try{if(e.kind===`rotate`){let t=await $.updateClient(e.client.id,{rotate_key:!0});h(_,null),t.key&&h(p,{name:t.client.name,key:t.key},!0),r.updated(Z(`notice.keyReplaced`))}else await $.deleteClient(e.client.id),h(_,null),r.updated(Z(`notice.clientDeleted`))}catch(e){h(x,e.message,!0)}finally{h(b,!1)}}}var G=Fi(),ee=C(G),K=l(ee),q=l(K),ne=l(q,!0);k(q);var re=S(q,2),ae=e=>{var n=li(),r=l(n),i=l(r);Cr(i,{size:14});var a=S(i,1,!0);k(r),k(n),y((e,t)=>{M(r,`title`,e),R(a,t)},[()=>Z(`clients.enforcedInfo`),()=>Z(`clients.enforced`)]),t(e,n)};m(re,e=>{r.report&&e(ae)}),k(K);var oe=S(K,2),se=l(oe),ce=l(se);Be(ce,{size:20});var le=S(ce,1,!0);k(se),k(oe),k(ee);var ue=S(ee,2),de=e=>{ci(e,{get clients(){return g(s)},get colors(){return g(w)},noKeyColor:i,formerColor:a,get version(){return r.report}})};m(ue,e=>{r.report&&e(de)});var fe=S(ue,2),X=e=>{var n=ui(),r=l(n);{let e=j(()=>Z(`clients.emptyTitle`)),t=j(()=>Z(`clients.emptyDescription`)),n=j(()=>Z(`clients.new`));Cn(r,{get title(){return g(e)},get description(){return g(t)},get action(){return g(n)},onclick:()=>h(f,{client:null},!0)})}k(n),t(e,n)},pe=e=>{var n=ki(),o=C(n),u=l(o),d=l(u,!0);k(u),k(o);var p=S(o,2);v(p,21,()=>g(s),e=>e.id,(e,n)=>{let i=j(()=>H(g(n))),a=j(()=>Object.entries(g(n).shares));var o=xi();let s;var u=l(o),d=l(u),p=S(l(d)),b=l(p,!0);k(p);var T=S(p),E=l(T,!0);k(T),k(d);var D=S(d,2),O=l(D);Tt(l(O),{size:18}),k(O);var F=S(O,2);xr(l(F),{size:18}),k(F);var I=S(F,2);Yn(l(I),{size:18}),k(I),k(D),k(u);var L=S(u,2),B=l(L),V=e=>{var n=di(),r=l(n,!0);k(n),y(e=>R(r,e),[()=>Z(`clients.allAccounts`)]),t(e,n)},U=e=>{var n=mi(),r=C(n);v(r,17,()=>g(i).whole,e=>e.id,(e,n)=>{var r=fi(),i=l(r);st(i,{get provider(){return g(n).provider},size:17});var a=S(i,1,!0);k(r),y(()=>R(a,g(n).name)),t(e,r)});var a=S(r,2);v(a,17,()=>g(i).single,e=>e.id,(e,n)=>{var r=fi(),i=l(r);st(i,{get provider(){return g(n).provider},size:17});var a=S(i,1,!0);k(r),y(e=>R(a,e),[()=>Lt(g(n).name)]),t(e,r)});var o=S(a,2);v(o,16,()=>g(i).missing,e=>e,(e,n)=>{var r=pi(),i=l(r,!0);k(r),y(e=>R(i,e),[()=>Z(`activity.unknownAccount`)]),t(e,r)});var s=S(o,2),c=e=>{var n=pi(),r=l(n,!0);k(n),y(e=>R(r,e),[()=>Z(`clients.noAccess`)]),t(e,n)};m(s,e=>{!g(i).whole.length&&!g(i).single.length&&!g(i).missing.length&&e(c)}),t(e,n)};m(B,e=>{g(n).access.all?e(V):e(U,-1)}),k(L);var W=S(L,2);v(W,21,()=>g(a),([e,t])=>e,(e,n)=>{var r=j(()=>ie(g(n),2));let i=()=>g(r)[0],a=()=>g(r)[1],o=j(()=>N(i()));var s=hi(),c=l(s);Dr(c,{size:15});var u=S(c,1,!0),d=S(u),f=l(d,!0);k(d),k(s),y((e,t)=>{M(s,`title`,e),R(u,g(o).name),R(f,t)},[()=>Z(`clients.shareOf`,{pool:g(o).name}),()=>A(a())]),t(e,s)},e=>{var n=gi(),r=l(n,!0);k(n),y(e=>R(r,e),[()=>Z(`clients.noShare`)]),t(e,n)}),k(W);var G=S(W,2);v(G,17,()=>z(g(n)),e=>e.pool.id,(e,n)=>{var r=bi(),i=l(r),a=l(i);st(a,{get provider(){return g(n).pool.provider},size:18});var o=S(a,1,!0);k(i);var s=S(i,2);v(s,17,()=>g(n).kinds,e=>e.kind,(e,r)=>{var i=vi(),a=l(i),o=l(a,!0);k(a);var s=S(a,2),c=l(s);let u;var d=S(c),f=e=>{var r=_i();let i;y(e=>i=J(r,``,i,e),[()=>({left:`${Math.min(100,g(n).share)}%`})]),t(e,r)};m(d,e=>{g(n).share!=null&&e(f)}),k(s);var p=S(s,2);let h;var _=l(p,!0);k(p),k(i),y((e,t,a,s)=>{M(i,`title`,e),R(o,t),u=J(c,``,u,a),h=Y(p,1,`usage-value tabular svelte-15ihc32`,null,h,{over:g(n).share!=null&&g(r).points>=g(n).share}),R(_,s)},[()=>g(n).pool.accounts.length>1?Z(`clients.highest`,{name:P(g(r).account)}):void 0,()=>jt(g(r).kind),()=>({width:`${Math.min(100,g(r).points)}%`}),()=>g(n).share==null?A(g(r).points):Z(`clients.ofShare`,{used:Ut(g(r).points),share:Ut(g(n).share)})]),t(e,i)},e=>{var n=yi(),r=l(n,!0);k(n),y(e=>R(r,e),[()=>Z(`clients.notMeasured`)]),t(e,n)}),k(r),y(()=>R(o,g(n).pool.name)),t(e,r)}),k(o),y((e,t,i,a,c,l,u,d)=>{s=J(o,``,s,e),R(b,g(n).name),M(T,`title`,t),R(E,g(n).key_hint),M(O,`title`,i),M(O,`aria-label`,a),O.disabled=!!r.busy,M(F,`title`,c),M(F,`aria-label`,l),F.disabled=!!r.busy,M(I,`title`,u),M(I,`aria-label`,d),I.disabled=!!r.busy},[()=>({"--client":g(w).get(g(n).id)}),()=>Z(`clients.createdAt`,{date:Kt(g(n).created_at)}),()=>Z(`clients.editTitle`,{name:g(n).name}),()=>Z(`clients.editTitle`,{name:g(n).name}),()=>Z(`clients.rotate`),()=>Z(`clients.rotateNamed`,{name:g(n).name}),()=>Z(`clients.delete`),()=>Z(`clients.deleteNamed`,{name:g(n).name})]),c(`click`,O,()=>h(f,{client:g(n)},!0)),c(`click`,F,()=>{h(x,``),h(_,{kind:`rotate`,client:g(n)},!0)}),c(`click`,I,()=>{h(x,``),h(_,{kind:`delete`,client:g(n)},!0)}),t(e,o)}),k(p);var b=S(p,2),T=l(b),F=l(T,!0),I=S(F);Tr(l(I),{size:16}),k(I),k(T);var L=S(T,2),U=l(L);v(U,17,()=>g(s),e=>e.id,(e,n)=>{var r=Si(),i=l(r);let a;var o=S(i,1,!0);k(r),y(e=>{a=J(i,``,a,e),R(o,g(n).name)},[()=>({background:g(w).get(g(n).id)})]),t(e,r)});var W=S(U,2),G=e=>{var n=Si(),r=l(n);J(r,``,{},{background:i});var a=S(r,1,!0);k(n),y(e=>R(a,e),[()=>Z(`clients.noKey`)]),t(e,n)};m(W,e=>{g(E)&&e(G)});var ee=S(W,2),K=e=>{var n=Si(),r=l(n);J(r,``,{},{background:a});var i=S(r,1,!0);k(n),y(e=>R(i,e),[()=>Z(`clients.former`)]),t(e,n)};m(ee,e=>{g(O)&&e(K)});var te=S(ee,2),q=l(te);J(q,``,{},{background:`#6f80a0`});var ne=S(q,1,!0);k(te);var re=S(te,2),ae=S(l(re),1,!0);k(re),k(L),k(b);var oe=S(b,2),se=e=>{var n=Ci(),r=l(n),i=l(r,!0);k(r),k(n),y(e=>R(i,e),[()=>Z(`clients.breakdownEmpty`)]),t(e,n)},ce=e=>{var n=Oi();v(n,21,()=>g(V),e=>e.provider,(e,n)=>{var r=Di(),i=l(r),a=l(i),o=e=>{st(e,{get provider(){return g(n).provider},size:24})};m(a,e=>{g(n).provider&&e(o)});var s=S(a),c=l(s,!0);k(s),k(i);var u=S(i,2);v(u,17,()=>g(n).accounts,e=>e.id,(e,n)=>{var r=Ei(),i=l(r),a=l(i,!0);k(i);var o=S(i,2);v(o,21,()=>g(n).rows,e=>e.kind,(e,n)=>{var r=Ti(),i=l(r),a=l(i,!0);k(i);var o=S(i,2);v(o,21,()=>B(g(n)),e=>e.id,(e,n)=>{var r=wi();let i;y((e,t)=>{Y(r,1,D([`segment`,g(n).kind]),`svelte-15ihc32`),M(r,`title`,`${g(n).label??``}: ${e??``}`),i=J(r,``,i,t)},[()=>A(g(n).points),()=>({width:`${Math.min(100,g(n).points)}%`,background:g(n).color||void 0})]),t(e,r)}),k(o);var s=S(o,2),c=l(s,!0);k(s);var u=S(s,2),d=l(u);Ae(d,{size:14});var f=S(d,1,!0);k(u),k(r),y((e,t,n,r,i)=>{R(a,e),M(o,`aria-label`,t),R(c,n),M(u,`title`,r),R(f,i)},[()=>jt(g(n).kind),()=>B(g(n)).map(e=>`${e.label} ${A(e.points)}`).join(`, `),()=>Z(`clients.used`,{value:Ut(g(n).used)}),()=>Z(`quotas.resetAt`,{date:Kt(new Date(g(n).reset*1e3).toISOString())}),()=>qt(new Date(g(n).reset*1e3).toISOString())]),t(e,r)}),k(o),k(r),y(e=>R(a,e),[()=>P(g(n).id)]),t(e,r)}),k(r),y(()=>R(c,g(n).name)),t(e,r)}),k(n),t(e,n)};m(oe,e=>{g(V).length?e(ce,-1):e(se)}),y((e,t,n,r,i,a)=>{R(d,e),R(F,t),M(I,`title`,n),M(I,`aria-label`,r),R(ne,i),R(ae,a)},[()=>Z(`clients.keys`),()=>Z(`clients.breakdown`),()=>Z(`clients.breakdownInfo`),()=>Z(`clients.breakdownInfo`),()=>Z(`clients.outside`),()=>Z(`clients.unexplained`)]),t(e,n)};m(fe,e=>{r.report&&!g(s).length?e(X):g(s).length&&e(pe,1)});var me=S(fe,2),he=e=>{Rr(e,{get client(){return g(f).client},get clients(){return g(s)},get accounts(){return r.accounts},close:()=>h(f,null),saved:U})};m(me,e=>{g(f)&&e(he)});var ge=S(me,2),_e=e=>{Gr(e,{get name(){return g(p).name},get key(){return g(p).key},close:()=>h(p,null)})};m(ge,e=>{g(p)&&e(_e)});var ve=S(ge,2),ye=e=>{let n=j(()=>g(_));{let r=j(()=>Z(g(n).kind===`rotate`?`clients.rotateTitle`:`clients.deleteTitle`,{name:g(n).client.name}));kr(e,{get title(){return g(r)},close:()=>h(_,null),get locked(){return g(b)},children:(e,r)=>{var i=Pi(),a=C(i),o=e=>{var n=Ai(),r=l(n,!0);k(n),y(e=>R(r,e),[()=>Z(`clients.rotateText`)]),t(e,n)},u=e=>{var n=Mi(),r=C(n),i=l(r,!0);k(r);var a=S(r),o=e=>{var n=ji(),r=l(n,!0);k(n),y(e=>R(r,e),[()=>Z(`clients.deleteLast`)]),t(e,n)};m(a,e=>{g(s).length===1&&e(o)}),y(e=>R(i,e),[()=>Z(`clients.deleteText`)]),t(e,n)};m(a,e=>{g(n).kind===`rotate`?e(o):e(u,-1)});var d=S(a,2),f=e=>{var n=Ni(),r=l(n,!0);k(n),y(()=>R(r,g(x))),t(e,n)};m(d,e=>{g(x)&&e(f)});var p=S(d,2),v=l(p),w=l(v,!0);k(v);var T=S(v),E=l(T,!0);k(T),k(p),y((e,t)=>{v.disabled=g(b),R(w,e),Y(T,1,D([`button`,g(n).kind===`delete`?`danger`:`primary`])),T.disabled=g(b),R(E,t)},[()=>Z(`common.cancel`),()=>Z(g(n).kind===`rotate`?`clients.rotateButton`:`clients.deleteButton`)]),c(`click`,v,()=>h(_,null)),c(`click`,T,W),t(e,i)},$$slots:{default:!0}})}};m(ve,e=>{g(_)&&e(ye)}),y((e,t)=>{R(ne,e),se.disabled=!r.report||!!r.busy,R(le,t)},[()=>Z(`clients.title`),()=>Z(`clients.new`)]),c(`click`,se,()=>h(f,{client:null},!0)),t(n,G),te()}o([`click`]);var Li=new Set([`$$slots`,`$$events`,`$$legacy`]);function Ri(e,t){let n=E(t,Li),r=[[`path`,{d:`M7 7h10v10`}],[`path`,{d:`M7 17 17 7`}]];X(e,W({name:`arrow-up-right`},()=>n,{get iconNode(){return r}}))}var zi=f(` `),Bi=f(`
`),Vi=f(`

`,1),Hi=f(` `),Ui=f(`

/v1/models

`,1),Wi=f(` `),Gi=f(`

`),Ki=f(` `),qi=f(`
`),Ji=f(`

`,1),Yi=f(`

`),Xi=f(`

`),Zi=f(`

dk_...

`),Qi=f(``),$i=f(`

Claude Code

 

`),ea=f(``),ta=f(`

`,1);function na(n,r){I(r,!0);let i=F(r,`clients`,19,()=>[]),a=F(r,`showEmails`,3,!1),o=e(``),s=e(!1),u=e(!1),d=e(``),f=e(`openai`),p=j(()=>r.models.filter(e=>`${e.id} ${e.name} ${e.provider}`.toLowerCase().includes(g(o).toLowerCase()))),_=j(()=>new Map(i().map(e=>[e.id,e.name]))),b=j(()=>r.calls.filter(e=>(!g(s)||e.status>=400||e.error)&&`${e.model} ${e.provider} ${e.account_id} ${e.client_id?g(_).get(e.client_id)??``:``}`.toLowerCase().includes(g(o).toLowerCase()))),x=j(()=>r.summary?.requests?Math.round((r.summary.requests-r.summary.errors)/r.summary.requests*100):null),w=j(()=>r.summary?.client_api_base_url??(typeof window>`u`?``:`${window.location.origin}/v1`)),T=j(()=>`$env:ANTHROPIC_BASE_URL = '${g(w).replace(/\/v1$/,``).replace(/'/g,`''`)}'\n$env:ANTHROPIC_AUTH_TOKEN = 'dk_...'\nclaude`);async function E(e){try{await Vr(e),h(u,!0),h(d,``)}catch{h(u,!1),h(d,Z(`common.copyRefused`),!0)}}var D=L(),N=C(D),P=e=>{var n=Vi(),i=C(n),a=l(i),o=l(a),s=l(o,!0);k(o);var u=S(o),d=l(u,!0);k(u),k(a);var f=S(a);let p;var h=S(l(f),1,!0);k(f),k(i);var _=S(i,2),b=l(_),w=l(b),T=l(w,!0);k(w);var E=S(w),D=l(E,!0);k(E);var O=S(E),A=l(O,!0);k(O),k(b);var M=S(b),N=l(M),P=l(N,!0);k(N);var F=S(N),I=l(F,!0);k(F);var L=S(F),z=l(L,!0);k(L),k(M);var B=S(M),V=l(B),H=l(V,!0);k(V);var U=S(V),W=l(U,!0);k(U);var G=S(U),ee=l(G,!0);k(G),k(B);var K=S(B),te=l(K),q=l(te,!0);k(te);var ne=S(te),re=l(ne,!0);k(ne);var ie=S(ne),J=l(ie,!0);k(ie),k(K);var ae=S(K),oe=l(ae),se=l(oe,!0);k(oe);var ce=S(oe),le=l(ce,!0);k(ce);var ue=S(ce),de=l(ue,!0);k(ue),k(ae),k(_);var fe=S(_,2),X=l(fe),pe=l(X),me=l(pe,!0);k(pe);var he=S(pe),ge=l(he,!0);k(he),k(X);var _e=S(X),ve=l(_e,!0);Ri(S(ve),{size:14}),k(_e),k(fe);var ye=S(fe,2),be=l(ye),xe=e=>{{let t=j(()=>Z(`overview.emptyTitle`)),n=j(()=>Z(`overview.emptyDescription`)),i=j(()=>Z(`overview.openQuickstart`));Cn(e,{get title(){return g(t)},get description(){return g(n)},get action(){return g(i)},onclick:()=>r.navigate(`quickstart`)})}},Se=e=>{var n=Bi(),i=l(n),a=l(i),o=l(a),s=l(o),c=l(s,!0);k(s);var u=S(s),d=l(u,!0);k(u);var f=S(u),p=l(f,!0);k(f);var m=S(f),h=l(m,!0);k(m);var _=S(m),b=l(_,!0);k(_),k(o),k(a);var x=S(a);v(x,21,()=>r.calls.slice(0,8),e=>e.id,(e,n)=>{var r=zi(),i=l(r),a=l(i,!0);k(i);var o=S(i),s=l(o,!0);k(o);var c=S(o),u=l(c,!0);k(c);var d=S(c),f=l(d);let p;var m=l(f,!0);k(f),k(d);var h=S(d),_=l(h,!0);k(h),k(r),y((e,t,r)=>{R(a,g(n).model),R(s,e),R(u,t),p=Y(f,1,`http-status svelte-15ozkp9`,null,p,{error:g(n).status>=400||!!g(n).error}),R(m,r),R(_,g(n).latency_ms==null?`-`:`${g(n).latency_ms} ms`)},[()=>Ht(g(n).provider),()=>Kt(g(n).started_at),()=>g(n).error?Z(`table.error`):g(n).status]),t(e,r)}),k(x),k(i),k(n),y((e,t,n,r,i)=>{R(c,e),R(d,t),R(p,n),R(h,r),R(b,i)},[()=>Z(`table.model`),()=>Z(`table.provider`),()=>Z(`table.time`),()=>Z(`table.status`),()=>Z(`table.duration`)]),t(e,n)};m(be,e=>{r.calls.length?e(Se,-1):e(xe)}),k(ye),y((e,t,n,i,a,o,c,l,u,m,g,_,v,y,b,x,S,C,w,E)=>{R(s,e),R(d,t),p=Y(f,1,`state-badge`,null,p,{inactive:!r.summary}),R(h,n),R(T,i),R(D,r.summary?r.summary.enabled_accounts:`-`),R(A,a),R(P,o),R(I,c),R(z,l),R(H,u),R(W,m),R(ee,g),R(q,_),R(re,v),R(J,y),R(se,b),R(le,x),R(de,S),R(me,C),R(ge,w),R(ve,E)},[()=>Z(`nav.overview`),()=>Z(`overview.description`),()=>Z(r.summary?`overview.connected`:`overview.disconnected`),()=>Z(`overview.activeAccounts`),()=>Z(`overview.ofAccounts`,{count:r.summary?.accounts??0}),()=>Z(`overview.requests`),()=>Wt(r.summary?.requests),()=>Z(`overview.inFlight`,{count:r.summary?.in_flight??0}),()=>Z(`overview.tokens`),()=>r.summary?Wt(r.summary.input_tokens+r.summary.output_tokens):`-`,()=>Z(`overview.tokensDetail`),()=>Z(`overview.cache`),()=>r.summary?Wt(r.summary.cache_read_tokens??0):`-`,()=>Z(`overview.cacheDetail`),()=>Z(`overview.success`),()=>g(x)==null?`-`:Z(`common.percent`,{value:g(x)}),()=>Z(`overview.errors`,{count:r.summary?.errors??0}),()=>Z(`overview.recent`),()=>Z(`overview.recentDescription`),()=>Z(`overview.viewAll`)]),c(`click`,_e,()=>r.navigate(`activity`)),t(e,n)},B=e=>{var n=Ui(),i=C(n),a=l(i),s=l(a),u=l(s,!0);k(s);var d=S(s),f=l(d,!0);k(d),k(a);var _=S(a),b=l(_,!0);k(_),k(i);var x=S(i,2),w=l(x),T=l(w);ne(),k(w);var E=S(w),D=l(E);Re(D,{size:15});var O=S(D);A(O),k(E),k(x);var N=S(x,2),P=l(N),F=e=>{{let t=j(()=>Z(`models.emptyTitle`)),n=j(()=>Z(`models.emptyDescription`)),i=j(()=>Z(`models.addAccount`));Cn(e,{get title(){return g(t)},get description(){return g(n)},get action(){return g(i)},onclick:()=>r.navigate(`accounts`)})}},I=e=>{{let t=j(()=>Z(`models.noMatchTitle`)),n=j(()=>Z(`models.noMatchDescription`));Cn(e,{get title(){return g(t)},get description(){return g(n)}})}},L=e=>{var n=Bi(),i=l(n),a=l(i),o=l(a),s=l(o),u=l(s,!0);k(s);var d=S(s),f=l(d,!0);k(d);var m=S(d),h=l(m,!0);k(m);var _=S(m),b=l(_,!0);k(_);var x=S(_),C=l(x,!0);k(x),k(o),k(a);var w=S(a);v(w,21,()=>g(p),e=>`${e.provider}:${e.id}`,(e,n)=>{var i=Hi(),a=l(i),o=l(a,!0);k(a);var s=S(a),u=l(s,!0);k(s);var d=S(s),f=l(d),p=l(f);st(p,{get provider(){return g(n).provider},size:17});var m=S(p,1,!0);k(f),k(d);var h=S(d),_=l(h,!0);k(h);var v=S(h),b=l(v);let x;k(v),k(i),y((e,t,i)=>{R(o,g(n).name??g(n).id),R(u,g(n).id),R(m,e),R(_,t),x=Y(b,1,`switch`,null,x,{on:g(n).enabled!==!1}),M(b,`aria-checked`,g(n).enabled!==!1),M(b,`aria-label`,i),b.disabled=!!r.busy},[()=>Ht(g(n).provider),()=>Wt(g(n).context_length??void 0),()=>Z(`common.enable`,{name:g(n).name??g(n).id})]),c(`click`,b,()=>r.toggleModel(g(n))),t(e,i)}),k(w),k(i),k(n),y((e,t,n,r,i)=>{R(u,e),R(f,t),R(h,n),R(b,r),R(C,i)},[()=>Z(`table.model`),()=>Z(`table.id`),()=>Z(`table.provider`),()=>Z(`table.context`),()=>Z(`table.available`)]),t(e,n)};m(P,e=>{r.models.length?g(p).length?e(L,-1):e(I,1):e(F)}),k(N),y((e,t,n,r,i,a)=>{R(u,e),R(f,t),R(b,n),R(T,`${r??``} `),M(O,`aria-label`,i),M(O,`placeholder`,a)},[()=>Z(`nav.models`),()=>Z(`models.description`),()=>Z(`models.count`,{count:r.models.length}),()=>Z(`models.endpoint`),()=>Z(`models.search`),()=>Z(`models.search`)]),z(O,()=>g(o),e=>h(o,e)),t(e,n)},V=e=>{var n=Ji(),i=C(n),c=l(i),u=l(c),d=l(u,!0);k(u);var f=S(u),p=l(f,!0);k(f),k(c);var x=S(c),w=l(x,!0);k(x),k(i);var T=S(i,2),E=l(T),D=l(E);A(D);var N=S(D,1,!0);k(E);var P=S(E),F=l(P);Re(F,{size:15});var I=S(F);A(I),k(P),k(T);var L=S(T,2),B=l(L),V=e=>{{let t=j(()=>Z(r.calls.length?`activity.noMatchTitle`:`activity.emptyTitle`)),n=j(()=>Z(r.calls.length?`activity.noMatchDescription`:`activity.emptyDescription`));Cn(e,{get title(){return g(t)},get description(){return g(n)}})}},H=e=>{var n=qi(),i=l(n),o=l(i),s=l(o),c=l(s),u=l(c,!0);k(c);var d=S(c),f=l(d,!0);k(d);var p=S(d),h=l(p,!0);k(p);var x=S(p),C=l(x,!0);k(x);var w=S(x),T=l(w,!0);k(w);var E=S(w),D=l(E,!0);k(E),k(s),k(o);var O=S(o);v(O,21,()=>g(b),e=>e.id,(e,n)=>{var i=Ki(),o=l(i),s=l(o,!0);k(o);var c=S(o),u=l(c,!0),d=S(u),f=l(d,!0),p=S(f),h=e=>{var r=Wi(),i=l(r,!0);k(r),y((e,t)=>{M(r,`title`,e),R(i,t)},[()=>Z(`activity.client`,{name:g(_).get(g(n).client_id)??``}),()=>g(_).get(g(n).client_id)]),t(e,r)},v=j(()=>g(n).client_id&&g(_).has(g(n).client_id));m(p,e=>{g(v)&&e(h)}),k(d);var b=S(d),x=e=>{var r=Gi(),i=l(r,!0);k(r),y(()=>R(i,g(n).error)),t(e,r)};m(b,e=>{g(n).error&&e(x)}),k(c);var C=S(c),w=l(C,!0);k(C);var T=S(C),E=l(T);let D;var O=l(E,!0);k(E),k(T);var A=S(T),N=l(A,!0);k(A);var P=S(A),F=l(P,!0);k(P),k(i),y((e,t,r,i,a)=>{R(s,e),R(u,g(n).model),R(f,t),R(w,r),D=Y(E,1,`http-status svelte-15ozkp9`,null,D,{error:g(n).status>=400||!!g(n).error}),R(O,i),R(N,g(n).latency_ms==null?`-`:`${g(n).latency_ms} ms`),R(F,a)},[()=>Kt(g(n).started_at),()=>Lt(r.accounts.find(e=>e.id===g(n).account_id)?.name??g(n).account_id??Z(`activity.unknownAccount`),a()),()=>Ht(g(n).provider),()=>g(n).error?Z(`table.error`):g(n).status,()=>Wt((g(n).input_tokens??0)+(g(n).output_tokens??0))]),t(e,i)}),k(O),k(i),k(n),y((e,t,n,r,i,a)=>{R(u,e),R(f,t),R(h,n),R(C,r),R(T,i),R(D,a)},[()=>Z(`table.time`),()=>Z(`table.modelAccount`),()=>Z(`table.provider`),()=>Z(`table.status`),()=>Z(`table.duration`),()=>Z(`table.tokens`)]),t(e,n)};m(B,e=>{g(b).length?e(H,-1):e(V)}),k(L),y((e,t,n,r,i,a)=>{R(d,e),R(p,t),R(w,n),R(N,r),M(I,`aria-label`,i),M(I,`placeholder`,a)},[()=>Z(`activity.title`),()=>Z(`activity.description`),()=>Z(`activity.count`,{count:r.calls.length}),()=>Z(`activity.onlyErrors`),()=>Z(`activity.search`),()=>Z(`activity.searchPlaceholder`)]),O(D,()=>g(s),e=>h(s,e)),z(I,()=>g(o),e=>h(o,e)),t(e,n)},H=e=>{var n=ta(),i=C(n),a=l(i),o=l(a,!0);k(a),k(i);var s=S(i,2),p=l(s);let _;var v=l(p,!0);k(p);var b=S(p);let x;k(s);var D=S(s,2),O=l(D),A=e=>{var n=Yi(),i=l(n),a=l(i),o=l(a,!0);k(a);var s=S(a),u=l(s,!0);Ri(S(u),{size:18}),k(s),k(i),k(n),y((e,t)=>{R(o,e),R(u,t)},[()=>Z(`common.connectAccount`),()=>Z(`quickstart.openAccounts`)]),c(`click`,s,()=>r.navigate(`accounts`)),t(e,n)};m(O,e=>{r.accounts.length||e(A)});var N=S(O,2),P=e=>{var n=Zi(),i=l(n),a=l(i),o=l(a,!0);k(a);var s=S(a),d=l(s),f=l(d,!0);k(d);var p=S(d),h=l(p),_=e=>{Dt(e,{size:20})},v=e=>{Br(e,{size:20})};m(h,e=>{g(u)?e(_):e(v,-1)}),k(p),k(s);var b=S(s),x=l(b,!0),C=S(x,2,!0);k(b);var T=S(b),D=e=>{var n=Xi(),r=l(n,!0);k(n),y(e=>R(r,e),[()=>Z(`quickstart.keyRequired`)]),t(e,n)};m(T,e=>{r.summary&&!r.summary.clients&&e(D)});var O=S(T),A=l(O,!0);Ri(S(A),{size:18}),k(O),k(i),k(n),y((e,t,n,r,i)=>{R(o,e),R(f,g(w)),M(p,`aria-label`,t),R(x,n),R(C,r),R(A,i)},[()=>Z(`quickstart.baseUrl`),()=>Z(`quickstart.copyUrl`),()=>Z(`quickstart.openaiHint1`),()=>Z(`quickstart.openaiHint2`),()=>Z(`quickstart.chooseModel`)]),c(`click`,p,()=>E(g(w))),c(`click`,O,()=>r.navigate(`models`)),t(e,n)},F=e=>{var n=$i(),i=l(n),a=S(l(i)),o=l(a,!0);k(a);var s=S(a),d=l(s),f=l(d),p=l(f,!0);k(f),k(d);var h=S(d),_=l(h),v=e=>{Dt(e,{size:20})},b=e=>{Br(e,{size:20})};m(_,e=>{g(u)?e(v):e(b,-1)}),k(h),k(s);var x=S(s),C=l(x,!0);k(x);var w=S(x),D=e=>{var n=Xi(),r=l(n,!0);k(n),y(e=>R(r,e),[()=>Z(`quickstart.keyRequired`)]),t(e,n)};m(w,e=>{r.summary&&!r.summary.clients&&e(D)});var O=S(w),A=e=>{var n=Qi(),i=l(n,!0);Ri(S(i),{size:18}),k(n),y(e=>R(i,e),[()=>Z(`quickstart.connectClaude`)]),c(`click`,n,()=>r.navigate(`accounts`)),t(e,n)},N=j(()=>!r.accounts.some(e=>e.provider===`claude`&&e.enabled));m(O,e=>{g(N)&&e(A)}),k(i),k(n),y((e,t,n)=>{R(o,e),R(p,g(T)),M(h,`aria-label`,t),R(C,n)},[()=>Z(`quickstart.powershell`),()=>Z(`quickstart.copyClaude`),()=>Z(`quickstart.claudeHint`)]),c(`click`,h,()=>E(g(T))),t(e,n)};m(N,e=>{g(f)===`openai`?e(P):e(F,-1)});var I=S(N,2),L=e=>{var n=ea(),r=l(n,!0);k(n),y(()=>R(r,g(d))),t(e,n)};m(I,e=>{g(d)&&e(L)}),k(D),y((e,t,n)=>{R(o,e),M(s,`aria-label`,t),_=Y(p,1,`button`,null,_,{primary:g(f)===`openai`}),M(p,`aria-pressed`,g(f)===`openai`),R(v,n),x=Y(b,1,`button`,null,x,{primary:g(f)===`claude`}),M(b,`aria-pressed`,g(f)===`claude`)},[()=>Z(`nav.setupTool`),()=>Z(`quickstart.chooseTool`),()=>Z(`provider.openaiCompatible`)]),c(`click`,p,()=>{h(f,`openai`),h(u,!1),h(d,``)}),c(`click`,b,()=>{h(f,`claude`),h(u,!1),h(d,``)}),t(e,n)};m(N,e=>{r.screen===`overview`?e(P):r.screen===`models`?e(B,1):r.screen===`activity`?e(V,2):r.screen===`quickstart`&&e(H,3)}),t(n,D),te()}o([`click`]);var ra=new Set([`$$slots`,`$$events`,`$$legacy`]);function ia(e,t){let n=E(t,ra),r=[[`path`,{d:`M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z`}],[`path`,{d:`M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7`}],[`path`,{d:`M7 3v4a1 1 0 0 0 1 1h7`}]];X(e,W({name:`save`},()=>n,{get iconNode(){return r}}))}var aa=new Set([`$$slots`,`$$events`,`$$legacy`]);function oa(e,t){let n=E(t,aa),r=[[`path`,{d:`M15 6a9 9 0 0 0-9 9V3`}],[`circle`,{cx:`18`,cy:`6`,r:`3`}],[`circle`,{cx:`6`,cy:`18`,r:`3`}]];X(e,W({name:`git-branch`},()=>n,{get iconNode(){return r}}))}var sa=new Set([`$$slots`,`$$events`,`$$legacy`]);function ca(e,t){let n=E(t,sa),r=[[`path`,{d:`m5 8 6 6`}],[`path`,{d:`m4 14 6-6 2-3`}],[`path`,{d:`M2 5h12`}],[`path`,{d:`M7 2h1`}],[`path`,{d:`m22 22-5-10-5 10`}],[`path`,{d:`M14 18h6`}]];X(e,W({name:`languages`},()=>n,{get iconNode(){return r}}))}var la=f(`

`);function ua(e,n){I(n,!0);var r=la(),i=l(r),a=l(i),o=l(a,!0);k(a);var s=S(a),u=l(s,!0);k(s),k(i);var d=S(i,2),f=l(d);ca(f,{size:18});var p=S(f),m=l(p),h=l(m,!0);k(m),m.value=m.__value=`auto`;var g=S(m),_=l(g,!0);k(g),g.value=g.__value=`en`;var v=S(g),b=l(v,!0);k(v),v.value=v.__value=`fr`,k(p);var x;N(p),k(d),k(r),y((e,t,n,r,i,a,s)=>{R(o,e),R(u,t),M(p,`aria-label`,n),R(h,r),R(_,i),R(b,a),x!==(x=s)&&(p.value=(p.__value=s)??``,T(p,s))},[()=>Z(`settings.language`),()=>Z(`settings.languageDescription`),()=>Z(`settings.language`),()=>Z(`settings.languageAuto`),()=>Z(`settings.languageEnglish`),()=>Z(`settings.languageFrench`),()=>gt()]),c(`change`,p,e=>bt(e.currentTarget.value)),t(e,r),te()}o([`change`]);var da=new Set([`$$slots`,`$$events`,`$$legacy`]);function fa(e,t){let n=E(t,da),r=[[`path`,{d:`M12 15V3`}],[`path`,{d:`M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4`}],[`path`,{d:`m7 10 5 5 5-5`}]];X(e,W({name:`download`},()=>n,{get iconNode(){return r}}))}var pa=new Set([`$$slots`,`$$events`,`$$legacy`]);function ma(e,t){let n=E(t,pa),r=[[`path`,{d:`m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3`}],[`path`,{d:`M12 9v4`}],[`path`,{d:`M12 17h.01`}]];X(e,W({name:`triangle-alert`},()=>n,{get iconNode(){return r}}))}var ha=f(``),ga=f(`

`),_a=f(`

`);function va(n,r){I(r,!0);let i=e(!1),a=e(``),o=e(null),s=e(!1),u=e(void 0);async function d(){h(i,!0),h(a,``);try{let e=await $.exportConfig(),t=typeof e.exported_at==`string`?e.exported_at.slice(0,10):new Date().toISOString().slice(0,10),n=URL.createObjectURL(new Blob([JSON.stringify(e,null,2)],{type:`application/json`}));Object.assign(document.createElement(`a`),{href:n,download:`douane-export-${t}.json`}).click(),setTimeout(()=>URL.revokeObjectURL(n),1e3)}catch(e){h(a,e.message,!0)}finally{h(i,!1)}}async function f(e){h(a,``),h(o,null),h(s,!1);let t=e?.[0];if(g(u)&&(g(u).value=``),!t)return;if(t.size>33554432){h(a,Z(`backup.tooLarge`,{name:t.name}),!0);return}let n;try{n=JSON.parse(await t.text())}catch{h(a,Z(`notice.invalidJson`,{name:t.name}),!0);return}if(n?.format!==`douane-export`||!Array.isArray(n.accounts)){h(a,Z(`backup.notExport`,{name:t.name}),!0);return}h(o,{name:t.name,bundle:n,count:n.accounts.length},!0)}async function p(){g(o)&&await r.restore(g(o).bundle,g(s))&&h(o,null)}var _=_a(),v=l(_),b=l(v),x=l(b,!0);k(b);var C=S(b),w=l(C,!0);k(C),k(v);var T=S(v,2),E=l(T),D=l(E);ma(D,{size:18});var j=S(D),N=l(j,!0);k(j),k(E);var P=S(E,2),F=l(P),L=l(F);fa(L,{size:16});var z=S(L,1,!0);k(F);var B=S(F,2),V=l(B);qn(V,{size:16});var H=S(V,1,!0);k(B);var U=S(B,2);q(U,e=>h(u,e),()=>g(u)),k(P);var W=S(P,2),G=e=>{var n=ha(),r=l(n,!0);k(n),y(()=>R(r,g(a))),t(e,n)};m(W,e=>{g(a)&&e(G)});var ee=S(W,2),K=e=>{var n=ga(),i=l(n),a=l(i,!0);k(i);var u=S(i,2),d=l(u);A(d);var f=S(d),m=l(f,!0);k(f),k(u);var _=S(u,2),v=l(_),b=l(v,!0);k(v);var x=S(v,2),C=l(x,!0);k(x),k(_),k(n),y((e,t,i,o,s)=>{M(n,`aria-label`,e),R(a,t),R(m,i),v.disabled=!!r.busy,R(b,o),x.disabled=r.busy===`restore`,R(C,s)},[()=>Z(`backup.restore`),()=>Z(g(o).count===1?`backup.confirm.one`:`backup.confirm.other`,{count:g(o).count,name:g(o).name}),()=>Z(`backup.withSettings`),()=>r.busy===`restore`?Z(`backup.restoring`):Z(`backup.confirmButton`),()=>Z(`common.cancel`)]),O(d,()=>g(s),e=>h(s,e)),c(`click`,v,p),c(`click`,x,()=>h(o,null)),t(e,n)};m(ee,e=>{g(o)&&e(K)}),k(T),k(_),y((e,t,n,a,o,s)=>{R(x,e),R(w,t),R(N,n),F.disabled=g(i)||!!r.busy,R(z,a),B.disabled=!!r.busy,R(H,o),M(U,`aria-label`,s)},[()=>Z(`backup.title`),()=>Z(`backup.description`),()=>Z(`backup.warning`),()=>g(i)?Z(`backup.exporting`):Z(`backup.export`),()=>Z(`backup.restore`),()=>Z(`backup.restore`)]),c(`click`,F,d),c(`click`,B,()=>g(u)?.click()),c(`change`,U,e=>f(e.currentTarget.files)),t(n,_),te()}o([`click`,`change`]);var ya=f(``),ba=f(``),xa=f(``),Sa=f(`

`),Ca=f(`

`,1);function wa(n,r){I(r,!0);let i=e(w(b(()=>({...r.settings,provider_strategies:{...r.settings.provider_strategies}})))),a=[`round-robin`,`fill-first`,`reset-first`,`smart`];async function o(e){let t={strategy:g(i).strategy,provider_strategies:g(i).provider_strategies};h(i,{...g(i),...e},!0),await r.save(g(i))||h(i,{...g(i),...t},!0)}function s(e,t){let n={...g(i).provider_strategies};t?n[e]=t:delete n[e],o({provider_strategies:n})}var u=Ca(),f=C(u),p=l(f),_=l(p,!0);k(p),k(f);var x=S(f,2),E=l(x);oa(E,{size:18});var D=S(E),O=l(D,!0);k(D),k(x);var j=S(x,2),M=l(j),F=l(M),L=l(F),B=l(L,!0);k(L);var H=S(L),U=l(H,!0);k(H),k(F);var W=S(F);v(W,20,()=>a,e=>e,(e,n)=>{var a=ya();let s;var u=l(a);A(u);var d=S(u),f=l(d,!0),p=S(f),m=l(p,!0);k(p),k(d),k(a),y((e,t)=>{s=Y(a,1,`strategy-option svelte-eyvqa5`,null,s,{chosen:g(i).strategy===n}),V(u,n),ee(u,g(i).strategy===n),u.disabled=!!r.busy,R(f,e),R(m,t)},[()=>Z(`strategy.${n}.label`),()=>Z(`strategy.${n}.desc`)]),c(`change`,u,()=>o({strategy:n})),t(e,a)}),k(W),k(M);var G=S(M,2),K=l(G),q=l(K),ne=l(q,!0);k(q);var re=S(q),ie=l(re,!0);k(re),k(K);var J=S(K),ae=l(J);v(ae,17,()=>r.providers,e=>e.id,(e,n)=>{var o=xa(),u=l(o),d=l(u);st(d,{get provider(){return g(n).id},size:22});var f=S(d,1,!0);k(u);var p=S(u),m=l(p),h=l(m,!0);k(m),m.value=m.__value=``;var _=S(m);v(_,16,()=>a,e=>e,(e,n)=>{var r=ba(),i=l(r,!0);k(r);var a={};y(e=>{R(i,e),a!==(a=n)&&(r.value=(r.__value=n)??``)},[()=>Z(`strategy.${n}.label`)]),t(e,r)}),k(p);var b;N(p),k(o),y((e,t)=>{R(f,e),p.disabled=!!r.busy,R(h,t),b!==(b=g(i).provider_strategies?.[g(n).id]??``)&&(p.value=(p.__value=g(i).provider_strategies?.[g(n).id]??``)??``,T(p,g(i).provider_strategies?.[g(n).id]??``))},[()=>Ht(g(n).id,g(n).name),()=>Z(`settings.defaultRule`)]),c(`change`,p,e=>s(g(n).id,e.currentTarget.value)),t(e,o)});var oe=S(ae),se=e=>{var n=Sa(),r=l(n,!0);k(n),y(e=>R(r,e),[()=>Z(`settings.noProviders`)]),t(e,n)};m(oe,e=>{r.providers.length||e(se)}),k(J),k(G);var ce=S(G,2),le=l(ce),ue=l(le),de=l(ue,!0);k(ue);var fe=S(ue),X=l(fe,!0);k(fe),k(le);var pe=S(le),me=l(pe),he=l(me,!0),ge=S(he),_e=l(ge);A(_e);var ve=S(_e),ye=l(ve,!0);k(ve),k(ge),k(me);var be=S(me),xe=l(be,!0),Se=S(xe),Ce=l(Se);A(Ce);var we=S(Ce),Te=l(we,!0);k(we),k(Se),k(be);var Ee=S(be),De=l(Ee,!0),Oe=S(De),ke=l(Oe),Ae=l(ke,!0);k(ke),ke.value=(ke.__value=null,``);var je=S(ke);v(je,17,()=>r.providers,e=>e.id,(e,n)=>{var r=ba(),i=l(r,!0);k(r);var a={};y(e=>{R(i,e),a!==(a=g(n).id)&&(r.value=(r.__value=g(n).id)??``)},[()=>Ht(g(n).id,g(n).name)]),t(e,r)}),k(Oe),k(Ee),k(pe),k(ce);var Me=S(ce,2),Ne=l(Me),Pe=l(Ne),Fe=l(Pe,!0);k(Pe);var Ie=S(Pe),Le=l(Ie,!0);k(Ie),k(Ne);var Re=S(Ne),ze=l(Re),Be=l(ze,!0),Ve=S(Be),He=l(Ve);A(He);var Ue=S(He),We=l(Ue,!0);k(Ue),k(Ve),k(ze),k(Re),k(Me);var Ge=S(Me,2),Ke=l(Ge),qe=l(Ke);ia(qe,{size:14});var Je=S(qe,1,!0);k(Ke),k(Ge),k(j);var Ye=S(j,2);va(Ye,{get busy(){return r.busy},get restore(){return r.restore}}),ua(S(Ye,2),{}),y((e,t,n,i,a,o,s,c,l,u,d,f,p,m,h,g,v,y,b)=>{R(_,e),R(O,t),R(B,n),R(U,i),R(ne,a),R(ie,o),R(de,s),R(X,c),R(he,l),R(ye,u),R(xe,d),R(Te,f),R(De,p),R(Ae,m),R(Fe,h),R(Le,g),R(Be,v),R(We,y),Ke.disabled=!!r.busy,R(Je,b)},[()=>Z(`nav.settings`),()=>Z(`settings.sessionNote`),()=>Z(`settings.routing`),()=>Z(`settings.routingDescription`),()=>Z(`settings.perProvider`),()=>Z(`settings.perProviderDescription`),()=>Z(`settings.refresh`),()=>Z(`settings.refreshDescription`),()=>Z(`settings.refreshEvery`),()=>Z(`settings.seconds`),()=>Z(`settings.timeout`),()=>Z(`settings.seconds`),()=>Z(`settings.defaultProvider`),()=>Z(`settings.autoProvider`),()=>Z(`settings.weekEnd`),()=>Z(`settings.weekEndDescription`),()=>Z(`settings.freeBefore`),()=>Z(`settings.hours`),()=>r.busy===`settings`?Z(`settings.saving`):Z(`settings.save`)]),d(`submit`,j,e=>{e.preventDefault(),r.save(g(i))}),z(_e,()=>g(i).quota_refresh_seconds,e=>g(i).quota_refresh_seconds=e),z(Ce,()=>g(i).request_timeout_seconds,e=>g(i).request_timeout_seconds=e),P(Oe,()=>g(i).default_provider,e=>g(i).default_provider=e),z(He,()=>g(i).free_before_reset_hours,e=>g(i).free_before_reset_hours=e),t(n,u),te()}o([`change`]);var Ta=f(`

`),Ea=f(` `),Da=f(`

`),Oa=f(`

`),ka=f(``),Aa=f(`

`,1),ja=f(`

`,1),Ma=f(`

`),Na=f(``),Pa=f(``),Fa=f(`

deepseek

`),Ia=f(`

`),La=f(``),Ra=f(`

`),za=f(`

`,1),Ba=f(`

`),Va=f(``),Ha=f(`

`);function Ua(n,r){I(r,!0);let i,a=e(void 0),o=e(null),s=e(``),u=e(!1),f=e(``),p=e(!1),_=e(!1),b=e(``),w=e(``),T=e(``),E=e(``),D=e(``),O=e(``),N=e(`chat`),F=j(()=>g(w)===`openai_compatible`),B=e(!1),V=!1,U={opencode_go:`https://opencode.ai/zen/go`,xai:`https://cli-chat-proxy.grok.com/v1`,openai_compatible:``,kimi:`https://api.kimi.com/coding/v1`,qwen:`https://portal.qwen.ai/v1`};H(()=>(V=!0,i.showModal(),()=>{V=!1,i.close(),h(E,``),h(s,``)}));async function W(e){h(u,!0),h(f,``),h(s,``),h(b,``),h(_,!1),h(B,!1);try{let t=await $.startOAuth(e);V&&(h(o,t),h(b,t.user_code?Z(`connect.waiting`):``,!0))}catch(e){V&&h(f,e.message,!0)}finally{h(u,!1)}}function G(){h(p,!0),h(_,!0),h(s,``),h(E,``),r.completed()}function ee(e,t){return!V||g(o)?.id!==e.id||!t.verification_required&&(e.provider!==`antigravity`||t.error_code!==`google_project_unavailable`)?!1:(h(o,{...e,error_code:t.error_code,verification_required:t.verification_required,verification_available:t.verification_available}),h(_,!0),h(s,``),h(f,``),h(b,``),!0)}async function K(e=!0){let t=g(o);if(!t||g(u)||g(_))return t?.interval??5;h(u,!0),e&&h(f,``);try{let e=await $.oauth(t.id);return!V||g(o)?.id!==t.id||ee(t,e)?5:((e.account_id||e.account?.id)&&[`complete`,`completed`,`connected`,`success`].includes(e.status)?G():e.status===`expired`?(h(_,!0),h(f,Z(`connect.expired`),!0)):e.error||e.status===`error`?(h(_,!0),h(f,e.error||Z(`connect.refused`),!0)):h(b,Z(e.status===`exchanging`?`connect.exchanging`:t.user_code?`connect.waiting`:`connect.stillWaiting`),!0),Math.min(60,Math.max(5,e.interval??t.interval??5)))}catch(e){return V&&h(f,e.message,!0),t.interval??5}finally{h(u,!1)}}x(()=>{let e=g(o);if(!e?.user_code||g(p)||g(_))return;let t=!1,n;async function r(){let i=document.hidden?e?.interval??5:await K(!1);t||(n=setTimeout(r,(i??5)*1e3))}return n=setTimeout(r,Math.max(5,e.interval??5)*1e3),()=>{t=!0,clearTimeout(n)}});async function ne(e){e.preventDefault();let t=g(o);if(!(!t||g(u))){h(u,!0),h(f,``);try{if(!(await $.oauthCallback(t.id,g(s).trim(),t.state)).account?.id)throw Error(Z(`connect.unconfirmed`));V&&G()}catch(e){V&&h(f,e.message,!0);try{let e=await $.oauth(t.id);V&&g(o)?.id===t.id&&(h(_,[`error`,`expired`].includes(e.status),!0),g(_)&&h(s,``),ee(t,e))}catch{}}finally{h(u,!1)}}}async function re(e){e.preventDefault(),h(u,!0),h(f,``);try{let e=await $.importCredential({type:g(w),name:g(T),access_token:g(E),base_url:g(D),...g(F)?{route:g(O).trim().toLowerCase(),...g(N)?{dialect:g(N)}:{}}:{}});if(e.errors?.length||!e.imported)throw Error(e.errors?.length?Rt(e.errors):Z(`connect.notAdded`));V&&G()}catch(e){V&&h(f,e.message,!0)}finally{h(u,!1)}}function ie(){h(o,null),h(w,``),h(E,``),h(s,``),h(f,``),h(b,``),h(_,!1),h(O,``),h(N,`chat`)}async function J(){if(g(o)?.user_code)try{await Vr(g(o).user_code),h(B,!0),g(f)===Z(`connect.copyRefused`)&&h(f,``)}catch{h(B,!1),h(f,Z(`connect.copyRefused`),!0)}}var ae=Ha(),oe=l(ae),Y=l(oe),se=l(Y),ce=l(se,!0);k(se);var le=S(se),ue=l(le,!0);k(le),k(Y);var de=S(Y);Pe(l(de),{size:18}),k(de),k(oe);var fe=S(oe,2),X=e=>{var n=Ta(),i=l(n);Dt(l(i),{size:24}),k(i);var a=S(i),o=l(a,!0);k(a);var s=S(a),u=l(s,!0);k(s);var d=S(s),f=l(d,!0);k(d),k(n),y((e,t,n)=>{R(o,e),R(u,t),R(f,n)},[()=>Z(`connect.success`),()=>Z(`connect.successText`),()=>Z(`connect.viewAccounts`)]),c(`click`,d,function(...e){r.close?.apply(this,e)}),t(e,n)},pe=e=>{var n=L(),r=C(n),i=e=>{var n=Oa(),r=l(n),i=l(r,!0);k(r);var a=S(r,2),s=e=>{var n=Ea(),r=l(n,!0);He(S(r),{size:16}),k(n),y((e,t)=>{M(n,`href`,e),R(r,t)},[()=>`/admin/api/oauth/${encodeURIComponent(g(o).id)}/verification`,()=>Z(`common.verifyGoogle`)]),t(e,n)},d=e=>{var n=Da(),r=l(n,!0);k(n),y(e=>R(r,e),[()=>Z(`common.openAntigravity`)]),t(e,n)};m(a,e=>{g(o).verification_available?e(s):e(d,-1)});var f=S(a,2),p=l(f,!0);k(f);var h=S(f,2),_=l(h),v=l(_,!0);k(_);var b=S(_),x=l(b,!0);k(b),k(h),k(n),y((e,t,n,r)=>{R(i,e),R(p,t),_.disabled=g(u),R(v,n),b.disabled=g(u),R(x,r)},[()=>Z(`connect.googleVerify`),()=>Z(`connect.afterVerify`),()=>Z(`connect.restart`),()=>Z(`common.chooseOtherProvider`)]),c(`click`,_,()=>g(o)&&W(g(o).provider)),c(`click`,b,ie),t(e,n)},a=e=>{var n=ka(),r=l(n),i=l(r,!0);k(r);var a=S(r,2),s=l(a,!0);k(a);var d=S(a,2),f=l(d,!0);k(d);var p=S(d,2),m=l(p,!0);He(S(m),{size:16}),k(p);var h=S(p,2),_=l(h),v=l(_,!0);k(_);var b=S(_),x=l(b,!0);k(b),k(h),k(n),y((e,t,n,r,a,o)=>{R(i,e),R(s,t),R(f,n),R(m,r),_.disabled=g(u),R(v,a),b.disabled=g(u),R(x,o)},[()=>Z(`connect.antigravityTitle`),()=>Z(`connect.antigravityProject`),()=>Z(`connect.antigravityFirstUse`),()=>Z(`connect.antigravityGuide`),()=>Z(`connect.restart`),()=>Z(`common.chooseOtherProvider`)]),c(`click`,_,()=>g(o)&&W(g(o).provider)),c(`click`,b,ie),t(e,n)},f=e=>{var n=Na(),r=l(n),i=e=>{var n=Aa(),r=C(n),i=l(r,!0);k(r);var a=S(r),s=l(a),u=l(s,!0);k(s);var d=S(s),f=l(d),p=e=>{Dt(e,{size:16})},h=e=>{Br(e,{size:16})};m(f,e=>{g(B)?e(p):e(h,-1)}),k(d),k(a),y((e,t)=>{R(i,e),R(u,g(o).user_code),M(d,`aria-label`,t)},[()=>Z(`connect.enterCode`,{provider:Ht(g(o).provider)}),()=>Z(`connect.copyCode`)]),c(`click`,d,J),t(e,n)},a=e=>{var n=Da(),r=l(n,!0);k(n),y(e=>R(r,e),[()=>Z(`connect.authorize`)]),t(e,n)};m(r,e=>{g(o).user_code?e(i):e(a,-1)});var f=S(r,2),p=l(f,!0);He(S(p),{size:14}),k(f);var v=S(f,2),x=e=>{var n=ja(),r=C(n),i=l(r,!0);k(r);var a=S(r),o=l(a),c=l(o,!0);k(o);var f=S(o);A(f);var p=S(f),m=l(p,!0);k(p),k(a),y((e,t,n,r,a)=>{R(i,e),R(c,t),M(f,`placeholder`,n),p.disabled=r,R(m,a)},[()=>Z(`connect.callbackHint`),()=>Z(`connect.callbackLabel`),()=>Z(`connect.callbackPlaceholder`),()=>g(u)||g(_)||!g(s).trim(),()=>Z(`connect.finish`)]),d(`submit`,a,ne),z(f,()=>g(s),e=>h(s,e)),t(e,n)};m(v,e=>{g(o).user_code||e(x)});var w=S(v,2),T=l(w),E=l(T,!0);k(T);var D=S(T),O=l(D,!0);k(D),k(w);var j=S(w),N=e=>{var n=Ma(),r=l(n,!0);k(n),y(()=>R(r,g(b))),t(e,n)};m(j,e=>{g(b)&&e(N)}),k(n),y((e,t,n)=>{M(f,`href`,g(o).url),R(p,e),T.disabled=g(u)||g(_),R(E,t),D.disabled=g(u),R(O,n)},[()=>Z(`connect.open`),()=>Z(`connect.check`),()=>Z(`common.chooseOtherProvider`)]),c(`click`,T,()=>K()),c(`click`,D,ie),t(e,n)};m(r,e=>{g(o).verification_required?e(i):g(o).provider===`antigravity`&&g(o).error_code===`google_project_unavailable`?e(a,1):e(f,-1)}),t(e,n)},me=e=>{var n=Fa(),r=l(n),i=l(r,!0),a=S(i,2,!0),o=S(a),s=l(o,!0);k(o);var f=S(o,1,!0);k(r);var p=S(r),m=l(p),_=l(m,!0);k(m);var b=S(m);A(b);var x=S(b),C=l(x,!0);k(x);var w=S(x);A(w),M(w,`pattern`,`[a-z0-9][a-z0-9_\\-]{0,31}`);var j=S(w),F=l(j,!0);k(j);var I=S(j);A(I);var L=S(I),B=l(L,!0);k(L);var V=S(L);v(V,20,()=>Ot,e=>e,(e,n)=>{var r=Pa(),i=l(r,!0);k(r);var a={};y(e=>{R(i,e),a!==(a=n)&&(r.value=(r.__value=n)??``)},[()=>kt(n)]),t(e,r)}),k(V);var H=S(V),U=l(H,!0);k(H);var W=S(H);A(W);var G=S(W),ee=l(G,!0);k(G),k(p);var K=S(p),te=l(K,!0);k(K),k(n),y((e,t,n,r,o,c,l,d,p,m,h,v)=>{R(i,e),R(a,t),R(s,n),R(f,r),R(_,o),R(C,c),R(F,l),R(B,d),R(U,p),G.disabled=m,R(ee,h),K.disabled=g(u),R(te,v)},[()=>Z(`connect.customIntro1`),()=>Z(`connect.customIntro2`),()=>Z(`connect.customModel`),()=>Z(`connect.customIntro3`),()=>Z(`connect.name`),()=>Z(`endpoint.route`),()=>Z(`endpoint.url`),()=>Z(`endpoint.format`),()=>Z(`endpoint.key`),()=>g(u)||!g(E).trim()||!g(O).trim(),()=>Z(`connect.addEndpoint`),()=>Z(`common.chooseOtherProvider`)]),d(`submit`,p,re),z(b,()=>g(T),e=>h(T,e)),z(w,()=>g(O),e=>h(O,e)),z(I,()=>g(D),e=>h(D,e)),P(V,()=>g(N),e=>h(N,e)),z(W,()=>g(E),e=>h(E,e)),c(`click`,K,ie),t(e,n)},he=e=>{var n=Ia(),r=l(n),i=l(r,!0);k(r);var a=S(r),o=l(a),s=l(o,!0);k(o);var f=S(o);A(f);var p=S(f),m=l(p,!0);k(p);var _=S(p);A(_);var v=S(_),b=l(v,!0);k(v);var x=S(v);A(x);var C=S(x),w=l(C,!0);k(C),k(a);var O=S(a),j=l(O,!0);k(O),k(n),y((e,t,n,r,a,o,c,l,d)=>{R(i,e),R(s,t),M(f,`placeholder`,n),R(m,r),R(b,a),M(x,`placeholder`,o),C.disabled=c,R(w,l),O.disabled=g(u),R(j,d)},[()=>Z(`connect.tokenIntro`),()=>Z(`connect.accountName`),()=>Z(`connect.accountNamePlaceholder`),()=>Z(`connect.token`),()=>Z(`connect.providerUrl`),()=>Z(`connect.providerUrlPlaceholder`),()=>g(u)||!g(E).trim(),()=>Z(`connect.addAccount`),()=>Z(`common.chooseOtherProvider`)]),d(`submit`,a,re),z(f,()=>g(T),e=>h(T,e)),z(_,()=>g(E),e=>h(E,e)),z(x,()=>g(D),e=>h(D,e)),c(`click`,O,ie),t(e,n)},ge=e=>{var n=za(),i=C(n),o=l(i);v(o,17,()=>r.providers,e=>e.id,(e,n)=>{var r=La(),i=l(r);st(l(i),{get provider(){return g(n).id},size:28}),k(i);var a=S(i),o=l(a,!0),s=S(o),d=l(s,!0);k(s),k(a),Ie(S(a),{size:15}),k(r),y((e,t)=>{r.disabled=g(u),R(o,e),R(d,t)},[()=>Ht(g(n).id,g(n).name),()=>Z(g(n).oauth?`connect.oauthOption`:g(n).id===`openai_compatible`?`connect.apiKeyOption`:`connect.tokenOption`)]),c(`click`,r,()=>{g(n).oauth?W(g(n).id):(h(w,g(n).id,!0),h(D,g(n).base_url??U[g(n).id]??``,!0),h(T,g(n).id===`openai_compatible`?``:Ht(g(n).id,g(n).name),!0))}),t(e,r)});var s=S(o),d=e=>{var n=Ra(),r=l(n,!0);k(n),y(e=>R(r,e),[()=>Z(`connect.noProvider`)]),t(e,n)};m(s,e=>{r.providers.length||e(d)}),k(i);var f=S(i,2),p=l(f),_=l(p),b=l(_,!0);k(_);var x=S(_),E=l(x,!0);k(x),k(p);var O=S(p),A=l(O);qn(A,{size:14});var j=S(A,1,!0);k(O);var M=S(O);q(M,e=>h(a,e),()=>g(a)),k(f),y((e,t,n)=>{R(b,e),R(E,t),O.disabled=g(u),R(j,n)},[()=>Z(`connect.haveFile`),()=>Z(`connect.importFiles`),()=>Z(`common.import`)]),c(`click`,O,()=>g(a)?.click()),c(`change`,M,e=>{e.currentTarget.files?.length&&(r.importFiles(e.currentTarget.files),r.close())}),t(e,n)};m(fe,e=>{g(p)?e(X):g(o)?e(pe,1):g(w)&&g(F)?e(me,2):g(w)?e(he,3):e(ge,-1)});var _e=S(fe,2),ve=e=>{var n=Ba(),r=l(n,!0);k(n),y(e=>R(r,e),[()=>Z(`connect.pending`)]),t(e,n)};m(_e,e=>{g(u)&&e(ve)});var ye=S(_e,2),be=e=>{var n=Va(),r=l(n,!0);k(n),y(()=>R(r,g(f))),t(e,n)};m(ye,e=>{g(f)&&e(be)}),k(ae),q(ae,e=>i=e,()=>i),y((e,t,n)=>{R(ce,e),R(ue,t),M(de,`aria-label`,n)},[()=>Z(`common.connectAccount`),()=>Z(`connect.subtitle`),()=>Z(`common.close`)]),d(`cancel`,ae,function(...e){r.close?.apply(this,e)}),c(`click`,de,function(...e){r.close?.apply(this,e)}),t(n,ae),te()}o([`click`,`change`]);var Wa=p(``);function Ga(e,n){let r=F(n,`size`,3,38);var i=Wa();y(()=>{M(i,`width`,r()),M(i,`height`,r())}),t(e,i)}var Ka=f(``),qa=f(``),Ja=f(` `),Ya=f(``),Xa=f(``),Za=f(``),Qa=f(`
`),$a=f(`
`),eo=f(`

`,1),to=f(``),no=f(`
`,1);function ro(n,a){I(a,!0);let o=[{label:`nav.subscriptions`,items:[{id:`quotas`,label:`nav.quotas`,icon:me},{id:`overview`,label:`nav.overview`,icon:ge},{id:`accounts`,label:`nav.accounts`,icon:ve},{id:`clients`,label:`nav.clients`,icon:be},{id:`models`,label:`nav.models`,icon:Se}]},{label:`nav.service`,items:[{id:`activity`,label:`nav.activity`,icon:we},{id:`settings`,label:`nav.settings`,icon:Ee},{id:`quickstart`,label:`nav.quickstart`,icon:Oe}]}],f=o.flatMap(e=>e.items).filter(e=>[`quotas`,`accounts`,`activity`,`settings`].includes(e.id)),p=e(`quotas`),_=e(!1),b=e(!1),x=e([]),w=e([]),T=e([]),E=e([]),D=e([]),O=e(null),A=e(null),N=e(null),P=e(!0),F=e(``),z=e(``),B=e(``),V=j(()=>Z(o.flatMap(e=>e.items).find(e=>e.id===g(p))?.label??`nav.quotas`)),U=null;async function W(e=!1){if(U)return U;e||h(P,!0),U=(async()=>{let e=await Promise.allSettled([$.accounts(),$.quotas(),$.providers(),$.models(),$.calls(),$.status(),$.settings(),$.clients()]),t=[];e[0].status===`fulfilled`?h(x,e[0].value.accounts):t.push(e[0].reason.message),e[1].status===`fulfilled`?h(w,e[1].value.quotas):t.push(e[1].reason.message),e[2].status===`fulfilled`?h(T,e[2].value.providers):t.push(e[2].reason.message),e[3].status===`fulfilled`?h(E,e[3].value.models):t.push(e[3].reason.message),e[4].status===`fulfilled`?h(D,e[4].value.calls):t.push(e[4].reason.message),e[5].status===`fulfilled`?h(O,e[5].value):(h(O,null),t.push(e[5].reason.message)),e[6].status===`fulfilled`?h(A,e[6].value):t.push(e[6].reason.message),e[7].status===`fulfilled`?h(N,e[7].value):t.push(e[7].reason.message),h(z,[...new Set(t)].join(` `),!0),h(P,!1)})();try{await U}finally{U=null}}function G(e){h(p,e,!0),h(_,!1),h(z,``),h(B,``),location.hash=e,window.scrollTo(0,0)}function ee(){let e=location.hash.slice(1);o.flatMap(e=>e.items).some(t=>t.id===e)&&h(p,e,!0)}async function q(e,t,n=``){if(g(F))return!1;h(F,e,!0),h(z,``),h(B,``);try{return await t(),U&&await U,await W(!0),h(B,n,!0),!0}catch(e){return h(z,e.message,!0),!1}finally{h(F,``)}}function ne(e){return q(`quotas`,()=>$.refreshQuotas(e))}async function re(e,t){let n={...g(A)?.quota_display};t===`average`?n[e]=t:delete n[e],await q(`settings`,()=>$.settingsSave({quota_display:n}),Z(`notice.displaySaved`))}async function ie(e,t){let n={...g(A)?.quota_windows};t.hidden?.length||t.primary?n[e]={hidden:t.hidden??[],primary:t.primary??null}:delete n[e],await q(`settings`,()=>$.settingsSave({quota_windows:n}),Z(`notice.windowsSaved`))}async function J(e,t){if(g(F))throw Error(Z(`notice.busy`));h(F,`rename`);try{let n=await $.renameAccount(e.id,t);h(x,g(x).map(t=>t.id===e.id?n.account:t))}finally{h(F,``)}}function ae(e,t){return q(`endpoint`,()=>$.updateEndpoint(e.id,t),Z(`notice.endpointSaved`))}function se(e,t,n){return q(`reserve`,()=>$.setAccountReserve(e.id,t,n),Z(t==null?`notice.reserveRemoved`:`notice.reserveSaved`))}async function ce(e){let t=Array.from(e);await q(`import`,async()=>{let e=await Promise.all(t.map(async e=>{if(e.size>2097152)throw Error(Z(`notice.fileTooLarge`,{name:e.name}));try{return{name:e.name,content:JSON.parse(await e.text())}}catch{throw Error(Z(`notice.invalidJson`,{name:e.name}))}})),n=await $.importAccounts(e);if(n.errors?.length)throw await W(!0),Error(Z(`notice.partialImport`,{count:n.imported,errors:Rt(n.errors)}));if(!n.imported)throw Error(Z(`notice.nothingImported`))},Z(`notice.imported`))}async function le(e,t){let n=0,r=await q(`restore`,async()=>{let r=await $.restore(e,t);if(n=r.restored,r.errors?.length)throw await W(!0),Error(Z(`notice.partialRestore`,{count:r.restored,errors:Rt(r.errors)}))});return r&&h(B,Z(n===1?`notice.restored.one`:`notice.restored.other`,{count:n}),!0),r}H(()=>{ee(),W();let e=setInterval(()=>{!document.hidden&&!g(F)&&W(!0)},15e3);return()=>clearInterval(e)});var ue=no();oe(`1uha8ag`,e=>{var n=Ka();y(e=>M(n,`content`,e),[()=>Z(`page.description`)]),s(()=>{u.title=`${g(V)??``} ยท douane`}),t(e,n)}),d(`hashchange`,K,ee),d(`keydown`,K,e=>{e.key===`Escape`&&h(_,!1)}),d(`visibilitychange`,u,()=>{document.hidden||W(!0)});var de=C(ue),fe=l(de),X=e=>{var n=qa();y(e=>M(n,`aria-label`,e),[()=>Z(`nav.closeMenu`)]),c(`click`,n,()=>h(_,!1)),t(e,n)};m(fe,e=>{g(_)&&e(X)});var pe=S(fe,2);let he;var _e=l(pe),ye=l(_e);Ga(l(ye),{}),k(ye);var xe=S(ye,2);Pe(l(xe),{size:18}),k(xe),k(_e);var Ce=S(_e,2);v(Ce,21,()=>o,e=>e.label,(e,n)=>{var i=Xa(),a=l(i),o=l(a,!0);k(a);var s=S(a);v(s,17,()=>g(n).items,e=>e.id,(e,n)=>{let i=j(()=>g(n).icon);var a=Ya();let o;var s=l(a);r(s,()=>g(i),(e,t)=>{t(e,{size:17})});var u=S(s),d=l(u,!0);k(u);var f=S(u),h=e=>{var n=Ja(),r=l(n,!0);k(n),y(()=>R(r,g(x).length)),t(e,n)},_=e=>{var n=Ja(),r=l(n,!0);k(n),y(()=>R(r,g(N).clients.length)),t(e,n)};m(f,e=>{g(n).id===`accounts`&&g(x).length?e(h):g(n).id===`clients`&&g(N)?.clients.length&&e(_,1)}),k(a),y(e=>{o=Y(a,1,`nav-link`,null,o,{active:g(p)===g(n).id}),M(a,`aria-current`,g(p)===g(n).id?`page`:void 0),R(d,e)},[()=>Z(g(n).label)]),c(`click`,a,()=>G(g(n).id)),t(e,a)}),k(i),y(e=>R(o,e),[()=>Z(g(n).label)]),t(e,i)}),k(Ce);var Te=S(Ce,2),De=l(Te),ke=l(De,!0);Ie(S(ke),{size:19}),k(De),k(Te),k(pe);var je=S(pe,2),Ne=l(je),Fe=l(Ne),Le=e=>{var n=Za(),r=l(n),i=l(r,!0);k(r);var a=S(r),o=l(a,!0);k(a),k(n),y(e=>{R(i,g(z)),a.disabled=g(P),R(o,e)},[()=>Z(`common.retry`)]),c(`click`,a,()=>W()),t(e,n)};m(Fe,e=>{g(z)&&e(Le)});var Re=S(Fe,2),ze=e=>{var n=Qa(),r=l(n,!0),i=S(r);Pe(l(i),{size:14}),k(i),k(n),y(e=>{R(r,g(B)),M(i,`aria-label`,e)},[()=>Z(`page.dismissNotice`)]),c(`click`,i,()=>h(B,``)),t(e,n)};m(Re,e=>{g(B)&&e(ze)});var Be=S(Re,2),Ve=e=>{var n=$a(),r=l(n);Ae(r,{size:18,class:`spinning`});var i=S(r),a=l(i,!0);k(i),k(n),y(e=>R(a,e),[()=>Z(`page.loading`)]),t(e,n)};m(Be,e=>{g(P)&&!g(O)&&e(Ve)});var He=S(Be,2),Ue=e=>{Gn(e,{get accounts(){return g(x)},get quotas(){return g(w)},get providers(){return g(T)},get busy(){return g(F)},refresh:ne,rename:J,get settings(){return g(A)},setQuotaDisplay:re,setQuotaWindows:ie,resetUpdated:()=>W(!0),connect:()=>h(b,!0)})},We=e=>{yr(e,{get accounts(){return g(x)},get quotas(){return g(w)},get busy(){return g(F)},rename:J,setReserve:se,updateEndpoint:ae,connect:()=>h(b,!0),importFiles:ce,toggle:e=>q(`account`,()=>$.setAccountEnabled(e.id,!e.enabled),Z(e.enabled?`notice.accountDisabled`:`notice.accountEnabled`)),remove:e=>q(`account`,()=>$.deleteAccount(e.id),Z(`notice.accountDeleted`))})},Ge=e=>{Ii(e,{get report(){return g(N)},get accounts(){return g(x)},get busy(){return g(F)},updated:async e=>{await W(!0),h(B,e,!0)}})},Ke=e=>{var n=L(),r=C(n),a=e=>{var n=L(),r=C(n);i(r,()=>JSON.stringify(g(A)),e=>{wa(e,{get settings(){return g(A)},get providers(){return g(T)},get busy(){return g(F)},restore:le,save:e=>q(`settings`,()=>$.settingsSave(e),Z(`notice.settingsSaved`))})}),t(e,n)},o=e=>{var n=eo(),r=C(n),i=l(r),a=l(i),o=l(a,!0);k(a);var s=S(a),c=l(s,!0);k(s),k(i),k(r),ua(S(r),{}),y((e,t)=>{R(o,e),R(c,t)},[()=>Z(`nav.settings`),()=>Z(`page.settingsUnavailable`)]),t(e,n)};m(r,e=>{g(A)?e(a):e(o,-1)}),t(e,n)},qe=e=>{var n=L(),r=C(n);i(r,()=>g(p),e=>{{let t=j(()=>g(N)?.clients??[]);na(e,{get screen(){return g(p)},get summary(){return g(O)},get calls(){return g(D)},get models(){return g(E)},get accounts(){return g(x)},get clients(){return g(t)},get busy(){return g(F)},navigate:G,toggleModel:e=>q(`model`,()=>$.setModelEnabled(e.id,e.enabled===!1),Z(`notice.modelUpdated`))})}}),t(e,n)};m(He,e=>{g(p)===`quotas`?e(Ue):g(p)===`accounts`?e(We,1):g(p)===`clients`?e(Ge,2):g(p)===`settings`?e(Ke,3):e(qe,-1)}),k(Ne),k(je),k(de);var Je=S(de,2),Ye=l(Je);v(Ye,17,()=>f,e=>e.id,(e,n)=>{let i=j(()=>g(n).icon);var a=to();let o;var s=l(a);r(s,()=>g(i),(e,t)=>{t(e,{size:19})});var u=S(s),d=l(u,!0);k(u),k(a),y(e=>{M(a,`aria-current`,g(p)===g(n).id?`page`:void 0),o=Y(a,1,``,null,o,{active:g(p)===g(n).id}),R(d,e)},[()=>Z(g(n).label)]),c(`click`,a,()=>G(g(n).id)),t(e,a)});var Xe=S(Ye),Ze=l(Xe);Me(Ze,{size:19});var Qe=S(Ze),$e=l(Qe,!0);k(Qe),k(Xe),k(Je);var et=S(Je,2),tt=e=>{Ua(e,{get providers(){return g(T)},close:()=>h(b,!1),completed:()=>{h(B,Z(`notice.accountConnected`),!0),W(!0)},importFiles:ce})};m(et,e=>{g(b)&&e(tt)}),y((e,t,n,r,i,a)=>{he=Y(pe,1,`sidebar`,null,he,{"mobile-open":g(_)}),M(xe,`aria-label`,e),M(Ce,`aria-label`,t),R(ke,n),M(Je,`aria-label`,r),M(Xe,`aria-label`,i),M(Xe,`aria-expanded`,g(_)),R($e,a)},[()=>Z(`nav.closeMenu`),()=>Z(`nav.main`),()=>Z(`nav.setupTool`),()=>Z(`nav.mobile`),()=>Z(`nav.openMenu`),()=>Z(`nav.menu`)]),c(`click`,xe,()=>h(_,!1)),c(`click`,De,()=>G(`quickstart`)),c(`click`,Xe,()=>h(_,!0)),t(n,ue),te()}o([`click`]);export{ro as component}; \ No newline at end of file diff --git a/dash/build/_app/version.json b/dash/build/_app/version.json index a37c700..1611757 100644 --- a/dash/build/_app/version.json +++ b/dash/build/_app/version.json @@ -1 +1 @@ -{"version":"1792586093948"} \ No newline at end of file +{"version":"1792599746525"} \ No newline at end of file diff --git a/dash/build/index.html b/dash/build/index.html index 75fbdfb..8c6b364 100644 --- a/dash/build/index.html +++ b/dash/build/index.html @@ -6,10 +6,10 @@ douane - - + + - + @@ -19,7 +19,7 @@
+ +
+

{t('stats.title')}

+
+ {#each periods as item (item.id)}{/each} +
+
+ {#if failure}{/if} +
+
+
{t('stats.tokens')}{formatCount(sum.tokens)}
+
{t('stats.calls')}{formatCount(sum.calls)}
+
{t('stats.activeClients')}{active}
+
{t('stats.errors')} 0}>{sum.calls ? share(percent(sum.errors, sum.calls)) : '-'}
+
+ + +
+ {#each rows as row (row.id)} + {@const total = row.input + row.output} +
+ + {#if open === row.id} +
+
{t('stats.model')}{t('stats.calls')}{t('stats.input')}{t('stats.output')}{t('stats.cacheRead')}{t('stats.latency')}{t('stats.errors')}
+ {#each row.models as model (model.key)} +
{model.model}{formatCount(model.calls)}{formatCount(model.input)}{formatCount(model.output)}{formatCount(model.cache)}{model.calls ? `${formatDecimal(model.latency / model.calls / 1000)} s` : '-'} 0}>{formatCount(model.errors)}
+ {/each} +
+ {/if} +
+ {:else}

{t('stats.empty')}

{/each} +
+
+
+ + diff --git a/dash/src/lib/components/clients-view.svelte b/dash/src/lib/components/clients-view.svelte index 94d41a8..7a8b11c 100644 --- a/dash/src/lib/components/clients-view.svelte +++ b/dash/src/lib/components/clients-view.svelte @@ -4,7 +4,6 @@ import Trash2 from '@lucide/svelte/icons/trash-2'; import RotateCcwKey from '@lucide/svelte/icons/rotate-ccw-key'; import Lock from '@lucide/svelte/icons/lock'; - import LockOpen from '@lucide/svelte/icons/lock-open'; import RefreshCw from '@lucide/svelte/icons/refresh-cw'; import Info from '@lucide/svelte/icons/info'; import ChartPie from '@lucide/svelte/icons/chart-pie'; @@ -13,6 +12,7 @@ import Modal from './modal.svelte'; import ClientEditor from './client-editor.svelte'; import ClientKey from './client-key.svelte'; + import ClientStats from './client-stats.svelte'; import { management, pools as poolsOf, privateLabel, providerName, formatDecimal, resetLabel, formatDate, reserveWindows, reserveWindowLabel, type Account, type Client, type ClientSaved, type ClientsReport, type ClientUsage, type Pool, type ReserveWindow } from '$lib/management'; import { t } from '$lib/i18n.svelte'; let { report, accounts, busy, updated }: { report: ClientsReport | null; accounts: Account[]; busy: string; updated: (message: string) => Promise } = $props(); @@ -113,14 +113,17 @@

{t('clients.title')}

- {#if report}

{#if report.enforced}{t('clients.enforced')}{:else}{t('clients.open')}{/if}

{/if} + {#if report}

{t('clients.enforced')}

{/if}
+{#if report}{/if} + {#if report && !clients.length}
editor = { client: null }}/>
{:else if clients.length} +

{t('clients.keys')}

{#each clients as client (client.id)} {@const access = accessSummary(client)} @@ -214,8 +217,6 @@ {/if}