//! Stealth profile application for Firefox + BiDi.
//!
//! This module is a thin re-export over **guise**, the single source of truth
//! for the Firefox disguise. captchaforge previously carried its own
//! `FIREFOX_STEALTH_JS` + `apply_stealth_profile` copy; it silently drifted from
//! guise and was strictly worse, it missed the sealed `toString` camouflage,
//! the maxTouchPoints / permissions / Notification / cdc / phantom / iframe
//! patches, and family coherence, and it `let _ =`-swallowed the preload error
//! (the exact silent failure that once made the whole layer a no-op). It is
//! deleted; everything here delegates to `guise` so a fix lands in one place.
//!
//! Firefox prefs (viewport, user-agent, etc.) are set at launch via
//! `guise::launch_profiled_firefox` / [`crate::browser::FoxBrowserConfig`]; the
//! re-exported `apply_stealth_profile` covers the JS-runtime layer that must run
//! inside every document. For the FULL session disguise (the configuration the
//! guise probe gate proves green) also apply `guise::fingerprint::apply_fingerprint`,
//! or launch via `guise::launch_profiled_firefox`.
pub use ;
pub use ;
// The canonical disguise (owned by guise. No local re-implementation).
// - `apply_stealth`: generic, automation-tell scrubbing ONLY, leaves the real
// browser identity (UA, platform, hardwareConcurrency, WebGL, …) GENUINE. This
// is the max-coherence default for driving a real Firefox (matched host): the
// browser's own values are self-consistent across JS/HTTP/TLS, so the most
// un-detectable disguise is the real one with the automation tells removed.
// - `apply_stealth_profile`: ALSO pins a chosen persona's identity (UA/platform/
// hardware/WebGL). Use only for an EXPLICIT cross-OS/cross-version persona, and
// launch via `guise::launch_profiled_firefox` so the launch-time prefs make the
// HTTP User-Agent header agree with the JS override (otherwise JS says one
// version while the request header says another (a self-inflicted tell)).
pub use ;