@plannotator/opencode 0.4.2 → 0.4.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +11 -13
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -524,7 +524,7 @@ https://github.com/highlightjs/highlight.js/issues/2277\`),vt=de,_e=Ce),Fe===voi
|
|
|
524
524
|
background-position: -\${Kh}px 0;
|
|
525
525
|
}
|
|
526
526
|
}
|
|
527
|
-
\`})});var pi={},gi={},ps={},qh;function _N(){return qh||(qh=1,Object.defineProperty(ps,"__esModule",{value:!0}),ps.default=["abashed","abbreviated","abdominal","abiding","abject","ablaze","able","able-bodied","abnormal","abominable","aboriginal","above","abrasive","abreast","abrupt","absent","absolute","absorbed","absorbing","abstract","abundant","academic","accelerated","accelerating","acceptable","accepted","accessible","accidental","accompanying","accomplished","accountable","accumulated","accurate","accursed","accused","accustomed","aching","acknowledged","acoustic","acquired","acquisitive","acrid","acrimonious","across-the-board","acting","active","actual","acute","adamant","adaptable","adaptive","added","addictive","additional","additive","adept","adequate","adhesive","adjacent","adjoining","adjustable","administrative","admirable","admiring","admitting","adolescent","adopted","adorable","adoring","adrenal","adrift","adroit","adult","advanced","advancing","advantageous","adventurous","adverse","advisable","advisory","aesthetic","affable","affected","affectionate","affiliated","affirmative","afflicted","affluent","affordable","afire","afloat","afraid","aft","after","afterward","aged","ageless","aggravated","aggregate","aghast","agile","aging","agitated","agonized","agonizing","agrarian","agreeable","agreed","agricultural","ailing","aimless","air-conditioned","air-conditioning","airborne","airless","airtight","airy","ajar","akin","alarmed","alarming","alert","alien","alienated","alike","alive","all-american","all-important","all-night","all-out","all-powerful","all-purpose","all-time","all-white","alleged","allegorical","allergic","allied","allowable","alluring","almighty","alone","aloof","alright","altered","alternate","alternating","alternative","amateur","amateurish","amazed","amazing","amber","ambiguous","ambitious","ambivalent","amenable","amiable","amorous","amorphous","ample","amused","amusing","anachronistic","anal","analogous","analytic","analytical","anarchic","anatomical","ancestral","ancient","anemic","anesthetic","angelic","angry","anguished","angular","animated","announced","annoying","annual","anonymous","answering","antagonistic","anterior","anthropological","anti","anti-american","anti-inflation","anti-soviet","anticipated","antinuclear","antiquated","antique","antiseptic","antitank","anxious","apathetic","apocalyptic","apolitical","appalled","appalling","apparent","appealing","appellate","applicable","applied","appointed","appreciable","appreciative","apprehensive","approaching","appropriate","approved","approximate","apt","aquatic","arbitrary","arcane","arch","archaeological","archaic","arched","archetypal","architectural","arctic","ardent","arduous","arid","aristocratic","armed","armored","arms-control","aromatic","arresting","arterial","artful","articulate","articulated","artificial","artistic","ascending","ascetic","ascorbic","ashamed","ashen","askew","asleep","aspiring","assembled","assertive","assigned","assistant","associate","associated","assorted","assumed","assured","astonished","astonishing","astounded","astounding","astronomical","astute","athletic","atmospheric","atomic","atrocious","attached","attacking","attainable","attempted","attendant","attentive","attracting","attractive","attributable","auburn","audacious","audible","audio","auditory","august","auspicious","austere","authentic","authoritarian","authoritative","authorized","autobiographical","autocratic","automated","automatic","automotive","autonomous","autumnal","auxiliary","available","avant-garde","avenging","average","averse","avid","avowed","awake","aware","awash","away","awed","awesome","back","backhand","backstage","backward","bacterial","baffled","baffling","baggy","baked","balanced","bald","balding","baleful","ballistic","balmy","banal","bankrupt","banned","barbarous","barbed","bare","barefoot","barefooted","barred","barren","basic","bass","bathing","battered","beaded","beaming","bearable","bearded","beastly","beautiful","bedraggled","beefy","befuddled","beguiling","behavioral","behind-the-scenes","beige","belated","beleaguered","believable","belligerent","beloved","bemused","beneficent","beneficial","benign","bent","bereaved","bereft","bespectacled","best-known","best-selling","bestselling","bewildered","bewildering","big","big-city","big-time","bilateral","bilingual","binary","binding","biochemical","biographical","biological","bipartisan","biting","bitter","bittersweet","bizarre","black","black-and-white","black-haired","blackened","bland","blank","blasted","blatant","blazing","bleached","bleak","bleary","bleeding","blessed","blind","blinding","blinking","blissful","blistering","bloated","blocking","blond","blonde","bloodied","bloodshot","bloodstained","bloody","blooming","blue","blue-and-white","blue-black","blue-chip","blue-collar","blue-eyed","blue-gray","blue-green","bluish","blunt","blurred","bodily","bogus","boiled","boiling","boisterous","bold","bony","booming","bored","boring","born","born-again","borrowed","botanical","bottled","bottom","bottomless","bouncing","bound","boundless","bountiful","bourgeois","bowed","box-office","boyish","bracing","braided","branching","brand-new","brash","brassy","brave","brawny","brazen","breathless","breathtaking","breezy","bridal","brief","bright","bright-eyed","brilliant","brisk","brittle","broad","broad-shouldered","broke","broken","bronchial","brooding","brotherly","brown","brownish","bruised","brusque","brutal","bubbling","bubbly","budding","budgetary","bulbous","bulging","bulky","bulletproof","bumper","bumpy","buoyant","burdensome","bureaucratic","burgeoning","buried","burly","burned","burned-out","burning","burnished","burnt","bushy","businesslike","busing","busted","bustling","busy","button-down","buxom","buzzing","bygone","caged","calculated","called","callous","calm","cancerous","candid","canned","canny","cantankerous","capable","capital","capitalist","capitalistic","capricious","captive","cardboard","cardiac","cardinal","cardiovascular","carefree","careful","careless","caring","carnival","carpeted","carved","cast","cast-iron","casual","catastrophic","causal","caustic","cautionary","cautious","cavernous","ceaseless","celebrated","celestial","cellular","centennial","central","centralized","centre-fire","centrifugal","centrist","ceramic","cerebral","ceremonial","certain","certified","challenging","change-minimizing","changed","changing","chaotic","characteristic","charged","charging","charismatic","charitable","charming","charred","chartered","chaste","chastened","cheap","checked","checkered","cheerful","cheering","cheery","chemical","cherished","chief","childlike","chilled","chilling","chilly","chipped","chopped","choppy","choral","chosen","chronic","chronological","chunky","cinematic","circular","circulating","circulatory","circumstantial","citywide","civic","civil","civilian","civilized","clammy","clandestine","classic","classical","classified","classy","clean","clean-cut","clear","clear-cut","cleared","clearing","clenched","clerical","clever","climactic","climatic","clinging","clinical","clipped","close","closed","closed-circuit","closing","cloudless","cloudy","clumsy","cluttered","coarse","coastal","cobbled","coded","coed","coercive","cognitive","coherent","cohesive","coiled","coincidental","cold","cold-blooded","collaborative","collapsing","collected","collective","collegiate","colonial","colored","colorful","colorless","colossal","coloured","comatose","combative","combined","comely","comfortable","comforting","comic","comical","coming","commanding","commendable","commensurate","commercial","committed","common","commonplace","communal","compact","comparable","comparative","compassionate","compatible","compelling","compensatory","competent","competing","competitive","complacent","complementary","complete","completed","complex","compliant","complicated","complimentary","composite","compositional","comprehensible","comprehensive","compressed","compulsory","computerized","concave","concealed","conceivable","concentrated","concentric","conceptual","concerned","concerted","conciliatory","concise","concluding","conclusive","concomitant","concrete","concurrent","condemned","condescending","conditional","conditioned","conducive","confident","confidential","confined","confirmed","conflicting","confused","confusing","congenial","congenital","congested","congressional","conic","conical","connected","connecting","connective","conquered","conquering","conscientious","conscious","consecutive","consequent","conservation","conservative","considerable","considerate","consistent","consoling","conspicuous","conspiratorial","constant","constitutional","constructive","consular","consulting","consuming","consummate","contagious","contaminated","contemplative","contemporary","contemptible","contemptuous","contending","content","contented","contentious","contested","continental","contingent","continual","continued","continuing","continuous","contraceptive","contracting","contractual","contradictory","contrary","contrasting","contributing","contrite","contrived","controlled","controlling","controversial","convenient","conventional","conversational","converted","convertible","convicted","convinced","convincing","convulsive","cooked","cool","cooling","cooperative","coordinated","copious","cordial","corned","corny","coronary","corporate","correct","correctional","corrective","corresponding","corrosive","corrugated","cosmetic","cosmic","cosmopolitan","costly","counterfeit","counterproductive","countless","courageous","court-ordered","courteous","courtly","covered","covert","coveted","coy","cozy","cracked","cracking","crackling","crafty","craggy","cramped","cranky","crashing","crass","crawling","crazed","crazy","creaking","cream-colored","creamy","creased","created","creative","credible","creeping","crimson","crippled","crisp","critical","cross-country","cross-legged","crossed","crowded","crucial","crumbling","crummy","crumpled","crushed","crushing","crusty","cryptic","crystalline","cubic","culinary","cultivated","cultural","cultured","cumbersome","cumulative","cunning","cupped","curious","curled","curly","current","cursory","curt","curtained","curved","curving","customary","cut-rate","cute","cutting","cyclical","cylindrical","daily","dainty","damaged","damn","damned","damp","dangerous","dank","dapper","daring","dark","dark-blue","dark-eyed","dark-haired","darkened","darkening","darling","darting","dashing","dated","daunting","day-care","day-to-day","dazed","dazzling","deaf","deafening","dear","deathly","debatable","debilitating","decadent","decaying","deceased","decent","decentralized","decided","decision-making","decisive","declared","declining","decorated","decorative","decorous","decreased","decreasing","decrepit","dedicated","deductible","deep","deep-seated","deepening","defeated","defenseless","defensible","defensive","deferential","deferred","defiant","deficient","definite","definitive","deformed","deft","defunct","degenerate","degenerative","dejected","delayed","delectable","deliberate","delicate","delicious","delighted","delightful","delinquent","delirious","demanding","demeaning","demented","democratic","demographic","demonic","demure","dense","dental","departed","departing","departmental","dependable","dependent","depleted","deplorable","deposed","depressed","derelict","derisive","descending","descriptive","deserted","deserving","designated","desirable","desired","desolate","despairing","desperate","despicable","despised","despondent","destitute","destructive","desultory","detached","detailed","detectable","deteriorating","determined","determining","detrimental","devastating","developed","developing","developmental","deviant","devious","devoid","devoted","devout","diagnostic","diagonal","dialectical","dictatorial","dietary","different","differential","differing","diffident","diffuse","digestive","digging","digital","dignified","dilapidated","diligent","dim","diminished","diminishing","diminutive","dingy","diplomatic","dire","direct","disabled","disappearing","disappointing","disapproving","disastrous","discarded","discernible","discerning","disciplinary","disciplined","disconcerting","discontented","discordant","discouraging","discredited","discreet","discrete","discretionary","discriminatory","disembodied","disenchanted","disguised","disjointed","dismayed","disorderly","disorganized","disoriented","disparate","displaced","displeased","disposable","disproportionate","disputed","disquieting","disreputable","disruptive","dissenting","dissident","dissimilar","distant","distinct","distinctive","distinguishable","distinguished","distinguishing","distorted","distraught","distressed","distressing","disturbed","disturbing","divergent","diverse","diversified","divided","dividing","divine","diving","divisional","divisive","dizzy","dizzying","do-it-yourself","docile","doctoral","doctrinaire","doctrinal","dogged","dogmatic","domed","domestic","doomed","door-to-door","dormant","double","double-action","double-breasted","double-digit","doubtful","dour","down","down-to-earth","downcast","downhill","downright","downtown","downward","drab","drained","dramatic","drastic","dreaded","dreamlike","dreamy","dreary","dried","driven","driving","droll","drooping","drowning","drowsy","drugged","drunken","dry","dual","dubious","due","dull","duplicate","durable","dusky","dusty","dutiful","dwindling","dyed","dying","dynamic","dynastic","eager","early","early-morning","earned","earnest","earthen","earthly","earthy","eastern","easy","easygoing","ebullient","eccentric","ecclesiastical","echoing","eclectic","ecological","economic","economical","ecstatic","ecumenical","edgy","edible","editorial","educated","educational","eerie","effective","efficient","effortless","egalitarian","eight-hour","eight-year","eighteenth-century","elaborate","elastic","elated","elderly","elected","elective","electoral","electric","electrical","electromagnetic","electronic","electrostatic","elegant","elemental","elementary","elevated","eligible","elitist","elongated","eloquent","elusive","embarrassed","embarrassing","embattled","emblematic","embroidered","embryonic","emerging","emeritus","eminent","emotional","emphatic","empirical","empty","empty-handed","enchanted","enchanting","enclosed","encouraging","endangered","endearing","endemic","endless","enduring","energetic","enforced","engaged","engaging","engraved","enhanced","enigmatic","enjoyable","enlarged","enlightened","enormous","enraged","enriched","ensconced","ensuing","enterprising","entertaining","enthusiastic","enticing","entire","entrenched","entrepreneurial","enviable","envious","environmental","ephemeral","epic","equal","equatorial","equestrian","equitable","equivalent","eroding","errant","erratic","erroneous","ersatz","erstwhile","escalating","escaping","esoteric","essential","established","esteemed","esthetic","estimated","estranged","eternal","ethereal","ethical","eucalyptus","euphoric","evangelical","evasive","even","eventual","ever-increasing","ever-present","everlasting","everyday","evident","evocative","evolutionary","exact","exacting","exaggerated","exalted","excellent","exceptional","excess","excessive","excited","exciting","exclusive","excruciating","executive","exemplary","exempt","exhausted","exhausting","exhaustive","exhilarated","exhilarating","exiled","existential","existing","exorbitant","exotic","expanded","expanding","expansive","expectant","expected","expedient","expendable","expensive","experienced","experimental","expert","explanatory","explicit","exploratory","explosive","exposed","express","expressed","expressionless","expressive","exquisite","extant","extended","extensive","exterior","external","extinct","extra","extracurricular","extraneous","extraordinary","extravagant","extreme","extremist","extrinsic","exuberant","exultant","fabled","fabulous","face-to-face","faceless","facial","facile","factional","factual","faded","fading","failed","failing","faint","fair","faithful","fallen","falling","fallow","false","faltering","famed","familial","familiar","famished","famous","fanatical","fanciful","fancy","fantastic","far-flung","far-off","far-reaching","farcical","farfetched","fascinated","fascinating","fascist","fashionable","fast","fast-food","fast-growing","fast-moving","fastidious","fatal","fated","fateful","fatherly","fatty","fatuous","faulty","favorable","favored","favorite","favourable","favourite","feal","fearful","fearless","fearsome","feasible","feathered","feathery","featureless","federal","feeble","feeding","feisty","fellow","feminine","ferocious","fervent","festive","fetal","fetid","feudal","feverish","fickle","fictional","fictitious","fierce","fiery","figurative","filmy","final","financial","fine","finished","finishing","finite","firm","first-aid","first-class","first-quarter","first-rate","first-time","first-year","firsthand","fiscal","fishy","fit","fitful","fitting","five-day","five-minute","five-year","fixed","flabbergasted","flabby","flagrant","flailing","flaky","flamboyant","flaming","flash","flashing","flashy","flat","flattened","flattered","flattering","flawless","fledgling","fleeing","fleeting","fleshy","flexible","flickering","flimsy","flipping","floating","floppy","floral","florid","flourishing","flowered","flowering","flowery","flowing","fluent","fluffy","fluorescent","flushed","flustered","fluted","fluttering","flying","foaming","focal","foggy","folded","folding","follow-up","following","fond","foolhardy","foolish","forbidding","forced","forceful","foregoing","foreign","foreign-policy","forensic","foreseeable","forested","forged","forgiving","forgotten","forlorn","formal","formative","formidable","formless","forthcoming","forthright","fortified","fortuitous","fortunate","forward","foster","foul","founding","four-day","four-hour","four-year","fourth-quarter","fractured","fragmentary","fragmented","fragrant","frail","framed","frank","frantic","fraternal","fraudulent","fraught","frayed","freak","freckled","free","free-lance","freezing","french","frenetic","frenzied","frequent","fresh","freshwater","fretful","friendly","frightened","frightening","frightful","frigid","fringed","frivolous","front","front-line","front-page","frontal","frosted","frosty","frozen","fruitful","fruitless","frustrated","frustrating","full","full-blown","full-fledged","full-length","full-page","full-scale","full-size","full-time","fun","functional","functioning","fund-raising","fundamental","fundamentalist","funded","funky","funny","furious","furnished","furry","furtive","fussy","futile","future","futuristic","fuzzy","galactic","gallant","galloping","galvanized","gaping","garbled","gargantuan","garish","garrulous","gaseous","gastrointestinal","gathered","gaudy","gaunt","gebling","general","generalized","generating","generative","generic","generous","genetic","genital","genteel","gentle","gentlemanly","genuine","geographic","geographical","geological","geometric","geopolitical","ghastly","ghostly","giant","gibberish","giddy","gifted","gigantic","gilded","ginger","girlish","given","glacial","glad","glamorous","glaring","glassy","glazed","gleaming","gleeful","glib","glistening","glittering","global","gloomy","glorious","glossy","gloved","glowing","glum","gnarled","goddam","goddamn","goddamned","going","gold","golden","good","good-by","good-looking","good-natured","good-sized","goodly","gorgeous","gory","governing","governmental","graceful","gracious","gradual","grainy","grammatical","grand","grandiose","graphic","grassy","grateful","gratifying","grating","gratuitous","grave","gravitational","gray","gray-haired","graying","grayish","grazing","greasy","great","greedy","green","greenish","gregarious","grey","grieving","grievous","grilled","grim","grimy","grinding","grinning","gripping","grisly","gritty","grizzled","grizzly","groggy","grotesque","ground","ground-floor","growing","grown-up","grubby","grudging","grueling","gruesome","gruff","guaranteed","guarded","gubernatorial","guided","guiding","gullible","guttural","habitual","haggard","hairless","hairy","half-empty","halfway","hallowed","halting","hand-held","hand-to-hand","handicapped","handmade","handsome","handwritten","handy","hanging","haphazard","hapless","happy","hard","hard-boiled","hard-core","hard-line","hard-nosed","hard-pressed","hard-working","hardened","hardworking","hardy","harmless","harmonious","harried","harrowing","harsh","hashish","hasty","hated","hateful","haughty","haunted","haunting","hawkish","hazardous","hazel","hazy","head","headlong","heady","healing","healthful","healthy","heart-shaped","heartbreaking","heartening","heartfelt","heartless","hearty","heated","heathen","heavenly","heavy","heavy-duty","hectic","heedless","hefty","heightened","helmeted","helpful","hereditary","heretical","heroic","hesitant","heterogeneous","hidden","hierarchical","high","high-ceilinged","high-fiber","high-heeled","high-level","high-pitched","high-powered","high-pressure","high-priced","high-quality","high-ranking","high-rise","high-risk","high-school","high-speed","high-tech","high-technology","hilarious","hilly","hind","hired","historic","historical","hit-and-run","hoarse","holding","hollow","holy","homeless","homemade","homesick","honest","honorable","honorary","honored","hooded","hopeful","hopeless","horizontal","hormonal","horn-rimmed","horrendous","horrible","horrid","horrified","horse-drawn","hospitable","hot","hour-long","hourly","howling","huge","hulking","human","humane","humanistic","humanitarian","humble","humid","humiliating","humorless","humorous","hunched","hungry","hunted","hurried","hurt","hurtful","hushed","husky","hybrid","hydraulic","hydroelectric","hypnotic","hypodermic","hypothetical","hysterical","ice-cold","iced","icy","ideal","idealistic","identical","identifiable","ideological","idiosyncratic","idiotic","idle","idyllic","ignorant","ill","ill-advised","ill-fated","ill-fitting","illegitimate","illicit","illiterate","illogical","illuminated","illuminating","illusory","illustrated","illustrious","imaginable","imaginary","imaginative","imagined","immaculate","immediate","immense","imminent","immobile","immortal","immune","immutable","impartial","impassable","impassioned","impassive","impatient","impeccable","impending","impenetrable","imperative","imperceptible","imperial","imperialist","imperious","impersonal","impertinent","impervious","impetuous","implacable","implausible","implicit","implied","important","imported","imposing","impossible","impoverished","impractical","imprecise","impressed","impressive","imprisoned","improbable","impromptu","improper","improved","improving","improvised","impulsive","impure","in-depth","in-house","inaccessible","inactive","inane","inanimate","inarticulate","inaudible","incalculable","incandescent","incapable","incendiary","incessant","incidental","incipient","incisive","inclined","inclusive","incoherent","income-tax","incoming","incomparable","incompatible","incompetent","incomplete","incomprehensible","inconceivable","inconclusive","incongruous","inconsequential","inconsistent","inconspicuous","incorrect","increased","increasing","incredible","incredulous","incremental","incriminating","incumbent","incurable","indebted","indefatigable","indefinite","indelible","independent","indestructible","indeterminate","indicative","indifferent","indigenous","indigent","indignant","indirect","indiscriminate","indispensable","indistinct","indistinguishable","individual","individualistic","indomitable","indoor","indulgent","industrial","industrialized","industrious","ineffable","ineffective","ineffectual","inept","inert","inescapable","inevitable","inexhaustible","inexorable","inexpensive","inexperienced","inexplicable","infallible","infamous","infantile","infatuated","infected","infectious","infernal","infinite","infirm","inflamed","inflammatory","inflated","inflationary","inflexible","influential","informal","informative","informed","infrared","infrequent","ingenious","ingratiating","inherent","inherited","inhospitable","inimical","initial","injured","inlaid","inland","innate","inner","inner-city","innermost","innocent","innocuous","innovative","innumerable","inordinate","inorganic","inquisitive","insane","inscrutable","insensitive","inside","insignificant","insistent","insoluble","inspirational","inspired","inspiring","instant","instantaneous","instinctive","institutional","institutionalized","instructional","instructive","instrumental","insufferable","insulated","insurgent","insurmountable","intact","intangible","integral","integrated","intellectual","intelligent","intelligible","intended","intense","intensified","intensive","intent","intentional","inter","interchangeable","intercontinental","interdependent","interested","interesting","interim","interior","interlocking","intermediate","intermediate-range","interminable","intermittent","internal","international","interpersonal","interrelated","interstate","interstellar","intervening","intimidating","intolerable","intolerant","intractable","intransigent","intravenous","intrepid","intricate","intriguing","intrinsic","introductory","intrusive","intuitive","invading","invalid","invaluable","inventive","inverted","investigative","investing","invigorating","invincible","invisible","inviting","involuntary","involved","invulnerable","inward","irate","iridescent","ironic","irrational","irregular","irrelevant","irreparable","irreplaceable","irrepressible","irresistible","irresponsible","irreverent","irreversible","irrevocable","irritable","irritated","irritating","isolated","issuing","itinerant","jaded","jagged","jaunty","jerky","jeweled","jittery","joint","jolly","journalistic","jovial","joyful","joyous","jubilant","judicial","judicious","juicy","jumbo","jumping","jumpy","junior","just","justifiable","justified","keen","khaki","kind","kindly","kindred","kinetic","kinky","knitted","knotted","knowing","knowledgeable","known","kosher","labored","laborious","laconic","lacy","lame","land-based","landed","landless","languid","lanky","large","large-scale","lascivious","last-minute","lasting","late","late-night","latent","lateral","latter-day","laughable","laughing","lavish","law-abiding","law-enforcement","lawful","lawless","lax","lay","lazy","leaded","leaden","leading","leafless","leafy","leaky","lean","learned","leathery","leery","left","left-hand","left-handed","left-wing","leftover","legal","legendary","legislative","legitimate","leisurely","lengthy","lenient","lesser","lethal","level","leveraged","lexical","liable","liberal","liberated","liberating","licensed","life-size","lifeless","lifelong","light","lighted","lightweight","likable","like","likely","limited","limiting","limitless","limp","linear","lined","lingering","linguistic","linked","liquid","listed","listening","listless","literal","literary","literate","lithe","little","little-known","liturgical","live","lively","livid","living","living-room","loaded","loathsome","local","locked","lofty","logical","logistical","lone","lonely","lonesome","long","long-awaited","long-distance","long-haired","long-legged","long-lost","long-range","long-running","long-standing","long-term","long-time","longstanding","longterm","longtime","looking","looming","loose","lopsided","lordly","losing","loud","lousy","lovable","loved","lovely","loving","low","low-cost","low-income","low-key","low-level","lower-class","lowered","lowly","loyal","lucid","lucky","lucrative","ludicrous","lukewarm","lumbering","luminous","lunar","lunatic","lurid","lurking","luscious","lush","luxuriant","luxurious","luxury","lyric","lyrical","macabre","machine-gun","macho","mad","magic","magical","magnetic","magnificent","maiden","maimed","main","mainstream","majestic","major","makeshift","malevolent","malignant","mammoth","man-made","manageable","managerial","managing","mandatory","maniacal","manic","manicured","manifest","manifold","manipulative","manly","manned","manual","manufactured","marching","marginal","marine","maritime","marked","marketable","maroon","married","marshy","martial","marvellous","marvelous","masculine","mashed","masked","mass","mass-produced","massed","massive","masterful","masterly","matched","matching","material","materialistic","maternal","mathematical","mating","matter-of-fact","mature","maudlin","mauve","maximum","mayoral","meager","meaningful","meaningless","measurable","measured","measuring","meaty","mechanical","mechanized","median","medical","medicinal","medieval","mediocre","meditative","medium","medium-size","medium-sized","meek","melancholy","mellow","melodic","melodramatic","melted","memorable","menacing","menial","mental","mercantile","merciful","merciless","mercurial","mere","merry","messy","metabolic","metallic","metaphoric","metaphorical","metaphysical","methodical","methodological","meticulous","metric","metropolitan","microscopic","middle","middle-aged","middle-class","middle-income","midwestern","mighty","migratory","mild","mild-mannered","militant","military","military-industrial","milky","million-dollar","mindful","mindless","mingled","miniature","minimal","minimum","ministerial","mint","minuscule","minute","miraculous","mirrored","miscellaneous","mischievous","misguided","misleading","misplaced","missed","misshapen","missing","mistaken","misty","mixed","mobile","mock","mocking","moderate","modern","modern-day","modernist","modest","modified","moist","molecular","molten","momentary","momentous","monastic","monetary","monogrammed","monolithic","monotonous","monstrous","monthly","monumental","moody","moonlit","moot","moral","morbid","morose","mortal","mossy","motionless","motivated","motley","mottled","mountainous","mounted","mounting","mournful","movable","moving","muddled","muddy","muffled","multicolored","multilateral","multinational","multiple","mundane","municipal","murdered","murderous","murky","muscular","mushy","musical","musty","mute","muted","mutilated","mutual","mysterious","mystic","mystical","mystified","mythic","mythical","mythological","nagging","naive","named","nameless","narrative","narrow","nasal","national","nationalist","nationalistic","nationalized","nationwide","native","natural","naturalistic","nauseous","nautical","naval","near","nearby","neat","nebulous","necessary","needful","needless","needy","negative","negligent","negligible","negotiable","negotiated","neighboring","nervous","neural","neurological","neurotic","neutral","never-ending","new","new-found","newborn","newfound","newsworthy","next-door","nice","nightly","nightmarish","nimble","nineteenth-century","no-fault","no-nonsense","noble","nocturnal","noisy","nomadic","nominal","non-communist","nonaligned","nondescript","nonexistent","nonpartisan","nonpolitical","nonprofit","nonstop","normal","normative","northeastern","northern","northwestern","nostalgic","notable","noted","noteworthy","noticeable","notorious","novel","noxious","nuclear","numb","numbered","numerical","numerous","nursing","nutritional","nutritious","nuts","nutty","obedient","obese","objectionable","objective","obligatory","obliging","oblique","oblivious","obnoxious","obscure","observable","observant","observed","obsessive","obsolete","obstinate","obvious","occasional","occupational","occupied","octagonal","odd","odious","off","off-duty","offbeat","offending","offhand","official","offshore","oil-producing","oil-rich","oily","old","old-fashioned","old-line","old-time","olive","ominous","omnipotent","omnipresent","oncoming","one-day","one-man","one-party","one-room","one-sided","one-story","one-time","one-way","one-year","onerous","onetime","ongoing","only","onstage","opaque","open","open-air","open-ended","opened","operatic","operational","operative","opposing","opposite","oppressed","optical","optimal","optimistic","optimum","optional","opulent","orange","orbital","orchestral","ordered","orderly","ordinary","organic","organizational","organized","organizing","oriental","original","ornamental","ornate","orphaned","orthodox","orthopedic","ostensible","ostentatious","other","out-of-town","outdated","outdoor","outer","outgoing","outlandish","outlawed","outlying","outmoded","outraged","outrageous","outright","outside","outspoken","outstanding","outstretched","outward","oval","over-all","over-the-counter","overall","overcast","overcome","overcrowded","overdue","overgrown","overhanging","overhead","overheated","overjoyed","overlapping","overnight","overpowering","overriding","overseas","oversized","overstuffed","overt","overturned","overweight","overwhelming","overworked","packaged","packed","padded","paid","pained","painful","painless","painstaking","painted","palatable","palatial","pale","pallid","palpable","paltry","panicky","papal","paradoxical","parallel","paralyzed","paramilitary","paramount","paranoid","parasitic","parched","parental","parked","parliamentary","parochial","part-time","partial","participating","participatory","particular","partisan","passable","passing","passionate","passive","past","pastel","pastoral","paternal","patient","patriarchal","patriotic","patterned","paved","payable","paying","peace-keeping","peaceable","peaceful","pearly","peculiar","pedagogical","penal","pending","penetrating","penniless","pensive","pent-up","perceived","perceptible","perceptive","perceptual","peremptory","perennial","perfect","perfumed","perfunctory","periodic","peripheral","permanent","permissible","permissive","pernicious","perpetual","perplexed","perplexing","persistent","personal","persuasive","pert","pertinent","pervasive","pessimistic","petite","petrified","petty","petulant","phantom","pharmaceutical","phenomenal","philosophic","philosophical","phonetic","phony","photographic","physical","physiological","pictorial","picturesque","piercing","pinched","pink","pinkish","pioneering","pious","pissed","pitched","pitiful","pitiless","pivotal","placid","plain","plaintive","planetary","planned","planted","plausible","playful","playing","pleasant","pleased","pleasing","pleasurable","pleated","plentiful","pliable","plump","plush","poetic","poignant","pointed","pointless","poisonous","polar","polished","polite","political","polluted","pompous","ponderous","poorly","popular","populist","populous","porous","portable","portentous","portly","posh","positive","possible","post-world","postal","postwar","potent","potential","potted","pouring","powdered","powerful","powerless","practicable","practical","practiced","practicing","pragmatic","precarious","preceding","precious","precipitous","precise","precocious","predatory","predictable","predicted","predominant","preferable","preferential","preferred","prehistoric","prejudiced","preliminary","premier","premium","prenatal","preoccupied","prep","preparatory","prepared","preposterous","prescribed","present","present-day","presentable","preserving","presidential","presiding","pressing","prestigious","presumed","presumptuous","pretentious","pretrial","pretty","prevailing","prevalent","preventive","previous","prewar","priceless","prickly","priestly","prim","primal","primary","prime","primeval","primitive","primordial","princely","principal","printed","prior","pristine","private","privileged","privy","prized","pro","probable","probing","procedural","processed","prodigious","producing","productive","profane","professional","proficient","profitable","profound","progressive","projected","projecting","projective","proletarian","prolific","prolonged","prominent","promiscuous","promised","promising","promotional","prompt","prone","pronounced","proper","prophetic","proportional","proportionate","proposed","proprietary","prosaic","prospective","prosperous","prostrate","protected","protectionist","protective","protracted","protruding","proud","proven","proverbial","provincial","provisional","provocative","prudent","psychedelic","psychic","psychological","pubic","public","public-relations","publicized","published","pudgy","puffing","puffy","pulmonary","pungent","punishable","punishing","punitive","pure","puritanical","purple","purplish","purported","purposeful","pushy","putative","puzzled","puzzling","quaint","qualified","qualifying","qualitative","quantitative","quarterly","queasy","queer","questioning","quick","quiet","quilted","quintessential","quirky","quivering","quixotic","quizzical","rabid","racial","racing","radiant","radical","radioactive","ragged","raging","rainy","raised","rambling","rampant","ramshackle","rancid","random","rapacious","rapid","rapt","rare","rash","rasping","rational","raucous","ravaged","ravenous","raw","reactionary","readable","ready","ready-made","real","real-estate","real-life","realistic","rear","rear-view","rearing","reasonable","reasoned","reassuring","recalcitrant","receding","received","receiving","recent","receptive","reciprocal","reckless","recognizable","recognized","recommended","recorded","recreational","rectangular","recurrent","recurring","red","red-faced","red-haired","red-hot","reddish","reduced","redundant","refined","reflected","reflective","reflex","reformed","reformist","refreshing","regal","regimental","regional","registered","regressive","regular","regulated","regulatory","reigning","related","relative","relaxed","relaxing","released","relentless","relevant","reliable","relieved","religious","reluctant","remaining","remarkable","remedial","remembered","reminiscent","remote","renewed","renowned","rented","repeated","repeating","repetitious","repetitive","replete","reported","reprehensible","representative","repressed","repressive","reproductive","republican","repugnant","reputable","reputed","required","requisite","resentful","reserve","reserved","resident","residential","residual","resigned","resilient","resistant","resolute","resonant","resounding","resourceful","respectable","respected","respectful","respective","respiratory","resplendent","responsible","responsive","restful","restive","restless","restored","restoring","restrained","restraining","restricted","restrictive","resultant","resulting","retail","retaliatory","reticent","retired","retiring","retreating","retroactive","retrospective","returning","revealing","revered","reverent","reverse","revised","revived","revolting","revolutionary","revolving","rewarding","rhetorical","rheumatic","rheumatoid","rhythmic","ribbed","rich","rickety","rife","right","right-hand","right-wing","righteous","rightful","rigid","rigorous","riotous","ripe","ripped","rippling","rising","risky","ritual","rival","roaring","roast","roasted","roasting","robust","rock-and-roll","rocking","rocky","rolled","rolling","romantic","rosy","rotating","rotting","rough","round","round-trip","rounded","rousing","routine","roving","rowdy","royal","rubber","rubbery","ruddy","rudimentary","rueful","ruffled","rugged","ruined","ruinous","ruling","rumpled","run-down","runaway","running","rural","rushing","rusted","rustic","rusty","ruthless","rutted","sacred","sacrificial","sacrosanct","sad","safe","said","saintly","salaried","salient","sallow","salted","salty","salutary","sandy","sane","sanguine","sanitary","sardonic","satiric","satirical","satisfactory","satisfied","satisfying","saturated","saucy","savage","savvy","scaly","scant","scanty","scarce","scared","scarlet","scarred","scary","scathing","scattered","scenic","scented","scheduled","scholarly","scholastic","science-fiction","scientific","scorched","scornful","scrambled","scraping","scrawny","screaming","scriptural","scruffy","scrupulous","sealed","searching","searing","seasonal","seasoned","seated","secluded","second-class","second-floor","second-hand","second-rate","secondary","secondhand","secret","secretarial","secretive","sectarian","sectional","secular","secure","sedate","sedentary","seedy","seeming","segregated","seismic","select","selected","selective","self-appointed","self-assured","self-centered","self-confident","self-conscious","self-contained","self-effacing","self-evident","self-fulfilling","self-help","self-imposed","self-indulgent","self-made","self-proclaimed","self-righteous","self-satisfied","self-serving","self-styled","self-sufficient","self-supporting","selfless","semantic","semifinal","senatorial","senior","sensational","senseless","sensible","sensitive","sensory","sensuous","sentencing","sentimental","separate","separated","separatist","serene","serial","serious","settled","seven-year","seventeenth-century","severe","severed","shabby","shaded","shadowed","shadowy","shady","shaggy","shaken","shaky","shallow","shaped","shapeless","shapely","shared","sharp","sharpened","shattered","shattering","shaven","shaving","sheepish","sheer","sheltered","shifting","shimmering","shining","shiny","shocked","shocking","shoddy","short","short-lived","short-range","short-sleeved","short-term","shortsighted","shouting","showy","shredded","shrewd","shrill","shrinking","shrunken","shuddering","shut","shuttered","shy","sick","sidelong","signed","significant","silent","silken","silky","silly","silver","silver-haired","silvery","similar","simmering","simple","simplified","simplistic","simulated","simultaneous","sincere","sinewy","sinful","single","singular","sinister","sinuous","six-day","six-foot","six-month","six-year","sizable","sizzling","skeletal","skeptical","sketchy","skilled","skillful","skimpy","skinny","skittish","slack","slain","slanted","slatted","sleazy","sled","sleek","sleeping","sleepless","sleepy","sleeveless","slender","sliced","slick","sliding","slight","slim","slimy","slippery","sloping","sloppy","slow","slow-moving","sluggish","sly","small","small-scale","small-time","small-town","smart","smashed","smashing","smiling","smoked","smokeless","smoking","smoky","smoldering","smooth","smug","snap","snappy","snarling","sneaky","snow-covered","snowy","snug","so-called","soaked","soaring","sober","sobering","socalled","sociable","social","socialist","societal","socioeconomic","sociological","sodden","soft","soft-spoken","soggy","soiled","solar","sole","solemn","solicitous","solid","solitary","soluble","somber","sometime","sonic","soothing","sooty","sophisticated","sordid","sore","sorrowful","sorry","sortal","sound","soundless","sour","southeastern","southern","southwestern","sovereign","soybean","spacious","spare","sparkling","sparse","spatial","speaking","special","special-interest","specialized","specific","specified","speckled","spectacular","spectral","speculative","speechless","speeding","speedy","spellbound","spent","spherical","spicy","spiky","spilled","spinal","spindly","spinning","spiral","spirited","spiritual","spiteful","splendid","splintered","split","spoiled","spoken","spongy","sponsored","spontaneous","spooky","sporadic","sporting","sporty","spotless","spotted","spotty","sprawling","spreading","springy","spurious","square","squat","squeaky","stable","stacked","staggering","staid","stained","stained-glass","stainless","stale","stalled","stalwart","stamped","stand-up","standard","standardized","standby","starched","stark","starry","startled","startling","starved","starving","state-owned","state-run","stated","stately","statewide","static","stationary","statistical","statutory","staunch","steadfast","steady","steamed","steaming","steamy","steely","steep","stellar","step-by-step","stepped-up","stereotyped","sticking","sticky","stiff","still","stimulating","stinging","stingy","stinking","stirring","stocky","stolen","stolid","stoned","stony","stopped","stored","stormy","stout","straight","straight-backed","straightforward","strained","stranded","strange","strangled","strapping","strategic","stray","streamlined","strenuous","stressful","stricken","strict","strident","striking","stringent","stringy","striped","strong","strong-willed","structural","structured","struggling","stubby","stuck","studied","studious","stuffed","stuffy","stunned","stunning","stunted","sturdy","stylish","stylistic","stylized","suave","subatomic","subconscious","subdued","subjective","sublime","subliminal","submerged","subordinate","subsequent","subservient","subsidiary","subsidized","substandard","substantial","substantive","substitute","subterranean","subtle","suburban","subversive","succeeding","successful","successive","sudden","suffering","sufficient","suffocating","suggested","suggestive","suicidal","suitable","sullen","sultry","sumptuous","sundry","sunken","sunlit","sunny","super","superb","superficial","superfluous","superhuman","superior","supernatural","supersonic","superstitious","supervisory","supple","supplemental","supplementary","supporting","supportive","supposed","suppressed","supreme","sure","surface-to-air","surgical","surging","surly","surplus","surprised","surprising","surreal","surrounding","surviving","susceptible","suspect","suspected","suspended","suspicious","sustained","swarthy","swaying","sweating","sweeping","sweet","swell","swelling","swift","swinging","swirling","switching","swollen","sworn","symbolic","symmetrical","sympathetic","symptomatic","syndicated","synonymous","syntactic","synthetic","systematic","systemic","tacit","tacky","tactful","tactical","tailored","talented","talkative","tall","tame","tan","tangible","tangled","tanned","tantalizing","tantamount","taped","tart","tasteful","tasteless","tasty","tattered","taut","tawny","tax-exempt","tax-free","taxable","taxing","tearful","teasing","technical","technological","tedious","teeming","teen-age","teenage","telescopic","televised","telling","temperate","temporal","temporary","tempting","ten-year","tenacious","tender","tense","tentative","tenuous","tepid","terminal","terraced","terrestrial","terrible","terrific","terrifying","territorial","terrorist","terse","textured","thankful","thatched","theatrical","thematic","then","theological","theoretical","therapeutic","thermal","thermonuclear","thick","thin","third-floor","thirsty","thorny","thorough","thoughtful","thoughtless","threadbare","threatened","three-day","three-dimensional","three-hour","three-month","three-piece","three-story","three-way","three-week","three-year","thrilled","thrilling","thriving","throaty","throbbing","through","thunderous","thyroid","tidal","tidy","tight","tight-lipped","tiled","time-consuming","time-honored","timeless","timely","timid","tinkling","tinny","tinted","tiny","tional","tired","tireless","tiresome","tiring","tive","token","tolerable","tolerant","toothless","top","top-level","top-secret","topical","topless","tormented","torn","tortuous","tortured","total","touching","touchy","tough","towering","traceable","tracking","traditional","trailing","trained","trampled","tranquil","transatlantic","transcendent","transcendental","transient","transitional","transitory","translucent","transparent","trapped","traumatic","traveling","treacherous","treasured","tree-lined","trembling","tremendous","tremulous","trendy","triangular","tribal","tricky","tried","trifling","trim","triple","trite","triumphal","triumphant","trivial","tropical","troubled","troublesome","troubling","trucking","true","trusted","trusting","trustworthy","truthful","trying","tufted","tumbling","tumultuous","turbulent","turn-of-the-century","turning","turquoise","tutoring","twelve-year-old","twentieth-century","twin","twisting","two-bit","two-day","two-dimensional","two-hour","two-man","two-month","two-room","two-story","two-way","two-week","two-year","typed","typical","tyrannical","ubiquitous","ultimate","ultraviolet","umbilical","unabashed","unable","unaccountable","unaccustomed","unadorned","unaffected","unanimous","unannounced","unanswered","unanticipated","unarmed","unassuming","unattended","unauthorized","unavailable","unavoidable","unaware","unbalanced","unbearable","unbelievable","unborn","unbridled","unbroken","uncanny","uncertain","unchallenged","unchanged","unchanging","uncharacteristic","unchecked","unclean","unclear","uncomfortable","uncommon","uncomplicated","uncomprehending","uncompromising","unconcerned","unconditional","unconscionable","unconscious","unconstitutional","uncontrollable","unconventional","unconvinced","unconvincing","uncritical","uncut","undecided","undefeated","undefined","undeniable","undercover","underdeveloped","underground","underlying","understandable","underwater","undetected","undeveloped","undifferentiated","undisciplined","undisclosed","undiscovered","undisputed","undistinguished","undisturbed","undue","undulating","unearned","unearthly","uneasy","uneducated","unencumbered","unending","unequal","unequivocal","unethical","uneven","uneventful","unexpected","unexplained","unfair","unfamiliar","unfashionable","unfathomable","unfavorable","unfettered","unfinished","unfit","unfocused","unforeseen","unforgettable","unfortunate","unfounded","unfriendly","unfulfilled","ungainly","unguarded","unharmed","unheard","unhurried","unidentified","unified","uniform","uniformed","unifying","unilateral","unimaginable","unimpressed","uninformed","uninhabited","uninhibited","unintelligible","unintended","uninterested","uninteresting","uninterrupted","unionized","unique","unitary","united","universal","unjust","unjustified","unkempt","unknown","unlike","unlikely","unlimited","unlit","unmanageable","unmanned","unmarked","unmatched","unmistakable","unmoved","unmoving","unnamed","unnatural","unnoticed","unobserved","unobtrusive","unoccupied","unofficial","unopened","unorthodox","unpaid","unpainted","unparalleled","unperturbed","unpopular","unprecedented","unpredictable","unprepared","unpretentious","unproductive","unprofitable","unprotected","unpublished","unqualified","unquestioned","unreadable","unreal","unrealistic","unreasonable","unrecognizable","unrecognized","unrelated","unrelenting","unreliable","unresolved","unresponsive","unrestricted","unruffled","unruly","unsafe","unsatisfactory","unsatisfied","unsavory","unscathed","unscrupulous","unseemly","unseen","unsettled","unsettling","unskilled","unsmiling","unsold","unsolved","unsophisticated","unsound","unspecified","unspoiled","unspoken","unstable","unsteady","unsuitable","unsupported","unsure","unsuspecting","untapped","untenable","untested","unthinkable","unthinking","untidy","untimely","untold","untouchable","untouched","untoward","untrained","untreated","untroubled","untrue","unused","unusual","unwanted","unwarranted","unwary","unwashed","unwavering","unwelcome","unwieldy","unwise","unwitting","unwrapped","unwritten","unyielding","up-to-date","upbeat","upcoming","updated","uphill","upper","upper-class","upper-middle-class","uppermost","upright","uprooted","upsetting","upstate","uptight","uptown","upturned","upward","urban","urbane","urgent","usable","used","useful","useless","usual","utilitarian","utmost","utopian","utter","vacant","vague","vain","valiant","valid","valuable","valued","vanished","vanishing","vanquished","variable","varied","various","varying","vascular","vast","vaudeville","vaulted","vaunted","vegetarian","vehement","veiled","velvety","venerable","venereal","venomous","verbal","verifiable","veritable","versatile","vertical","very","vested","veteran","veterinary","viable","vibrant","vice","vice-presidential","vicious","victorious","vigilant","vigorous","vile","vindictive","violet","viral","virile","virtual","virtuous","virulent","visible","visionary","visiting","visual","vital","vivacious","vivid","vocal","vocational","volatile","volcanic","voluble","voluminous","voluntary","voracious","vulnerable","wage-price","waiting","walled","wan","wandering","waning","wanted","wanting","wanton","warlike","warm","warped","warring","wary","washed","wasted","wasteful","watchful","waterproof","watery","waving","wavy","waxed","wayward","weakening","wealthy","weary","weathered","wee","weekly","weeping","weightless","weighty","weird","welcome","welcoming","well","well-defined","well-dressed","well-educated","well-established","well-heeled","well-intentioned","well-known","well-meaning","well-organized","well-placed","well-publicized","well-to-do","well-trained","well-worn","western","whimsical","whipped","whirling","whispered","white","white-collar","white-haired","whitewashed","whitish","whole","wholesale","wholesome","wicked","wide","wide-eyed","wide-open","wide-ranging","widening","widespread","widowed","wild","wild-eyed","willful","willing","wily","winding","windy","winged","winning","winsome","wintry","wiry","wise","wishful","wispy","wistful","withered","withering","withholding","witty","wobbly","wonderful","wondrous","wont","wooded","wooden","woody","woolen","woolly","wordless","workable","working","working-class","world-class","world-wide","worldly","worldwide","worn","worn-out","worrisome","worrying","worsening","worthless","worthwhile","worthy","wounded","woven","wrecked","wretched","wrinkled","written","wrought","wrought-iron","wry","yawning","year-end","year-old","year-round","yearly","yellow","yellowed","yellowing","yellowish","yielding","young","youthful","zealous"]),ps}var gs={},Qh;function $N(){return Qh||(Qh=1,Object.defineProperty(gs,"__esModule",{value:!0}),gs.default=["abatement","abbey","abbot","abbreviation","abdication","abdomen","abductor","ability","abode","abolition","abolitionist","about-face","abrasion","absolutism","absolutist","absorber","absorption","abstention","abstract","abstraction","absurdist","absurdity","abundance","abutment","abyss","acacia","academic","academician","academy","acceleration","accelerator","accent","acceptance","accession","accessory","acclaim","acclamation","accolade","accommodation","accompaniment","accompanist","accomplice","accomplishment","accord","accordion","account","accountant","accounting","accreditation","accretion","accumulation","accuracy","accuser","ace","acetate","achievement","acknowledgement","acolyte","acorn","acquaintance","acquaintanceship","acquisition","acquit","acquittal","acreage","acrobat","acronym","acrylic","act","action","activist","activity","actor","actuality","actualization","actuary","acuity","ad","ad-lib","adage","adaptation","adapter","adder","addition","address","adequacy","adherent","adhesive","adjective","adjournment","adjudication","adjunct","adjuster","adjustment","adjutant","administration","administrator","admiral","admiration","admirer","admission","admixture","admonition","adobe","adolescent","adornment","adulation","adult","advance","advancement","advantage","adventure","adventurer","adverb","adversity","advertisement","advertiser","advisement","adviser","advisor","advocate","aerial","aerie","aeroplane","aerosol","aesthete","affect","affection","affidavit","affiliate","affiliation","affinity","affirmation","affront","afterburner","aftermath","afterthought","agate","agency","agenda","agent","agglomeration","aggrandizement","aggregate","aggregation","agitation","agitator","agreement","agribusiness","agronomist","aide","air","air-conditioner","airfield","airfoil","airframe","airing","airlift","airline","airliner","airlock","airman","airplane","airport","airship","airstrip","airway","aisle","alarm","alarmist","albatross","album","alchemist","alcove","alder","alderman","ale","alert","algorithm","alibi","alien","alignment","alkali","allegiance","allegory","alleviation","alley","alleyway","alliance","alligator","alliteration","allocation","allotment","allowance","alloy","allure","allusion","ally","almanac","almond","alpha","alphabet","also-ran","altar","altarpiece","alteration","altercation","alternation","alternative","altitude","alto","ama","amalgam","amalgamation","amateur","ambassador","ambassadorship","amber","ambiguity","ambition","ambivalence","ambulance","amelioration","amendment","amenity","amethyst","amity","ammunition","amnesty","amoeba","amount","amour","amphetamine","amphitheater","amphitheatre","amplifier","amplitude","ampule","amputee","amulet","amusement","anachronism","analgesic","analog","analogue","analogy","analysis","analyst","anarchist","anatomist","anatomy","ance","ancestor","ancestry","anchor","anchorage","anchorman","anchovy","ancient","android","anecdote","anemia","anesthesiologist","anesthetic","anesthetist","aneurysm","angel","angiogram","angle","angler","angora","animal","animation","ankle","annex","annexation","anniversary","announcement","announcer","annoyance","annual","annuity","annulment","anode","anonymity","answer","ant","antagonist","antechamber","antelope","antenna","anteroom","anthem","anthill","anthology","anthropoid","anthropologist","antibiotic","antibody","anticipation","anticommunist","antidote","antigen","antihero","antiquarian","antique","antiquity","antithesis","antler","anvil","aorta","apartment","ape","aperture","apex","aphasia","aphorism","aphrodisiac","apologia","apostle","apothecary","apparition","appeal","appearance","appellation","appendage","appendectomy","appendix","appetite","appetizer","apple","appliance","applicant","application","appointee","appointment","apportionment","appraisal","appraiser","appreciation","apprehension","apprentice","apprenticeship","approach","appropriation","approval","approximation","apricot","apron","aptitude","aquarium","aqueduct","arbiter","arbitration","arbitrator","arbor","arcade","arch","archaeologist","archangel","archbishop","archdiocese","archeologist","archer","archetype","archipelago","architect","archive","archivist","archway","ardor","arena","argument","argyle","aria","aristocracy","aristocrat","arithmetic","ark","arm","armada","armadillo","armament","armature","armband","armchair","armful","armload","armoire","armor","armory","army","aroma","arraignment","arrangement","arranger","array","arrival","arrow","arrowhead","arse","arsenal","arson","arsonist","art","artery","artichoke","article","articulation","artifact","artifice","artificiality","artisan","artist","artiste","artwork","ascendant","ascension","ascent","ascot","ash","ashtray","asking","aspect","aspen","aspirant","aspiration","assailant","assay","assemblage","assembly","assemblyman","assent","assertion","assessment","assessor","asset","assignation","assignment","assimilation","assist","assistant","associate","association","assortment","assumption","assurance","asterisk","asteroid","astonishment","astrologer","astronaut","astronomer","astrophysicist","asylum","asymmetry","atelier","atheist","athlete","ation","atmosphere","atoll","atom","atrium","attachment","attainment","attempt","attendant","attention","attic","attitude","attorney","attraction","attribute","attribution","attrition","auction","auctioneer","audience","audit","audition","auditor","auditorium","auger","augury","aura","aureole","austerity","auteur","author","authority","authorization","autobiography","autocracy","autocrat","autograph","automaker","automatic","automaton","automobile","autopsy","auxiliary","availability","avant-garde","avatar","avenger","avenue","aviary","aviator","avocation","avowal","awakening","award","awareness","awl","awning","ax","axe","axiom","axis","axle","ayatollah","azure","ba","babble","baby-sitter","babysitter","bachelor","back-up","backache","backboard","backbone","backdoor","backdrop","backer","backfield","background","backlog","backpack","backroom","backseat","backside","backstop","backup","backwash","backwater","backyard","bacon","bacterium","badge","badger","bag","bagel","baggage","bagpipe","bail","bailiff","bailiwick","baiting","baker","bakery","baking","balance","balcony","bale","ball","ballad","ballast","ballcarrier","ballerina","ballet","ballgame","balloon","ballot","ballpark","ballplayer","ballpoint","ballroom","balm","balustrade","bamboo","ban","banality","banana","band","bandage","bandana","bandanna","banding","bandit","bandleader","bandstand","bang","banister","bank","bankbook","banker","bankroll","bankruptcy","banner","banning","bannister","banquet","banquette","banshee","bantam","bantamweight","baptism","bar","barb","barbecue","barbell","barber","barbershop","bard","bargain","bargaining","barge","baritone","bark","barkeep","barker","barmaid","barman","barn","barnyard","barometer","baron","baroness","baronet","barony","barracuda","barrage","barrel","barrette","barricade","barrier","barrister","barroom","barrow","barstool","bartender","barter","bas-relief","basalt","baseball","baseboard","baseline","baseman","basement","bash","basilica","basilisk","basin","basis","basket","basketball","bassinet","bassist","bastion","bat","batch","bath","bathhouse","bathrobe","bathroom","bathtub","battalion","battering","battery","battle","battlefield","battlefront","battleground","battlement","battleship","bauble","bayonet","bazaar","beach","beachhead","beacon","bead","beagle","beak","beaker","beam","beamer","bean","bear","beard","bearer","bearing","bearskin","beastie","beater","beating","beau","beautician","beauty","beaver","beck","bed","bedchamber","bedding","bedpan","bedpost","bedroll","bedroom","bedsheet","bedside","bedspread","bedstead","bee","beech","beef","beefsteak","beehive","beep","beeper","beet","beetle","begat","beginner","beginning","behavior","behaviorist","behaviour","behemoth","behind","beholder","being","belch","belfry","belief","believer","bell","belle","bellhop","bellow","bellowing","belly","bellyache","beloved","belt","bench","benchmark","bender","bending","benediction","benefactor","beneficiary","benefit","bequest","ber","bereavement","beret","berry","berserker","berth","best-seller","bestseller","beta","betrothal","better","betterment","bettor","bevel","beverage","bevy","bib","bicep","bickering","bicycle","bid","bidder","bidet","biennial","bier","biggie","bike","biker","bilge","bility","bill","billboard","billiard","billing","billionaire","billow","billy","bin","binary","bind","binder","binding","binge","bio","biochemist","biographer","biography","biologist","biology","biopsy","biplane","birch","bird","birdbath","birdcage","birder","birdie","birdsong","birth","birthday","birthmark","birthplace","birthrate","birthright","biscuit","bishop","bit","bivouac","black","blackberry","blackbird","blackboard","blackguard","blackjack","blacklist","blackness","blackout","blacksmith","bladder","blade","blanc","blank","blanket","blare","blast","blaster","blastocyst","blaze","blazer","ble","bleach","bleacher","bleat","blemish","blend","blender","blessing","blimp","blind","blink","blinker","blinking","blip","blister","blizzard","bloak","blob","block","blockade","blockage","blockbuster","blocker","blockhouse","bloke","blond","blonde","blood","bloodhound","bloodletting","bloodline","bloodstream","bloom","blooper","blossom","blot","blotch","blotter","blow-up","blower","blowgun","blowing","blowout","blowpipe","blowtorch","blowup","blubber","bludgeon","blue","blueberry","blueprint","bluff","blur","blurb","blush","blusher","bo","boa","boar","board","boarder","boarding","boardinghouse","boardroom","boardwalk","boast","boasting","boat","boater","boathouse","boatload","boatman","boatyard","bobby","bobcat","bodice","body","bodyguard","bog","bogey","boiler","bolster","bolt","bomb","bombard","bombardment","bomber","bombing","bombshell","bon","bonanza","bond","bonding","bondsman","bone","bonfire","bonnet","book","bookcase","bookie","booking","bookkeeper","booklet","bookmaker","bookseller","bookshelf","bookshop","bookstore","boom","booming","boomlet","boon","boondoggle","boor","boost","booster","boot","booth","bootlegger","bootstrap","booty","booze","border","borderline","bore","borough","borrower","borrowing","bosom","boss","botanist","bottle","bottleneck","bottler","bottling","bottom","bottomland","boudoir","bougainvillea","bough","bouillabaisse","boulder","boulevard","bounce","bouncer","bound","boundary","bounty","bouquet","bourbon","bourgeoisie","bout","boutique","bow","bowel","bowhead","bowl","bowler","bowsprit","bowstring","box","boxcar","boxer","boxwood","brace","bracelet","bracket","braggart","braid","brain","brainstorm","brake","brakeman","bramble","branch","brand","brandy","brass","brassiere","brat","brave","bravery","brawl","brawler","brawling","brazier","breach","breadth","breadwinner","break","break-up","breakaway","breakdown","breaker","breakfast","breakfront","breakin","breaking","breakout","breakthrough","breakup","breakwater","breath","breather","breathing","breech","breed","breeder","breeding","breeze","brew","brewer","brewery","briar","bribe","brick","bricklayer","brickwork","bride","bridegroom","bridge","bridgehead","bridle","brief","briefcase","briefing","brig","brigade","brigadier","brigand","brightness","brilliance","brim","brioche","brisket","bristle","broad","broadcast","broadcaster","broadcasting","broadcloth","broadsheet","broadside","broadsword","brocade","brochure","brogue","broil","broiler","broker","brokerage","bromide","bronc","bronze","brooch","brood","brook","broom","broomstick","broth","brouhaha","brown","brownstone","bruise","brunch","brunette","brush","brushfire","brushing","brute","bubble","buccaneer","buckboard","bucket","bucketful","buckle","buckskin","bud","buddy","budget","buff","buffalo","buffer","buffet","buffoon","bug","bugger","bugging","buggy","bugle","build-up","builder","building","buildup","bulb","bulge","bulkhead","bull","bulldog","bulldozer","bullet","bulletin","bullfight","bullfighter","bullfrog","bullhorn","bullock","bully","bulwark","bum","bumblebee","bummer","bump","bumper","bumpkin","bun","bunch","bundle","bungalow","bunk","bunker","bunkhouse","bunny","bunt","bunting","buoy","burden","bureau","bureaucracy","bureaucrat","burger","burgher","burglar","burglary","burial","burlap","burlesque","burn","burner","burnout","burp","burrow","burst","bursting","busboy","bush","bushel","business","businessman","businesswoman","busload","bust","buster","bustle","busybody","butchery","butler","butt","butte","butterfly","butternut","buttock","button","buttonhole","buttress","buy","buyer","buying","buyout","buzzard","buzzer","by-election","by-product","bypass","byproduct","bystander","byword","cab","cabal","cabana","cabaret","cabbage","cabbie","cabby","cabdriver","cabin","cabinet","cabinetmaker","cable","caboose","cache","cachet","cackle","cacophony","cad","cadaver","caddie","caddy","cadence","cadet","cadre","caf","cafe","cafeteria","caftan","cage","cairn","cajole","cake","calabash","calculation","calculator","caldron","calendar","calf","calfskin","caliber","calibre","calico","caller","calling","calumny","calyx","cam","camcorder","camel","cameo","camera","cameraman","camisole","camp","campaign","campaigner","camper","campfire","campground","campsite","can","canal","canard","canary","cancellation","cancer","candelabra","candidacy","candidate","candle","candlestick","candy","cane","canine","canister","cannery","cannibal","cannonball","canoe","canon","canopy","cant","cantaloupe","canteen","canter","cantina","canton","cantor","canvass","canyon","cap","capability","capacity","cape","caper","capital","capitalist","capitalization","capitol","capitulation","capon","caprice","capstone","capsule","captain","caption","captive","captivity","captor","capture","car","carafe","caramel","carapace","carat","caravan","carbide","carbine","carbohydrate","carbon","carbonate","carburetor","carcass","carcinogen","card","cardboard","cardigan","cardinal","cardiologist","career","careerist","carelessness","caress","caretaker","cargo","caricature","carillon","carload","carnation","carnival","carnivore","carol","carotene","carousel","carpenter","carpet","carport","carriage","carrier","carrot","carryall","carrying","cart","cartel","carter","cartilage","carton","cartoon","cartoonist","cartridge","cartwheel","carver","carving","cascade","caseload","casement","cashier","cashmere","casing","cask","casket","cassava","casserole","cassette","cassock","cast","castaway","caste","casting","castle","castor","casualty","cat","cataclysm","catalog","catalogue","catalyst","catamaran","catapult","cataract","catch","catcher","catechism","categorization","category","caterer","caterpillar","cathedral","catheter","cathode","cathouse","cation","cattleman","catwalk","cauldron","cauliflower","causality","causation","cause","causeway","caution","cavalcade","cavalier","cavalryman","cave","caveat","caveman","cavern","cavity","ce","cease-fire","cedar","ceiling","celebration","celebrity","cell","cellar","cellblock","cellist","cellmate","cement","cemetery","censor","censure","centaur","centenary","center","centerpiece","centimeter","centre","centrifuge","centurion","cer","ceramic","cereal","cerebrum","ceremonial","ceremony","certainty","certificate","certification","certitude","cess","cession","cesspool","chador","chain","chair","chairman","chairmanship","chaise","chalet","chalice","chalk","chalkboard","challenge","challenger","chamber","chamberlain","chambermaid","chameleon","champ","champagne","champion","championship","chance","chancellery","chancellor","chancre","chandelier","change","changeling","changeover","changer","channel","chant","chanting","chap","chapel","chaperone","chaplain","chapter","char","character","characteristic","characterization","charcoal","chard","charge","charger","chariot","charioteer","charity","charlatan","charm","charmer","chart","charter","chartreuse","chase","chaser","chasm","chat","chateau","chattel","chatter","chatty","chauffeur","check","checkbook","checker","checkerboard","checklist","checkout","checkpoint","checkup","cheek","cheekbone","cheer","cheering","cheerleader","cheeseburger","cheesecake","cheetah","chef","chemical","chemise","chemist","chemistry","chenille","cheque","cheroot","cherry","cherub","chessboard","chestnut","chicanery","chick","chicken","chief","chieftain","chiffon","child","childhood","chile","chili","chill","chillun","chime","chimera","chimney","chimp","chimpanzee","chin","chine","chip","chipmunk","chiropractor","chisel","chiton","chloride","chlorophyll","chocolate","choice","choir","choirboy","choke","choker","cholera","chop","chopper","chopping","chord","chore","choreographer","chowder","chrissake","christening","chrome","chromosome","chronicle","chronicler","chronology","chrysanthemum","chuck","chuckle","chum","chump","chunk","church","churchman","churchyard","churn","chute","cider","cigar","cigaret","cigarette","cinch","cinder","cinema","cinematographer","cipher","circel","circle","circlet","circuit","circular","circulation","circumference","circumstance","cistern","citadel","citation","citizen","citizenship","citron","city","city-state","cityscape","civilian","civilisation","civility","civilization","claim","claimant","clam","clamor","clamp","clampdown","clan","clang","clank","clanking","clap","clapboard","clapper","claque","claret","clarification","clarinet","clarinetist","clarity","clash","clasp","class","classic","classicist","classification","classmate","classroom","clatter","clause","clavicle","claw","clay","claymore","clean","cleaner","cleanser","cleansing","cleanup","clearance","clearing","clearinghouse","cleat","cleaver","cleft","clemency","clergyman","cleric","clerk","clich","cliche","click","clicking","client","clientele","cliff","cliffside","climate","climax","climber","clime","clinch","clinic","clinician","clink","clip","clipboard","clipper","clipping","clique","cloak","cloakroom","clock","clod","clog","cloister","clone","close-up","closet","closeup","closing","closure","clot","cloth","clothesline","cloud","clout","clove","clover","clown","club","clubhouse","clump","cluster","clustering","clutch","co-author","co-chairman","co-conspirator","co-defendant","co-director","co-founder","co-op","co-operation","co-ordination","co-owner","co-pilot","co-star","co-worker","coach","coachman","coal","coalition","coast","coaster","coastline","coat","coating","coauthor","cob","cobbler","cobblestone","cobra","cobweb","cochairman","cockpit","cockroach","cocktail","coconut","cocoon","coda","code","codger","coding","coed","coefficient","coenzyme","coffee","coffeehouse","coffeepot","coffin","coffle","cofounder","cog","cognac","cognition","cohabitation","coherence","cohesion","cohort","coif","coiffure","coil","coin","coinage","coincidence","coke","col","cola","colander","coliseum","collaboration","collaborator","collage","collapse","collar","collarbone","collateral","colleague","collect","collection","collective","collectivist","collectivity","collector","colleen","college","collie","collier","collision","cologne","colon","colonel","colonist","colonization","colonnade","colony","color","coloration","coloring","colour","colouring","colt","column","columnist","com","coma","comb","combination","combustion","comeback","comedian","comedienne","comedy","comer","comet","comfort","comforter","comic","coming","comma","command","commandant","commander","commander-in-chief","commandment","commando","commemoration","commencement","commendation","comment","commentary","commentator","commercial","commie","commissar","commission","commissioner","commitment","committee","committeeman","commode","commodity","commodore","commonality","commoner","commonplace","commonwealth","commotion","commune","communication","communicator","communion","communique","community","commuter","companion","companionway","company","comparison","compartment","compass","compatriot","compendium","compensation","competence","competency","competition","competitor","compilation","complacency","complaint","completion","complex","complexion","complexity","compliance","complication","compliment","component","composer","composite","composition","compost","compound","comprehension","compress","compression","compressor","compromise","comptroller","compunction","computation","computer","comrade","concatenation","concealment","conceit","concentrate","concentration","concept","conception","conceptualization","concern","concert","concertina","concession","conch","concierge","conciliation","conciliator","conclave","conclusion","concoction","concourse","concubine","concurrence","concussion","condemnation","condensation","condenser","condition","conditioner","condolence","condominium","condor","conduct","conductor","conduit","cone","confection","confederate","confederation","conference","confession","confessional","confessor","confidant","confidante","configuration","confinement","confirmation","confiscation","conflagration","conflict","confluence","conformation","conformist","confrontation","confusion","conga","congestion","conglomerate","conglomeration","congregation","congress","congressman","conjecture","conjunction","conjurer","connection","connector","connexion","connoisseur","connotation","conqueror","conquest","conscience","consciousness","conscript","conscription","consent","consequence","conservation","conservationist","conservative","conservator","conservatory","consideration","consignment","consistency","consolation","console","consolidation","consonant","consort","consortium","conspiracy","conspirator","constable","constancy","constant","constellation","constituency","constituent","constitution","constraint","constriction","constrictor","construct","construction","constructionist","constructivist","consul","consulate","consultant","consultation","consumer","consumption","contact","container","contaminant","contamination","contemplation","contemporary","contempt","contender","content","contention","contentment","contest","contestant","context","continent","contingency","contingent","continuance","continuation","continuity","continuum","contour","contra","contraband","contraceptive","contract","contraction","contractor","contradiction","contraption","contrary","contrast","contravention","contribution","contributor","contrivance","control","controller","controversy","conundrum","convenience","convent","convention","conventionalist","convergence","conversation","conversationalist","converse","conversion","convert","converter","convertible","conveyance","conveyor","conviviality","convocation","convoy","convulsion","cook","cookbook","cooker","cookie","cookstove","coolant","cooler","coolie","coon","coop","cooperative","coordination","coordinator","cop","copier","copper","coproduction","copse","copter","copulation","copyright","copywriter","coral","cord","cordiality","cordon","corduroy","core","cork","corkscrew","corn","corncob","cornea","corner","cornerback","cornerstone","cornet","cornfield","cornice","cornucopia","corollary","coronation","coroner","corporal","corporation","corpse","corpsman","corpus","corral","correction","corrective","correlation","correspondence","correspondent","corridor","corsage","corsair","corset","cortex","cosmology","cosmopolitan","costume","cot","coterie","cottage","cotton","cottonwood","couch","cough","council","councilman","councilor","counsel","counsellor","counselor","count","countdown","countenance","counter","counterattack","counterfeit","counterforce","counterman","counterpart","counterpoint","counterproposal","counterrevolution","countertop","counterweight","countess","country","countryman","countryside","county","couple","couplet","coupling","coupon","courier","course","court","court-martial","courtesan","courtesy","courthouse","courtier","courtroom","courtship","courtyard","cousin","couturier","cove","coven","covenant","cover","cover-up","coverage","coverall","covering","coverlet","covey","cowbell","cowboy","cowgirl","cowhide","cowl","coyote","crab","crack","crackdown","cracker","crackle","crackling","crackpot","cradle","craft","craftsman","cramp","cranberry","crane","crank","cranny","crap","crash","crate","crater","cravat","craving","crayon","craze","creak","cream","crease","creation","creator","creature","creche","credit","creditor","creed","creek","creel","cremation","crematorium","creole","crepe","crescent","crest","crevasse","crevice","crew","crewcut","crewman","crib","crick","cricket","crier","crimp","crimson","cripple","crisis","crisp","crissake","crisscross","criterion","critic","criticism","critique","critter","croak","crochet","crock","crocodile","croissant","crone","crony","crook","crooner","crop","cropland","cropper","cropping","cross","cross-examination","cross-section","crossbar","crossbow","crossfire","crossing","crossover","crossword","crotch","croupier","crow","crowbar","crowd","crown","crucible","crucifix","crucifixion","crude","crudeness","crudity","cruise","cruiser","crumb","crumbling","crunch","crusade","crusader","crush","crusher","crust","crutch","crypt","cryptographer","crystal","crystallization","cub","cubble","cubbyhole","cube","cubicle","cubist","cuckoo","cucumber","cud","cudgel","cuff","cuisine","cul-de-sac","cultivator","culture","culvert","cummerbund","cup","cupboard","cupola","cur","curate","curator","curb","curd","cure","curfew","curio","curiosity","curmudgeon","curragh","currant","currency","current","curriculum","curry","curtailment","curtain","curtsy","curvature","curve","cushion","custard","custodian","custody","custom","customer","cut","cutaway","cutback","cuticle","cutie","cutoff","cutout","cutter","cutthroat","cutting","cy","cyanide","cyclamate","cycle","cyclist","cyclone","cylinder","cymbal","cynic","cynicism","cypress","cyst","czar","da","dab","dacha","dachshund","dagger","dairy","daisy","dalliance","dam","damage","damask","dame","damn","damnation","damp","damper","damsel","dance","dancer","dancing","dandelion","dandy","daredevil","darkroom","darky","darlin","darling","dart","dash","dashboard","database","date","davenport","daybed","daydream","daylight","dazzle","deacon","dead-end","deadbeat","deadline","deadlock","deadpan","deal","dealer","dealership","dealing","dear","dearie","debacle","debasement","debate","debater","debauchery","debility","debit","debriefing","debt","debtor","debut","debutante","decadent","decal","decanter","decency","decision","deck","declaration","declivity","decoder","decor","decoration","decorator","decree","dedication","deductible","deduction","deed","deejay","deerskin","default","defector","defence","defendant","defender","defense","defenseman","deference","deferment","deferral","defiance","deficit","defile","definition","deflation","deflection","defoliant","deformation","deformity","degree","deity","delay","delegate","delegation","deletion","deli","deliberation","delicacy","delicatessen","delight","delineation","delinquency","delinquent","deliverance","deliverer","delivery","dell","delta","deluge","demagogue","demand","demarcation","demeanor","dementia","demesne","demitasse","democracy","democrat","demographer","demolition","demon","demonstration","demonstrator","demotion","den","dence","denial","denigration","denim","denomination","denominator","denouement","density","dent","dentist","denunciation","deodorant","department","departure","dependence","dependency","dependent","depiction","depletion","deployment","deportation","deposit","deposition","depot","depravity","depth","deputation","deputy","derailment","derangement","derby","dereliction","derivation","derivative","dermatologist","derriere","dervish","descendant","descent","description","desert","deserter","desertion","design","designation","designer","desire","desk","desktop","desperado","desperation","despot","despotism","dessert","destination","destiny","detachment","detail","detective","detector","detergent","deterioration","determinant","determination","determinism","deterrent","detonation","detonator","detour","detriment","deuce","devaluation","developer","development","deviation","device","devotee","devotion","dew","dharma","diabetic","diadem","diagnosis","diagnostician","diagram","dial","dialect","dialectic","dialog","dialogue","diameter","diamond","diaper","diaphragm","diary","diatribe","dichotomy","dictation","dictator","dictatorship","dictionary","dictum","die","diesel","diet","dietician","difference","differential","differentiation","difficulty","diffuser","diffusion","dig","digestion","digger","digging","digit","dignitary","dignity","digression","dike","dilemma","dilettante","dilution","dime","dimension","diminution","diminutive","dimmer","dimple","diner","dinette","dinghy","dinner","dinosaur","dint","diocese","diorama","dioxide","dioxin","dip","diplomacy","diplomat","dipper","dipping","direction","directive","director","directorate","directorship","directory","dirge","disc","discard","discharge","disciple","disciplinarian","discipline","disclaimer","disclosure","discoloration","discomfiture","discomfort","discontent","discord","discotheque","discount","discouragement","discourse","discourtesy","discoverer","discovery","discrepancy","discrimination","discussion","disdain","disequilibrium","disgrace","disguise","dish","disharmony","dishonesty","dishonor","dishpan","dishtowel","dishwasher","disillusionment","disinfectant","disintegration","disjunction","disk","disparity","dispatch","dispatcher","dispensary","dispensation","dispenser","dispersion","displacement","display","disposal","disposition","disproportion","dispute","disquisition","disruption","dissection","dissector","dissension","dissent","dissenter","dissertation","disservice","dissident","dissipation","dissolution","dissonance","distance","distemper","distillate","distillation","distillery","distinction","distortion","distraction","distribution","distributor","distributorship","district","disturbance","dition","ditty","divan","dive","diver","divergence","diversion","diversity","divestiture","divide","dividend","divider","divination","divine","divinity","division","do-gooder","doc","dock","docket","docking","dockside","doctor","doctorate","doctrine","docudrama","document","documentary","documentation","dodge","doe","dogmatism","dogwood","dollop","dolphin","dom","domain","dome","domestic","domicile","domination","dominion","domino","donation","donkey","donor","donut","doom","door","doorbell","doorjamb","doorkeeper","doorknob","doorman","doormat","doorsill","doorstep","doorway","dope","dorm","dormer","dormitory","dosage","dose","dossier","dot","dotage","double","double-dealing","double-take","doubleheader","doubler","doublet","doubling","doubt","douche","dough","doughnut","dove","dovetail","dowager","dowel","down","downfall","downhill","downpour","downturn","dowry","doze","drab","draft","draftee","draftsman","dragon","dragonet","dragonfly","drain","drainage","draining","dramatist","dramatization","drape","drapery","draught","draw","drawback","drawbridge","drawer","drawing","drawing-room","drawl","drawstring","dread","dream","dreamer","dredge","dredging","dress","dresser","dressing","dressing-room","dressmaker","dribble","drier","drift","drill","drilling","drink","drinker","drip","dripping","drive","driver","driveway","drone","droop","drop","droplet","dropout","dropping","drove","drowning","drubbing","drudge","drudgery","drug","druggist","drugstore","druid","drum","drumbeat","drummer","drumming","drumstick","drunk","drunkard","dryad","drybone","dryer","dualism","duality","duchy","duckling","duct","duction","duel","duffel","dugout","duke","dukedom","dumbbell","dummy","dump","dumping","dumpling","dumpster","dun","dunce","dune","dung","dungeon","duo","duocorn","duplicate","duplication","duration","dust","duster","dusting","dustpan","dwarf","dweller","dwelling","dy","dye","dynamo","dynasty","dysentery","dystrophy","eagle","ear","earl","earlobe","earner","earphone","earpiece","earplug","earring","earth","earthenware","earthling","earthquake","easel","eater","eatery","eating","eavesdropper","ebb","eccentricity","echelon","echo","eclipse","ecologist","ecology","economist","economy","ecosystem","ecstasy","edging","edict","edifice","edition","editor","editorial","education","educator","effect","efficacy","efficiency","effigy","effluent","effort","effrontery","effusion","egalitarian","egg","eggplant","eggshell","egomaniac","egotist","eighteen-wheeler","el","elaboration","elasticity","elbow","elder","elect","election","elector","electorate","electrician","electricity","electrocardiogram","electrocution","electrode","electrolyte","electron","elegance","elegy","element","elephant","elevation","elevator","elf","elimination","elite","elixir","ell","ellipse","elm","elongation","emanation","emancipation","embankment","embargo","embassy","embellishment","ember","embezzlement","embezzler","emblem","embodiment","embolden","embolism","embrace","embrasure","embroidery","emcee","emerald","emergency","emigration","emigre","eminence","emissary","emission","emotion","emperor","emphasis","empire","empiricist","emplacement","employe","employee","employer","employment","emporium","empress","emptiness","emulsion","enactment","enamel","encampment","ence","enchantment","enclave","enclosure","encore","encounter","encouragement","encroachment","encumbrance","encyclopedia","endearment","endeavor","endeavour","endgame","ending","endorsement","endowment","endurance","energy","enforcement","enforcer","engagement","engine","engineer","engraving","enhancement","enjoyment","enlargement","enlistment","enmity","enormity","enquiry","enrichment","enrollment","ensemble","ensign","ent","entanglement","enterprise","entertainer","entertainment","enthusiasm","enthusiast","enticement","entitlement","entity","entomologist","entourage","entrance","entranceway","entrant","entreaty","entree","entrepreneur","entry","entryway","enumeration","envelope","environ","environment","environmentalist","envoy","enzyme","ephor","epic","epidemic","epidemiologist","epigraph","epileptic","epilogue","epiphany","episode","epistemology","epitaph","epithet","epitome","equality","equation","equator","equerry","equinox","equity","equivalence","equivalency","equivalent","equivocation","eral","eraser","erasure","eration","ern","ernment","errand","error","eruption","escalation","escalator","escapade","escape","escapist","escarpment","esplanade","essay","essayist","esse","essence","establishment","estate","esteem","estimate","estimation","estrangement","estrogen","estuary","etching","eternity","ether","ethnicity","eulogy","euphemism","evacuation","evaluation","evangelist","evasion","event","eventuality","evergreen","eviction","evidence","evocation","evolution","ewe","exaggeration","exaltation","exam","examination","examiner","example","exasperation","excavation","excellence","exception","excerpt","excess","exchange","exchanger","excise","excision","excitement","exclamation","exclusion","excommunication","excrement","excretion","excursion","excuse","execution","executioner","executive","executor","exegesis","exemption","exercise","exertion","exhalation","exhaust","exhibit","exhibition","exhibitionist","exhibitor","exhilaration","exhortation","existence","exorcism","expanse","expansion","expatriate","expectancy","expectant","expectation","expediency","expedient","expediter","expedition","expenditure","expense","experience","experiment","experimentation","experimenter","expert","expiration","explanation","expletive","exploit","exploitation","exploration","explorer","exploring","explosion","explosive","exponent","export","exporter","exposition","exposure","expression","expressionist","expressway","expropriation","expulsion","extension","extent","exterior","extermination","exterminator","extinction","extinguisher","extortion","extract","extraction","extrapolation","extravagance","extravaganza","extreme","extremity","extrovert","exuberance","exultation","eye","eyeball","eyebrow","eyedropper","eyeglass","eyelash","eyelet","eyelid","eyepiece","eyeshade","eyesore","eyewitness","fa","fable","fabric","fabrication","facade","face","face-lift","faceplate","facet","facility","facing","facsimile","fact","faction","factor","factory","factotum","faculty","fad","faint","fairground","fairway","fairy","fairy-tale","fairyland","fairytale","faith","falcon","fallacy","fallibility","familiarity","family","fan","fanaticism","fancier","fancy","fanfare","fang","fantasy","farce","farewell","farm","farmboy","farmer","farmhouse","farmland","farmstead","farmyard","fascination","fashion","fastball","fastening","fasting","fastness","fate","fatigue","faucet","favor","favorite","favour","favourite","fawn","fax","feat","feather","feature","federation","fedora","fee","feed","feedback","feeder","feeding","feedlot","feeling","feint","felicity","fell","fella","feller","fellow","fellowship","felt","femme","fence","fencer","fender","fense","fer","ference","ferment","fern","ferret","ferry","ferryboat","ferryman","fertilizer","fervor","fester","festival","festivity","feud","fever","fiber","fibre","fibrillation","fiction","fief","fiefdom","field","fielder","fiend","fiesta","fife","fig","figger","fight","fighter","fighting","figment","figure","figurehead","figurine","figuring","filament","file","filet","filibuster","filigree","filing","filler","fillet","filling","fillip","filly","film","filmmaker","filter","fin","final","finale","finalist","finality","finance","financier","financing","finder","finding","finery","finesse","finger","fingernail","fingerprint","fingertip","finish","finisher","fink","fir","fire","firearm","fireball","firebox","firebrand","firecracker","firefight","firefighter","firehouse","fireman","fireplace","fireside","firestorm","firm","firmament","fishbowl","fisher","fisherman","fishery","fishhook","fishnet","fission","fissure","fist","fistfight","fistful","fit","fitness","fitter","fitting","fiver","fiveyear","fix","fixation","fixer","fixing","fixity","fixture","fjord","flag","flagon","flagpole","flagship","flagstone","flail","flake","flame","flamethrower","flange","flank","flannel","flap","flapper","flare","flare-up","flash","flashback","flasher","flashlight","flask","flat","flatboat","flatcar","flatland","flatness","flavor","flavour","flaw","flea","fleck","fledgling","fleece","fleet","flesh","flex","flick","flicker","flier","flight","flimsy","flinch","flint","flip","flip-flop","flippancy","flipper","flirt","flirtation","flirting","flitter","float","floater","flock","flogging","flood","flooding","floodlight","floor","floorboard","flooring","flop","flophouse","florist","flotilla","flounce","flour","flourish","flow","flower","flowering","flowerpot","flu","fluctuation","flue","fluff","fluid","fluoride","flurry","flush","flushing","flute","fluting","flutist","flutter","fly","flyer","flyleaf","flywheel","fo","foal","foam","focus","fodder","fog","foghorn","foil","foist","fold","folder","foliage","folio","folklore","foller","follicle","follow-up","follower","following","folly","font","food","football","footbridge","footfall","foothill","foothold","footing","footlocker","footman","footnote","footpath","footprint","footrest","footstep","footstool","fop","forage","foray","force","ford","forearm","foreboding","forecast","forecaster","foreclosure","forefinger","foreground","forehead","foreigner","foreleg","forelock","foreman","forepaw","forerunner","foresight","foreskin","forest","forester","foreword","forfeiture","fork","forklift","form","formalism","formality","formance","format","formation","formula","formulation","fort","fortress","fortune","fortune-teller","forum","forward","fossil","foul","foul-up","foundation","founder","foundry","fount","fountain","fox","foxhole","foyer","fraction","fracture","fragility","fragment","fragmentation","fragrance","frailty","frame","frame-up","framework","franchise","frat","fraternity","fray","freak","free-fall","freedman","freedom","freelancer","freeway","freeze","freezer","freight","freighter","frenzy","frequency","fresco","freshman","fret","friar","friction","fridge","friend","friendly","friendship","frieze","frigate","fright","frill","fringe","frisbee","frisson","frivolity","frock","frolic","frond","front","front-runner","frontage","frontier","frontiersman","frontline","frontrunner","frost","frostbite","frosting","froth","frown","fruitcake","frustration","fuchsia","fudge","fuel","fugue","fulcrum","fulfillment","fulfilment","fullback","fumble","fumbling","function","functionalist","functionary","functioning","fund","fund-raiser","fundamentalist","funeral","fungus","funk","funnel","fur","furcot","furlough","furnace","furnishing","furor","furrow","fuse","fuselage","fusillade","fusion","future","futurist","gabardine","gable","gadfly","gadget","gaff","gaffe","gage","gaggle","gaiety","gain","gainer","gait","gal","gala","galaxy","gall","gallantry","galleon","gallery","galley","gallop","gambit","gamble","gambler","gambling","game","gamete","gametophyte","gamma","gantry","gap","garage","garden","gardener","gardenia","gargoyle","garland","garlic","garment","garner","garnet","garret","garrison","garter","gash","gasket","gaslight","gasoline","gasp","gate","gatehouse","gatekeeper","gateway","gathering","gation","gauge","gauntlet","gauze","gavel","gaze","gazelle","gear","gearbox","gebling","geezer","geisha","gel","gelatin","gelding","gem","gen","gence","gender","gene","genealogy","general","generalist","generality","generalization","generation","generator","generosity","geneticist","genie","genius","genre","gent","gentleman","gentlewoman","genus","geographer","geography","geologist","geometry","geosector","ger","germ","gestation","gesture","getaway","getup","geyser","ghetto","ghost","ghoul","giant","giantess","gift","gig","giggle","gill","gilt","gimmick","gin","gingham","giraffe","girder","girdle","girth","gist","giveaway","giver","giving","gizzard","glacier","glade","gladiator","glamour","glance","gland","glare","glass","glassful","glassware","glaze","gleam","glen","glide","glider","gliding","glimmer","glimmering","glimpse","glint","glitch","glitter","glob","globe","gloom","glory","gloss","glove","glow","glower","glue","glutton","glycogen","gnat","gnawing","gnome","goal","goalie","goaltender","goat","goatee","goatskin","goblet","goblin","going","goiter","gold","golem","golfer","gondola","goner","gong","good","good-bye","good-night","goodbye","goodie","goodnight","goof","goon","goose","gopher","gore","gorge","gorilla","gospel","gossip","gouge","gourd","gourmet","gout","governess","government","governor","governorship","gown","grab","grabber","grace","grad","grade","grader","gradient","grading","graduate","graduation","graft","grail","grailstone","grain","grammar","gramophone","granary","grandeur","grandmaster","grandstand","grange","granite","granny","grant","grape","grapevine","graph","grass","grasshopper","grassland","grate","gratification","gratuity","grave","gravestone","graveyard","gravity","gravy","gray","grazer","grease","green","greenback","greengrocer","greenhorn","greenhouse","greeter","greeting","grenade","grendel","greyhound","grid","gridiron","grievance","grill","grille","grimace","grin","grind","grinder","grinding","grindstone","grip","gripe","grit","grizzly","groan","groaning","grocer","grocery","groom","groove","groping","grotesque","grotto","ground","groundcar","grounder","grounding","groundswell","group","grouper","groupie","grouping","grove","grower","growl","grown-up","grownup","growth","grub","grudge","gruel","grunt","grunting","guarantee","guarantor","guard","guardhouse","guardian","guardianship","guardrail","guardsman","guerrilla","guess","guessing","guest","guesthouse","guffaw","guide","guidebook","guideline","guild","guillotine","guilt","guinea","guise","guitar","guitarist","gulch","gulf","gull","gullet","gully","gum","gun","gunboat","gunfighter","gunman","gunner","gunnysack","gunshot","gunsight","gunwale","gurdwara","gurgle","gurney","gush","gust","gut","gutter","guy","gym","gymnast","gypsy","habit","habitat","habitation","hacienda","hack","hacker","hacking","hacksaw","hag","hail","hailstorm","hair","hairbrush","haircut","hairdresser","hairline","hairpiece","hairpin","hairstyle","half-circle","half-life","halfback","halftime","hall","hallmark","halloo","hallway","halo","halter","ham","hamadryad","hamburger","hamlet","hammer","hammering","hammock","hamper","hamster","hamstring","han","hand","handbag","handball","handbook","handcuff","handful","handgun","handhold","handicap","handicraft","handkerchief","handle","handlebar","handler","handmaiden","handout","handrail","handshake","handwriting","handyman","hang-up","hangar","hanger","hanging","hangman","hangout","hangover","hank","hanker","hankie","hanky","hap","happening","harangue","harbinger","harbor","harbour","hard-liner","hardback","hardness","hardtop","hardwood","hare","harlot","harm","harmonica","harmony","harness","harp","harpist","harpoon","harpooner","harpsichord","harpy","harridan","harrier","harrow","hart","harvest","harvester","has-been","hash","hassle","hassock","hat","hatbox","hatch","hatchery","hatchet","hatching","hatchway","hatter","haul","haunch","haunt","haunting","haven","hawk","hay","hayloft","haymaker","hayseed","haystack","hazard","headache","headband","headboard","headdress","heading","headland","headlight","headline","headman","headmaster","headpiece","headset","headsman","headstone","headwaiter","headway","headwrap","healer","healing","heap","hearer","hearing","hearse","heart","heartache","heartbeat","heartbreak","hearth","hearthstone","heartland","hearty","heater","heath","heathen","heather","heave","heaven","heaving","heavyweight","hedge","hedgehog","hedonist","heed","heel","heft","hegemony","heifer","height","heir","heiress","heirloom","heist","helicopter","helix","hellhole","helm","helmet","helmsman","help","helper","helping","hem","hemisphere","hemline","hemlock","hemorrhage","hen","henchman","henhouse","herald","herb","herbicide","herd","herder","herdsman","heresy","heretic","heritage","hermaphrodite","hermit","hernia","hero","heroine","herringbone","hesitancy","hesitation","hex","heyday","hiccup","hick","hickory","hideaway","hierarchy","high","highball","highboy","highland","highlander","highlight","highschool","highway","hike","hiker","hilarity","hill","hillock","hillside","hilltop","hilt","hint","hinterland","hip","hire","hiring","historian","historiography","history","hitch","hitchhiker","hitter","hive","hoard","hoarding","hoax","hobble","hobby","hock","hog","hogan","hoist","holder","holding","holdout","holdover","holdup","hole","holiday","holler","hollow","holly","hologram","holothete","holster","homage","hombre","home","homebody","homecoming","homeland","homemaker","homeowner","homer","homeroom","homestead","homesteader","hometown","homily","hone","honey","honeybee","honeycomb","honeymoon","honkie","honky-tonk","honor","honour","hood","hoodlum","hoof","hook","hoop","hoot","hootch","hooting","hop","hope","hopper","horde","horizon","hornet","horoscope","horse","horseback","horseman","horsepower","horseshoe","hose","hospice","hospital","hospitalization","host","hostel","hostess","hotel","hound","hourglass","house","houseboat","houseboy","housecoat","housedress","household","householder","housekeeper","housing","hovel","howitzer","howler","hubcap","huckleberry","huddle","hue","hug","hulk","hull","hum","humanity","humbug","humidity","humility","hummingbird","hummock","humor","humorist","humour","hump","humpback","hunch","hunchback","hunger","hunt","hunter","hurdle","hurricane","hush","husk","hussy","hustle","hustler","hut","hutch","hybrid","hydrant","hydrocarbon","hydrolysis","hyena","hype","hypnotist","hypochondriac","hypocrite","hypothesis","hysterectomy","hysteria","ice","ice-cream","iceberg","icebox","icehouse","icicle","icing","icon","iconoclast","idea","ideal","idealism","idealist","idealization","ident","identification","identity","ideologist","ideologue","ideology","idiom","idiosyncrasy","idjit","idyll","ignition","ignominy","ignorance","iguana","illumination","illusion","illustration","image","imagery","imagination","imbalance","imbroglio","imitation","immediacy","immensity","immersion","imp","impact","impairment","impala","impasse","impeachment","impediment","imperative","imperfection","imperialism","impersonation","impersonator","impertinence","impiety","implant","implantation","implement","implication","import","importation","importer","imposition","impossibility","imposter","impostor","impoundment","impresario","impression","imprint","impropriety","improvement","improvisation","impulse","in-law","inauguration","inbound","incantation","incapacity","incarceration","incarnation","incidence","incident","incinerator","incline","inclusion","incoherence","income","incompatibility","incongruity","inconsistency","inconvenience","increase","increment","incumbency","incumbent","incursion","indemnity","indentation","independence","independent","index","indication","indicator","indictment","indirection","indiscretion","individual","individualist","individuality","individuation","inducement","induction","inductivist","indulgence","industrialist","industry","ineptitude","inequality","inequity","inertia","inevitability","infamy","infantryman","infarct","infarction","infatuation","infection","inference","inferno","infestation","infield","infielder","infinity","infirmary","infirmity","inflammation","inflation","inflection","inflow","influence","informality","informant","information","informer","infraction","infrastructure","infringement","infusion","ingenue","ingenuity","ingot","ingredient","inhabitant","inhalation","inhaler","inheritance","inheritor","inhibition","inhibitor","inhumanity","iniquity","initial","initiation","initiative","initiator","injection","injunction","injury","injustice","ink","inkling","inkwell","inlay","inlet","inmate","inn","innkeeper","innocence","innocent","innovation","innovator","innuendo","inoculation","inpatient","input","inquest","inquiry","inquisition","inscription","insecurity","insemination","insensitivity","insert","insertion","inset","inside","insider","insight","insignia","insincerity","insinuation","insistence","inspection","inspector","inspiration","instability","installation","installment","instance","instep","instigation","instigator","instinct","institute","institution","instruction","instructor","instrument","instrumentality","insulator","insurer","insurgency","insurrection","intake","integration","integrator","intellect","intellectual","intellectualist","intelligence","intensification","intensity","intent","intention","interaction","interception","interceptor","interchange","intercom","interconnection","interest","interface","interference","interferon","interior","interlocutor","interloper","interlude","intermediary","intermission","intern","internationalist","internist","internship","interplay","interpretation","interpreter","interrelationship","interrogation","interruption","intersection","interval","intervention","interview","interviewee","interviewer","interweaving","intestine","intonation","intricacy","intrigue","introduction","introspection","intrusion","intuition","invalid","invariance","invective","invention","inventor","inventory","inversion","investigation","investigator","investment","investor","invisibility","invitation","invocation","invoice","involvement","iodide","iridescence","iron","ironclad","ironist","ironwork","ironworker","irony","irrationality","irregularity","irrelevance","irrelevancy","irrigation","irritant","irritation","island","isle","islet","isolation","isolationist","isotope","issue","item","itinerary","ity","ivory","ivy","jab","jabber","jacaranda","jack","jacket","jackhammer","jackknife","jackpot","jackrabbit","jade","jaguar","jailbird","jam","jamb","jangle","jar","jargon","jasmine","jaunt","javelin","jaw","jawbone","jawline","jay","jean","jector","jeep","jelly","jeopardy","jerk","jerkin","jersey","jest","jester","jet","jetliner","jetport","jetty","jewel","jeweler","jib","jig","jigsaw","jimmy","jingle","job","jobber","jock","jockey","jog","jogger","joiner","joining","joint","jolt","jot","journal","journalist","journey","journeyman","jowl","jubilation","jubilee","judge","judgement","judgeship","judging","judgment","jug","juggernaut","juggler","juice","juicer","juke","jukebox","jumbo","jumper","jumpsuit","junction","juncture","jungle","junior","juniper","junk","junket","junkie","junkyard","junta","jurisdiction","jurist","juror","jury","justice","justification","juxtaposition","kaleidoscope","kangaroo","karma","katun","kebele","keel","keep","keeper","keeping","keepsake","kelp","ken","kennel","kerchief","kernel","kettle","key","keyboard","keyhole","keynote","keystone","khaki","kick","kickback","kicker","kicking","kickoff","kid","kiddie","kidnaping","kidnapper","kidnapping","kidney","kill","killer","killing","kiln","kilt","kindergarten","kindness","king","kingdom","kingmaker","kingpin","kinship","kinsman","kiosk","kit","kitchen","kitchenette","kite","kitten","kitty","klaxon","knack","knapsack","knave","knee","kneecap","knife","knight","knighthood","knit","knock","knockdown","knocker","knocking","knockout","knoll","knot","knuckle","kook","kraken","kynd","lab","label","labor","laboratory","laborer","labour","labourer","labyrinth","lace","lackey","lacquer","lad","ladder","laddie","ladle","laggard","lagoon","lair","laird","lake","lakeshore","lamb","lament","lamentation","laminate","lamp","lamppost","lampshade","lance","lanch","land","landau","lander","landfall","landfill","landing","landmark","landmass","landowner","landscape","landslide","lane","language","languor","lantern","lanyard","lap","lapel","lapse","larceny","lard","larder","lark","laser","lash","lass","latch","latecomer","lateness","lath","lathe","lation","latitude","latrine","lattice","laugh","laughter","launch","launcher","launching","laundering","laundromat","laundry","laureate","laurel","lavender","law","lawgiver","lawmaker","lawman","lawn","lawnmower","lawsuit","lawyer","layer","laying","layman","layoff","layout","layover","layup","lead","leader","leadership","leaf","leaflet","league","leak","leakage","leap","learner","learning","lease","leash","leather","leave","leave-taking","leaving","lectern","lecture","lecturer","ledge","ledger","lee","leer","left-hander","lefty","leg","legacy","legality","legation","legend","legion","legislation","legislator","legislature","legitimation","legume","lem","lemon","lender","length","leopard","leotard","leper","lesion","lesson","letdown","lethargy","letter","letterhead","lettuce","levee","level","lever","leviathan","levity","levy","lexicon","ley","liability","liaison","liana","libation","libel","liberal","liberation","liberationist","liberator","libertarian","liberty","librarian","library","licence","license","licensee","lichen","lick","licking","lid","liege","lien","lieutenant","lieve","life-cycle","life-span","life-style","lifeboat","lifeguard","lifeline","lifer","lifespan","lifestyle","lift","lifter","lifting","ligament","light","lighter","lighthouse","lightning","lightweight","likeness","liking","lilac","lily","lima","limb","lime","limerick","limestone","limit","limitation","limousine","linchpin","linden","line-up","lineage","linebacker","lineman","linen","liner","lineup","ling","lingo","linguist","liniment","lining","link","linkage","linker","linkup","lintel","lion","lioness","lip","lipstick","liqueur","liquid","liquidation","liquor","list","listener","listing","litany","lite","liter","literature","lithograph","litigation","litter","liturgy","livelihood","liver","livery","living","living-room","lizard","loader","loading","loaf","loafer","loan","loathing","lob","lobby","lobbyist","lobe","lobotomy","lobster","lobsterman","locale","locality","location","locator","lock","lock-mechanism","locker","locket","lockout","locksmith","lockup","locomotive","locust","lode","lodge","lodger","lodging","loft","log","loggia","logic","logician","logjam","loiter","lollipop","longing","longitude","longshoreman","loo","look-alike","looker","lookout","loom","loon","loony","loophole","loot","looter","lord","lordship","lorry","lotion","lottery","loudspeaker","lounge","louse","lout","lover","loveseat","low","lowland","loyalty","lubricant","lug","lullaby","lumber","lumberjack","lumberyard","luminary","luminosity","lump","lumpectomy","lunacy","lunatic","lunch","luncheon","luncheonette","lunchroom","lung","lunge","lurch","lurcher","lure","luster","lute","luxury","lynching","lyre","lyric","lyricist","m'lord","macaw","mace","machete","machine","machinist","mackinaw","madcap","mademoiselle","madhouse","maelstrom","magazine","mage","magenta","magic","magician","magistrate","magnate","magnet","magnetism","magnification","magnificence","magnitude","magnolia","magnum","magpie","mahogany","mahout","mail","mailbox","mailing","mailman","mainframe","mainland","mainsail","mainspring","mainstay","majesty","major","majority","make","make-up","maker","makeup","making","malady","malaise","malcontent","malfunction","malignancy","mall","mallard","mallet","malpractice","malt","mammal","mammogram","mammography","mammoth","management","manager","mance","mandarin","mandate","mandolin","mane","maneuver","maneuvering","manger","mango","mangrove","manhole","manhunt","manicure","manifestation","manifesto","manifold","mannequin","manner","mannerism","mannerist","manoeuvre","manor","manse","manservant","mansion","mantel","mantelpiece","mantle","mantra","manual","manufacturer","manure","manuscript","map","maple","mapping","marathon","marble","march","marching","mare","margarine","margarita","margin","marina","marine","mariner","marionette","marker","market","marketer","marketing","marketplace","marking","marksman","markup","marlin","marmalade","marquee","marrow","marsh","marshal","marshland","marshmallow","mart","martinet","martini","martyr","martyrdom","marvel","mascot","mash","mask","mason","masque","mass","massage","masseur","mast","mastectomy","master","master-mason","mastermind","masterpiece","masterwork","masthead","mat","matador","match","matchbook","matchbox","matchmaker","matchstick","matchup","material","materialist","mathematician","matinee","mating","matrix","matron","matte","matter","mattress","maturity","mauling","mausoleum","maverick","maw","maxim","maximum","mayor","maze","mead","meadow","meal","mean","meaning","meanness","measure","measurement","meatball","mecca","mechanic","mechanism","medal","medalist","medallion","median","mediation","mediator","medic","medication","medicine","meditation","medley","meet","meeting","megaphone","melancholy","melanoma","melodrama","melody","melon","meltdown","member","membership","membrane","memento","memoir","memorandum","memorial","memory","menace","mention","mentor","menu","mercenary","merchandise","merchant","merchantman","mercy","merger","meridian","meringue","meristem","merit","mermaid","merry-go-round","mesa","mesh","meson","mesquite","mess","message","messenger","messiah","metabolism","metal","metamorphosis","metaphor","meteor","meteorite","meteoroid","meteorologist","meter","method","methodology","metier","metronome","microbe","microbiologist","microchip","microcomputer","microcosm","microfilm","microphone","microprocessor","microscope","microwave","middle","middleman","midpoint","midriff","midst","midterm","might","mignon","migraine","migrant","migration","mike","mil","mileage","miler","milestone","militant","military","militiaman","milk","milking","milkmaid","milkman","milkshake","mill","miller","millet","millimeter","millionaire","millionth","millstone","mime","mimeograph","mimic","minaret","mind","mind-set","mindstone","minefield","miner","mineral","mini","miniature","minicomputer","minim","minimalist","minimum","mining","minion","miniskirt","minister","ministration","ministry","minnow","minor","minority","minstrel","mint","minuet","miracle","mirage","mire","mirror","misadventure","misapprehension","miscalculation","miscarriage","miscellany","mischance","mischief","misdemeanor","miser","misery","misfit","misfortune","misgiving","mishap","misinterpretation","mismatch","misnomer","misrepresentation","missal","missile","mission","missive","misstatement","misstep","mist","mistake","mister","mite","miter","mitigation","mitt","mittee","mitten","mix","mix-up","mixer","mixture","mixup","moat","mob","mobile","mobilization","mobster","moccasin","mock-up","mockery","mod","model","modem","moderator","modernism","modernization","modification","modifier","modulation","module","mogul","mohole","moire","moisture","molar","mold","molding","mole","molecule","mom","moment","monarchy","monastery","monetarist","money","moneymaker","monitor","monk","monocle","monogram","monograph","monolith","monologue","monopoly","monorail","monosaccharide","monotone","monotony","monsoon","monster","monstrosity","montage","monthly","monument","moo","moon","moonlight","moonshiner","moor","mooring","moorland","mop","moral","moralist","morality","morass","moratorium","moray","morbidity","morgue","morn","moron","morsel","mortal","mortality","mortar","mortgage","mortician","mortification","mortise","mortuary","mosaic","mosque","mosquito","moss","mote","motel","motif","motion","motivation","motivator","motive","motor","motorbike","motorboat","motorcade","motorcar","motorcycle","motorist","motorman","motto","mouf","mould","mound","mount","mountain","mountaineer","mountainside","mountaintop","mounting","mousse","moustache","mouth","mouth-harp","mouthful","mouthpiece","movement","mover","movie","moviegoer","moviemaker","mower","mu","muddle","muffin","muffler","mug","mugger","mugging","mulatto","mulberry","mulch","mule","mullah","mullet","multimillionaire","multiple","multiplication","multiplier","multitude","mum","mumble","municipality","mural","murder","murderer","murderess","murmur","murmuring","muscle","muse","museum","mushroom","musical","musician","musicologist","musket","muskrat","muslin","mussel","must","mustache","mustang","muster","mutant","mutiny","mutter","muttering","mutton","muzzle","myosin","myriad","myrtle","mystery","mystic","mysticism","mystification","myth","mythology","nail","naivete","nameplate","namesake","nap","napkin","narration","narrative","narrator","nation","nation-state","nationalism","nationalist","nationality","nationalization","native","nativist","naturalist","nature","nave","navigation","navigator","navy","nay","ne'er-do-well","nebula","necessity","neck","neckerchief","necklace","necktie","nectar","needle","needlepoint","needler","negation","negative","negligee","negotiation","negotiator","neigh","neighbor","neighborhood","neighbour","neomort","neon","neophyte","nephew","nerd","nerve","nest","net","netting","nettle","network","neurologist","neurosis","neurosurgeon","neutralist","neutrality","neutron","newcomer","newel","newlywed","newness","newscast","newscaster","newsletter","newsmagazine","newsman","newspaper","newspaperman","newsreel","newsroom","newsstand","nicety","niche","nick","nickel","nickname","nightcap","nightclub","nightingale","nightshirt","nightstand","nightstick","nightwatch","nimbus","ninny","nip","nite","nitrate","nitrite","nitrogen","no","no-hitter","nobility","noble","nobleman","nod","node","nodule","noggin","noise","nomad","nomination","nominee","noncom","nonentity","nonsmoker","nonwhite","noodle","nook","noose","norm","normalcy","normality","nose","nostalgia","nostril","notary","notation","notch","note","notebook","notepad","notice","notification","notion","noun","nouveau","nouvelle","nova","novel","novelist","novella","novelty","novice","nozzle","nuance","nub","nude","nudge","nugget","nuisance","nullity","number","numeral","nun","nunnery","nurse","nursemaid","nursery","nurture","nut","nutmeg","nutrient","nutritionist","nutshell","nylon","nymph","oaf","oak","oar","oasis","oath","obeisance","obelisk","obfuscation","obituary","object","objection","objective","objectivist","objector","obligation","oblivion","oblong","oboe","obscenity","obscurity","observance","observation","observatory","observer","obsession","obsidian","obstacle","obstetrician","obstinacy","obstruction","obstructionist","occasion","occupancy","occupant","occupation","occurrence","ocean","oceanographer","ochre","octave","octogenarian","oddball","oddity","odometer","odor","odour","odyssey","oeuvre","ofa","offence","offender","offense","offensive","offer","offering","office","officeholder","officer","official","offshoot","ogre","oil","oiler","oilfield","oilman","oilskin","ointment","oldster","oligarchy","olive","ombudsman","omelet","omelette","omen","omission","one-liner","onion","onlooker","onslaught","ontology","onyx","ooze","op","opacity","opal","opener","opening","opera","operation","operative","operator","operetta","ophthalmologist","opiate","opinion","opment","opportunist","opportunity","opposite","opposition","oppression","oppressor","optimism","optimist","option","oracle","oral","orange","oration","orator","oratorio","oratory","orb","orbit","orbiter","orchard","orchestra","orchestration","orchid","ordeal","order","ordering","orderly","ordinance","ordination","ore","organ","organisation","organist","organization","organizer","orientation","orifice","origin","original","originator","ornament","ornamentation","orthodontist","orthodoxy","oscillation","oscillator","oscilloscope","ostrich","other","otter","ouster","outboard","outbreak","outburst","outcast","outcome","outcrop","outcropping","outcry","outdistance","outdoorsman","outfield","outfielder","outfit","outflow","outgrowth","outhouse","outing","outlaw","outlay","outlet","outline","outlook","outpatient","outpost","outpouring","output","outrage","outside","outsider","oval","ovary","ovation","oven","over","overall","overcoat","overdose","overdraft","overflow","overhang","overhaul","overhead","overlap","overlay","overload","overlord","overpass","override","overrun","overseer","oversight","oversimplification","overstatement","overtone","overture","overview","oviduct","ovum","owl","owner","ownership","ox","oxford","oxidation","oxide","oyster","pacemaker","pacer","pacifier","pacifist","pack","package","packer","packet","packing","pact","pad","paddle","paddock","paddy","padlock","paean","pagan","page","pageant","pagoda","paign","pail","pain","painkiller","paint","paintbrush","painter","painting","pairing","paisley","pal","palace","palate","palette","palisade","pall","palladium","pallbearer","pallet","pallor","palm","palsy","pamphlet","pan","panacea","pancake","panda","pane","panel","panelling","panhandle","panic","panoply","panorama","pansy","pant","panther","panting","pantomime","pantry","pantsuit","pap","papaya","paper","paperback","paperweight","paprika","para","parable","parachute","parade","paradigm","paradise","paradox","paraffin","parafoil","paragon","paragraph","parakeet","parallel","parallelism","parameter","paramour","paranoia","parapet","paraphrase","parasite","parasol","paratroop","paratrooper","parcel","parchment","pardner","pardon","parent","parenthesis","pariah","parish","parishioner","parity","park","parka","parkland","parkway","parley","parliament","parlor","parlour","parody","parole","paroxysm","parrot","parry","parson","partake","participant","participation","particle","particular","particularity","particulate","parting","partisan","partition","partment","partner","partnership","party","parvenu","pasha","pass","passage","passageway","passenger","passer","passer-by","passing","passion","passport","password","pasta","paste","pastel","pastiche","pastime","pastor","pastry","pasture","pasty","pat","patch","pate","patent","patentee","path","pathologist","pathology","pathway","patient","patina","patio","patrician","patriot","patriotism","patrol","patrolman","patron","patsy","patter","pattern","paunch","pauper","pause","pavement","pavilion","paw","pawl","pawn","pawnshop","paycheck","payday","payload","paymaster","payment","payoff","payout","payroll","pea","peace","peacemaker","peach","peacock","peak","peal","peanut","pear","pearl","peasant","peasantry","peat","pebble","pecan","peck","pecker","pecking","pectin","pectoral","peculiarity","pedal","pedant","peddler","pedestal","pedestrian","pediatrician","pedigree","pediment","pee","peek","peel","peeling","peep","peephole","peerage","peg","pegboard","pellet","pelt","pen","penance","pencil","pendant","pendulum","penguin","penicillin","peninsula","penitence","penitent","penitentiary","penknife","pennant","pension","pensione","pensioner","penthouse","penumbra","pepper","peppermint","pepperoni","percentage","perception","percussion","percussionist","peregrine","perennial","perfection","perfectionist","perfidy","perforation","performance","performer","perfume","perience","peril","perimeter","period","periodical","periphery","periscope","permission","permit","peroration","perpetrator","perplexity","persimmon","persona","personage","personality","personification","perspective","perspiration","persuasion","pertinence","perusal","pessimist","pest","pesticide","pestilence","pet","petal","petit","petition","petitioner","petticoat","pettiness","pew","phaeton","phalanx","phantasy","phantom","pharaoh","pharmacist","pharmacy","phase","pheasant","phenomenon","philanthropist","philanthropy","philistine","philosopher","philosophy","phobia","phone","phoneme","phonograph","phony","phosphate","phosphor","photo","photocell","photocopy","photograph","photographer","photon","phrase","phrasing","physician","physicist","physiologist","physiology","physique","pi","pianist","piazza","pic","pick","pick-up","pickax","picker","picket","picking","pickle","pickpocket","pickup","picnic","picture","pidgin","pie","piece","pier","piety","pig","pigeon","pigeonhole","piggy","piggyback","piglet","pigment","pigsty","pigtail","pile","pilgrim","pilgrimage","piling","pill","pillar","pillbox","pillow","pillowcase","pilot","pin","pinafore","pinball","pincer","pinch","pine","pineapple","ping","pinhead","pink","pinkie","pinky","pinnace","pinnacle","pinstripe","pinwheel","pioneer","pipe","pipeline","piper","piracy","pirate","pistachio","pistol","piston","pit","pitch","pitcher","pitchfork","pitchman","pittance","pituitary","pivot","pixie","pizza","placard","place","placement","placenta","placer","placing","plagiarism","plague","plaid","plain","plainclothesman","plaint","plaintiff","plait","plan","plane","planer","planet","planetoid","plank","planner","planning","plant","plantain","plantation","planter","planting","plaque","plasma","plaster","plastic","plate","plateau","platelet","platform","platitude","platoon","platter","play","playback","player","playground","playgroup","playhouse","playing","playmate","playoff","playpen","playroom","plaything","playwright","plaza","pleading","pleasantry","pleasure","plebiscite","pledge","plight","plot","plotting","plough","plow","ploy","plug","plum","plumage","plumber","plume","plunge","plural","plurality","plywood","pneumonia","pocket","pocketbook","pocketful","pod","podesta","podium","poem","poet","poetry","pogrom","poignancy","point","point-of-view","pointer","poise","poison","poisoning","polariser","polarity","polarization","polder","pole","polemic","policy","policymaker","polish","polishing","politician","polity","polka","poll","pollen","pollination","polling","pollster","pollutant","polluter","pollution","polyester","polygraph","polymer","polyp","pomegranate","pomp","pompadour","pomposity","pond","poniard","pony","ponytail","poodle","pool","poolhall","poorhouse","pop-up","popcorn","pope","poplar","poppy","popsicle","popularization","population","populist","porcelain","porch","porcupine","pore","porpoise","porridge","port","portal","portent","porter","portfolio","porthole","portico","portiere","portion","portrait","portraitist","portraiture","portrayal","posing","position","posse","possession","possessor","possibility","possum","post","post-mortem","postcard","poster","posterior","postgraduate","posting","postman","postmark","postmaster","postponement","postscript","postulate","posture","posturing","pot","potato","potency","potentate","potential","potentiality","pothole","potion","potpourri","potter","pottery","pouch","poultice","pound","pounding","pout","powder","power","powerboat","powerhouse","practicality","practice","practitioner","pragmatist","prairie","praise","pram","prance","prayer","preacher","preaching","preamble","precaution","precedent","precept","precinct","precipice","precipitate","precision","precondition","precursor","predicament","predicate","prediction","predilection","predisposition","prefab","preface","prefect","prefecture","preference","preferment","prejudice","prelate","prelude","premier","premiere","premise","premium","premonition","preoccupation","prep","preparation","preppie","prerequisite","prerogative","presbytery","prescription","presence","present","presentation","presenter","presentiment","preservation","preservative","preserve","preserver","presidency","president","press","pression","pressure","presumption","pretence","pretender","pretense","pretension","pretext","pretzel","prevalence","prevention","preview","prey","price","pricing","prick","prickle","pride","priest","priestess","priesthood","prig","prima","primary","primate","primer","primitive","principal","principality","principle","print","printer","printing","printout","priority","prise","prism","privacy","private","privation","privilege","prize","prizefighter","prizewinner","pro","proach","probability","probation","probe","problem","procedure","proceeding","process","procession","processor","proclamation","proclivity","procurement","prod","prodding","prodigality","prodigy","produce","producer","product","production","productivist","productivity","profession","professional","professor","professorship","proficiency","profile","profit","profligacy","profundity","progenitor","progeny","prognosis","program","programme","programmer","progression","progressive","prohibition","project","projectile","projection","projectionist","projector","proletariat","prologue","prolongation","promenade","prominence","promise","promontory","promoter","promotion","prompt","prompting","prong","pronghorn","pronoun","pronouncement","pronunciation","proof","prop","propellant","propeller","propensity","property","proponent","proportion","proposal","proposition","proprietor","propriety","proscription","prosecution","prosecutor","prospect","prospector","prosthesis","protagonist","protection","protector","protectorate","protege","protein","protest","protester","protocol","proton","prototype","protrusion","provenance","proverb","providence","provider","province","provincialism","provision","provocateur","provocation","prow","prowl","prowler","proximity","proxy","prude","prune","pruning","psalm","pseudonym","pseudopatient","psi","psion","psych","psyche","psychoanalyst","pub","public","publican","publication","publicist","publisher","puck","pudding","puddle","puff","puke","pullback","pulley","pullover","pulp","pulpit","pulsar","pulsation","pulse","pump","pumper","pumpkin","pun","punch","puncher","puncture","pundit","punt","punter","pupil","purchase","purchaser","puree","purge","purification","purist","puritan","purity","purple","purpose","purr","purse","purser","pursuer","pursuit","purveyance","purveyor","push","pushbutton","pushcart","pusher","pushover","put-down","putdown","puter","putt","putter","puzzle","puzzlement","pylon","pyramid","pyre","python","quack","quadrangle","quadrant","quagmire","quake","qualification","qualifier","quality","qualm","quandary","quantity","quark","quarrel","quarry","quarter","quarterback","quarterly","quartermaster","quartet","quasar","quaver","quay","queen","query","quest","question","questioner","questioning","questionnaire","queue","quiche","quickie","quicksand","quiet","quill","quilt","quince","quintet","quip","quirk","quitter","quiver","quota","quotation","quote","quotient","ra","rabbi","rabbit","raccoon","race","racehorse","racer","racetrack","racist","rack","racket","raconteur","racquet","rad","radar","radiation","radiator","radical","radicalism","radio","radioisotope","radiologist","radioman","radish","radius","raffle","raft","rafter","rag","ragtag","raid","raider","rail","railing","railroad","railway","raiment","rain","rainbow","raincoat","raindrop","rainfall","rainstorm","raise","raiser","raisin","raising","rake","rally","ram","rambling","ramp","rampart","ramrod","ranch","rancher","rancor","range","rangeland","ranger","rank","ranking","ransom","rant","rap","rapacity","rapier","rapping","rapport","rapture","rarity","rascal","rash","rashness","rasp","raspberry","ratchet","rathorn","ratification","rating","ratio","ration","rationale","rationalist","rationality","rationalization","rattle","rattler","rattlesnake","rave","raven","ravine","ray","rayon","razor","re-creation","re-election","re-enactment","re-evaluation","rea","reach","reaction","reactor","read","reader","reading","readjustment","readout","reaffirmation","realignment","realist","reality","realization","reallocation","realm","realtor","realty","ream","reanimation","reaper","reappearance","reappointment","reappraisal","rear","rearrangement","reason","reasoning","reassessment","reassignment","reassurance","rebate","rebbe","rebound","rebuff","rebuke","rebuttal","rec","recapitulation","receipt","receiver","receivership","receptacle","reception","receptionist","receptor","recess","recession","recipe","recipient","reciprocity","recital","recitation","recitative","reckoning","reclamation","recliner","recluse","recognition","recognizance","recollection","recommendation","reconciliation","reconnoiter","reconsideration","reconstruction","record","recorder","recording","recount","recourse","recovery","recreation","recrimination","recruit","recruiter","recruitment","rectangle","rector","rectory","recuperation","recurrence","redefinition","redemption","redeployment","redesign","redhead","rediscovery","redistribution","redneck","redoubt","redskin","reduction","redundancy","redwood","reed","reef","reefer","reek","reel","reentry","refectory","referee","reference","referendum","referent","referral","refill","refinement","refiner","refinery","reflection","reflector","reflex","reform","reformation","reformer","reformulation","refraction","refractor","refrain","refresher","refreshment","refrigerator","refuge","refugee","refund","refusal","refuse","refusenik","refutation","regeneration","regent","regime","regimen","regiment","region","register","registrar","registration","registry","regression","regret","regularity","regulation","regulator","regurgitation","rehabilitation","rehash","rehearsal","reign","reimbursement","reincarnation","reinforcement","reinstatement","reinterpretation","reinvestment","reissue","reiteration","reject","rejection","rejoinder","relapse","relative","relativist","relativity","relaxation","relay","release","reliance","relic","relief","religion","relish","relocation","reluctance","remainder","remake","remark","remedy","remembering","remembrance","reminder","reminiscence","remission","remnant","removal","remove","remover","remuneration","rendering","rendition","renegade","renewal","renovation","rent","rental","renter","renunciation","reopening","reorganization","rep","repair","repairman","reparation","repast","repatriation","repayment","repeat","repeater","repellent","repertoire","repertory","repetition","replacement","replay","replenishment","replica","reply","report","reporter","reporting","repose","repository","repre","representation","representative","repression","reprieve","reprimand","reprint","reprisal","reprise","reproach","reproof","reptile","republic","republican","repudiation","repulsion","repurchase","reputation","request","requiem","requirement","requisite","requisition","rerun","resale","rescue","rescuer","researcher","resemblance","resentment","reservation","reserve","reservist","reservoir","residence","residency","resident","residue","resignation","resin","resistance","resolution","resonance","resort","resource","respect","respiration","respirator","respite","respondent","response","responsibility","restatement","restaurant","restaurateur","restitution","restoration","restorer","restraint","restriction","restroom","restructuring","result","resume","retailer","retainer","retaliation","retardant","retardation","retary","retch","retelling","reticence","retina","retinue","retiree","retirement","retort","retraction","retreat","retrenchment","retrial","retriever","return","reunion","revaluation","revelation","revelry","revenge","revenue","reverberation","reverie","reversal","reverse","reversion","review","reviewer","revision","revisionist","revitalization","revival","revocation","revolt","revolution","revolver","revue","revulsion","reward","rhetoric","rhinestone","rhizome","rhododendron","rhyme","rhythm","riage","rib","ribbon","rickshaw","ricochet","riddle","ride","rider","ridge","ridgeline","ridicule","riding","riff","riffle","rifle","rifleman","rift","rig","rigging","right","right-hander","right-of-way","rightist","rigidity","rigor","rim","rime","rind","ring","ringer","ringing","ringleader","ringmaster","rink","rinse","rip","ripoff","riposte","ripple","riser","rising","rite","ritual","rival","rivalry","river","riverbank","riverbed","riverboat","rivet","rivulet","ro","roach","road","roadbed","roadblock","roadhouse","roadside","roadster","roadway","roaring","roast","robber","robbery","robe","robin","robot","rock","rocker","rocket","rod","rodent","rodeo","rogue","role","roll","rollback","rollcall","roller","rolling","romp","roof","rooftop","rook","rookery","rookie","room","roommate","roost","rooster","root","rope","rosary","rose","rosebud","rosette","roster","rotation","rote","rotor","rotunda","rouge","roughage","roughhouse","roughneck","round","roundabout","roundness","roundup","roustabout","rout","route","router","routine","routing","rover","row","rowboat","rower","royalist","royalty","rub","rubber","rubber-stamp","rubbing","rube","rubric","ruby","ruck","rucksack","rudder","rue","ruffle","rug","ruin","rule","ruler","ruling","rum","rumble","rumbling","rumination","rummy","rumor","rumour","rump","run-up","runaway","rune","rung","runner","running","runoff","runt","runway","rupture","ruse","rusher","rust","rustle","rustling","rut","rye","sabbatical","saber","sable","sabra","sabre","sac","sack","sacking","sacrament","sacrifice","sacrificer","sacrilege","saddle","saddlebag","sadist","sadness","safari","safe","safeguard","safety","saga","sage","sail","sailboat","sailer","sailing","sailor","sake","salad","salamander","salami","salary","salon","saloon","salsa","salt","salutation","salute","salvage","salvation","salve","salver","samba","samovar","sample","sampler","sampling","sanatorium","sanction","sanctuary","sanctum","sandal","sandbag","sandbar","sandbox","sander","sandstone","sandwich","sanitarium","sapling","sapper","sapphire","sarcasm","sardine","sari","sash","satchel","satellite","satin","satire","satirist","satisfaction","satrap","satyr","sauce","saucepan","saucer","sauna","sausage","savanna","savannah","savant","save","saver","saving","savior","savor","saw","sawhorse","sawmill","sax","saxophone","saxophonist","saying","scab","scabbard","scaffold","scaffolding","scale","scallop","scalp","scalpel","scam","scamp","scan","scandal","scanner","scare","scarf","scarlet","scat","scattering","scavenger","scenario","scenarist","scene","scent","scepter","schedule","schema","scheme","schemer","schism","scholar","scholarship","school","schoolhouse","schoolmarm","schoolroom","schoolteacher","schoolyard","schooner","science","scientist","scimitar","scion","scolding","scoop","scooter","scope","score","scoreboard","scorecard","scorer","scoring","scorn","scotch","scoundrel","scourge","scouring","scout","scowl","scrambler","scrap","scrapbook","scrape","scraper","scratch","scratching","scrawl","scream","screamer","screaming","scree","screech","screen","screening","screenplay","screenwriter","screw","screwball","screwdriver","scribbling","scribe","scrim","scrimmage","script","scripture","scriptwriter","scrivener","scroll","scrub","scrubber","scrubbing","scruple","scuffle","scuffling","scullery","sculptor","sculpture","scythe","sea","seabed","seafood","seagull","seal","sealer","sealskin","seam","seaman","seamstress","seance","seaplane","seaport","search","searcher","searchlight","seascape","seashell","seashore","seasoning","seat","seating","seaway","seaweed","secession","secondary","secrecy","secret","secretion","sect","section","sector","security","sedan","sedge","sediment","sedition","seed","seedbed","seeding","seedling","seedship","seeker","seer","seesaw","segment","segmentation","segregationist","seine","seismometer","seizure","selection","selector","self","self-congratulation","self-criticism","self-deception","self-delusion","self-denial","self-doubt","self-examination","self-image","self-indulgence","self-interest","self-justification","self-portrait","self-sacrifice","self-satisfaction","seller","sellout","semaphore","semblance","semester","semi","semi-circle","semicircle","semiconductor","seminar","seminarian","seminary","sen","senate","senator","sender","sending","senior","senor","sensation","sense","sensibility","sensitivity","sensor","sensuality","sentence","sentiment","sentimentalist","sentimentality","sentinel","sentry","separation","separator","sepulcher","sequel","sequence","serenade","serf","sergeant","serial","sermon","serpent","serum","servant","serve","server","service","serving","sesame","set-up","setback","settee","setter","setting","settlement","settler","settling","setup","sewer","shack","shade","shading","shadow","shaft","shake","shake-up","shakedown","shaker","shakeup","shale","sham","shaman","shame","shampoo","shank","shanty","shantytown","shape","shaping","shard","share","sharecropper","shareholder","shark","sharpener","sharpness","sharpshooter","shave","shaver","shaving","shawl","sheaf","sheath","shed","sheen","sheepherder","sheepskin","sheet","sheik","shelf","shell","shellac","shelling","shelter","shepherd","sherbet","sheriff","sherry","shield","shift","shifting","shiksa","shill","shimmer","shimmy","shin","shindig","shingle","ship","shipload","shipment","shipwreck","shipwright","shipyard","shire","shirt","shirtmaker","shirttail","shirtwaist","shiver","shivering","sho","shoal","shock","shocker","shoe","shoestring","shoot","shooter","shooting","shootout","shop","shopkeeper","shopper","shore","shoreline","short","shortage","shortcoming","shortcut","shortening","shortfall","shortstop","shot","shotgun","shoulder","shout","shouting","shove","shovel","show","showcase","showdown","shower","showing","showman","showpiece","showplace","showroom","shred","shrew","shriek","shrimp","shrine","shrink","shroud","shrub","shrubbery","shrug","shtetl","shudder","shuffle","shuffling","shunt","shutdown","shutout","shutter","shuttle","sibling","sickle","sidearm","sideboard","sidecar","sidekick","sideline","sideshow","sidewalk","sidewinder","siding","siege","siesta","sieve","sigh","sight","sighting","sign","signal","signalman","signature","signer","significance","signification","signifier","signing","signora","signpost","silage","silence","silencer","silhouette","silicone","silk","sill","silver","similarity","simile","simpleton","simplicity","simplification","simulation","simulator","sinecure","sinew","singer","single","singsong","singularity","sink","sinker","sinkhole","sire","siren","sirloin","sit","sitcom","site","siting","sitter","sitting","sitting-room","situation","six-pack","sizzle","skate","skater","skein","skeleton","skeptic","skepticism","sketch","sketchbook","skewer","ski","skid","skier","skiff","skill","skillet","skim","skimmer","skin","skip","skipper","skirmish","skirmishing","skirt","skit","skull","skullcap","skunk","sky","skylight","skyline","skyrocket","skyscraper","slab","slack","slag","slalom","slamming","slander","slant","slash","slat","slate","slaver","slayer","slaying","sledge","sledgehammer","sleeper","sleeping","sleepwalker","sleet","sleeve","sleigh","sleight","sleuth","slice","slick","slicker","slide","slider","slime","sling","slingshot","slip","slippage","slipper","slit","sliver","slob","slobber","slogan","sloop","slop","slope","slot","sloth","slouch","slough","slowdown","sluice","slum","slumber","slump","slur","slurry","smack","small","smash","smattering","smear","smell","smelter","smidgen","smile","smirk","smith","smithy","smock","smoke","smoker","smokescreen","smokestack","smudge","smut","snack","snail","snake","snakebite","snap","snapper","snapshot","snare","snarl","snatch","sneak","sneaker","sneer","sneeze","snicker","sniff","sniffer","snifter","snip","sniper","snitch","snob","snobbery","snooper","snooze","snore","snorkel","snort","snot","snout","snow","snowball","snowbank","snowdrift","snowfall","snowfield","snowflake","snowman","snowmobile","snowplow","snowshoe","snowstorm","snub","snuffler","soap","soapbox","sobbing","sobriquet","socialism","socialist","socialite","society","sociology","sock","socket","sod","soda","sofa","softball","softener","softening","softness","soil","sojourn","solace","solder","soldier","sole","solemnity","solicitation","solicitor","solicitude","solid","solidarity","soliloquy","solitude","solo","soloist","solstice","solution","solvent","somersault","son","sonar","sonarman","sonata","song","songwriter","sonnet","sonobuoy","soot","sophistication","sophistry","sophomore","sor","sorbet","sorcerer","sorcery","sore","sorghum","sorority","sorrow","sortie","sorting","souffle","soul","sound","sounding","soundtrack","soup","source","sourdough","southerner","southpaw","souvenir","sovereign","sovereignty","soviet","sow","soybean","spa","space","spaceman","spaceport","spacer","spaceship","spacesuit","spacing","spade","span","spaniel","spanking","spar","spark","sparkle","sparrow","spasm","spat","spate","spatter","spatula","speakeasy","speaker","speaking","spear","specialist","speciality","specialization","specialty","specification","specimen","speck","spectacle","spectator","specter","spectre","spectrum","speculation","speculator","speech","speechwriter","speed","speedboat","speedometer","speedster","spell","spelling","spend","spender","spendthrift","sphere","spice","spider","spiderweb","spiel","spigot","spike","spill","spillway","spin","spindle","spine","spinnaker","spinner","spinoff","spinster","spiral","spire","spirit","spiritualist","spirituality","spirochete","spit","spitball","spite","splash","splashing","splat","spleen","splendor","splendour","splint","splinter","split","splitting","splotch","spoil","spoiler","spoke","sponge","sponsor","sponsorship","spoof","spook","spool","spoon","spoonful","spoor","spore","sporophyte","sport","sportscaster","sportsman","sportswriter","spot","spotlight","spotter","spouse","spout","sprawl","spray","spraying","spread","spree","sprig","spring","springboard","sprinkler","sprinkling","sprint","sprinter","sprite","spruce","spume","spur","spurt","spy","squab","squabble","squad","squadron","squall","square","squash","squat","squatter","squaw","squawk","squeak","squeal","squeeze","squint","squire","squirm","squirrel","squirt","stability","stabilizer","stable","stack","stadium","staffer","stag","stage","stagecoach","stagger","staging","stain","stair","staircase","stairway","stairwell","stake","stakeout","stalemate","stalk","stall","stamp","stampede","stance","stanchion","stand","standard","standard-bearer","standing","standoff","standout","standpoint","standstill","stanza","staple","star","starburst","starch","stare","starlet","starling","starship","start","start-up","starter","stash","state","statehouse","statement","stateroom","statesman","static","station","stationmaster","statistician","statue","statuette","stature","statute","stave","stead","steak","steam","steamboat","steamer","steamship","steed","steel","steelworker","steeple","steer","stein","stele","stem","stench","stenographer","stepladder","steppe","stepping-stone","stepson","stereo","stereotype","stern","stethoscope","stevedore","stew","steward","stewardess","stick","sticker","stickler","stickup","stiff","stigma","still","stilt","stimulant","stimulation","sting","stinger","stink","stinker","stint","stipend","stipulation","stir","stirrup","stitch","stoan","stock","stockade","stockbroker","stockholder","stocking","stockpile","stockroom","stockyard","stoic","stole","stone","stoneware","stooge","stool","stoop","stopgap","stoplight","stopover","stoppage","stopper","stopwatch","store","storefront","storehouse","storekeeper","storeroom","stork","storm","story","storyboard","storybook","storyteller","stout","stove","stovepipe","strain","strait","straitjacket","strand","stranger","strangle","strangler","strangulation","strap","stratagem","strategist","strategy","stratum","straw","strawberry","streak","stream","streamer","street","streetcar","streetlamp","streetlight","strength","stress","stretch","stretcher","stricture","stride","stridency","strike","strikeout","striker","string","stringency","stringer","strip","stripe","striving","strobe","stroke","stroll","stroller","strongbox","stronghold","strongman","strop","struction","structure","strudel","struggle","strumpet","strut","stub","stubble","stud","student","studio","study","stuff","stuffing","stumble","stumbling","stump","stunner","stunt","stupor","sturgeon","stutter","sty","style","styling","stylist","stylus","suasion","sub","subcommittee","subcompact","subcontractor","subculture","subdivision","subgroup","subject","subjectivist","subjugation","sublet","sublimation","submarine","submission","subordination","subpena","subpoena","subscriber","subscription","subset","subsidiary","subsidy","substage","substance","substation","substitute","substitution","substrate","substructure","subterfuge","subtext","subtitle","subtlety","subtraction","suburb","suburbanite","subversion","subway","success","succession","successor","succor","suede","suffix","suffocation","sugar","suggestion","suit","suitcase","suite","suitor","sulfate","sulfide","sulfite","sulfur","sulphate","sultan","summary","summation","summit","sun","sunbeam","sunburn","sunburst","sundae","sundial","sunflower","sunlight","sunrise","sunset","suntan","super","supercomputer","superficiality","supergiant","superhighway","superintendent","superior","superiority","superman","supermarket","supernova","superpower","superstar","superstructure","supervisor","supper","supplement","supplicant","supplication","supplier","supply","support","supporter","supposition","suppression","surcharge","surcoat","surety","surface","surfboard","surfeit","surfer","surge","surgeon","surgery","surmise","surname","surprise","surrender","surrogate","surround","surtax","surveillance","survey","surveyor","survival","survivor","susceptibility","suspect","suspension","suspicion","suture","swagger","swallow","swami","swamp","swampland","swan","swarm","swastika","swatch","swath","swathe","sweat","sweatband","sweater","sweating","sweatshirt","sweatshop","sweatsuit","sweet","sweetener","sweetheart","sweetie","sweetness","swell","swig","swim","swimmer","swimsuit","swindle","swindler","swing","swinger","swipe","swirl","swish","switch","switchback","switchblade","switchboard","switching","swivel","swoon","swoop","sword","swordsman","sycamore","sycophant","syllable","syllogism","symbol","symbolism","symmetry","sympathizer","sympathy","symphony","symposium","symptom","synagogue","synapse","syndicate","syndication","syndrome","synod","synonym","synopsis","synthesis","synthesizer","syringe","syrup","system","tab","tabby","tabernacle","table","tableau","tablecloth","tablespoon","tablet","tabletop","tableware","tabloid","taboo","tabulation","tack","tactic","tactician","taffeta","tag","tai-pan","tail","tailback","tailcoat","tailgate","taillight","tailor","tailspin","taint","take","takeoff","takeover","taker","taking","talc","tale","talent","talker","tally","talon","tamale","tambourine","tamer","taming","tampering","tan","tance","tang","tangent","tangle","tank","tankard","tanker","tanner","tannin","tantrum","tap","tape","taper","tapestry","taping","tapping","tar","tarantula","target","tariff","tarp","tarpaulin","tart","tary","taskmaster","tassel","taste","tasting","tat","tation","tattoo","taunt","tautology","tavern","tavern-keeper","taverna","tax","taxation","taxi","taxicab","taxiway","taxpayer","tea","teacher","teaching","teacup","teahouse","teak","teakettle","team","teammate","teamster","teapot","teardrop","teaspoon","teat","technicality","technician","technique","technocrat","technology","teddy","tedium","tee","teetotaler","teevee","tektite","tel","telecast","telegram","telegraph","telephone","telescope","telethon","teletype","television","telex","teller","telling","telltale","temper","temperament","temperature","tempest","template","temple","tempo","temptation","temptress","tenancy","tenant","tendency","tender","tenderness","tendon","tendril","tenement","tenet","tenon","tenor","tense","tension","tent","tentacle","tention","tenure","tepee","tequila","terminal","termination","terminology","tern","terrace","terracotta","terrain","terrarium","terrier","territory","terror","terrorist","testament","tester","testimonial","testimony","tetracycline","text","textbook","textile","texture","thang","thanksgiving","thatch","thaw","the","theater","theatre","theft","theme","theologian","theology","theorem","theoretician","theorist","theorizing","theory","ther","therapist","therapy","thermometer","thermostat","these","thesis","thickening","thicket","thickness","thief","thievery","thigh","thimble","thing","thinker","thinking","thinning","thistle","thorax","thorn","thornbush","thoroughbred","thoroughfare","thought","thrall","thrashing","thread","threat","three-star","threesome","threshing","threshold","thrift","thrill","thriller","throat","throb","throbbing","throne","throng","throttle","throw","throwaway","throwback","thrower","thrum","thrush","thrust","thud","thug","thumb","thumbnail","thump","thumping","thunder","thunderbolt","thunderclap","thunderstorm","thwack","thyme","thyroid","tiara","tibia","tic","tick","ticker","ticket","ticking","tickle","tidbit","tide","tie","tie-up","tiger","tile","till","tiller","tilt","timber","timberland","timbre","timeline","timepiece","timer","timetable","timidity","timing","tin","tincture","tine","ting","tinge","tingle","tingling","tinker","tint","tinting","tip","tipper","tiptoe","tirade","tissue","titan","tithe","tithing","titillation","title","toad","toast","toaster","tobacconist","toboggan","toddler","toddy","toe","toehold","toenail","toffee","toga","toil","toilet","toke","token","tolerance","toll","tom","tomahawk","tomato","tomb","tomboy","tombstone","tomcat","tome","tonality","tong","tongue","tonic","tonnage","tonsillectomy","tonsure","tool","toolbox","tooth","toothache","toothbrush","toothpaste","toothpick","topcoat","topic","topping","topside","torch","torchlight","torment","tormentor","tornado","torpedo","torpor","torque","torrent","tort","torte","tortilla","tortoise","torture","torturer","toss","tossing","tot","total","totalitarianism","totality","tote","totem","touch","touchdown","touchstone","tough","toupee","tour","tourist","tournament","tourney","tourniquet","tow","towel","tower","town","townhouse","township","townsman","toy","trace","tracer","tracery","tracing","track","tracker","tract","tractor","trade","trademark","trader","tradesman","tradition","traditionalist","traffic","trafficker","tragedy","trail","trailer","train","trainee","trainer","training","trainload","trajectory","tram","tramp","trampoline","trance","tranquilizer","transaction","transceiver","transcript","transcription","transfer","transference","transformation","transformer","transfusion","transgression","transistor","transit","transition","translation","translator","transmission","transmitter","transmutation","transom","transparency","transplant","transplantation","transport","transportation","transvestite","trap","trapdoor","trapeze","trapper","trapping","tration","travail","travel","traveler","traveller","travelogue","traverse","travesty","trawler","tray","treachery","treacle","tread","treadmill","treason","treasure","treasurer","treasury","treat","treatise","treatment","treaty","treble","tree","treetop","trembling","tremor","trench","trenchcoat","trend","trepidation","trespass","trespasser","tress","trestle","triad","trial","triangle","tribe","tribesman","tribulation","tribunal","tribune","tributary","tribute","trick","trickle","trickster","tricolor","tricycle","trifle","trigger","trill","trilogy","trinket","trip","tripe","triple","triplicate","tripod","triumph","triviality","troika","troll","trolley","trombone","trombonist","troop","trooper","trophy","trot","troubadour","trouble","troublemaker","troubleshooter","trough","troupe","trouper","trouser","trove","trowel","truancy","truce","truck","trucker","truckload","truffle","truism","trump","trumpet","trumpeter","truncheon","trunk","truss","trust","trustee","trusteeship","truth","tryout","tryst","tsar","tub","tuba","tube","tuber","tuft","tug","tug-of-war","tugboat","tuition","tulip","tulle","tumble","tumbler","tumbleweed","tummy","tumor","tumult","tundra","tune","tune-up","tuner","tunic","tuning","tunnel","turban","turbine","turbocharger","turbulence","turd","ture","tureen","turkey","turmoil","turnabout","turnaround","turncoat","turning","turnip","turnkey","turnout","turnover","turnpike","turnstile","turntable","turquoise","turret","turtle","turtleneck","tusk","tussle","tutor","tutorial","tutu","tux","tuxedo","twang","tweed","tween","twick","twig","twilight","twill","twin","twine","twinge","twinkle","twirl","twist","twister","twit","twitch","twitching","ty","tycoon","tyke","typer","typescript","typewriter","typhoid","typhoon","typist","typology","tyranny","tyrant","udder","umber","umbrella","umpire","unbutton","uncertainty","underclass","undercurrent","underdog","undergarment","undergraduate","underground","underling","underpass","undersecretary","underside","understatement","understudy","undertaker","undertaking","undertone","undertow","underwriter","underwriting","undoing","undulation","unfairness","unicorn","unification","uniform","uniformity","union","unity","universe","university","unreality","upbringing","update","updraft","upheaval","upland","uplift","uprising","upstart","upsurge","upswing","urchin","ureter","urgency","urging","urn","usage","user","usher","usurpation","usurper","utility","utopia","utterance","vacancy","vacation","vaccination","vaccine","vacillation","vagabond","vagrant","valedictorian","valentine","valet","validation","valise","valley","valuation","value","valve","van","vandal","vane","vanity","vantage","vapor","variability","variable","variance","variant","variation","variety","varnish","vase","vassal","vastness","vat","vault","vaulting","veal","vector","vegetable","vegetarian","vegetation","vehicle","veil","vein","velocity","velour","velvet","vendetta","vendor","veneer","veneration","vent","ventilator","ventricle","venture","venue","ver","veranda","verb","verdict","verge","verification","verity","vermouth","vernacular","verse","version","versity","vertebra","vertical","vessel","vest","vestibule","vestige","vet","veteran","veterinarian","veto","vexation","vial","vibration","vibrator","vicar","vice","vice-chairman","vice-president","viceroy","victor","victory","video","videocassette","videodisc","videotape","viewer","viewing","viewpoint","viewscreen","vigil","vigilante","vignette","villa","village","villager","vindication","vine","vinegar","vineyard","vintage","vinyl","violet","violin","violinist","viper","virologist","virtue","visa","visage","vise","vision","visit","visitation","visitor","visor","vista","visualization","vitamin","vivacity","vocabulary","vocalist","vocalization","vocation","vodka","vogue","voice","void","volatility","volcano","volition","volley","volleyball","voltage","volume","volunteer","vomit","vortex","voter","voucher","vow","vowel","voyage","voyce","voyeur","vulnerability","waddle","wafer","waffle","wag","wage","wager","wagon","waif","wail","wailing","waist","waistband","waistcoat","waistline","wait","waiver","waking","walk","walk-up","walker","walkie-talkie","walkout","walkway","wall","wallet","walleye","wallflower","wallop","wallow","wallpaper","walnut","wand","wanderer","wane","want","war","war-horse","warbler","warden","wardrobe","wardroom","ware","warehouse","warhead","warhorse","warlord","warm-up","warmth","warmup","warning","warp","warrant","warranty","warren","warrior","warship","wart","wartime","wash","washbasin","washboard","washcloth","washer","washing","washout","washroom","washstand","washtub","wasp","waste","wastebasket","wasteland","wastrel","watch","watchdog","watcher","watching","watchman","watchtower","watchword","water","watercolor","waterfall","waterfront","watering","waterman","watermelon","watershed","waterway","wattle","wave","wavelength","wax","wayfarer","weal","weapon","wear","wearer","wearing","weasel","weather","weatherman","weave","weaver","weaving","web","wedding","wedge","weed","weekly","weighing","weight","welcome","welder","well","wellspring","welt","welterweight","wench","werewolf","werowance","whack","whale","whalebone","whaler","whammy","wharf","whatnot","wheat","wheel","wheelbarrow","wheelchair","wheelhouse","wheeling","wheeze","whelp","which","whiff","whim","whimper","whimpering","whimsy","whine","whining","whinny","whip","whiplash","whipping","whir","whirl","whirlpool","whirlwind","whirr","whirring","whisk","whisker","whiskey","whisky","whisper","whispering","whistle","whistling","white","whitey","whodunit","whole","wholesaler","whoosh","whopper","whorl","wick","wickedness","wicket","width","wig","wiggle","wigwam","wil","wildcat","wilderness","wildfire","will","willow","wimp","wince","winch","wind","windbreaker","windfall","windmill","window","windowpane","windowsill","windpipe","windshield","wine","wineglass","winery","wingman","wingspan","wink","winner","winning","wipe","wire","wiretap","wisdom","wisecrack","wish","wishbone","wisp","wit","witch","withdrawal","withholding","witness","witticism","wizard","wizardry","wobble","woe","wok","wolf","wonder","wondering","wonderland","wonderment","wood","woodchuck","woodcutter","woodland","woodpecker","woodpile","woodshed","woodsman","woodworker","wool","word","wording","workbench","workday","worker","workhorse","workhouse","working","workingman","workload","workman","workout","workplace","workroom","workshirt","workshop","workstation","worktable","workweek","world","world-system","world-view","worldview","worm","worrier","worry","worsted","worthy","wound","wounding","wraith","wrangle","wrangling","wrap","wrapper","wrapping","wreath","wreck","wrecker","wren","wrench","wrestler","wrestling","wretch","wrinkle","wrist","wristwatch","writ","writer","writhing","writing","wrong","wrongdoing","wyrm","x-ray","yacht","yachtsman","yam","yard","yardstick","yarmulke","yarn","yawn","yearbook","yearling","yearning","yeast","yell","yelling","yellow","yellow-green","yeoman","yew","yield","yogurt","yoke","yolk","youngster","youth","yucca","yuppie","zation","zealot","zebra","zero","zigzag","zipper","zombie","zone","zoo","zoologist","zoom","zygote"]),gs}var Hh;function Vh(){if(Hh)return gi;Hh=1,Object.defineProperty(gi,"__esModule",{value:!0}),gi.nouns=gi.adjectives=void 0;const o=_N();gi.adjectives=o.default;const i=$N();return gi.nouns=i.default,gi}var Ei={},jh;function eA(){if(jh)return Ei;jh=1,Object.defineProperty(Ei,"__esModule",{value:!0}),Ei.createSeededRandomInt=Ei.getRandomInt=void 0;function o(){const E=typeof globalThis<"u"?globalThis:void 0;return E&&E.crypto?E.crypto:void 0}let i=(Date.now()^2654435769)>>>0;function c(){return i^=i<<13,i>>>=0,i^=i>>>17,i>>>=0,i^=i<<5,i>>>=0,i>>>0}function s(E){const m=o();if(m&&typeof m.getRandomValues=="function"){const v=new Uint32Array(E);return m.getRandomValues(v),v}const b=new Uint32Array(E);for(let v=0;v<E;v++)b[v]=c();return b}const d=(E,m)=>{if(!Number.isFinite(E)||!Number.isFinite(m))throw new Error("Invalid bounds for getRandomInt");if(m<E)throw new Error("maxInclusive must be >= minInclusive");if(E===m)return E;const[b]=s(1),v=m-E+1;return E+b%v};Ei.getRandomInt=d;function u(E){let m=1779033703^E.length;for(let b=0;b<E.length;b++)m=Math.imul(m^E.charCodeAt(b),3432918353),m=m<<13|m>>>19;return function(){return m=Math.imul(m^m>>>16,2246822507),m=Math.imul(m^m>>>13,3266489909),(m^=m>>>16)>>>0}}function f(E){return function(){E|=0,E=E+1831565813|0;let m=Math.imul(E^E>>>15,1|E);return m=m+Math.imul(m^m>>>7,61|m)^m,((m^m>>>14)>>>0)/4294967296}}function p(E){const m=String(E),v=u(m)(),T=f(v);return(O,h)=>{if(!Number.isFinite(O)||!Number.isFinite(h))throw new Error("Invalid bounds for getRandomInt");if(h<O)throw new Error("maxInclusive must be >= minInclusive");if(O===h)return O;const y=T(),C=h-O+1;return O+Math.floor(y*C)}}return Ei.createSeededRandomInt=p,Ei}var fi={},Wh;function Xh(){if(Wh)return fi;Wh=1,Object.defineProperty(fi,"__esModule",{value:!0}),fi.buildProfanityFilter=fi.DEFAULT_PROFANITY=void 0,fi.DEFAULT_PROFANITY=["ass","asses","asshole","bastard","bitch","bloody","bollocks","bugger","cock","cocks","cocksucker","crap","cunt","damn","dick","douche","dumb","dumber","dumbest","fag","faggot","fuck","fucked","fucker","fucking","goddam","goddamn","goddamned","hell","jerk","moron","nazi","nuts","piss","pisser","pissing","prick","retard","shit","shitty","slut","tits","twat","wanker"];function o(i,c){var s;const d=i.filter(Boolean).map(m=>m.trim().toLowerCase()).filter(m=>m.length>0),u=Array.from(new Set(d)),f=c?.matchSubstrings===!0,p=(s=c?.wordBoundary)!==null&&s!==void 0?s:"(?:^|[^a-z0-9])(?:%s)(?:$|[^a-z0-9])",E=u.map(m=>{const b=m.replace(/[.*+?^\${}()|[\\]\\\\]/g,"\\\\$&");if(f)return new RegExp(b,"i");const v=p.replace("%s",b);return new RegExp(v,"i")});return m=>{if(!m)return!1;const b=String(m).toLowerCase();return E.some(v=>v.test(b))}}return fi.buildProfanityFilter=o,fi}var Jh;function tA(){return Jh||(Jh=1,(function(o){var i=pi&&pi.__awaiter||function(A,G,F,k){function K(ie){return ie instanceof F?ie:new F(function(se){se(ie)})}return new(F||(F=Promise))(function(ie,se){function le(J){try{Y(k.next(J))}catch(ce){se(ce)}}function w(J){try{Y(k.throw(J))}catch(ce){se(ce)}}function Y(J){J.done?ie(J.value):K(J.value).then(le,w)}Y((k=k.apply(A,G||[])).next())})},c=pi&&pi.__rest||function(A,G){var F={};for(var k in A)Object.prototype.hasOwnProperty.call(A,k)&&G.indexOf(k)<0&&(F[k]=A[k]);if(A!=null&&typeof Object.getOwnPropertySymbols=="function")for(var K=0,k=Object.getOwnPropertySymbols(A);K<k.length;K++)G.indexOf(k[K])<0&&Object.prototype.propertyIsEnumerable.call(A,k[K])&&(F[k[K]]=A[k[K]]);return F};Object.defineProperty(o,"__esModule",{value:!0}),o.DEFAULT_PROFANITY=o.nouns=o.adjectives=o.uniqueUsernameGenerator=o.generateUsername=o.generateFromEmail=o.generateMany=o.generateUniqueAsync=void 0;const s=Vh(),d=eA(),u=Xh();function f(A,G,F=1e3){return i(this,void 0,void 0,function*(){const k=new Set;for(let K=0;K<F;K++){const ie=v(A);if(k.has(ie))continue;if(!(yield Promise.resolve(G(ie))))return ie;k.add(ie)}throw new Error("Unable to find a unique username within the given attempts")})}o.generateUniqueAsync=f;function p(A){const{count:G,unique:F=!1}=A,k=c(A,["count","unique"]),K=[],ie=new Set;for(let se=0;se<G;se++){let le=v(k);if(F){let w=0;for(;ie.has(le)&&w<1e3;)le=v(k),w++;if(ie.has(le))throw new Error("Unable to produce the requested number of unique usernames");ie.add(le)}K.push(le)}return K}o.generateMany=p;const E=A=>{let G;switch(A){case 1:G=Math.floor((0,d.getRandomInt)(1,9)).toString();break;case 2:G=Math.floor((0,d.getRandomInt)(10,90)).toString();break;case 3:G=Math.floor((0,d.getRandomInt)(100,900)).toString();break;case 4:G=Math.floor((0,d.getRandomInt)(1e3,9e3)).toString();break;case 5:G=Math.floor((0,d.getRandomInt)(1e4,9e4)).toString();break;case 6:G=Math.floor((0,d.getRandomInt)(1e5,9e5)).toString();break;default:G="";break}return G};function m(A,G){var F;let K=A.replace(/@.+/,"").replace(/[&/\\\\#,+()$~%._@'":*?<>{}]/g,"");const ie=typeof G=="object"&&G!==null?G:{randomDigits:typeof G=="number"?G:void 0},se=ie.stripLeadingDigits!==!1,le=(F=ie.leadingFallback)!==null&&F!==void 0?F:"user";se&&(K=K.replace(/^[0-9]+/,""),K.length===0&&(K=le));const w=typeof ie.randomDigits=="number"?ie.randomDigits:void 0;return K+E(w)}o.generateFromEmail=m;function b(A,G,F,k){const K=y(),ie=h(),se=K[Math.floor(Math.random()*K.length)],le=k?k.replace(/\\s{2,}/g," ").replace(/\\s/g,A??"").toLocaleLowerCase():ie[Math.floor(Math.random()*ie.length)];let w;return A?w=le+A+se+E(G):w=le+se+E(G),F?w.substring(0,F):w}o.generateUsername=b;function v(A){var G,F,k,K;if(A.dictionaries){const ie=Array.from(new Set([...(G=A.profanityList)!==null&&G!==void 0?G:u.DEFAULT_PROFANITY,...(F=A.exclude)!==null&&F!==void 0?F:[]])).filter(re=>!!re),se=(0,u.buildProfanityFilter)(ie,A.profanityOptions),w=A.dictionaries.map(re=>re.filter(me=>!se(String(me)))).filter(re=>re.length>0);if(w.length===0)throw new Error("All provided dictionaries are empty after filtering. Consider relaxing filters or providing more words.");const Y=typeof A.seed<"u"?(0,d.createSeededRandomInt)(A.seed):d.getRandomInt,J=re=>w[re][Y(0,w[re].length-1)],ce=w.length,ue=A.separator||"";let D,W=!1;if(A.template)D=q(A.template,w,Y,ue,A.randomDigits);else{const re=[];for(let _=0;_<ce;_++){const oe=J(_);re.push(oe)}D=x(re,(k=A.style)!==null&&k!==void 0?k:"lowerCase",ue)+E(A.randomDigits),W=!0}return W||(D=N(D,(K=A.style)!==null&&K!==void 0?K:"lowerCase",ue)),A.length?D.substring(0,A.length):D.substring(0,15)}else throw new Error("Cannot find any dictionary. Please provide at least one, or leave the 'dictionary' field empty in the config object")}o.uniqueUsernameGenerator=v;var T=Vh();Object.defineProperty(o,"adjectives",{enumerable:!0,get:function(){return T.adjectives}}),Object.defineProperty(o,"nouns",{enumerable:!0,get:function(){return T.nouns}});var O=Xh();Object.defineProperty(o,"DEFAULT_PROFANITY",{enumerable:!0,get:function(){return O.DEFAULT_PROFANITY}});function h(){const A=(0,u.buildProfanityFilter)(u.DEFAULT_PROFANITY);return s.adjectives.filter(G=>!A(G))}function y(){const A=(0,u.buildProfanityFilter)(u.DEFAULT_PROFANITY);return s.nouns.filter(G=>!A(G))}function C(A){return A&&A.charAt(0).toUpperCase()+A.slice(1).toLowerCase()}function I(A,G){return G?A.split(G).filter(Boolean):[A]}function N(A,G,F){const k=typeof F=="string"?F:"",K=I(A,k);switch(G){case"upperCase":return K.join(k).toUpperCase();case"capital":return K.map(C).join(k);case"camelCase":{const[ie,...se]=K.map(le=>le.toLowerCase());return[ie??"",...se.map(C)].join("")}case"pascalCase":return K.map(C).join("");case"kebabCase":return K.map(ie=>ie.toLowerCase()).join("-");case"snakeCase":return K.map(ie=>ie.toLowerCase()).join("_");case"lowerCase":default:return K.join(k).toLowerCase()}}function x(A,G,F){const k=A.map(K=>V(K,F));switch(G){case"upperCase":return k.map(K=>K.toUpperCase()).join(F);case"capital":{const K=k.join(F);return K&&K.charAt(0).toUpperCase()+K.slice(1).toLowerCase()}case"titleCase":return k.map(C).join(F);case"camelCase":{const[K,...ie]=k.map(se=>se.toLowerCase());return[K??"",...ie.map(C)].join("")}case"pascalCase":return k.map(C).join("");case"kebabCase":return k.map(K=>K.toLowerCase()).join("-");case"snakeCase":return k.map(K=>K.toLowerCase()).join("_");case"lowerCase":default:return k.map(K=>K.toLowerCase()).join(F)}}function V(A,G){if(!A)return A;if(!G)return A.replace(/[^a-zA-Z0-9]/g,"");const k=A.replace(/[^a-zA-Z0-9]+/g,G).replace(new RegExp(\`\${z(G)}{2,}\`,"g"),G);return U(k,G)}function z(A){return A.replace(/[.*+?^\${}()|[\\]\\\\]/g,"\\\\$&")}function U(A,G){const F=new RegExp(\`^\${z(G)}|\${z(G)}$\`,"g");return A.replace(F,"")}function q(A,G,F,k,K){const ie=/\\{(adjective|noun|digits(?::\\d+)?|\\d+)\\}/gi,se=Y=>G[Y][F(0,G[Y].length-1)];let le=-1,w=-1;return G.length>0&&(le=0),G.length>1&&(w=1),A.replace(ie,Y=>{const J=Y.slice(1,-1);if(J.startsWith("digits")){const ue=J.split(":"),D=ue[1]?parseInt(ue[1],10):K??0;return E(Number.isFinite(D)?D:void 0)}if(J==="adjective"&&le>=0)return se(le);if(J==="noun"&&w>=0)return se(w);const ce=parseInt(J,10);return Number.isFinite(ce)&&ce>=0&&ce<G.length?se(ce):Y}).replace(/\\s+/g,k||"")}})(pi)),pi}var op=tA();const nA=3600*24*365;function aA(o){try{const i=document.cookie.match(new RegExp(\`(?:^|; )\${oA(o)}=([^;]*)\`));return i?decodeURIComponent(i[1]):null}catch{return null}}function iA(o,i){try{const c=encodeURIComponent(i);document.cookie=\`\${o}=\${c}; path=/; max-age=\${nA}; SameSite=Lax\`}catch{}}function rA(o){try{document.cookie=\`\${o}=; path=/; max-age=0\`}catch{}}function oA(o){return o.replace(/[.*+?^\${}()|[\\]\\\\]/g,"\\\\$&")}const Xt={getItem:aA,setItem:iA,removeItem:rA},gp="plannotator-identity";function sT(){const o=op.uniqueUsernameGenerator({dictionaries:[op.adjectives,op.nouns],separator:"|||",style:"lowerCase",randomDigits:0,length:50}),[i,c]=o.split("|||");return\`\${i}-\${c}-tater\`}function fs(){const o=Xt.getItem(gp);if(o)return o;const i=sT();return lT(i),i}function lT(o){Xt.setItem(gp,o)}function sA(){const o=sT();return lT(o),o}function Zh(o){return o?Xt.getItem(gp)===o:!1}const lA=Z.forwardRef(({blocks:o,markdown:i,annotations:c,onAddAnnotation:s,onSelectAnnotation:d,selectedAnnotationId:u,mode:f,taterMode:p,globalAttachments:E=[],onAddGlobalAttachment:m,onRemoveGlobalAttachment:b},v)=>{const[T,O]=Z.useState(!1),[h,y]=Z.useState(!1),[C,I]=Z.useState(""),N=Z.useRef(null),x=async()=>{try{await navigator.clipboard.writeText(i),O(!0),setTimeout(()=>O(!1),2e3)}catch(_){console.error("Failed to copy:",_)}},V=()=>{if(!C.trim())return;const _={id:\`global-\${Date.now()}\`,blockId:"",startOffset:0,endOffset:0,type:Ze.GLOBAL_COMMENT,text:C.trim(),originalText:"",createdA:Date.now(),author:fs()};s(_),I(""),y(!1)};Z.useEffect(()=>{h&&N.current?.focus()},[h]);const z=Z.useRef(null),U=Z.useRef(null),q=Z.useRef(f),A=Z.useRef(s),G=Z.useRef(null),[F,k]=Z.useState(null),[K,ie]=Z.useState(null),[se,le]=Z.useState(!1),[w,Y]=Z.useState(!1),J=Z.useRef(null);Z.useEffect(()=>{q.current=f},[f]),Z.useEffect(()=>{A.current=s},[s]);const ce=(_,oe,ne,Ee,ve)=>{const Oe=_.getDoms(oe.id);let xe="",ke=0;if(Oe?.length>0){let De=Oe[0].parentElement;for(;De&&!De.dataset.blockId;)De=De.parentElement;De?.dataset.blockId&&(xe=De.dataset.blockId,ke=(De.textContent||"").split(oe.text)[0]?.length||0)}const Ue={id:oe.id,blockId:xe,startOffset:ke,endOffset:ke+oe.text.length,type:ne,text:Ee,originalText:oe.text,createdA:Date.now(),author:fs(),startMeta:oe.startMeta,endMeta:oe.endMeta,imagePaths:ve};ne===Ze.DELETION?_.addClass("deletion",oe.id):ne===Ze.COMMENT&&_.addClass("comment",oe.id),A.current(Ue)},ue=Z.useCallback(_=>{if(!z.current)return null;const oe=document.createTreeWalker(z.current,NodeFilter.SHOW_TEXT,null);let ne;for(;ne=oe.nextNode();){const dt=(ne.textContent||"").indexOf(_);if(dt!==-1){const ft=document.createRange();return ft.setStart(ne,dt),ft.setEnd(ne,dt+_.length),ft}}const ve=(z.current.textContent||"").indexOf(_);if(ve===-1||!window.getSelection())return null;const xe=document.createTreeWalker(z.current,NodeFilter.SHOW_TEXT,null);let ke=0,Ue=null,he=0,De=null,Qe=0;for(;ne=xe.nextNode();){const tt=ne.textContent?.length||0;if(!Ue&&ke+tt>ve&&(Ue=ne,he=ve-ke),Ue&&ke+tt>=ve+_.length){De=ne,Qe=ve+_.length-ke;break}ke+=tt}if(Ue&&De){const tt=document.createRange();return tt.setStart(Ue,he),tt.setEnd(De,Qe),tt}return null},[]);Z.useImperativeHandle(v,()=>({removeHighlight:_=>{U.current?.remove(_),z.current?.querySelectorAll(\`[data-bind-id="\${_}"]\`)?.forEach(ne=>{const Ee=ne.parentNode;for(;ne.firstChild;)Ee?.insertBefore(ne.firstChild,ne);ne.remove()})},clearAllHighlights:()=>{z.current?.querySelectorAll("[data-bind-id]")?.forEach(ne=>{const Ee=ne.parentNode;for(;ne.firstChild;)Ee?.insertBefore(ne.firstChild,ne);ne.remove()}),z.current?.querySelectorAll(".annotation-highlight")?.forEach(ne=>{const Ee=ne.parentNode;for(;ne.firstChild;)Ee?.insertBefore(ne.firstChild,ne);ne.remove()})},applySharedAnnotations:_=>{const oe=U.current;!oe||!z.current||_.forEach(ne=>{const Ee=oe.getDoms(ne.id);if(Ee&&Ee.length>0||z.current?.querySelector(\`[data-bind-id="\${ne.id}"]\`))return;const Oe=ue(ne.originalText);if(!Oe){console.warn(\`Could not find text for annotation \${ne.id}: "\${ne.originalText.slice(0,50)}..."\`);return}try{const xe=[],ke=document.createTreeWalker(Oe.commonAncestorContainer.nodeType===Node.TEXT_NODE?Oe.commonAncestorContainer.parentNode:Oe.commonAncestorContainer,NodeFilter.SHOW_TEXT,null);let Ue,he=!1;for(;Ue=ke.nextNode();){if(Ue===Oe.startContainer){he=!0;const De=Oe.startOffset,Qe=Ue===Oe.endContainer?Oe.endOffset:Ue.length;if(Qe>De&&xe.push({node:Ue,start:De,end:Qe}),Ue===Oe.endContainer)break;continue}if(Ue===Oe.endContainer){if(he){const De=Oe.endOffset;De>0&&xe.push({node:Ue,start:0,end:De})}break}he&&Ue.length>0&&xe.push({node:Ue,start:0,end:Ue.length})}if(xe.length===0){console.warn(\`No text nodes found for annotation \${ne.id}\`);return}xe.reverse().forEach(({node:De,start:Qe,end:tt})=>{try{const dt=document.createRange();dt.setStart(De,Qe),dt.setEnd(De,tt);const ft=document.createElement("mark");ft.className="annotation-highlight",ft.dataset.bindId=ne.id,ne.type===Ze.DELETION?ft.classList.add("deletion"):ne.type===Ze.COMMENT&&ft.classList.add("comment"),dt.surroundContents(ft),ft.addEventListener("click",()=>{d(ne.id)})}catch(dt){console.warn(\`Failed to wrap text node for annotation \${ne.id}:\`,dt)}})}catch(xe){console.warn(\`Failed to apply highlight for annotation \${ne.id}:\`,xe)}})}}),[ue,d]),Z.useEffect(()=>{if(!z.current)return;const _=new Ic({$root:z.current,exceptSelectors:[".annotation-toolbar","button"],wrapTag:"mark",style:{className:"annotation-highlight"}});return U.current=_,_.on(Ic.event.CREATE,({sources:oe})=>{if(oe.length>0){const ne=oe[0],Ee=_.getDoms(ne.id);Ee?.length>0&&(G.current&&(_.remove(G.current.id),G.current=null),q.current==="redline"?(ce(_,ne,Ze.DELETION),window.getSelection()?.removeAllRanges()):(G.current=ne,k({element:Ee[0],source:ne})))}}),_.on(Ic.event.CLICK,({id:oe})=>{d(oe)}),_.run(),()=>_.dispose()},[d]),Z.useEffect(()=>{const _=U.current;_&&c.forEach(oe=>{try{_.getDoms(oe.id)?.length>0&&(oe.type===Ze.DELETION?_.addClass("deletion",oe.id):oe.type===Ze.COMMENT&&_.addClass("comment",oe.id))}catch{}})},[c]);const D=(_,oe,ne)=>{const Ee=U.current;!F||!Ee||(ce(Ee,F.source,_,oe,ne),G.current=null,k(null),window.getSelection()?.removeAllRanges())},W=()=>{F&&U.current&&U.current.remove(F.source.id),G.current=null,k(null),window.getSelection()?.removeAllRanges()},re=(_,oe,ne)=>{const Ee=U.current;if(!K||!Ee)return;const ve=K.element.querySelector("code");if(!ve)return;const Oe=document.createRange();Oe.selectNodeContents(ve);const xe=window.getSelection();xe?.removeAllRanges(),xe?.addRange(Oe);const ke=\`codeblock-\${Date.now()}\`,Ue=ve.textContent||"",he=document.createElement("mark");he.className="annotation-highlight",he.dataset.bindId=ke,Oe.surroundContents(he),_===Ze.DELETION?he.classList.add("deletion"):_===Ze.COMMENT&&he.classList.add("comment");const De={id:ke,blockId:K.block.id,startOffset:0,endOffset:Ue.length,type:_,text:oe,originalText:Ue,createdA:Date.now(),author:fs(),imagePaths:ne};A.current(De),xe?.removeAllRanges(),ie(null),Y(!1)},me=()=>{ie(null),Y(!1)};return S.jsxs("div",{className:"relative z-50 w-full max-w-3xl",children:[p&&S.jsx(ZN,{}),S.jsxs("article",{ref:z,className:"w-full max-w-3xl bg-card border border-border/50 rounded-xl shadow-xl p-5 md:p-10 lg:p-14 relative",children:[S.jsxs("div",{className:"absolute top-3 right-3 md:top-5 md:right-5 flex items-start gap-2",children:[m&&b&&S.jsx(pp,{paths:E,onAdd:m,onRemove:b,variant:"toolbar"}),h?S.jsxs("form",{onSubmit:_=>{_.preventDefault(),V()},className:"flex items-start gap-1.5 bg-muted/80 rounded-md p-1",children:[S.jsx("textarea",{ref:N,rows:1,className:"bg-transparent text-xs min-w-40 md:min-w-56 max-w-80 max-h-32 placeholder:text-muted-foreground resize-none px-2 py-1.5 focus:outline-none",style:{fieldSizing:"content"},placeholder:"Add a global comment...",value:C,onChange:_=>I(_.target.value),onKeyDown:_=>{_.key==="Escape"&&(y(!1),I("")),_.key==="Enter"&&!_.shiftKey&&(_.preventDefault(),C.trim()&&V())}}),S.jsx("button",{type:"submit",disabled:!C.trim(),className:"self-start px-2 py-1.5 text-xs font-medium rounded bg-purple-600 text-white hover:bg-purple-500 disabled:opacity-50 transition-all",children:"Add"}),S.jsx("button",{type:"button",onClick:()=>{y(!1),I("")},className:"self-start p-1 rounded text-muted-foreground hover:text-foreground hover:bg-muted transition-colors",children:S.jsx("svg",{className:"w-3.5 h-3.5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:S.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M6 18L18 6M6 6l12 12"})})})]}):S.jsxs("button",{onClick:()=>y(!0),className:"flex items-center gap-1.5 px-2.5 py-1.5 text-xs font-medium text-muted-foreground hover:text-foreground bg-muted/50 hover:bg-muted rounded-md transition-colors",title:"Add global comment",children:[S.jsx("svg",{className:"w-3.5 h-3.5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:S.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M12 21a9.004 9.004 0 008.716-6.747M12 21a9.004 9.004 0 01-8.716-6.747M12 21c2.485 0 4.5-4.03 4.5-9S14.485 3 12 3m0 18c-2.485 0-4.5-4.03-4.5-9S9.515 3 12 3m0 0a8.997 8.997 0 017.843 4.582M12 3a8.997 8.997 0 00-7.843 4.582m15.686 0A11.953 11.953 0 0112 10.5c-2.998 0-5.74-1.1-7.843-2.918m15.686 0A8.959 8.959 0 0121 12c0 .778-.099 1.533-.284 2.253m0 0A17.919 17.919 0 0112 16.5c-3.162 0-6.133-.815-8.716-2.247m0 0A9.015 9.015 0 013 12c0-1.605.42-3.113 1.157-4.418"})}),S.jsx("span",{className:"hidden md:inline",children:"Global comment"})]}),S.jsx("button",{onClick:x,className:"flex items-center gap-1.5 px-2.5 py-1.5 text-xs font-medium text-muted-foreground hover:text-foreground bg-muted/50 hover:bg-muted rounded-md transition-colors",title:T?"Copied!":"Copy plan",children:T?S.jsxs(S.Fragment,{children:[S.jsx("svg",{className:"w-3.5 h-3.5 text-green-500",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:S.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M5 13l4 4L19 7"})}),S.jsx("span",{className:"hidden md:inline",children:"Copied!"})]}):S.jsxs(S.Fragment,{children:[S.jsx("svg",{className:"w-3.5 h-3.5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:S.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z"})}),S.jsx("span",{className:"hidden md:inline",children:"Copy plan"})]})})]}),o.map(_=>_.type==="code"?S.jsx(cT,{block:_,onHover:oe=>{J.current&&(clearTimeout(J.current),J.current=null),le(!1),F||ie({block:_,element:oe})},onLeave:()=>{J.current=setTimeout(()=>{le(!0),setTimeout(()=>{ie(null),le(!1)},150)},100)},isHovered:K?.block.id===_.id},_.id):S.jsx(dA,{block:_},_.id)),S.jsx(jN,{highlightElement:F?.element??null,onAnnotate:D,onClose:W}),K&&!F&&S.jsx(uA,{element:K.element,onAnnotate:re,onClose:me,isExiting:se,onMouseEnter:()=>{J.current&&(clearTimeout(J.current),J.current=null),le(!1)},onMouseLeave:()=>{w||(J.current=setTimeout(()=>{le(!0),setTimeout(()=>{ie(null),le(!1)},150)},100))},onLockChange:Y})]})]})}),ar=({text:o})=>{const i=[];let c=o,s=0;for(;c.length>0;){let d=c.match(/^\\*\\*(.+?)\\*\\*/);if(d){i.push(S.jsx("strong",{className:"font-semibold",children:d[1]},s++)),c=c.slice(d[0].length);continue}if(d=c.match(/^\\*(.+?)\\*/),d){i.push(S.jsx("em",{children:d[1]},s++)),c=c.slice(d[0].length);continue}if(d=c.match(/^\`([^\`]+)\`/),d){i.push(S.jsx("code",{className:"px-1.5 py-0.5 rounded bg-muted text-sm font-mono",children:d[1]},s++)),c=c.slice(d[0].length);continue}if(d=c.match(/^\\[([^\\]]+)\\]\\(([^)]+)\\)/),d){i.push(S.jsx("a",{href:d[2],target:"_blank",rel:"noopener noreferrer",className:"text-primary underline underline-offset-2 hover:text-primary/80",children:d[1]},s++)),c=c.slice(d[0].length);continue}const u=c.slice(1).search(/[\\*\`\\[]/);if(u===-1){i.push(c);break}else i.push(c.slice(0,u+1)),c=c.slice(u+1)}return S.jsx(S.Fragment,{children:i})},cA=o=>{const i=o.split(\`
|
|
527
|
+
\`})});var pi={},gi={},ps={},qh;function _N(){return qh||(qh=1,Object.defineProperty(ps,"__esModule",{value:!0}),ps.default=["abashed","abbreviated","abdominal","abiding","abject","ablaze","able","able-bodied","abnormal","abominable","aboriginal","above","abrasive","abreast","abrupt","absent","absolute","absorbed","absorbing","abstract","abundant","academic","accelerated","accelerating","acceptable","accepted","accessible","accidental","accompanying","accomplished","accountable","accumulated","accurate","accursed","accused","accustomed","aching","acknowledged","acoustic","acquired","acquisitive","acrid","acrimonious","across-the-board","acting","active","actual","acute","adamant","adaptable","adaptive","added","addictive","additional","additive","adept","adequate","adhesive","adjacent","adjoining","adjustable","administrative","admirable","admiring","admitting","adolescent","adopted","adorable","adoring","adrenal","adrift","adroit","adult","advanced","advancing","advantageous","adventurous","adverse","advisable","advisory","aesthetic","affable","affected","affectionate","affiliated","affirmative","afflicted","affluent","affordable","afire","afloat","afraid","aft","after","afterward","aged","ageless","aggravated","aggregate","aghast","agile","aging","agitated","agonized","agonizing","agrarian","agreeable","agreed","agricultural","ailing","aimless","air-conditioned","air-conditioning","airborne","airless","airtight","airy","ajar","akin","alarmed","alarming","alert","alien","alienated","alike","alive","all-american","all-important","all-night","all-out","all-powerful","all-purpose","all-time","all-white","alleged","allegorical","allergic","allied","allowable","alluring","almighty","alone","aloof","alright","altered","alternate","alternating","alternative","amateur","amateurish","amazed","amazing","amber","ambiguous","ambitious","ambivalent","amenable","amiable","amorous","amorphous","ample","amused","amusing","anachronistic","anal","analogous","analytic","analytical","anarchic","anatomical","ancestral","ancient","anemic","anesthetic","angelic","angry","anguished","angular","animated","announced","annoying","annual","anonymous","answering","antagonistic","anterior","anthropological","anti","anti-american","anti-inflation","anti-soviet","anticipated","antinuclear","antiquated","antique","antiseptic","antitank","anxious","apathetic","apocalyptic","apolitical","appalled","appalling","apparent","appealing","appellate","applicable","applied","appointed","appreciable","appreciative","apprehensive","approaching","appropriate","approved","approximate","apt","aquatic","arbitrary","arcane","arch","archaeological","archaic","arched","archetypal","architectural","arctic","ardent","arduous","arid","aristocratic","armed","armored","arms-control","aromatic","arresting","arterial","artful","articulate","articulated","artificial","artistic","ascending","ascetic","ascorbic","ashamed","ashen","askew","asleep","aspiring","assembled","assertive","assigned","assistant","associate","associated","assorted","assumed","assured","astonished","astonishing","astounded","astounding","astronomical","astute","athletic","atmospheric","atomic","atrocious","attached","attacking","attainable","attempted","attendant","attentive","attracting","attractive","attributable","auburn","audacious","audible","audio","auditory","august","auspicious","austere","authentic","authoritarian","authoritative","authorized","autobiographical","autocratic","automated","automatic","automotive","autonomous","autumnal","auxiliary","available","avant-garde","avenging","average","averse","avid","avowed","awake","aware","awash","away","awed","awesome","back","backhand","backstage","backward","bacterial","baffled","baffling","baggy","baked","balanced","bald","balding","baleful","ballistic","balmy","banal","bankrupt","banned","barbarous","barbed","bare","barefoot","barefooted","barred","barren","basic","bass","bathing","battered","beaded","beaming","bearable","bearded","beastly","beautiful","bedraggled","beefy","befuddled","beguiling","behavioral","behind-the-scenes","beige","belated","beleaguered","believable","belligerent","beloved","bemused","beneficent","beneficial","benign","bent","bereaved","bereft","bespectacled","best-known","best-selling","bestselling","bewildered","bewildering","big","big-city","big-time","bilateral","bilingual","binary","binding","biochemical","biographical","biological","bipartisan","biting","bitter","bittersweet","bizarre","black","black-and-white","black-haired","blackened","bland","blank","blasted","blatant","blazing","bleached","bleak","bleary","bleeding","blessed","blind","blinding","blinking","blissful","blistering","bloated","blocking","blond","blonde","bloodied","bloodshot","bloodstained","bloody","blooming","blue","blue-and-white","blue-black","blue-chip","blue-collar","blue-eyed","blue-gray","blue-green","bluish","blunt","blurred","bodily","bogus","boiled","boiling","boisterous","bold","bony","booming","bored","boring","born","born-again","borrowed","botanical","bottled","bottom","bottomless","bouncing","bound","boundless","bountiful","bourgeois","bowed","box-office","boyish","bracing","braided","branching","brand-new","brash","brassy","brave","brawny","brazen","breathless","breathtaking","breezy","bridal","brief","bright","bright-eyed","brilliant","brisk","brittle","broad","broad-shouldered","broke","broken","bronchial","brooding","brotherly","brown","brownish","bruised","brusque","brutal","bubbling","bubbly","budding","budgetary","bulbous","bulging","bulky","bulletproof","bumper","bumpy","buoyant","burdensome","bureaucratic","burgeoning","buried","burly","burned","burned-out","burning","burnished","burnt","bushy","businesslike","busing","busted","bustling","busy","button-down","buxom","buzzing","bygone","caged","calculated","called","callous","calm","cancerous","candid","canned","canny","cantankerous","capable","capital","capitalist","capitalistic","capricious","captive","cardboard","cardiac","cardinal","cardiovascular","carefree","careful","careless","caring","carnival","carpeted","carved","cast","cast-iron","casual","catastrophic","causal","caustic","cautionary","cautious","cavernous","ceaseless","celebrated","celestial","cellular","centennial","central","centralized","centre-fire","centrifugal","centrist","ceramic","cerebral","ceremonial","certain","certified","challenging","change-minimizing","changed","changing","chaotic","characteristic","charged","charging","charismatic","charitable","charming","charred","chartered","chaste","chastened","cheap","checked","checkered","cheerful","cheering","cheery","chemical","cherished","chief","childlike","chilled","chilling","chilly","chipped","chopped","choppy","choral","chosen","chronic","chronological","chunky","cinematic","circular","circulating","circulatory","circumstantial","citywide","civic","civil","civilian","civilized","clammy","clandestine","classic","classical","classified","classy","clean","clean-cut","clear","clear-cut","cleared","clearing","clenched","clerical","clever","climactic","climatic","clinging","clinical","clipped","close","closed","closed-circuit","closing","cloudless","cloudy","clumsy","cluttered","coarse","coastal","cobbled","coded","coed","coercive","cognitive","coherent","cohesive","coiled","coincidental","cold","cold-blooded","collaborative","collapsing","collected","collective","collegiate","colonial","colored","colorful","colorless","colossal","coloured","comatose","combative","combined","comely","comfortable","comforting","comic","comical","coming","commanding","commendable","commensurate","commercial","committed","common","commonplace","communal","compact","comparable","comparative","compassionate","compatible","compelling","compensatory","competent","competing","competitive","complacent","complementary","complete","completed","complex","compliant","complicated","complimentary","composite","compositional","comprehensible","comprehensive","compressed","compulsory","computerized","concave","concealed","conceivable","concentrated","concentric","conceptual","concerned","concerted","conciliatory","concise","concluding","conclusive","concomitant","concrete","concurrent","condemned","condescending","conditional","conditioned","conducive","confident","confidential","confined","confirmed","conflicting","confused","confusing","congenial","congenital","congested","congressional","conic","conical","connected","connecting","connective","conquered","conquering","conscientious","conscious","consecutive","consequent","conservation","conservative","considerable","considerate","consistent","consoling","conspicuous","conspiratorial","constant","constitutional","constructive","consular","consulting","consuming","consummate","contagious","contaminated","contemplative","contemporary","contemptible","contemptuous","contending","content","contented","contentious","contested","continental","contingent","continual","continued","continuing","continuous","contraceptive","contracting","contractual","contradictory","contrary","contrasting","contributing","contrite","contrived","controlled","controlling","controversial","convenient","conventional","conversational","converted","convertible","convicted","convinced","convincing","convulsive","cooked","cool","cooling","cooperative","coordinated","copious","cordial","corned","corny","coronary","corporate","correct","correctional","corrective","corresponding","corrosive","corrugated","cosmetic","cosmic","cosmopolitan","costly","counterfeit","counterproductive","countless","courageous","court-ordered","courteous","courtly","covered","covert","coveted","coy","cozy","cracked","cracking","crackling","crafty","craggy","cramped","cranky","crashing","crass","crawling","crazed","crazy","creaking","cream-colored","creamy","creased","created","creative","credible","creeping","crimson","crippled","crisp","critical","cross-country","cross-legged","crossed","crowded","crucial","crumbling","crummy","crumpled","crushed","crushing","crusty","cryptic","crystalline","cubic","culinary","cultivated","cultural","cultured","cumbersome","cumulative","cunning","cupped","curious","curled","curly","current","cursory","curt","curtained","curved","curving","customary","cut-rate","cute","cutting","cyclical","cylindrical","daily","dainty","damaged","damn","damned","damp","dangerous","dank","dapper","daring","dark","dark-blue","dark-eyed","dark-haired","darkened","darkening","darling","darting","dashing","dated","daunting","day-care","day-to-day","dazed","dazzling","deaf","deafening","dear","deathly","debatable","debilitating","decadent","decaying","deceased","decent","decentralized","decided","decision-making","decisive","declared","declining","decorated","decorative","decorous","decreased","decreasing","decrepit","dedicated","deductible","deep","deep-seated","deepening","defeated","defenseless","defensible","defensive","deferential","deferred","defiant","deficient","definite","definitive","deformed","deft","defunct","degenerate","degenerative","dejected","delayed","delectable","deliberate","delicate","delicious","delighted","delightful","delinquent","delirious","demanding","demeaning","demented","democratic","demographic","demonic","demure","dense","dental","departed","departing","departmental","dependable","dependent","depleted","deplorable","deposed","depressed","derelict","derisive","descending","descriptive","deserted","deserving","designated","desirable","desired","desolate","despairing","desperate","despicable","despised","despondent","destitute","destructive","desultory","detached","detailed","detectable","deteriorating","determined","determining","detrimental","devastating","developed","developing","developmental","deviant","devious","devoid","devoted","devout","diagnostic","diagonal","dialectical","dictatorial","dietary","different","differential","differing","diffident","diffuse","digestive","digging","digital","dignified","dilapidated","diligent","dim","diminished","diminishing","diminutive","dingy","diplomatic","dire","direct","disabled","disappearing","disappointing","disapproving","disastrous","discarded","discernible","discerning","disciplinary","disciplined","disconcerting","discontented","discordant","discouraging","discredited","discreet","discrete","discretionary","discriminatory","disembodied","disenchanted","disguised","disjointed","dismayed","disorderly","disorganized","disoriented","disparate","displaced","displeased","disposable","disproportionate","disputed","disquieting","disreputable","disruptive","dissenting","dissident","dissimilar","distant","distinct","distinctive","distinguishable","distinguished","distinguishing","distorted","distraught","distressed","distressing","disturbed","disturbing","divergent","diverse","diversified","divided","dividing","divine","diving","divisional","divisive","dizzy","dizzying","do-it-yourself","docile","doctoral","doctrinaire","doctrinal","dogged","dogmatic","domed","domestic","doomed","door-to-door","dormant","double","double-action","double-breasted","double-digit","doubtful","dour","down","down-to-earth","downcast","downhill","downright","downtown","downward","drab","drained","dramatic","drastic","dreaded","dreamlike","dreamy","dreary","dried","driven","driving","droll","drooping","drowning","drowsy","drugged","drunken","dry","dual","dubious","due","dull","duplicate","durable","dusky","dusty","dutiful","dwindling","dyed","dying","dynamic","dynastic","eager","early","early-morning","earned","earnest","earthen","earthly","earthy","eastern","easy","easygoing","ebullient","eccentric","ecclesiastical","echoing","eclectic","ecological","economic","economical","ecstatic","ecumenical","edgy","edible","editorial","educated","educational","eerie","effective","efficient","effortless","egalitarian","eight-hour","eight-year","eighteenth-century","elaborate","elastic","elated","elderly","elected","elective","electoral","electric","electrical","electromagnetic","electronic","electrostatic","elegant","elemental","elementary","elevated","eligible","elitist","elongated","eloquent","elusive","embarrassed","embarrassing","embattled","emblematic","embroidered","embryonic","emerging","emeritus","eminent","emotional","emphatic","empirical","empty","empty-handed","enchanted","enchanting","enclosed","encouraging","endangered","endearing","endemic","endless","enduring","energetic","enforced","engaged","engaging","engraved","enhanced","enigmatic","enjoyable","enlarged","enlightened","enormous","enraged","enriched","ensconced","ensuing","enterprising","entertaining","enthusiastic","enticing","entire","entrenched","entrepreneurial","enviable","envious","environmental","ephemeral","epic","equal","equatorial","equestrian","equitable","equivalent","eroding","errant","erratic","erroneous","ersatz","erstwhile","escalating","escaping","esoteric","essential","established","esteemed","esthetic","estimated","estranged","eternal","ethereal","ethical","eucalyptus","euphoric","evangelical","evasive","even","eventual","ever-increasing","ever-present","everlasting","everyday","evident","evocative","evolutionary","exact","exacting","exaggerated","exalted","excellent","exceptional","excess","excessive","excited","exciting","exclusive","excruciating","executive","exemplary","exempt","exhausted","exhausting","exhaustive","exhilarated","exhilarating","exiled","existential","existing","exorbitant","exotic","expanded","expanding","expansive","expectant","expected","expedient","expendable","expensive","experienced","experimental","expert","explanatory","explicit","exploratory","explosive","exposed","express","expressed","expressionless","expressive","exquisite","extant","extended","extensive","exterior","external","extinct","extra","extracurricular","extraneous","extraordinary","extravagant","extreme","extremist","extrinsic","exuberant","exultant","fabled","fabulous","face-to-face","faceless","facial","facile","factional","factual","faded","fading","failed","failing","faint","fair","faithful","fallen","falling","fallow","false","faltering","famed","familial","familiar","famished","famous","fanatical","fanciful","fancy","fantastic","far-flung","far-off","far-reaching","farcical","farfetched","fascinated","fascinating","fascist","fashionable","fast","fast-food","fast-growing","fast-moving","fastidious","fatal","fated","fateful","fatherly","fatty","fatuous","faulty","favorable","favored","favorite","favourable","favourite","feal","fearful","fearless","fearsome","feasible","feathered","feathery","featureless","federal","feeble","feeding","feisty","fellow","feminine","ferocious","fervent","festive","fetal","fetid","feudal","feverish","fickle","fictional","fictitious","fierce","fiery","figurative","filmy","final","financial","fine","finished","finishing","finite","firm","first-aid","first-class","first-quarter","first-rate","first-time","first-year","firsthand","fiscal","fishy","fit","fitful","fitting","five-day","five-minute","five-year","fixed","flabbergasted","flabby","flagrant","flailing","flaky","flamboyant","flaming","flash","flashing","flashy","flat","flattened","flattered","flattering","flawless","fledgling","fleeing","fleeting","fleshy","flexible","flickering","flimsy","flipping","floating","floppy","floral","florid","flourishing","flowered","flowering","flowery","flowing","fluent","fluffy","fluorescent","flushed","flustered","fluted","fluttering","flying","foaming","focal","foggy","folded","folding","follow-up","following","fond","foolhardy","foolish","forbidding","forced","forceful","foregoing","foreign","foreign-policy","forensic","foreseeable","forested","forged","forgiving","forgotten","forlorn","formal","formative","formidable","formless","forthcoming","forthright","fortified","fortuitous","fortunate","forward","foster","foul","founding","four-day","four-hour","four-year","fourth-quarter","fractured","fragmentary","fragmented","fragrant","frail","framed","frank","frantic","fraternal","fraudulent","fraught","frayed","freak","freckled","free","free-lance","freezing","french","frenetic","frenzied","frequent","fresh","freshwater","fretful","friendly","frightened","frightening","frightful","frigid","fringed","frivolous","front","front-line","front-page","frontal","frosted","frosty","frozen","fruitful","fruitless","frustrated","frustrating","full","full-blown","full-fledged","full-length","full-page","full-scale","full-size","full-time","fun","functional","functioning","fund-raising","fundamental","fundamentalist","funded","funky","funny","furious","furnished","furry","furtive","fussy","futile","future","futuristic","fuzzy","galactic","gallant","galloping","galvanized","gaping","garbled","gargantuan","garish","garrulous","gaseous","gastrointestinal","gathered","gaudy","gaunt","gebling","general","generalized","generating","generative","generic","generous","genetic","genital","genteel","gentle","gentlemanly","genuine","geographic","geographical","geological","geometric","geopolitical","ghastly","ghostly","giant","gibberish","giddy","gifted","gigantic","gilded","ginger","girlish","given","glacial","glad","glamorous","glaring","glassy","glazed","gleaming","gleeful","glib","glistening","glittering","global","gloomy","glorious","glossy","gloved","glowing","glum","gnarled","goddam","goddamn","goddamned","going","gold","golden","good","good-by","good-looking","good-natured","good-sized","goodly","gorgeous","gory","governing","governmental","graceful","gracious","gradual","grainy","grammatical","grand","grandiose","graphic","grassy","grateful","gratifying","grating","gratuitous","grave","gravitational","gray","gray-haired","graying","grayish","grazing","greasy","great","greedy","green","greenish","gregarious","grey","grieving","grievous","grilled","grim","grimy","grinding","grinning","gripping","grisly","gritty","grizzled","grizzly","groggy","grotesque","ground","ground-floor","growing","grown-up","grubby","grudging","grueling","gruesome","gruff","guaranteed","guarded","gubernatorial","guided","guiding","gullible","guttural","habitual","haggard","hairless","hairy","half-empty","halfway","hallowed","halting","hand-held","hand-to-hand","handicapped","handmade","handsome","handwritten","handy","hanging","haphazard","hapless","happy","hard","hard-boiled","hard-core","hard-line","hard-nosed","hard-pressed","hard-working","hardened","hardworking","hardy","harmless","harmonious","harried","harrowing","harsh","hashish","hasty","hated","hateful","haughty","haunted","haunting","hawkish","hazardous","hazel","hazy","head","headlong","heady","healing","healthful","healthy","heart-shaped","heartbreaking","heartening","heartfelt","heartless","hearty","heated","heathen","heavenly","heavy","heavy-duty","hectic","heedless","hefty","heightened","helmeted","helpful","hereditary","heretical","heroic","hesitant","heterogeneous","hidden","hierarchical","high","high-ceilinged","high-fiber","high-heeled","high-level","high-pitched","high-powered","high-pressure","high-priced","high-quality","high-ranking","high-rise","high-risk","high-school","high-speed","high-tech","high-technology","hilarious","hilly","hind","hired","historic","historical","hit-and-run","hoarse","holding","hollow","holy","homeless","homemade","homesick","honest","honorable","honorary","honored","hooded","hopeful","hopeless","horizontal","hormonal","horn-rimmed","horrendous","horrible","horrid","horrified","horse-drawn","hospitable","hot","hour-long","hourly","howling","huge","hulking","human","humane","humanistic","humanitarian","humble","humid","humiliating","humorless","humorous","hunched","hungry","hunted","hurried","hurt","hurtful","hushed","husky","hybrid","hydraulic","hydroelectric","hypnotic","hypodermic","hypothetical","hysterical","ice-cold","iced","icy","ideal","idealistic","identical","identifiable","ideological","idiosyncratic","idiotic","idle","idyllic","ignorant","ill","ill-advised","ill-fated","ill-fitting","illegitimate","illicit","illiterate","illogical","illuminated","illuminating","illusory","illustrated","illustrious","imaginable","imaginary","imaginative","imagined","immaculate","immediate","immense","imminent","immobile","immortal","immune","immutable","impartial","impassable","impassioned","impassive","impatient","impeccable","impending","impenetrable","imperative","imperceptible","imperial","imperialist","imperious","impersonal","impertinent","impervious","impetuous","implacable","implausible","implicit","implied","important","imported","imposing","impossible","impoverished","impractical","imprecise","impressed","impressive","imprisoned","improbable","impromptu","improper","improved","improving","improvised","impulsive","impure","in-depth","in-house","inaccessible","inactive","inane","inanimate","inarticulate","inaudible","incalculable","incandescent","incapable","incendiary","incessant","incidental","incipient","incisive","inclined","inclusive","incoherent","income-tax","incoming","incomparable","incompatible","incompetent","incomplete","incomprehensible","inconceivable","inconclusive","incongruous","inconsequential","inconsistent","inconspicuous","incorrect","increased","increasing","incredible","incredulous","incremental","incriminating","incumbent","incurable","indebted","indefatigable","indefinite","indelible","independent","indestructible","indeterminate","indicative","indifferent","indigenous","indigent","indignant","indirect","indiscriminate","indispensable","indistinct","indistinguishable","individual","individualistic","indomitable","indoor","indulgent","industrial","industrialized","industrious","ineffable","ineffective","ineffectual","inept","inert","inescapable","inevitable","inexhaustible","inexorable","inexpensive","inexperienced","inexplicable","infallible","infamous","infantile","infatuated","infected","infectious","infernal","infinite","infirm","inflamed","inflammatory","inflated","inflationary","inflexible","influential","informal","informative","informed","infrared","infrequent","ingenious","ingratiating","inherent","inherited","inhospitable","inimical","initial","injured","inlaid","inland","innate","inner","inner-city","innermost","innocent","innocuous","innovative","innumerable","inordinate","inorganic","inquisitive","insane","inscrutable","insensitive","inside","insignificant","insistent","insoluble","inspirational","inspired","inspiring","instant","instantaneous","instinctive","institutional","institutionalized","instructional","instructive","instrumental","insufferable","insulated","insurgent","insurmountable","intact","intangible","integral","integrated","intellectual","intelligent","intelligible","intended","intense","intensified","intensive","intent","intentional","inter","interchangeable","intercontinental","interdependent","interested","interesting","interim","interior","interlocking","intermediate","intermediate-range","interminable","intermittent","internal","international","interpersonal","interrelated","interstate","interstellar","intervening","intimidating","intolerable","intolerant","intractable","intransigent","intravenous","intrepid","intricate","intriguing","intrinsic","introductory","intrusive","intuitive","invading","invalid","invaluable","inventive","inverted","investigative","investing","invigorating","invincible","invisible","inviting","involuntary","involved","invulnerable","inward","irate","iridescent","ironic","irrational","irregular","irrelevant","irreparable","irreplaceable","irrepressible","irresistible","irresponsible","irreverent","irreversible","irrevocable","irritable","irritated","irritating","isolated","issuing","itinerant","jaded","jagged","jaunty","jerky","jeweled","jittery","joint","jolly","journalistic","jovial","joyful","joyous","jubilant","judicial","judicious","juicy","jumbo","jumping","jumpy","junior","just","justifiable","justified","keen","khaki","kind","kindly","kindred","kinetic","kinky","knitted","knotted","knowing","knowledgeable","known","kosher","labored","laborious","laconic","lacy","lame","land-based","landed","landless","languid","lanky","large","large-scale","lascivious","last-minute","lasting","late","late-night","latent","lateral","latter-day","laughable","laughing","lavish","law-abiding","law-enforcement","lawful","lawless","lax","lay","lazy","leaded","leaden","leading","leafless","leafy","leaky","lean","learned","leathery","leery","left","left-hand","left-handed","left-wing","leftover","legal","legendary","legislative","legitimate","leisurely","lengthy","lenient","lesser","lethal","level","leveraged","lexical","liable","liberal","liberated","liberating","licensed","life-size","lifeless","lifelong","light","lighted","lightweight","likable","like","likely","limited","limiting","limitless","limp","linear","lined","lingering","linguistic","linked","liquid","listed","listening","listless","literal","literary","literate","lithe","little","little-known","liturgical","live","lively","livid","living","living-room","loaded","loathsome","local","locked","lofty","logical","logistical","lone","lonely","lonesome","long","long-awaited","long-distance","long-haired","long-legged","long-lost","long-range","long-running","long-standing","long-term","long-time","longstanding","longterm","longtime","looking","looming","loose","lopsided","lordly","losing","loud","lousy","lovable","loved","lovely","loving","low","low-cost","low-income","low-key","low-level","lower-class","lowered","lowly","loyal","lucid","lucky","lucrative","ludicrous","lukewarm","lumbering","luminous","lunar","lunatic","lurid","lurking","luscious","lush","luxuriant","luxurious","luxury","lyric","lyrical","macabre","machine-gun","macho","mad","magic","magical","magnetic","magnificent","maiden","maimed","main","mainstream","majestic","major","makeshift","malevolent","malignant","mammoth","man-made","manageable","managerial","managing","mandatory","maniacal","manic","manicured","manifest","manifold","manipulative","manly","manned","manual","manufactured","marching","marginal","marine","maritime","marked","marketable","maroon","married","marshy","martial","marvellous","marvelous","masculine","mashed","masked","mass","mass-produced","massed","massive","masterful","masterly","matched","matching","material","materialistic","maternal","mathematical","mating","matter-of-fact","mature","maudlin","mauve","maximum","mayoral","meager","meaningful","meaningless","measurable","measured","measuring","meaty","mechanical","mechanized","median","medical","medicinal","medieval","mediocre","meditative","medium","medium-size","medium-sized","meek","melancholy","mellow","melodic","melodramatic","melted","memorable","menacing","menial","mental","mercantile","merciful","merciless","mercurial","mere","merry","messy","metabolic","metallic","metaphoric","metaphorical","metaphysical","methodical","methodological","meticulous","metric","metropolitan","microscopic","middle","middle-aged","middle-class","middle-income","midwestern","mighty","migratory","mild","mild-mannered","militant","military","military-industrial","milky","million-dollar","mindful","mindless","mingled","miniature","minimal","minimum","ministerial","mint","minuscule","minute","miraculous","mirrored","miscellaneous","mischievous","misguided","misleading","misplaced","missed","misshapen","missing","mistaken","misty","mixed","mobile","mock","mocking","moderate","modern","modern-day","modernist","modest","modified","moist","molecular","molten","momentary","momentous","monastic","monetary","monogrammed","monolithic","monotonous","monstrous","monthly","monumental","moody","moonlit","moot","moral","morbid","morose","mortal","mossy","motionless","motivated","motley","mottled","mountainous","mounted","mounting","mournful","movable","moving","muddled","muddy","muffled","multicolored","multilateral","multinational","multiple","mundane","municipal","murdered","murderous","murky","muscular","mushy","musical","musty","mute","muted","mutilated","mutual","mysterious","mystic","mystical","mystified","mythic","mythical","mythological","nagging","naive","named","nameless","narrative","narrow","nasal","national","nationalist","nationalistic","nationalized","nationwide","native","natural","naturalistic","nauseous","nautical","naval","near","nearby","neat","nebulous","necessary","needful","needless","needy","negative","negligent","negligible","negotiable","negotiated","neighboring","nervous","neural","neurological","neurotic","neutral","never-ending","new","new-found","newborn","newfound","newsworthy","next-door","nice","nightly","nightmarish","nimble","nineteenth-century","no-fault","no-nonsense","noble","nocturnal","noisy","nomadic","nominal","non-communist","nonaligned","nondescript","nonexistent","nonpartisan","nonpolitical","nonprofit","nonstop","normal","normative","northeastern","northern","northwestern","nostalgic","notable","noted","noteworthy","noticeable","notorious","novel","noxious","nuclear","numb","numbered","numerical","numerous","nursing","nutritional","nutritious","nuts","nutty","obedient","obese","objectionable","objective","obligatory","obliging","oblique","oblivious","obnoxious","obscure","observable","observant","observed","obsessive","obsolete","obstinate","obvious","occasional","occupational","occupied","octagonal","odd","odious","off","off-duty","offbeat","offending","offhand","official","offshore","oil-producing","oil-rich","oily","old","old-fashioned","old-line","old-time","olive","ominous","omnipotent","omnipresent","oncoming","one-day","one-man","one-party","one-room","one-sided","one-story","one-time","one-way","one-year","onerous","onetime","ongoing","only","onstage","opaque","open","open-air","open-ended","opened","operatic","operational","operative","opposing","opposite","oppressed","optical","optimal","optimistic","optimum","optional","opulent","orange","orbital","orchestral","ordered","orderly","ordinary","organic","organizational","organized","organizing","oriental","original","ornamental","ornate","orphaned","orthodox","orthopedic","ostensible","ostentatious","other","out-of-town","outdated","outdoor","outer","outgoing","outlandish","outlawed","outlying","outmoded","outraged","outrageous","outright","outside","outspoken","outstanding","outstretched","outward","oval","over-all","over-the-counter","overall","overcast","overcome","overcrowded","overdue","overgrown","overhanging","overhead","overheated","overjoyed","overlapping","overnight","overpowering","overriding","overseas","oversized","overstuffed","overt","overturned","overweight","overwhelming","overworked","packaged","packed","padded","paid","pained","painful","painless","painstaking","painted","palatable","palatial","pale","pallid","palpable","paltry","panicky","papal","paradoxical","parallel","paralyzed","paramilitary","paramount","paranoid","parasitic","parched","parental","parked","parliamentary","parochial","part-time","partial","participating","participatory","particular","partisan","passable","passing","passionate","passive","past","pastel","pastoral","paternal","patient","patriarchal","patriotic","patterned","paved","payable","paying","peace-keeping","peaceable","peaceful","pearly","peculiar","pedagogical","penal","pending","penetrating","penniless","pensive","pent-up","perceived","perceptible","perceptive","perceptual","peremptory","perennial","perfect","perfumed","perfunctory","periodic","peripheral","permanent","permissible","permissive","pernicious","perpetual","perplexed","perplexing","persistent","personal","persuasive","pert","pertinent","pervasive","pessimistic","petite","petrified","petty","petulant","phantom","pharmaceutical","phenomenal","philosophic","philosophical","phonetic","phony","photographic","physical","physiological","pictorial","picturesque","piercing","pinched","pink","pinkish","pioneering","pious","pissed","pitched","pitiful","pitiless","pivotal","placid","plain","plaintive","planetary","planned","planted","plausible","playful","playing","pleasant","pleased","pleasing","pleasurable","pleated","plentiful","pliable","plump","plush","poetic","poignant","pointed","pointless","poisonous","polar","polished","polite","political","polluted","pompous","ponderous","poorly","popular","populist","populous","porous","portable","portentous","portly","posh","positive","possible","post-world","postal","postwar","potent","potential","potted","pouring","powdered","powerful","powerless","practicable","practical","practiced","practicing","pragmatic","precarious","preceding","precious","precipitous","precise","precocious","predatory","predictable","predicted","predominant","preferable","preferential","preferred","prehistoric","prejudiced","preliminary","premier","premium","prenatal","preoccupied","prep","preparatory","prepared","preposterous","prescribed","present","present-day","presentable","preserving","presidential","presiding","pressing","prestigious","presumed","presumptuous","pretentious","pretrial","pretty","prevailing","prevalent","preventive","previous","prewar","priceless","prickly","priestly","prim","primal","primary","prime","primeval","primitive","primordial","princely","principal","printed","prior","pristine","private","privileged","privy","prized","pro","probable","probing","procedural","processed","prodigious","producing","productive","profane","professional","proficient","profitable","profound","progressive","projected","projecting","projective","proletarian","prolific","prolonged","prominent","promiscuous","promised","promising","promotional","prompt","prone","pronounced","proper","prophetic","proportional","proportionate","proposed","proprietary","prosaic","prospective","prosperous","prostrate","protected","protectionist","protective","protracted","protruding","proud","proven","proverbial","provincial","provisional","provocative","prudent","psychedelic","psychic","psychological","pubic","public","public-relations","publicized","published","pudgy","puffing","puffy","pulmonary","pungent","punishable","punishing","punitive","pure","puritanical","purple","purplish","purported","purposeful","pushy","putative","puzzled","puzzling","quaint","qualified","qualifying","qualitative","quantitative","quarterly","queasy","queer","questioning","quick","quiet","quilted","quintessential","quirky","quivering","quixotic","quizzical","rabid","racial","racing","radiant","radical","radioactive","ragged","raging","rainy","raised","rambling","rampant","ramshackle","rancid","random","rapacious","rapid","rapt","rare","rash","rasping","rational","raucous","ravaged","ravenous","raw","reactionary","readable","ready","ready-made","real","real-estate","real-life","realistic","rear","rear-view","rearing","reasonable","reasoned","reassuring","recalcitrant","receding","received","receiving","recent","receptive","reciprocal","reckless","recognizable","recognized","recommended","recorded","recreational","rectangular","recurrent","recurring","red","red-faced","red-haired","red-hot","reddish","reduced","redundant","refined","reflected","reflective","reflex","reformed","reformist","refreshing","regal","regimental","regional","registered","regressive","regular","regulated","regulatory","reigning","related","relative","relaxed","relaxing","released","relentless","relevant","reliable","relieved","religious","reluctant","remaining","remarkable","remedial","remembered","reminiscent","remote","renewed","renowned","rented","repeated","repeating","repetitious","repetitive","replete","reported","reprehensible","representative","repressed","repressive","reproductive","republican","repugnant","reputable","reputed","required","requisite","resentful","reserve","reserved","resident","residential","residual","resigned","resilient","resistant","resolute","resonant","resounding","resourceful","respectable","respected","respectful","respective","respiratory","resplendent","responsible","responsive","restful","restive","restless","restored","restoring","restrained","restraining","restricted","restrictive","resultant","resulting","retail","retaliatory","reticent","retired","retiring","retreating","retroactive","retrospective","returning","revealing","revered","reverent","reverse","revised","revived","revolting","revolutionary","revolving","rewarding","rhetorical","rheumatic","rheumatoid","rhythmic","ribbed","rich","rickety","rife","right","right-hand","right-wing","righteous","rightful","rigid","rigorous","riotous","ripe","ripped","rippling","rising","risky","ritual","rival","roaring","roast","roasted","roasting","robust","rock-and-roll","rocking","rocky","rolled","rolling","romantic","rosy","rotating","rotting","rough","round","round-trip","rounded","rousing","routine","roving","rowdy","royal","rubber","rubbery","ruddy","rudimentary","rueful","ruffled","rugged","ruined","ruinous","ruling","rumpled","run-down","runaway","running","rural","rushing","rusted","rustic","rusty","ruthless","rutted","sacred","sacrificial","sacrosanct","sad","safe","said","saintly","salaried","salient","sallow","salted","salty","salutary","sandy","sane","sanguine","sanitary","sardonic","satiric","satirical","satisfactory","satisfied","satisfying","saturated","saucy","savage","savvy","scaly","scant","scanty","scarce","scared","scarlet","scarred","scary","scathing","scattered","scenic","scented","scheduled","scholarly","scholastic","science-fiction","scientific","scorched","scornful","scrambled","scraping","scrawny","screaming","scriptural","scruffy","scrupulous","sealed","searching","searing","seasonal","seasoned","seated","secluded","second-class","second-floor","second-hand","second-rate","secondary","secondhand","secret","secretarial","secretive","sectarian","sectional","secular","secure","sedate","sedentary","seedy","seeming","segregated","seismic","select","selected","selective","self-appointed","self-assured","self-centered","self-confident","self-conscious","self-contained","self-effacing","self-evident","self-fulfilling","self-help","self-imposed","self-indulgent","self-made","self-proclaimed","self-righteous","self-satisfied","self-serving","self-styled","self-sufficient","self-supporting","selfless","semantic","semifinal","senatorial","senior","sensational","senseless","sensible","sensitive","sensory","sensuous","sentencing","sentimental","separate","separated","separatist","serene","serial","serious","settled","seven-year","seventeenth-century","severe","severed","shabby","shaded","shadowed","shadowy","shady","shaggy","shaken","shaky","shallow","shaped","shapeless","shapely","shared","sharp","sharpened","shattered","shattering","shaven","shaving","sheepish","sheer","sheltered","shifting","shimmering","shining","shiny","shocked","shocking","shoddy","short","short-lived","short-range","short-sleeved","short-term","shortsighted","shouting","showy","shredded","shrewd","shrill","shrinking","shrunken","shuddering","shut","shuttered","shy","sick","sidelong","signed","significant","silent","silken","silky","silly","silver","silver-haired","silvery","similar","simmering","simple","simplified","simplistic","simulated","simultaneous","sincere","sinewy","sinful","single","singular","sinister","sinuous","six-day","six-foot","six-month","six-year","sizable","sizzling","skeletal","skeptical","sketchy","skilled","skillful","skimpy","skinny","skittish","slack","slain","slanted","slatted","sleazy","sled","sleek","sleeping","sleepless","sleepy","sleeveless","slender","sliced","slick","sliding","slight","slim","slimy","slippery","sloping","sloppy","slow","slow-moving","sluggish","sly","small","small-scale","small-time","small-town","smart","smashed","smashing","smiling","smoked","smokeless","smoking","smoky","smoldering","smooth","smug","snap","snappy","snarling","sneaky","snow-covered","snowy","snug","so-called","soaked","soaring","sober","sobering","socalled","sociable","social","socialist","societal","socioeconomic","sociological","sodden","soft","soft-spoken","soggy","soiled","solar","sole","solemn","solicitous","solid","solitary","soluble","somber","sometime","sonic","soothing","sooty","sophisticated","sordid","sore","sorrowful","sorry","sortal","sound","soundless","sour","southeastern","southern","southwestern","sovereign","soybean","spacious","spare","sparkling","sparse","spatial","speaking","special","special-interest","specialized","specific","specified","speckled","spectacular","spectral","speculative","speechless","speeding","speedy","spellbound","spent","spherical","spicy","spiky","spilled","spinal","spindly","spinning","spiral","spirited","spiritual","spiteful","splendid","splintered","split","spoiled","spoken","spongy","sponsored","spontaneous","spooky","sporadic","sporting","sporty","spotless","spotted","spotty","sprawling","spreading","springy","spurious","square","squat","squeaky","stable","stacked","staggering","staid","stained","stained-glass","stainless","stale","stalled","stalwart","stamped","stand-up","standard","standardized","standby","starched","stark","starry","startled","startling","starved","starving","state-owned","state-run","stated","stately","statewide","static","stationary","statistical","statutory","staunch","steadfast","steady","steamed","steaming","steamy","steely","steep","stellar","step-by-step","stepped-up","stereotyped","sticking","sticky","stiff","still","stimulating","stinging","stingy","stinking","stirring","stocky","stolen","stolid","stoned","stony","stopped","stored","stormy","stout","straight","straight-backed","straightforward","strained","stranded","strange","strangled","strapping","strategic","stray","streamlined","strenuous","stressful","stricken","strict","strident","striking","stringent","stringy","striped","strong","strong-willed","structural","structured","struggling","stubby","stuck","studied","studious","stuffed","stuffy","stunned","stunning","stunted","sturdy","stylish","stylistic","stylized","suave","subatomic","subconscious","subdued","subjective","sublime","subliminal","submerged","subordinate","subsequent","subservient","subsidiary","subsidized","substandard","substantial","substantive","substitute","subterranean","subtle","suburban","subversive","succeeding","successful","successive","sudden","suffering","sufficient","suffocating","suggested","suggestive","suicidal","suitable","sullen","sultry","sumptuous","sundry","sunken","sunlit","sunny","super","superb","superficial","superfluous","superhuman","superior","supernatural","supersonic","superstitious","supervisory","supple","supplemental","supplementary","supporting","supportive","supposed","suppressed","supreme","sure","surface-to-air","surgical","surging","surly","surplus","surprised","surprising","surreal","surrounding","surviving","susceptible","suspect","suspected","suspended","suspicious","sustained","swarthy","swaying","sweating","sweeping","sweet","swell","swelling","swift","swinging","swirling","switching","swollen","sworn","symbolic","symmetrical","sympathetic","symptomatic","syndicated","synonymous","syntactic","synthetic","systematic","systemic","tacit","tacky","tactful","tactical","tailored","talented","talkative","tall","tame","tan","tangible","tangled","tanned","tantalizing","tantamount","taped","tart","tasteful","tasteless","tasty","tattered","taut","tawny","tax-exempt","tax-free","taxable","taxing","tearful","teasing","technical","technological","tedious","teeming","teen-age","teenage","telescopic","televised","telling","temperate","temporal","temporary","tempting","ten-year","tenacious","tender","tense","tentative","tenuous","tepid","terminal","terraced","terrestrial","terrible","terrific","terrifying","territorial","terrorist","terse","textured","thankful","thatched","theatrical","thematic","then","theological","theoretical","therapeutic","thermal","thermonuclear","thick","thin","third-floor","thirsty","thorny","thorough","thoughtful","thoughtless","threadbare","threatened","three-day","three-dimensional","three-hour","three-month","three-piece","three-story","three-way","three-week","three-year","thrilled","thrilling","thriving","throaty","throbbing","through","thunderous","thyroid","tidal","tidy","tight","tight-lipped","tiled","time-consuming","time-honored","timeless","timely","timid","tinkling","tinny","tinted","tiny","tional","tired","tireless","tiresome","tiring","tive","token","tolerable","tolerant","toothless","top","top-level","top-secret","topical","topless","tormented","torn","tortuous","tortured","total","touching","touchy","tough","towering","traceable","tracking","traditional","trailing","trained","trampled","tranquil","transatlantic","transcendent","transcendental","transient","transitional","transitory","translucent","transparent","trapped","traumatic","traveling","treacherous","treasured","tree-lined","trembling","tremendous","tremulous","trendy","triangular","tribal","tricky","tried","trifling","trim","triple","trite","triumphal","triumphant","trivial","tropical","troubled","troublesome","troubling","trucking","true","trusted","trusting","trustworthy","truthful","trying","tufted","tumbling","tumultuous","turbulent","turn-of-the-century","turning","turquoise","tutoring","twelve-year-old","twentieth-century","twin","twisting","two-bit","two-day","two-dimensional","two-hour","two-man","two-month","two-room","two-story","two-way","two-week","two-year","typed","typical","tyrannical","ubiquitous","ultimate","ultraviolet","umbilical","unabashed","unable","unaccountable","unaccustomed","unadorned","unaffected","unanimous","unannounced","unanswered","unanticipated","unarmed","unassuming","unattended","unauthorized","unavailable","unavoidable","unaware","unbalanced","unbearable","unbelievable","unborn","unbridled","unbroken","uncanny","uncertain","unchallenged","unchanged","unchanging","uncharacteristic","unchecked","unclean","unclear","uncomfortable","uncommon","uncomplicated","uncomprehending","uncompromising","unconcerned","unconditional","unconscionable","unconscious","unconstitutional","uncontrollable","unconventional","unconvinced","unconvincing","uncritical","uncut","undecided","undefeated","undefined","undeniable","undercover","underdeveloped","underground","underlying","understandable","underwater","undetected","undeveloped","undifferentiated","undisciplined","undisclosed","undiscovered","undisputed","undistinguished","undisturbed","undue","undulating","unearned","unearthly","uneasy","uneducated","unencumbered","unending","unequal","unequivocal","unethical","uneven","uneventful","unexpected","unexplained","unfair","unfamiliar","unfashionable","unfathomable","unfavorable","unfettered","unfinished","unfit","unfocused","unforeseen","unforgettable","unfortunate","unfounded","unfriendly","unfulfilled","ungainly","unguarded","unharmed","unheard","unhurried","unidentified","unified","uniform","uniformed","unifying","unilateral","unimaginable","unimpressed","uninformed","uninhabited","uninhibited","unintelligible","unintended","uninterested","uninteresting","uninterrupted","unionized","unique","unitary","united","universal","unjust","unjustified","unkempt","unknown","unlike","unlikely","unlimited","unlit","unmanageable","unmanned","unmarked","unmatched","unmistakable","unmoved","unmoving","unnamed","unnatural","unnoticed","unobserved","unobtrusive","unoccupied","unofficial","unopened","unorthodox","unpaid","unpainted","unparalleled","unperturbed","unpopular","unprecedented","unpredictable","unprepared","unpretentious","unproductive","unprofitable","unprotected","unpublished","unqualified","unquestioned","unreadable","unreal","unrealistic","unreasonable","unrecognizable","unrecognized","unrelated","unrelenting","unreliable","unresolved","unresponsive","unrestricted","unruffled","unruly","unsafe","unsatisfactory","unsatisfied","unsavory","unscathed","unscrupulous","unseemly","unseen","unsettled","unsettling","unskilled","unsmiling","unsold","unsolved","unsophisticated","unsound","unspecified","unspoiled","unspoken","unstable","unsteady","unsuitable","unsupported","unsure","unsuspecting","untapped","untenable","untested","unthinkable","unthinking","untidy","untimely","untold","untouchable","untouched","untoward","untrained","untreated","untroubled","untrue","unused","unusual","unwanted","unwarranted","unwary","unwashed","unwavering","unwelcome","unwieldy","unwise","unwitting","unwrapped","unwritten","unyielding","up-to-date","upbeat","upcoming","updated","uphill","upper","upper-class","upper-middle-class","uppermost","upright","uprooted","upsetting","upstate","uptight","uptown","upturned","upward","urban","urbane","urgent","usable","used","useful","useless","usual","utilitarian","utmost","utopian","utter","vacant","vague","vain","valiant","valid","valuable","valued","vanished","vanishing","vanquished","variable","varied","various","varying","vascular","vast","vaudeville","vaulted","vaunted","vegetarian","vehement","veiled","velvety","venerable","venereal","venomous","verbal","verifiable","veritable","versatile","vertical","very","vested","veteran","veterinary","viable","vibrant","vice","vice-presidential","vicious","victorious","vigilant","vigorous","vile","vindictive","violet","viral","virile","virtual","virtuous","virulent","visible","visionary","visiting","visual","vital","vivacious","vivid","vocal","vocational","volatile","volcanic","voluble","voluminous","voluntary","voracious","vulnerable","wage-price","waiting","walled","wan","wandering","waning","wanted","wanting","wanton","warlike","warm","warped","warring","wary","washed","wasted","wasteful","watchful","waterproof","watery","waving","wavy","waxed","wayward","weakening","wealthy","weary","weathered","wee","weekly","weeping","weightless","weighty","weird","welcome","welcoming","well","well-defined","well-dressed","well-educated","well-established","well-heeled","well-intentioned","well-known","well-meaning","well-organized","well-placed","well-publicized","well-to-do","well-trained","well-worn","western","whimsical","whipped","whirling","whispered","white","white-collar","white-haired","whitewashed","whitish","whole","wholesale","wholesome","wicked","wide","wide-eyed","wide-open","wide-ranging","widening","widespread","widowed","wild","wild-eyed","willful","willing","wily","winding","windy","winged","winning","winsome","wintry","wiry","wise","wishful","wispy","wistful","withered","withering","withholding","witty","wobbly","wonderful","wondrous","wont","wooded","wooden","woody","woolen","woolly","wordless","workable","working","working-class","world-class","world-wide","worldly","worldwide","worn","worn-out","worrisome","worrying","worsening","worthless","worthwhile","worthy","wounded","woven","wrecked","wretched","wrinkled","written","wrought","wrought-iron","wry","yawning","year-end","year-old","year-round","yearly","yellow","yellowed","yellowing","yellowish","yielding","young","youthful","zealous"]),ps}var gs={},Qh;function $N(){return Qh||(Qh=1,Object.defineProperty(gs,"__esModule",{value:!0}),gs.default=["abatement","abbey","abbot","abbreviation","abdication","abdomen","abductor","ability","abode","abolition","abolitionist","about-face","abrasion","absolutism","absolutist","absorber","absorption","abstention","abstract","abstraction","absurdist","absurdity","abundance","abutment","abyss","acacia","academic","academician","academy","acceleration","accelerator","accent","acceptance","accession","accessory","acclaim","acclamation","accolade","accommodation","accompaniment","accompanist","accomplice","accomplishment","accord","accordion","account","accountant","accounting","accreditation","accretion","accumulation","accuracy","accuser","ace","acetate","achievement","acknowledgement","acolyte","acorn","acquaintance","acquaintanceship","acquisition","acquit","acquittal","acreage","acrobat","acronym","acrylic","act","action","activist","activity","actor","actuality","actualization","actuary","acuity","ad","ad-lib","adage","adaptation","adapter","adder","addition","address","adequacy","adherent","adhesive","adjective","adjournment","adjudication","adjunct","adjuster","adjustment","adjutant","administration","administrator","admiral","admiration","admirer","admission","admixture","admonition","adobe","adolescent","adornment","adulation","adult","advance","advancement","advantage","adventure","adventurer","adverb","adversity","advertisement","advertiser","advisement","adviser","advisor","advocate","aerial","aerie","aeroplane","aerosol","aesthete","affect","affection","affidavit","affiliate","affiliation","affinity","affirmation","affront","afterburner","aftermath","afterthought","agate","agency","agenda","agent","agglomeration","aggrandizement","aggregate","aggregation","agitation","agitator","agreement","agribusiness","agronomist","aide","air","air-conditioner","airfield","airfoil","airframe","airing","airlift","airline","airliner","airlock","airman","airplane","airport","airship","airstrip","airway","aisle","alarm","alarmist","albatross","album","alchemist","alcove","alder","alderman","ale","alert","algorithm","alibi","alien","alignment","alkali","allegiance","allegory","alleviation","alley","alleyway","alliance","alligator","alliteration","allocation","allotment","allowance","alloy","allure","allusion","ally","almanac","almond","alpha","alphabet","also-ran","altar","altarpiece","alteration","altercation","alternation","alternative","altitude","alto","ama","amalgam","amalgamation","amateur","ambassador","ambassadorship","amber","ambiguity","ambition","ambivalence","ambulance","amelioration","amendment","amenity","amethyst","amity","ammunition","amnesty","amoeba","amount","amour","amphetamine","amphitheater","amphitheatre","amplifier","amplitude","ampule","amputee","amulet","amusement","anachronism","analgesic","analog","analogue","analogy","analysis","analyst","anarchist","anatomist","anatomy","ance","ancestor","ancestry","anchor","anchorage","anchorman","anchovy","ancient","android","anecdote","anemia","anesthesiologist","anesthetic","anesthetist","aneurysm","angel","angiogram","angle","angler","angora","animal","animation","ankle","annex","annexation","anniversary","announcement","announcer","annoyance","annual","annuity","annulment","anode","anonymity","answer","ant","antagonist","antechamber","antelope","antenna","anteroom","anthem","anthill","anthology","anthropoid","anthropologist","antibiotic","antibody","anticipation","anticommunist","antidote","antigen","antihero","antiquarian","antique","antiquity","antithesis","antler","anvil","aorta","apartment","ape","aperture","apex","aphasia","aphorism","aphrodisiac","apologia","apostle","apothecary","apparition","appeal","appearance","appellation","appendage","appendectomy","appendix","appetite","appetizer","apple","appliance","applicant","application","appointee","appointment","apportionment","appraisal","appraiser","appreciation","apprehension","apprentice","apprenticeship","approach","appropriation","approval","approximation","apricot","apron","aptitude","aquarium","aqueduct","arbiter","arbitration","arbitrator","arbor","arcade","arch","archaeologist","archangel","archbishop","archdiocese","archeologist","archer","archetype","archipelago","architect","archive","archivist","archway","ardor","arena","argument","argyle","aria","aristocracy","aristocrat","arithmetic","ark","arm","armada","armadillo","armament","armature","armband","armchair","armful","armload","armoire","armor","armory","army","aroma","arraignment","arrangement","arranger","array","arrival","arrow","arrowhead","arse","arsenal","arson","arsonist","art","artery","artichoke","article","articulation","artifact","artifice","artificiality","artisan","artist","artiste","artwork","ascendant","ascension","ascent","ascot","ash","ashtray","asking","aspect","aspen","aspirant","aspiration","assailant","assay","assemblage","assembly","assemblyman","assent","assertion","assessment","assessor","asset","assignation","assignment","assimilation","assist","assistant","associate","association","assortment","assumption","assurance","asterisk","asteroid","astonishment","astrologer","astronaut","astronomer","astrophysicist","asylum","asymmetry","atelier","atheist","athlete","ation","atmosphere","atoll","atom","atrium","attachment","attainment","attempt","attendant","attention","attic","attitude","attorney","attraction","attribute","attribution","attrition","auction","auctioneer","audience","audit","audition","auditor","auditorium","auger","augury","aura","aureole","austerity","auteur","author","authority","authorization","autobiography","autocracy","autocrat","autograph","automaker","automatic","automaton","automobile","autopsy","auxiliary","availability","avant-garde","avatar","avenger","avenue","aviary","aviator","avocation","avowal","awakening","award","awareness","awl","awning","ax","axe","axiom","axis","axle","ayatollah","azure","ba","babble","baby-sitter","babysitter","bachelor","back-up","backache","backboard","backbone","backdoor","backdrop","backer","backfield","background","backlog","backpack","backroom","backseat","backside","backstop","backup","backwash","backwater","backyard","bacon","bacterium","badge","badger","bag","bagel","baggage","bagpipe","bail","bailiff","bailiwick","baiting","baker","bakery","baking","balance","balcony","bale","ball","ballad","ballast","ballcarrier","ballerina","ballet","ballgame","balloon","ballot","ballpark","ballplayer","ballpoint","ballroom","balm","balustrade","bamboo","ban","banality","banana","band","bandage","bandana","bandanna","banding","bandit","bandleader","bandstand","bang","banister","bank","bankbook","banker","bankroll","bankruptcy","banner","banning","bannister","banquet","banquette","banshee","bantam","bantamweight","baptism","bar","barb","barbecue","barbell","barber","barbershop","bard","bargain","bargaining","barge","baritone","bark","barkeep","barker","barmaid","barman","barn","barnyard","barometer","baron","baroness","baronet","barony","barracuda","barrage","barrel","barrette","barricade","barrier","barrister","barroom","barrow","barstool","bartender","barter","bas-relief","basalt","baseball","baseboard","baseline","baseman","basement","bash","basilica","basilisk","basin","basis","basket","basketball","bassinet","bassist","bastion","bat","batch","bath","bathhouse","bathrobe","bathroom","bathtub","battalion","battering","battery","battle","battlefield","battlefront","battleground","battlement","battleship","bauble","bayonet","bazaar","beach","beachhead","beacon","bead","beagle","beak","beaker","beam","beamer","bean","bear","beard","bearer","bearing","bearskin","beastie","beater","beating","beau","beautician","beauty","beaver","beck","bed","bedchamber","bedding","bedpan","bedpost","bedroll","bedroom","bedsheet","bedside","bedspread","bedstead","bee","beech","beef","beefsteak","beehive","beep","beeper","beet","beetle","begat","beginner","beginning","behavior","behaviorist","behaviour","behemoth","behind","beholder","being","belch","belfry","belief","believer","bell","belle","bellhop","bellow","bellowing","belly","bellyache","beloved","belt","bench","benchmark","bender","bending","benediction","benefactor","beneficiary","benefit","bequest","ber","bereavement","beret","berry","berserker","berth","best-seller","bestseller","beta","betrothal","better","betterment","bettor","bevel","beverage","bevy","bib","bicep","bickering","bicycle","bid","bidder","bidet","biennial","bier","biggie","bike","biker","bilge","bility","bill","billboard","billiard","billing","billionaire","billow","billy","bin","binary","bind","binder","binding","binge","bio","biochemist","biographer","biography","biologist","biology","biopsy","biplane","birch","bird","birdbath","birdcage","birder","birdie","birdsong","birth","birthday","birthmark","birthplace","birthrate","birthright","biscuit","bishop","bit","bivouac","black","blackberry","blackbird","blackboard","blackguard","blackjack","blacklist","blackness","blackout","blacksmith","bladder","blade","blanc","blank","blanket","blare","blast","blaster","blastocyst","blaze","blazer","ble","bleach","bleacher","bleat","blemish","blend","blender","blessing","blimp","blind","blink","blinker","blinking","blip","blister","blizzard","bloak","blob","block","blockade","blockage","blockbuster","blocker","blockhouse","bloke","blond","blonde","blood","bloodhound","bloodletting","bloodline","bloodstream","bloom","blooper","blossom","blot","blotch","blotter","blow-up","blower","blowgun","blowing","blowout","blowpipe","blowtorch","blowup","blubber","bludgeon","blue","blueberry","blueprint","bluff","blur","blurb","blush","blusher","bo","boa","boar","board","boarder","boarding","boardinghouse","boardroom","boardwalk","boast","boasting","boat","boater","boathouse","boatload","boatman","boatyard","bobby","bobcat","bodice","body","bodyguard","bog","bogey","boiler","bolster","bolt","bomb","bombard","bombardment","bomber","bombing","bombshell","bon","bonanza","bond","bonding","bondsman","bone","bonfire","bonnet","book","bookcase","bookie","booking","bookkeeper","booklet","bookmaker","bookseller","bookshelf","bookshop","bookstore","boom","booming","boomlet","boon","boondoggle","boor","boost","booster","boot","booth","bootlegger","bootstrap","booty","booze","border","borderline","bore","borough","borrower","borrowing","bosom","boss","botanist","bottle","bottleneck","bottler","bottling","bottom","bottomland","boudoir","bougainvillea","bough","bouillabaisse","boulder","boulevard","bounce","bouncer","bound","boundary","bounty","bouquet","bourbon","bourgeoisie","bout","boutique","bow","bowel","bowhead","bowl","bowler","bowsprit","bowstring","box","boxcar","boxer","boxwood","brace","bracelet","bracket","braggart","braid","brain","brainstorm","brake","brakeman","bramble","branch","brand","brandy","brass","brassiere","brat","brave","bravery","brawl","brawler","brawling","brazier","breach","breadth","breadwinner","break","break-up","breakaway","breakdown","breaker","breakfast","breakfront","breakin","breaking","breakout","breakthrough","breakup","breakwater","breath","breather","breathing","breech","breed","breeder","breeding","breeze","brew","brewer","brewery","briar","bribe","brick","bricklayer","brickwork","bride","bridegroom","bridge","bridgehead","bridle","brief","briefcase","briefing","brig","brigade","brigadier","brigand","brightness","brilliance","brim","brioche","brisket","bristle","broad","broadcast","broadcaster","broadcasting","broadcloth","broadsheet","broadside","broadsword","brocade","brochure","brogue","broil","broiler","broker","brokerage","bromide","bronc","bronze","brooch","brood","brook","broom","broomstick","broth","brouhaha","brown","brownstone","bruise","brunch","brunette","brush","brushfire","brushing","brute","bubble","buccaneer","buckboard","bucket","bucketful","buckle","buckskin","bud","buddy","budget","buff","buffalo","buffer","buffet","buffoon","bug","bugger","bugging","buggy","bugle","build-up","builder","building","buildup","bulb","bulge","bulkhead","bull","bulldog","bulldozer","bullet","bulletin","bullfight","bullfighter","bullfrog","bullhorn","bullock","bully","bulwark","bum","bumblebee","bummer","bump","bumper","bumpkin","bun","bunch","bundle","bungalow","bunk","bunker","bunkhouse","bunny","bunt","bunting","buoy","burden","bureau","bureaucracy","bureaucrat","burger","burgher","burglar","burglary","burial","burlap","burlesque","burn","burner","burnout","burp","burrow","burst","bursting","busboy","bush","bushel","business","businessman","businesswoman","busload","bust","buster","bustle","busybody","butchery","butler","butt","butte","butterfly","butternut","buttock","button","buttonhole","buttress","buy","buyer","buying","buyout","buzzard","buzzer","by-election","by-product","bypass","byproduct","bystander","byword","cab","cabal","cabana","cabaret","cabbage","cabbie","cabby","cabdriver","cabin","cabinet","cabinetmaker","cable","caboose","cache","cachet","cackle","cacophony","cad","cadaver","caddie","caddy","cadence","cadet","cadre","caf","cafe","cafeteria","caftan","cage","cairn","cajole","cake","calabash","calculation","calculator","caldron","calendar","calf","calfskin","caliber","calibre","calico","caller","calling","calumny","calyx","cam","camcorder","camel","cameo","camera","cameraman","camisole","camp","campaign","campaigner","camper","campfire","campground","campsite","can","canal","canard","canary","cancellation","cancer","candelabra","candidacy","candidate","candle","candlestick","candy","cane","canine","canister","cannery","cannibal","cannonball","canoe","canon","canopy","cant","cantaloupe","canteen","canter","cantina","canton","cantor","canvass","canyon","cap","capability","capacity","cape","caper","capital","capitalist","capitalization","capitol","capitulation","capon","caprice","capstone","capsule","captain","caption","captive","captivity","captor","capture","car","carafe","caramel","carapace","carat","caravan","carbide","carbine","carbohydrate","carbon","carbonate","carburetor","carcass","carcinogen","card","cardboard","cardigan","cardinal","cardiologist","career","careerist","carelessness","caress","caretaker","cargo","caricature","carillon","carload","carnation","carnival","carnivore","carol","carotene","carousel","carpenter","carpet","carport","carriage","carrier","carrot","carryall","carrying","cart","cartel","carter","cartilage","carton","cartoon","cartoonist","cartridge","cartwheel","carver","carving","cascade","caseload","casement","cashier","cashmere","casing","cask","casket","cassava","casserole","cassette","cassock","cast","castaway","caste","casting","castle","castor","casualty","cat","cataclysm","catalog","catalogue","catalyst","catamaran","catapult","cataract","catch","catcher","catechism","categorization","category","caterer","caterpillar","cathedral","catheter","cathode","cathouse","cation","cattleman","catwalk","cauldron","cauliflower","causality","causation","cause","causeway","caution","cavalcade","cavalier","cavalryman","cave","caveat","caveman","cavern","cavity","ce","cease-fire","cedar","ceiling","celebration","celebrity","cell","cellar","cellblock","cellist","cellmate","cement","cemetery","censor","censure","centaur","centenary","center","centerpiece","centimeter","centre","centrifuge","centurion","cer","ceramic","cereal","cerebrum","ceremonial","ceremony","certainty","certificate","certification","certitude","cess","cession","cesspool","chador","chain","chair","chairman","chairmanship","chaise","chalet","chalice","chalk","chalkboard","challenge","challenger","chamber","chamberlain","chambermaid","chameleon","champ","champagne","champion","championship","chance","chancellery","chancellor","chancre","chandelier","change","changeling","changeover","changer","channel","chant","chanting","chap","chapel","chaperone","chaplain","chapter","char","character","characteristic","characterization","charcoal","chard","charge","charger","chariot","charioteer","charity","charlatan","charm","charmer","chart","charter","chartreuse","chase","chaser","chasm","chat","chateau","chattel","chatter","chatty","chauffeur","check","checkbook","checker","checkerboard","checklist","checkout","checkpoint","checkup","cheek","cheekbone","cheer","cheering","cheerleader","cheeseburger","cheesecake","cheetah","chef","chemical","chemise","chemist","chemistry","chenille","cheque","cheroot","cherry","cherub","chessboard","chestnut","chicanery","chick","chicken","chief","chieftain","chiffon","child","childhood","chile","chili","chill","chillun","chime","chimera","chimney","chimp","chimpanzee","chin","chine","chip","chipmunk","chiropractor","chisel","chiton","chloride","chlorophyll","chocolate","choice","choir","choirboy","choke","choker","cholera","chop","chopper","chopping","chord","chore","choreographer","chowder","chrissake","christening","chrome","chromosome","chronicle","chronicler","chronology","chrysanthemum","chuck","chuckle","chum","chump","chunk","church","churchman","churchyard","churn","chute","cider","cigar","cigaret","cigarette","cinch","cinder","cinema","cinematographer","cipher","circel","circle","circlet","circuit","circular","circulation","circumference","circumstance","cistern","citadel","citation","citizen","citizenship","citron","city","city-state","cityscape","civilian","civilisation","civility","civilization","claim","claimant","clam","clamor","clamp","clampdown","clan","clang","clank","clanking","clap","clapboard","clapper","claque","claret","clarification","clarinet","clarinetist","clarity","clash","clasp","class","classic","classicist","classification","classmate","classroom","clatter","clause","clavicle","claw","clay","claymore","clean","cleaner","cleanser","cleansing","cleanup","clearance","clearing","clearinghouse","cleat","cleaver","cleft","clemency","clergyman","cleric","clerk","clich","cliche","click","clicking","client","clientele","cliff","cliffside","climate","climax","climber","clime","clinch","clinic","clinician","clink","clip","clipboard","clipper","clipping","clique","cloak","cloakroom","clock","clod","clog","cloister","clone","close-up","closet","closeup","closing","closure","clot","cloth","clothesline","cloud","clout","clove","clover","clown","club","clubhouse","clump","cluster","clustering","clutch","co-author","co-chairman","co-conspirator","co-defendant","co-director","co-founder","co-op","co-operation","co-ordination","co-owner","co-pilot","co-star","co-worker","coach","coachman","coal","coalition","coast","coaster","coastline","coat","coating","coauthor","cob","cobbler","cobblestone","cobra","cobweb","cochairman","cockpit","cockroach","cocktail","coconut","cocoon","coda","code","codger","coding","coed","coefficient","coenzyme","coffee","coffeehouse","coffeepot","coffin","coffle","cofounder","cog","cognac","cognition","cohabitation","coherence","cohesion","cohort","coif","coiffure","coil","coin","coinage","coincidence","coke","col","cola","colander","coliseum","collaboration","collaborator","collage","collapse","collar","collarbone","collateral","colleague","collect","collection","collective","collectivist","collectivity","collector","colleen","college","collie","collier","collision","cologne","colon","colonel","colonist","colonization","colonnade","colony","color","coloration","coloring","colour","colouring","colt","column","columnist","com","coma","comb","combination","combustion","comeback","comedian","comedienne","comedy","comer","comet","comfort","comforter","comic","coming","comma","command","commandant","commander","commander-in-chief","commandment","commando","commemoration","commencement","commendation","comment","commentary","commentator","commercial","commie","commissar","commission","commissioner","commitment","committee","committeeman","commode","commodity","commodore","commonality","commoner","commonplace","commonwealth","commotion","commune","communication","communicator","communion","communique","community","commuter","companion","companionway","company","comparison","compartment","compass","compatriot","compendium","compensation","competence","competency","competition","competitor","compilation","complacency","complaint","completion","complex","complexion","complexity","compliance","complication","compliment","component","composer","composite","composition","compost","compound","comprehension","compress","compression","compressor","compromise","comptroller","compunction","computation","computer","comrade","concatenation","concealment","conceit","concentrate","concentration","concept","conception","conceptualization","concern","concert","concertina","concession","conch","concierge","conciliation","conciliator","conclave","conclusion","concoction","concourse","concubine","concurrence","concussion","condemnation","condensation","condenser","condition","conditioner","condolence","condominium","condor","conduct","conductor","conduit","cone","confection","confederate","confederation","conference","confession","confessional","confessor","confidant","confidante","configuration","confinement","confirmation","confiscation","conflagration","conflict","confluence","conformation","conformist","confrontation","confusion","conga","congestion","conglomerate","conglomeration","congregation","congress","congressman","conjecture","conjunction","conjurer","connection","connector","connexion","connoisseur","connotation","conqueror","conquest","conscience","consciousness","conscript","conscription","consent","consequence","conservation","conservationist","conservative","conservator","conservatory","consideration","consignment","consistency","consolation","console","consolidation","consonant","consort","consortium","conspiracy","conspirator","constable","constancy","constant","constellation","constituency","constituent","constitution","constraint","constriction","constrictor","construct","construction","constructionist","constructivist","consul","consulate","consultant","consultation","consumer","consumption","contact","container","contaminant","contamination","contemplation","contemporary","contempt","contender","content","contention","contentment","contest","contestant","context","continent","contingency","contingent","continuance","continuation","continuity","continuum","contour","contra","contraband","contraceptive","contract","contraction","contractor","contradiction","contraption","contrary","contrast","contravention","contribution","contributor","contrivance","control","controller","controversy","conundrum","convenience","convent","convention","conventionalist","convergence","conversation","conversationalist","converse","conversion","convert","converter","convertible","conveyance","conveyor","conviviality","convocation","convoy","convulsion","cook","cookbook","cooker","cookie","cookstove","coolant","cooler","coolie","coon","coop","cooperative","coordination","coordinator","cop","copier","copper","coproduction","copse","copter","copulation","copyright","copywriter","coral","cord","cordiality","cordon","corduroy","core","cork","corkscrew","corn","corncob","cornea","corner","cornerback","cornerstone","cornet","cornfield","cornice","cornucopia","corollary","coronation","coroner","corporal","corporation","corpse","corpsman","corpus","corral","correction","corrective","correlation","correspondence","correspondent","corridor","corsage","corsair","corset","cortex","cosmology","cosmopolitan","costume","cot","coterie","cottage","cotton","cottonwood","couch","cough","council","councilman","councilor","counsel","counsellor","counselor","count","countdown","countenance","counter","counterattack","counterfeit","counterforce","counterman","counterpart","counterpoint","counterproposal","counterrevolution","countertop","counterweight","countess","country","countryman","countryside","county","couple","couplet","coupling","coupon","courier","course","court","court-martial","courtesan","courtesy","courthouse","courtier","courtroom","courtship","courtyard","cousin","couturier","cove","coven","covenant","cover","cover-up","coverage","coverall","covering","coverlet","covey","cowbell","cowboy","cowgirl","cowhide","cowl","coyote","crab","crack","crackdown","cracker","crackle","crackling","crackpot","cradle","craft","craftsman","cramp","cranberry","crane","crank","cranny","crap","crash","crate","crater","cravat","craving","crayon","craze","creak","cream","crease","creation","creator","creature","creche","credit","creditor","creed","creek","creel","cremation","crematorium","creole","crepe","crescent","crest","crevasse","crevice","crew","crewcut","crewman","crib","crick","cricket","crier","crimp","crimson","cripple","crisis","crisp","crissake","crisscross","criterion","critic","criticism","critique","critter","croak","crochet","crock","crocodile","croissant","crone","crony","crook","crooner","crop","cropland","cropper","cropping","cross","cross-examination","cross-section","crossbar","crossbow","crossfire","crossing","crossover","crossword","crotch","croupier","crow","crowbar","crowd","crown","crucible","crucifix","crucifixion","crude","crudeness","crudity","cruise","cruiser","crumb","crumbling","crunch","crusade","crusader","crush","crusher","crust","crutch","crypt","cryptographer","crystal","crystallization","cub","cubble","cubbyhole","cube","cubicle","cubist","cuckoo","cucumber","cud","cudgel","cuff","cuisine","cul-de-sac","cultivator","culture","culvert","cummerbund","cup","cupboard","cupola","cur","curate","curator","curb","curd","cure","curfew","curio","curiosity","curmudgeon","curragh","currant","currency","current","curriculum","curry","curtailment","curtain","curtsy","curvature","curve","cushion","custard","custodian","custody","custom","customer","cut","cutaway","cutback","cuticle","cutie","cutoff","cutout","cutter","cutthroat","cutting","cy","cyanide","cyclamate","cycle","cyclist","cyclone","cylinder","cymbal","cynic","cynicism","cypress","cyst","czar","da","dab","dacha","dachshund","dagger","dairy","daisy","dalliance","dam","damage","damask","dame","damn","damnation","damp","damper","damsel","dance","dancer","dancing","dandelion","dandy","daredevil","darkroom","darky","darlin","darling","dart","dash","dashboard","database","date","davenport","daybed","daydream","daylight","dazzle","deacon","dead-end","deadbeat","deadline","deadlock","deadpan","deal","dealer","dealership","dealing","dear","dearie","debacle","debasement","debate","debater","debauchery","debility","debit","debriefing","debt","debtor","debut","debutante","decadent","decal","decanter","decency","decision","deck","declaration","declivity","decoder","decor","decoration","decorator","decree","dedication","deductible","deduction","deed","deejay","deerskin","default","defector","defence","defendant","defender","defense","defenseman","deference","deferment","deferral","defiance","deficit","defile","definition","deflation","deflection","defoliant","deformation","deformity","degree","deity","delay","delegate","delegation","deletion","deli","deliberation","delicacy","delicatessen","delight","delineation","delinquency","delinquent","deliverance","deliverer","delivery","dell","delta","deluge","demagogue","demand","demarcation","demeanor","dementia","demesne","demitasse","democracy","democrat","demographer","demolition","demon","demonstration","demonstrator","demotion","den","dence","denial","denigration","denim","denomination","denominator","denouement","density","dent","dentist","denunciation","deodorant","department","departure","dependence","dependency","dependent","depiction","depletion","deployment","deportation","deposit","deposition","depot","depravity","depth","deputation","deputy","derailment","derangement","derby","dereliction","derivation","derivative","dermatologist","derriere","dervish","descendant","descent","description","desert","deserter","desertion","design","designation","designer","desire","desk","desktop","desperado","desperation","despot","despotism","dessert","destination","destiny","detachment","detail","detective","detector","detergent","deterioration","determinant","determination","determinism","deterrent","detonation","detonator","detour","detriment","deuce","devaluation","developer","development","deviation","device","devotee","devotion","dew","dharma","diabetic","diadem","diagnosis","diagnostician","diagram","dial","dialect","dialectic","dialog","dialogue","diameter","diamond","diaper","diaphragm","diary","diatribe","dichotomy","dictation","dictator","dictatorship","dictionary","dictum","die","diesel","diet","dietician","difference","differential","differentiation","difficulty","diffuser","diffusion","dig","digestion","digger","digging","digit","dignitary","dignity","digression","dike","dilemma","dilettante","dilution","dime","dimension","diminution","diminutive","dimmer","dimple","diner","dinette","dinghy","dinner","dinosaur","dint","diocese","diorama","dioxide","dioxin","dip","diplomacy","diplomat","dipper","dipping","direction","directive","director","directorate","directorship","directory","dirge","disc","discard","discharge","disciple","disciplinarian","discipline","disclaimer","disclosure","discoloration","discomfiture","discomfort","discontent","discord","discotheque","discount","discouragement","discourse","discourtesy","discoverer","discovery","discrepancy","discrimination","discussion","disdain","disequilibrium","disgrace","disguise","dish","disharmony","dishonesty","dishonor","dishpan","dishtowel","dishwasher","disillusionment","disinfectant","disintegration","disjunction","disk","disparity","dispatch","dispatcher","dispensary","dispensation","dispenser","dispersion","displacement","display","disposal","disposition","disproportion","dispute","disquisition","disruption","dissection","dissector","dissension","dissent","dissenter","dissertation","disservice","dissident","dissipation","dissolution","dissonance","distance","distemper","distillate","distillation","distillery","distinction","distortion","distraction","distribution","distributor","distributorship","district","disturbance","dition","ditty","divan","dive","diver","divergence","diversion","diversity","divestiture","divide","dividend","divider","divination","divine","divinity","division","do-gooder","doc","dock","docket","docking","dockside","doctor","doctorate","doctrine","docudrama","document","documentary","documentation","dodge","doe","dogmatism","dogwood","dollop","dolphin","dom","domain","dome","domestic","domicile","domination","dominion","domino","donation","donkey","donor","donut","doom","door","doorbell","doorjamb","doorkeeper","doorknob","doorman","doormat","doorsill","doorstep","doorway","dope","dorm","dormer","dormitory","dosage","dose","dossier","dot","dotage","double","double-dealing","double-take","doubleheader","doubler","doublet","doubling","doubt","douche","dough","doughnut","dove","dovetail","dowager","dowel","down","downfall","downhill","downpour","downturn","dowry","doze","drab","draft","draftee","draftsman","dragon","dragonet","dragonfly","drain","drainage","draining","dramatist","dramatization","drape","drapery","draught","draw","drawback","drawbridge","drawer","drawing","drawing-room","drawl","drawstring","dread","dream","dreamer","dredge","dredging","dress","dresser","dressing","dressing-room","dressmaker","dribble","drier","drift","drill","drilling","drink","drinker","drip","dripping","drive","driver","driveway","drone","droop","drop","droplet","dropout","dropping","drove","drowning","drubbing","drudge","drudgery","drug","druggist","drugstore","druid","drum","drumbeat","drummer","drumming","drumstick","drunk","drunkard","dryad","drybone","dryer","dualism","duality","duchy","duckling","duct","duction","duel","duffel","dugout","duke","dukedom","dumbbell","dummy","dump","dumping","dumpling","dumpster","dun","dunce","dune","dung","dungeon","duo","duocorn","duplicate","duplication","duration","dust","duster","dusting","dustpan","dwarf","dweller","dwelling","dy","dye","dynamo","dynasty","dysentery","dystrophy","eagle","ear","earl","earlobe","earner","earphone","earpiece","earplug","earring","earth","earthenware","earthling","earthquake","easel","eater","eatery","eating","eavesdropper","ebb","eccentricity","echelon","echo","eclipse","ecologist","ecology","economist","economy","ecosystem","ecstasy","edging","edict","edifice","edition","editor","editorial","education","educator","effect","efficacy","efficiency","effigy","effluent","effort","effrontery","effusion","egalitarian","egg","eggplant","eggshell","egomaniac","egotist","eighteen-wheeler","el","elaboration","elasticity","elbow","elder","elect","election","elector","electorate","electrician","electricity","electrocardiogram","electrocution","electrode","electrolyte","electron","elegance","elegy","element","elephant","elevation","elevator","elf","elimination","elite","elixir","ell","ellipse","elm","elongation","emanation","emancipation","embankment","embargo","embassy","embellishment","ember","embezzlement","embezzler","emblem","embodiment","embolden","embolism","embrace","embrasure","embroidery","emcee","emerald","emergency","emigration","emigre","eminence","emissary","emission","emotion","emperor","emphasis","empire","empiricist","emplacement","employe","employee","employer","employment","emporium","empress","emptiness","emulsion","enactment","enamel","encampment","ence","enchantment","enclave","enclosure","encore","encounter","encouragement","encroachment","encumbrance","encyclopedia","endearment","endeavor","endeavour","endgame","ending","endorsement","endowment","endurance","energy","enforcement","enforcer","engagement","engine","engineer","engraving","enhancement","enjoyment","enlargement","enlistment","enmity","enormity","enquiry","enrichment","enrollment","ensemble","ensign","ent","entanglement","enterprise","entertainer","entertainment","enthusiasm","enthusiast","enticement","entitlement","entity","entomologist","entourage","entrance","entranceway","entrant","entreaty","entree","entrepreneur","entry","entryway","enumeration","envelope","environ","environment","environmentalist","envoy","enzyme","ephor","epic","epidemic","epidemiologist","epigraph","epileptic","epilogue","epiphany","episode","epistemology","epitaph","epithet","epitome","equality","equation","equator","equerry","equinox","equity","equivalence","equivalency","equivalent","equivocation","eral","eraser","erasure","eration","ern","ernment","errand","error","eruption","escalation","escalator","escapade","escape","escapist","escarpment","esplanade","essay","essayist","esse","essence","establishment","estate","esteem","estimate","estimation","estrangement","estrogen","estuary","etching","eternity","ether","ethnicity","eulogy","euphemism","evacuation","evaluation","evangelist","evasion","event","eventuality","evergreen","eviction","evidence","evocation","evolution","ewe","exaggeration","exaltation","exam","examination","examiner","example","exasperation","excavation","excellence","exception","excerpt","excess","exchange","exchanger","excise","excision","excitement","exclamation","exclusion","excommunication","excrement","excretion","excursion","excuse","execution","executioner","executive","executor","exegesis","exemption","exercise","exertion","exhalation","exhaust","exhibit","exhibition","exhibitionist","exhibitor","exhilaration","exhortation","existence","exorcism","expanse","expansion","expatriate","expectancy","expectant","expectation","expediency","expedient","expediter","expedition","expenditure","expense","experience","experiment","experimentation","experimenter","expert","expiration","explanation","expletive","exploit","exploitation","exploration","explorer","exploring","explosion","explosive","exponent","export","exporter","exposition","exposure","expression","expressionist","expressway","expropriation","expulsion","extension","extent","exterior","extermination","exterminator","extinction","extinguisher","extortion","extract","extraction","extrapolation","extravagance","extravaganza","extreme","extremity","extrovert","exuberance","exultation","eye","eyeball","eyebrow","eyedropper","eyeglass","eyelash","eyelet","eyelid","eyepiece","eyeshade","eyesore","eyewitness","fa","fable","fabric","fabrication","facade","face","face-lift","faceplate","facet","facility","facing","facsimile","fact","faction","factor","factory","factotum","faculty","fad","faint","fairground","fairway","fairy","fairy-tale","fairyland","fairytale","faith","falcon","fallacy","fallibility","familiarity","family","fan","fanaticism","fancier","fancy","fanfare","fang","fantasy","farce","farewell","farm","farmboy","farmer","farmhouse","farmland","farmstead","farmyard","fascination","fashion","fastball","fastening","fasting","fastness","fate","fatigue","faucet","favor","favorite","favour","favourite","fawn","fax","feat","feather","feature","federation","fedora","fee","feed","feedback","feeder","feeding","feedlot","feeling","feint","felicity","fell","fella","feller","fellow","fellowship","felt","femme","fence","fencer","fender","fense","fer","ference","ferment","fern","ferret","ferry","ferryboat","ferryman","fertilizer","fervor","fester","festival","festivity","feud","fever","fiber","fibre","fibrillation","fiction","fief","fiefdom","field","fielder","fiend","fiesta","fife","fig","figger","fight","fighter","fighting","figment","figure","figurehead","figurine","figuring","filament","file","filet","filibuster","filigree","filing","filler","fillet","filling","fillip","filly","film","filmmaker","filter","fin","final","finale","finalist","finality","finance","financier","financing","finder","finding","finery","finesse","finger","fingernail","fingerprint","fingertip","finish","finisher","fink","fir","fire","firearm","fireball","firebox","firebrand","firecracker","firefight","firefighter","firehouse","fireman","fireplace","fireside","firestorm","firm","firmament","fishbowl","fisher","fisherman","fishery","fishhook","fishnet","fission","fissure","fist","fistfight","fistful","fit","fitness","fitter","fitting","fiver","fiveyear","fix","fixation","fixer","fixing","fixity","fixture","fjord","flag","flagon","flagpole","flagship","flagstone","flail","flake","flame","flamethrower","flange","flank","flannel","flap","flapper","flare","flare-up","flash","flashback","flasher","flashlight","flask","flat","flatboat","flatcar","flatland","flatness","flavor","flavour","flaw","flea","fleck","fledgling","fleece","fleet","flesh","flex","flick","flicker","flier","flight","flimsy","flinch","flint","flip","flip-flop","flippancy","flipper","flirt","flirtation","flirting","flitter","float","floater","flock","flogging","flood","flooding","floodlight","floor","floorboard","flooring","flop","flophouse","florist","flotilla","flounce","flour","flourish","flow","flower","flowering","flowerpot","flu","fluctuation","flue","fluff","fluid","fluoride","flurry","flush","flushing","flute","fluting","flutist","flutter","fly","flyer","flyleaf","flywheel","fo","foal","foam","focus","fodder","fog","foghorn","foil","foist","fold","folder","foliage","folio","folklore","foller","follicle","follow-up","follower","following","folly","font","food","football","footbridge","footfall","foothill","foothold","footing","footlocker","footman","footnote","footpath","footprint","footrest","footstep","footstool","fop","forage","foray","force","ford","forearm","foreboding","forecast","forecaster","foreclosure","forefinger","foreground","forehead","foreigner","foreleg","forelock","foreman","forepaw","forerunner","foresight","foreskin","forest","forester","foreword","forfeiture","fork","forklift","form","formalism","formality","formance","format","formation","formula","formulation","fort","fortress","fortune","fortune-teller","forum","forward","fossil","foul","foul-up","foundation","founder","foundry","fount","fountain","fox","foxhole","foyer","fraction","fracture","fragility","fragment","fragmentation","fragrance","frailty","frame","frame-up","framework","franchise","frat","fraternity","fray","freak","free-fall","freedman","freedom","freelancer","freeway","freeze","freezer","freight","freighter","frenzy","frequency","fresco","freshman","fret","friar","friction","fridge","friend","friendly","friendship","frieze","frigate","fright","frill","fringe","frisbee","frisson","frivolity","frock","frolic","frond","front","front-runner","frontage","frontier","frontiersman","frontline","frontrunner","frost","frostbite","frosting","froth","frown","fruitcake","frustration","fuchsia","fudge","fuel","fugue","fulcrum","fulfillment","fulfilment","fullback","fumble","fumbling","function","functionalist","functionary","functioning","fund","fund-raiser","fundamentalist","funeral","fungus","funk","funnel","fur","furcot","furlough","furnace","furnishing","furor","furrow","fuse","fuselage","fusillade","fusion","future","futurist","gabardine","gable","gadfly","gadget","gaff","gaffe","gage","gaggle","gaiety","gain","gainer","gait","gal","gala","galaxy","gall","gallantry","galleon","gallery","galley","gallop","gambit","gamble","gambler","gambling","game","gamete","gametophyte","gamma","gantry","gap","garage","garden","gardener","gardenia","gargoyle","garland","garlic","garment","garner","garnet","garret","garrison","garter","gash","gasket","gaslight","gasoline","gasp","gate","gatehouse","gatekeeper","gateway","gathering","gation","gauge","gauntlet","gauze","gavel","gaze","gazelle","gear","gearbox","gebling","geezer","geisha","gel","gelatin","gelding","gem","gen","gence","gender","gene","genealogy","general","generalist","generality","generalization","generation","generator","generosity","geneticist","genie","genius","genre","gent","gentleman","gentlewoman","genus","geographer","geography","geologist","geometry","geosector","ger","germ","gestation","gesture","getaway","getup","geyser","ghetto","ghost","ghoul","giant","giantess","gift","gig","giggle","gill","gilt","gimmick","gin","gingham","giraffe","girder","girdle","girth","gist","giveaway","giver","giving","gizzard","glacier","glade","gladiator","glamour","glance","gland","glare","glass","glassful","glassware","glaze","gleam","glen","glide","glider","gliding","glimmer","glimmering","glimpse","glint","glitch","glitter","glob","globe","gloom","glory","gloss","glove","glow","glower","glue","glutton","glycogen","gnat","gnawing","gnome","goal","goalie","goaltender","goat","goatee","goatskin","goblet","goblin","going","goiter","gold","golem","golfer","gondola","goner","gong","good","good-bye","good-night","goodbye","goodie","goodnight","goof","goon","goose","gopher","gore","gorge","gorilla","gospel","gossip","gouge","gourd","gourmet","gout","governess","government","governor","governorship","gown","grab","grabber","grace","grad","grade","grader","gradient","grading","graduate","graduation","graft","grail","grailstone","grain","grammar","gramophone","granary","grandeur","grandmaster","grandstand","grange","granite","granny","grant","grape","grapevine","graph","grass","grasshopper","grassland","grate","gratification","gratuity","grave","gravestone","graveyard","gravity","gravy","gray","grazer","grease","green","greenback","greengrocer","greenhorn","greenhouse","greeter","greeting","grenade","grendel","greyhound","grid","gridiron","grievance","grill","grille","grimace","grin","grind","grinder","grinding","grindstone","grip","gripe","grit","grizzly","groan","groaning","grocer","grocery","groom","groove","groping","grotesque","grotto","ground","groundcar","grounder","grounding","groundswell","group","grouper","groupie","grouping","grove","grower","growl","grown-up","grownup","growth","grub","grudge","gruel","grunt","grunting","guarantee","guarantor","guard","guardhouse","guardian","guardianship","guardrail","guardsman","guerrilla","guess","guessing","guest","guesthouse","guffaw","guide","guidebook","guideline","guild","guillotine","guilt","guinea","guise","guitar","guitarist","gulch","gulf","gull","gullet","gully","gum","gun","gunboat","gunfighter","gunman","gunner","gunnysack","gunshot","gunsight","gunwale","gurdwara","gurgle","gurney","gush","gust","gut","gutter","guy","gym","gymnast","gypsy","habit","habitat","habitation","hacienda","hack","hacker","hacking","hacksaw","hag","hail","hailstorm","hair","hairbrush","haircut","hairdresser","hairline","hairpiece","hairpin","hairstyle","half-circle","half-life","halfback","halftime","hall","hallmark","halloo","hallway","halo","halter","ham","hamadryad","hamburger","hamlet","hammer","hammering","hammock","hamper","hamster","hamstring","han","hand","handbag","handball","handbook","handcuff","handful","handgun","handhold","handicap","handicraft","handkerchief","handle","handlebar","handler","handmaiden","handout","handrail","handshake","handwriting","handyman","hang-up","hangar","hanger","hanging","hangman","hangout","hangover","hank","hanker","hankie","hanky","hap","happening","harangue","harbinger","harbor","harbour","hard-liner","hardback","hardness","hardtop","hardwood","hare","harlot","harm","harmonica","harmony","harness","harp","harpist","harpoon","harpooner","harpsichord","harpy","harridan","harrier","harrow","hart","harvest","harvester","has-been","hash","hassle","hassock","hat","hatbox","hatch","hatchery","hatchet","hatching","hatchway","hatter","haul","haunch","haunt","haunting","haven","hawk","hay","hayloft","haymaker","hayseed","haystack","hazard","headache","headband","headboard","headdress","heading","headland","headlight","headline","headman","headmaster","headpiece","headset","headsman","headstone","headwaiter","headway","headwrap","healer","healing","heap","hearer","hearing","hearse","heart","heartache","heartbeat","heartbreak","hearth","hearthstone","heartland","hearty","heater","heath","heathen","heather","heave","heaven","heaving","heavyweight","hedge","hedgehog","hedonist","heed","heel","heft","hegemony","heifer","height","heir","heiress","heirloom","heist","helicopter","helix","hellhole","helm","helmet","helmsman","help","helper","helping","hem","hemisphere","hemline","hemlock","hemorrhage","hen","henchman","henhouse","herald","herb","herbicide","herd","herder","herdsman","heresy","heretic","heritage","hermaphrodite","hermit","hernia","hero","heroine","herringbone","hesitancy","hesitation","hex","heyday","hiccup","hick","hickory","hideaway","hierarchy","high","highball","highboy","highland","highlander","highlight","highschool","highway","hike","hiker","hilarity","hill","hillock","hillside","hilltop","hilt","hint","hinterland","hip","hire","hiring","historian","historiography","history","hitch","hitchhiker","hitter","hive","hoard","hoarding","hoax","hobble","hobby","hock","hog","hogan","hoist","holder","holding","holdout","holdover","holdup","hole","holiday","holler","hollow","holly","hologram","holothete","holster","homage","hombre","home","homebody","homecoming","homeland","homemaker","homeowner","homer","homeroom","homestead","homesteader","hometown","homily","hone","honey","honeybee","honeycomb","honeymoon","honkie","honky-tonk","honor","honour","hood","hoodlum","hoof","hook","hoop","hoot","hootch","hooting","hop","hope","hopper","horde","horizon","hornet","horoscope","horse","horseback","horseman","horsepower","horseshoe","hose","hospice","hospital","hospitalization","host","hostel","hostess","hotel","hound","hourglass","house","houseboat","houseboy","housecoat","housedress","household","householder","housekeeper","housing","hovel","howitzer","howler","hubcap","huckleberry","huddle","hue","hug","hulk","hull","hum","humanity","humbug","humidity","humility","hummingbird","hummock","humor","humorist","humour","hump","humpback","hunch","hunchback","hunger","hunt","hunter","hurdle","hurricane","hush","husk","hussy","hustle","hustler","hut","hutch","hybrid","hydrant","hydrocarbon","hydrolysis","hyena","hype","hypnotist","hypochondriac","hypocrite","hypothesis","hysterectomy","hysteria","ice","ice-cream","iceberg","icebox","icehouse","icicle","icing","icon","iconoclast","idea","ideal","idealism","idealist","idealization","ident","identification","identity","ideologist","ideologue","ideology","idiom","idiosyncrasy","idjit","idyll","ignition","ignominy","ignorance","iguana","illumination","illusion","illustration","image","imagery","imagination","imbalance","imbroglio","imitation","immediacy","immensity","immersion","imp","impact","impairment","impala","impasse","impeachment","impediment","imperative","imperfection","imperialism","impersonation","impersonator","impertinence","impiety","implant","implantation","implement","implication","import","importation","importer","imposition","impossibility","imposter","impostor","impoundment","impresario","impression","imprint","impropriety","improvement","improvisation","impulse","in-law","inauguration","inbound","incantation","incapacity","incarceration","incarnation","incidence","incident","incinerator","incline","inclusion","incoherence","income","incompatibility","incongruity","inconsistency","inconvenience","increase","increment","incumbency","incumbent","incursion","indemnity","indentation","independence","independent","index","indication","indicator","indictment","indirection","indiscretion","individual","individualist","individuality","individuation","inducement","induction","inductivist","indulgence","industrialist","industry","ineptitude","inequality","inequity","inertia","inevitability","infamy","infantryman","infarct","infarction","infatuation","infection","inference","inferno","infestation","infield","infielder","infinity","infirmary","infirmity","inflammation","inflation","inflection","inflow","influence","informality","informant","information","informer","infraction","infrastructure","infringement","infusion","ingenue","ingenuity","ingot","ingredient","inhabitant","inhalation","inhaler","inheritance","inheritor","inhibition","inhibitor","inhumanity","iniquity","initial","initiation","initiative","initiator","injection","injunction","injury","injustice","ink","inkling","inkwell","inlay","inlet","inmate","inn","innkeeper","innocence","innocent","innovation","innovator","innuendo","inoculation","inpatient","input","inquest","inquiry","inquisition","inscription","insecurity","insemination","insensitivity","insert","insertion","inset","inside","insider","insight","insignia","insincerity","insinuation","insistence","inspection","inspector","inspiration","instability","installation","installment","instance","instep","instigation","instigator","instinct","institute","institution","instruction","instructor","instrument","instrumentality","insulator","insurer","insurgency","insurrection","intake","integration","integrator","intellect","intellectual","intellectualist","intelligence","intensification","intensity","intent","intention","interaction","interception","interceptor","interchange","intercom","interconnection","interest","interface","interference","interferon","interior","interlocutor","interloper","interlude","intermediary","intermission","intern","internationalist","internist","internship","interplay","interpretation","interpreter","interrelationship","interrogation","interruption","intersection","interval","intervention","interview","interviewee","interviewer","interweaving","intestine","intonation","intricacy","intrigue","introduction","introspection","intrusion","intuition","invalid","invariance","invective","invention","inventor","inventory","inversion","investigation","investigator","investment","investor","invisibility","invitation","invocation","invoice","involvement","iodide","iridescence","iron","ironclad","ironist","ironwork","ironworker","irony","irrationality","irregularity","irrelevance","irrelevancy","irrigation","irritant","irritation","island","isle","islet","isolation","isolationist","isotope","issue","item","itinerary","ity","ivory","ivy","jab","jabber","jacaranda","jack","jacket","jackhammer","jackknife","jackpot","jackrabbit","jade","jaguar","jailbird","jam","jamb","jangle","jar","jargon","jasmine","jaunt","javelin","jaw","jawbone","jawline","jay","jean","jector","jeep","jelly","jeopardy","jerk","jerkin","jersey","jest","jester","jet","jetliner","jetport","jetty","jewel","jeweler","jib","jig","jigsaw","jimmy","jingle","job","jobber","jock","jockey","jog","jogger","joiner","joining","joint","jolt","jot","journal","journalist","journey","journeyman","jowl","jubilation","jubilee","judge","judgement","judgeship","judging","judgment","jug","juggernaut","juggler","juice","juicer","juke","jukebox","jumbo","jumper","jumpsuit","junction","juncture","jungle","junior","juniper","junk","junket","junkie","junkyard","junta","jurisdiction","jurist","juror","jury","justice","justification","juxtaposition","kaleidoscope","kangaroo","karma","katun","kebele","keel","keep","keeper","keeping","keepsake","kelp","ken","kennel","kerchief","kernel","kettle","key","keyboard","keyhole","keynote","keystone","khaki","kick","kickback","kicker","kicking","kickoff","kid","kiddie","kidnaping","kidnapper","kidnapping","kidney","kill","killer","killing","kiln","kilt","kindergarten","kindness","king","kingdom","kingmaker","kingpin","kinship","kinsman","kiosk","kit","kitchen","kitchenette","kite","kitten","kitty","klaxon","knack","knapsack","knave","knee","kneecap","knife","knight","knighthood","knit","knock","knockdown","knocker","knocking","knockout","knoll","knot","knuckle","kook","kraken","kynd","lab","label","labor","laboratory","laborer","labour","labourer","labyrinth","lace","lackey","lacquer","lad","ladder","laddie","ladle","laggard","lagoon","lair","laird","lake","lakeshore","lamb","lament","lamentation","laminate","lamp","lamppost","lampshade","lance","lanch","land","landau","lander","landfall","landfill","landing","landmark","landmass","landowner","landscape","landslide","lane","language","languor","lantern","lanyard","lap","lapel","lapse","larceny","lard","larder","lark","laser","lash","lass","latch","latecomer","lateness","lath","lathe","lation","latitude","latrine","lattice","laugh","laughter","launch","launcher","launching","laundering","laundromat","laundry","laureate","laurel","lavender","law","lawgiver","lawmaker","lawman","lawn","lawnmower","lawsuit","lawyer","layer","laying","layman","layoff","layout","layover","layup","lead","leader","leadership","leaf","leaflet","league","leak","leakage","leap","learner","learning","lease","leash","leather","leave","leave-taking","leaving","lectern","lecture","lecturer","ledge","ledger","lee","leer","left-hander","lefty","leg","legacy","legality","legation","legend","legion","legislation","legislator","legislature","legitimation","legume","lem","lemon","lender","length","leopard","leotard","leper","lesion","lesson","letdown","lethargy","letter","letterhead","lettuce","levee","level","lever","leviathan","levity","levy","lexicon","ley","liability","liaison","liana","libation","libel","liberal","liberation","liberationist","liberator","libertarian","liberty","librarian","library","licence","license","licensee","lichen","lick","licking","lid","liege","lien","lieutenant","lieve","life-cycle","life-span","life-style","lifeboat","lifeguard","lifeline","lifer","lifespan","lifestyle","lift","lifter","lifting","ligament","light","lighter","lighthouse","lightning","lightweight","likeness","liking","lilac","lily","lima","limb","lime","limerick","limestone","limit","limitation","limousine","linchpin","linden","line-up","lineage","linebacker","lineman","linen","liner","lineup","ling","lingo","linguist","liniment","lining","link","linkage","linker","linkup","lintel","lion","lioness","lip","lipstick","liqueur","liquid","liquidation","liquor","list","listener","listing","litany","lite","liter","literature","lithograph","litigation","litter","liturgy","livelihood","liver","livery","living","living-room","lizard","loader","loading","loaf","loafer","loan","loathing","lob","lobby","lobbyist","lobe","lobotomy","lobster","lobsterman","locale","locality","location","locator","lock","lock-mechanism","locker","locket","lockout","locksmith","lockup","locomotive","locust","lode","lodge","lodger","lodging","loft","log","loggia","logic","logician","logjam","loiter","lollipop","longing","longitude","longshoreman","loo","look-alike","looker","lookout","loom","loon","loony","loophole","loot","looter","lord","lordship","lorry","lotion","lottery","loudspeaker","lounge","louse","lout","lover","loveseat","low","lowland","loyalty","lubricant","lug","lullaby","lumber","lumberjack","lumberyard","luminary","luminosity","lump","lumpectomy","lunacy","lunatic","lunch","luncheon","luncheonette","lunchroom","lung","lunge","lurch","lurcher","lure","luster","lute","luxury","lynching","lyre","lyric","lyricist","m'lord","macaw","mace","machete","machine","machinist","mackinaw","madcap","mademoiselle","madhouse","maelstrom","magazine","mage","magenta","magic","magician","magistrate","magnate","magnet","magnetism","magnification","magnificence","magnitude","magnolia","magnum","magpie","mahogany","mahout","mail","mailbox","mailing","mailman","mainframe","mainland","mainsail","mainspring","mainstay","majesty","major","majority","make","make-up","maker","makeup","making","malady","malaise","malcontent","malfunction","malignancy","mall","mallard","mallet","malpractice","malt","mammal","mammogram","mammography","mammoth","management","manager","mance","mandarin","mandate","mandolin","mane","maneuver","maneuvering","manger","mango","mangrove","manhole","manhunt","manicure","manifestation","manifesto","manifold","mannequin","manner","mannerism","mannerist","manoeuvre","manor","manse","manservant","mansion","mantel","mantelpiece","mantle","mantra","manual","manufacturer","manure","manuscript","map","maple","mapping","marathon","marble","march","marching","mare","margarine","margarita","margin","marina","marine","mariner","marionette","marker","market","marketer","marketing","marketplace","marking","marksman","markup","marlin","marmalade","marquee","marrow","marsh","marshal","marshland","marshmallow","mart","martinet","martini","martyr","martyrdom","marvel","mascot","mash","mask","mason","masque","mass","massage","masseur","mast","mastectomy","master","master-mason","mastermind","masterpiece","masterwork","masthead","mat","matador","match","matchbook","matchbox","matchmaker","matchstick","matchup","material","materialist","mathematician","matinee","mating","matrix","matron","matte","matter","mattress","maturity","mauling","mausoleum","maverick","maw","maxim","maximum","mayor","maze","mead","meadow","meal","mean","meaning","meanness","measure","measurement","meatball","mecca","mechanic","mechanism","medal","medalist","medallion","median","mediation","mediator","medic","medication","medicine","meditation","medley","meet","meeting","megaphone","melancholy","melanoma","melodrama","melody","melon","meltdown","member","membership","membrane","memento","memoir","memorandum","memorial","memory","menace","mention","mentor","menu","mercenary","merchandise","merchant","merchantman","mercy","merger","meridian","meringue","meristem","merit","mermaid","merry-go-round","mesa","mesh","meson","mesquite","mess","message","messenger","messiah","metabolism","metal","metamorphosis","metaphor","meteor","meteorite","meteoroid","meteorologist","meter","method","methodology","metier","metronome","microbe","microbiologist","microchip","microcomputer","microcosm","microfilm","microphone","microprocessor","microscope","microwave","middle","middleman","midpoint","midriff","midst","midterm","might","mignon","migraine","migrant","migration","mike","mil","mileage","miler","milestone","militant","military","militiaman","milk","milking","milkmaid","milkman","milkshake","mill","miller","millet","millimeter","millionaire","millionth","millstone","mime","mimeograph","mimic","minaret","mind","mind-set","mindstone","minefield","miner","mineral","mini","miniature","minicomputer","minim","minimalist","minimum","mining","minion","miniskirt","minister","ministration","ministry","minnow","minor","minority","minstrel","mint","minuet","miracle","mirage","mire","mirror","misadventure","misapprehension","miscalculation","miscarriage","miscellany","mischance","mischief","misdemeanor","miser","misery","misfit","misfortune","misgiving","mishap","misinterpretation","mismatch","misnomer","misrepresentation","missal","missile","mission","missive","misstatement","misstep","mist","mistake","mister","mite","miter","mitigation","mitt","mittee","mitten","mix","mix-up","mixer","mixture","mixup","moat","mob","mobile","mobilization","mobster","moccasin","mock-up","mockery","mod","model","modem","moderator","modernism","modernization","modification","modifier","modulation","module","mogul","mohole","moire","moisture","molar","mold","molding","mole","molecule","mom","moment","monarchy","monastery","monetarist","money","moneymaker","monitor","monk","monocle","monogram","monograph","monolith","monologue","monopoly","monorail","monosaccharide","monotone","monotony","monsoon","monster","monstrosity","montage","monthly","monument","moo","moon","moonlight","moonshiner","moor","mooring","moorland","mop","moral","moralist","morality","morass","moratorium","moray","morbidity","morgue","morn","moron","morsel","mortal","mortality","mortar","mortgage","mortician","mortification","mortise","mortuary","mosaic","mosque","mosquito","moss","mote","motel","motif","motion","motivation","motivator","motive","motor","motorbike","motorboat","motorcade","motorcar","motorcycle","motorist","motorman","motto","mouf","mould","mound","mount","mountain","mountaineer","mountainside","mountaintop","mounting","mousse","moustache","mouth","mouth-harp","mouthful","mouthpiece","movement","mover","movie","moviegoer","moviemaker","mower","mu","muddle","muffin","muffler","mug","mugger","mugging","mulatto","mulberry","mulch","mule","mullah","mullet","multimillionaire","multiple","multiplication","multiplier","multitude","mum","mumble","municipality","mural","murder","murderer","murderess","murmur","murmuring","muscle","muse","museum","mushroom","musical","musician","musicologist","musket","muskrat","muslin","mussel","must","mustache","mustang","muster","mutant","mutiny","mutter","muttering","mutton","muzzle","myosin","myriad","myrtle","mystery","mystic","mysticism","mystification","myth","mythology","nail","naivete","nameplate","namesake","nap","napkin","narration","narrative","narrator","nation","nation-state","nationalism","nationalist","nationality","nationalization","native","nativist","naturalist","nature","nave","navigation","navigator","navy","nay","ne'er-do-well","nebula","necessity","neck","neckerchief","necklace","necktie","nectar","needle","needlepoint","needler","negation","negative","negligee","negotiation","negotiator","neigh","neighbor","neighborhood","neighbour","neomort","neon","neophyte","nephew","nerd","nerve","nest","net","netting","nettle","network","neurologist","neurosis","neurosurgeon","neutralist","neutrality","neutron","newcomer","newel","newlywed","newness","newscast","newscaster","newsletter","newsmagazine","newsman","newspaper","newspaperman","newsreel","newsroom","newsstand","nicety","niche","nick","nickel","nickname","nightcap","nightclub","nightingale","nightshirt","nightstand","nightstick","nightwatch","nimbus","ninny","nip","nite","nitrate","nitrite","nitrogen","no","no-hitter","nobility","noble","nobleman","nod","node","nodule","noggin","noise","nomad","nomination","nominee","noncom","nonentity","nonsmoker","nonwhite","noodle","nook","noose","norm","normalcy","normality","nose","nostalgia","nostril","notary","notation","notch","note","notebook","notepad","notice","notification","notion","noun","nouveau","nouvelle","nova","novel","novelist","novella","novelty","novice","nozzle","nuance","nub","nude","nudge","nugget","nuisance","nullity","number","numeral","nun","nunnery","nurse","nursemaid","nursery","nurture","nut","nutmeg","nutrient","nutritionist","nutshell","nylon","nymph","oaf","oak","oar","oasis","oath","obeisance","obelisk","obfuscation","obituary","object","objection","objective","objectivist","objector","obligation","oblivion","oblong","oboe","obscenity","obscurity","observance","observation","observatory","observer","obsession","obsidian","obstacle","obstetrician","obstinacy","obstruction","obstructionist","occasion","occupancy","occupant","occupation","occurrence","ocean","oceanographer","ochre","octave","octogenarian","oddball","oddity","odometer","odor","odour","odyssey","oeuvre","ofa","offence","offender","offense","offensive","offer","offering","office","officeholder","officer","official","offshoot","ogre","oil","oiler","oilfield","oilman","oilskin","ointment","oldster","oligarchy","olive","ombudsman","omelet","omelette","omen","omission","one-liner","onion","onlooker","onslaught","ontology","onyx","ooze","op","opacity","opal","opener","opening","opera","operation","operative","operator","operetta","ophthalmologist","opiate","opinion","opment","opportunist","opportunity","opposite","opposition","oppression","oppressor","optimism","optimist","option","oracle","oral","orange","oration","orator","oratorio","oratory","orb","orbit","orbiter","orchard","orchestra","orchestration","orchid","ordeal","order","ordering","orderly","ordinance","ordination","ore","organ","organisation","organist","organization","organizer","orientation","orifice","origin","original","originator","ornament","ornamentation","orthodontist","orthodoxy","oscillation","oscillator","oscilloscope","ostrich","other","otter","ouster","outboard","outbreak","outburst","outcast","outcome","outcrop","outcropping","outcry","outdistance","outdoorsman","outfield","outfielder","outfit","outflow","outgrowth","outhouse","outing","outlaw","outlay","outlet","outline","outlook","outpatient","outpost","outpouring","output","outrage","outside","outsider","oval","ovary","ovation","oven","over","overall","overcoat","overdose","overdraft","overflow","overhang","overhaul","overhead","overlap","overlay","overload","overlord","overpass","override","overrun","overseer","oversight","oversimplification","overstatement","overtone","overture","overview","oviduct","ovum","owl","owner","ownership","ox","oxford","oxidation","oxide","oyster","pacemaker","pacer","pacifier","pacifist","pack","package","packer","packet","packing","pact","pad","paddle","paddock","paddy","padlock","paean","pagan","page","pageant","pagoda","paign","pail","pain","painkiller","paint","paintbrush","painter","painting","pairing","paisley","pal","palace","palate","palette","palisade","pall","palladium","pallbearer","pallet","pallor","palm","palsy","pamphlet","pan","panacea","pancake","panda","pane","panel","panelling","panhandle","panic","panoply","panorama","pansy","pant","panther","panting","pantomime","pantry","pantsuit","pap","papaya","paper","paperback","paperweight","paprika","para","parable","parachute","parade","paradigm","paradise","paradox","paraffin","parafoil","paragon","paragraph","parakeet","parallel","parallelism","parameter","paramour","paranoia","parapet","paraphrase","parasite","parasol","paratroop","paratrooper","parcel","parchment","pardner","pardon","parent","parenthesis","pariah","parish","parishioner","parity","park","parka","parkland","parkway","parley","parliament","parlor","parlour","parody","parole","paroxysm","parrot","parry","parson","partake","participant","participation","particle","particular","particularity","particulate","parting","partisan","partition","partment","partner","partnership","party","parvenu","pasha","pass","passage","passageway","passenger","passer","passer-by","passing","passion","passport","password","pasta","paste","pastel","pastiche","pastime","pastor","pastry","pasture","pasty","pat","patch","pate","patent","patentee","path","pathologist","pathology","pathway","patient","patina","patio","patrician","patriot","patriotism","patrol","patrolman","patron","patsy","patter","pattern","paunch","pauper","pause","pavement","pavilion","paw","pawl","pawn","pawnshop","paycheck","payday","payload","paymaster","payment","payoff","payout","payroll","pea","peace","peacemaker","peach","peacock","peak","peal","peanut","pear","pearl","peasant","peasantry","peat","pebble","pecan","peck","pecker","pecking","pectin","pectoral","peculiarity","pedal","pedant","peddler","pedestal","pedestrian","pediatrician","pedigree","pediment","pee","peek","peel","peeling","peep","peephole","peerage","peg","pegboard","pellet","pelt","pen","penance","pencil","pendant","pendulum","penguin","penicillin","peninsula","penitence","penitent","penitentiary","penknife","pennant","pension","pensione","pensioner","penthouse","penumbra","pepper","peppermint","pepperoni","percentage","perception","percussion","percussionist","peregrine","perennial","perfection","perfectionist","perfidy","perforation","performance","performer","perfume","perience","peril","perimeter","period","periodical","periphery","periscope","permission","permit","peroration","perpetrator","perplexity","persimmon","persona","personage","personality","personification","perspective","perspiration","persuasion","pertinence","perusal","pessimist","pest","pesticide","pestilence","pet","petal","petit","petition","petitioner","petticoat","pettiness","pew","phaeton","phalanx","phantasy","phantom","pharaoh","pharmacist","pharmacy","phase","pheasant","phenomenon","philanthropist","philanthropy","philistine","philosopher","philosophy","phobia","phone","phoneme","phonograph","phony","phosphate","phosphor","photo","photocell","photocopy","photograph","photographer","photon","phrase","phrasing","physician","physicist","physiologist","physiology","physique","pi","pianist","piazza","pic","pick","pick-up","pickax","picker","picket","picking","pickle","pickpocket","pickup","picnic","picture","pidgin","pie","piece","pier","piety","pig","pigeon","pigeonhole","piggy","piggyback","piglet","pigment","pigsty","pigtail","pile","pilgrim","pilgrimage","piling","pill","pillar","pillbox","pillow","pillowcase","pilot","pin","pinafore","pinball","pincer","pinch","pine","pineapple","ping","pinhead","pink","pinkie","pinky","pinnace","pinnacle","pinstripe","pinwheel","pioneer","pipe","pipeline","piper","piracy","pirate","pistachio","pistol","piston","pit","pitch","pitcher","pitchfork","pitchman","pittance","pituitary","pivot","pixie","pizza","placard","place","placement","placenta","placer","placing","plagiarism","plague","plaid","plain","plainclothesman","plaint","plaintiff","plait","plan","plane","planer","planet","planetoid","plank","planner","planning","plant","plantain","plantation","planter","planting","plaque","plasma","plaster","plastic","plate","plateau","platelet","platform","platitude","platoon","platter","play","playback","player","playground","playgroup","playhouse","playing","playmate","playoff","playpen","playroom","plaything","playwright","plaza","pleading","pleasantry","pleasure","plebiscite","pledge","plight","plot","plotting","plough","plow","ploy","plug","plum","plumage","plumber","plume","plunge","plural","plurality","plywood","pneumonia","pocket","pocketbook","pocketful","pod","podesta","podium","poem","poet","poetry","pogrom","poignancy","point","point-of-view","pointer","poise","poison","poisoning","polariser","polarity","polarization","polder","pole","polemic","policy","policymaker","polish","polishing","politician","polity","polka","poll","pollen","pollination","polling","pollster","pollutant","polluter","pollution","polyester","polygraph","polymer","polyp","pomegranate","pomp","pompadour","pomposity","pond","poniard","pony","ponytail","poodle","pool","poolhall","poorhouse","pop-up","popcorn","pope","poplar","poppy","popsicle","popularization","population","populist","porcelain","porch","porcupine","pore","porpoise","porridge","port","portal","portent","porter","portfolio","porthole","portico","portiere","portion","portrait","portraitist","portraiture","portrayal","posing","position","posse","possession","possessor","possibility","possum","post","post-mortem","postcard","poster","posterior","postgraduate","posting","postman","postmark","postmaster","postponement","postscript","postulate","posture","posturing","pot","potato","potency","potentate","potential","potentiality","pothole","potion","potpourri","potter","pottery","pouch","poultice","pound","pounding","pout","powder","power","powerboat","powerhouse","practicality","practice","practitioner","pragmatist","prairie","praise","pram","prance","prayer","preacher","preaching","preamble","precaution","precedent","precept","precinct","precipice","precipitate","precision","precondition","precursor","predicament","predicate","prediction","predilection","predisposition","prefab","preface","prefect","prefecture","preference","preferment","prejudice","prelate","prelude","premier","premiere","premise","premium","premonition","preoccupation","prep","preparation","preppie","prerequisite","prerogative","presbytery","prescription","presence","present","presentation","presenter","presentiment","preservation","preservative","preserve","preserver","presidency","president","press","pression","pressure","presumption","pretence","pretender","pretense","pretension","pretext","pretzel","prevalence","prevention","preview","prey","price","pricing","prick","prickle","pride","priest","priestess","priesthood","prig","prima","primary","primate","primer","primitive","principal","principality","principle","print","printer","printing","printout","priority","prise","prism","privacy","private","privation","privilege","prize","prizefighter","prizewinner","pro","proach","probability","probation","probe","problem","procedure","proceeding","process","procession","processor","proclamation","proclivity","procurement","prod","prodding","prodigality","prodigy","produce","producer","product","production","productivist","productivity","profession","professional","professor","professorship","proficiency","profile","profit","profligacy","profundity","progenitor","progeny","prognosis","program","programme","programmer","progression","progressive","prohibition","project","projectile","projection","projectionist","projector","proletariat","prologue","prolongation","promenade","prominence","promise","promontory","promoter","promotion","prompt","prompting","prong","pronghorn","pronoun","pronouncement","pronunciation","proof","prop","propellant","propeller","propensity","property","proponent","proportion","proposal","proposition","proprietor","propriety","proscription","prosecution","prosecutor","prospect","prospector","prosthesis","protagonist","protection","protector","protectorate","protege","protein","protest","protester","protocol","proton","prototype","protrusion","provenance","proverb","providence","provider","province","provincialism","provision","provocateur","provocation","prow","prowl","prowler","proximity","proxy","prude","prune","pruning","psalm","pseudonym","pseudopatient","psi","psion","psych","psyche","psychoanalyst","pub","public","publican","publication","publicist","publisher","puck","pudding","puddle","puff","puke","pullback","pulley","pullover","pulp","pulpit","pulsar","pulsation","pulse","pump","pumper","pumpkin","pun","punch","puncher","puncture","pundit","punt","punter","pupil","purchase","purchaser","puree","purge","purification","purist","puritan","purity","purple","purpose","purr","purse","purser","pursuer","pursuit","purveyance","purveyor","push","pushbutton","pushcart","pusher","pushover","put-down","putdown","puter","putt","putter","puzzle","puzzlement","pylon","pyramid","pyre","python","quack","quadrangle","quadrant","quagmire","quake","qualification","qualifier","quality","qualm","quandary","quantity","quark","quarrel","quarry","quarter","quarterback","quarterly","quartermaster","quartet","quasar","quaver","quay","queen","query","quest","question","questioner","questioning","questionnaire","queue","quiche","quickie","quicksand","quiet","quill","quilt","quince","quintet","quip","quirk","quitter","quiver","quota","quotation","quote","quotient","ra","rabbi","rabbit","raccoon","race","racehorse","racer","racetrack","racist","rack","racket","raconteur","racquet","rad","radar","radiation","radiator","radical","radicalism","radio","radioisotope","radiologist","radioman","radish","radius","raffle","raft","rafter","rag","ragtag","raid","raider","rail","railing","railroad","railway","raiment","rain","rainbow","raincoat","raindrop","rainfall","rainstorm","raise","raiser","raisin","raising","rake","rally","ram","rambling","ramp","rampart","ramrod","ranch","rancher","rancor","range","rangeland","ranger","rank","ranking","ransom","rant","rap","rapacity","rapier","rapping","rapport","rapture","rarity","rascal","rash","rashness","rasp","raspberry","ratchet","rathorn","ratification","rating","ratio","ration","rationale","rationalist","rationality","rationalization","rattle","rattler","rattlesnake","rave","raven","ravine","ray","rayon","razor","re-creation","re-election","re-enactment","re-evaluation","rea","reach","reaction","reactor","read","reader","reading","readjustment","readout","reaffirmation","realignment","realist","reality","realization","reallocation","realm","realtor","realty","ream","reanimation","reaper","reappearance","reappointment","reappraisal","rear","rearrangement","reason","reasoning","reassessment","reassignment","reassurance","rebate","rebbe","rebound","rebuff","rebuke","rebuttal","rec","recapitulation","receipt","receiver","receivership","receptacle","reception","receptionist","receptor","recess","recession","recipe","recipient","reciprocity","recital","recitation","recitative","reckoning","reclamation","recliner","recluse","recognition","recognizance","recollection","recommendation","reconciliation","reconnoiter","reconsideration","reconstruction","record","recorder","recording","recount","recourse","recovery","recreation","recrimination","recruit","recruiter","recruitment","rectangle","rector","rectory","recuperation","recurrence","redefinition","redemption","redeployment","redesign","redhead","rediscovery","redistribution","redneck","redoubt","redskin","reduction","redundancy","redwood","reed","reef","reefer","reek","reel","reentry","refectory","referee","reference","referendum","referent","referral","refill","refinement","refiner","refinery","reflection","reflector","reflex","reform","reformation","reformer","reformulation","refraction","refractor","refrain","refresher","refreshment","refrigerator","refuge","refugee","refund","refusal","refuse","refusenik","refutation","regeneration","regent","regime","regimen","regiment","region","register","registrar","registration","registry","regression","regret","regularity","regulation","regulator","regurgitation","rehabilitation","rehash","rehearsal","reign","reimbursement","reincarnation","reinforcement","reinstatement","reinterpretation","reinvestment","reissue","reiteration","reject","rejection","rejoinder","relapse","relative","relativist","relativity","relaxation","relay","release","reliance","relic","relief","religion","relish","relocation","reluctance","remainder","remake","remark","remedy","remembering","remembrance","reminder","reminiscence","remission","remnant","removal","remove","remover","remuneration","rendering","rendition","renegade","renewal","renovation","rent","rental","renter","renunciation","reopening","reorganization","rep","repair","repairman","reparation","repast","repatriation","repayment","repeat","repeater","repellent","repertoire","repertory","repetition","replacement","replay","replenishment","replica","reply","report","reporter","reporting","repose","repository","repre","representation","representative","repression","reprieve","reprimand","reprint","reprisal","reprise","reproach","reproof","reptile","republic","republican","repudiation","repulsion","repurchase","reputation","request","requiem","requirement","requisite","requisition","rerun","resale","rescue","rescuer","researcher","resemblance","resentment","reservation","reserve","reservist","reservoir","residence","residency","resident","residue","resignation","resin","resistance","resolution","resonance","resort","resource","respect","respiration","respirator","respite","respondent","response","responsibility","restatement","restaurant","restaurateur","restitution","restoration","restorer","restraint","restriction","restroom","restructuring","result","resume","retailer","retainer","retaliation","retardant","retardation","retary","retch","retelling","reticence","retina","retinue","retiree","retirement","retort","retraction","retreat","retrenchment","retrial","retriever","return","reunion","revaluation","revelation","revelry","revenge","revenue","reverberation","reverie","reversal","reverse","reversion","review","reviewer","revision","revisionist","revitalization","revival","revocation","revolt","revolution","revolver","revue","revulsion","reward","rhetoric","rhinestone","rhizome","rhododendron","rhyme","rhythm","riage","rib","ribbon","rickshaw","ricochet","riddle","ride","rider","ridge","ridgeline","ridicule","riding","riff","riffle","rifle","rifleman","rift","rig","rigging","right","right-hander","right-of-way","rightist","rigidity","rigor","rim","rime","rind","ring","ringer","ringing","ringleader","ringmaster","rink","rinse","rip","ripoff","riposte","ripple","riser","rising","rite","ritual","rival","rivalry","river","riverbank","riverbed","riverboat","rivet","rivulet","ro","roach","road","roadbed","roadblock","roadhouse","roadside","roadster","roadway","roaring","roast","robber","robbery","robe","robin","robot","rock","rocker","rocket","rod","rodent","rodeo","rogue","role","roll","rollback","rollcall","roller","rolling","romp","roof","rooftop","rook","rookery","rookie","room","roommate","roost","rooster","root","rope","rosary","rose","rosebud","rosette","roster","rotation","rote","rotor","rotunda","rouge","roughage","roughhouse","roughneck","round","roundabout","roundness","roundup","roustabout","rout","route","router","routine","routing","rover","row","rowboat","rower","royalist","royalty","rub","rubber","rubber-stamp","rubbing","rube","rubric","ruby","ruck","rucksack","rudder","rue","ruffle","rug","ruin","rule","ruler","ruling","rum","rumble","rumbling","rumination","rummy","rumor","rumour","rump","run-up","runaway","rune","rung","runner","running","runoff","runt","runway","rupture","ruse","rusher","rust","rustle","rustling","rut","rye","sabbatical","saber","sable","sabra","sabre","sac","sack","sacking","sacrament","sacrifice","sacrificer","sacrilege","saddle","saddlebag","sadist","sadness","safari","safe","safeguard","safety","saga","sage","sail","sailboat","sailer","sailing","sailor","sake","salad","salamander","salami","salary","salon","saloon","salsa","salt","salutation","salute","salvage","salvation","salve","salver","samba","samovar","sample","sampler","sampling","sanatorium","sanction","sanctuary","sanctum","sandal","sandbag","sandbar","sandbox","sander","sandstone","sandwich","sanitarium","sapling","sapper","sapphire","sarcasm","sardine","sari","sash","satchel","satellite","satin","satire","satirist","satisfaction","satrap","satyr","sauce","saucepan","saucer","sauna","sausage","savanna","savannah","savant","save","saver","saving","savior","savor","saw","sawhorse","sawmill","sax","saxophone","saxophonist","saying","scab","scabbard","scaffold","scaffolding","scale","scallop","scalp","scalpel","scam","scamp","scan","scandal","scanner","scare","scarf","scarlet","scat","scattering","scavenger","scenario","scenarist","scene","scent","scepter","schedule","schema","scheme","schemer","schism","scholar","scholarship","school","schoolhouse","schoolmarm","schoolroom","schoolteacher","schoolyard","schooner","science","scientist","scimitar","scion","scolding","scoop","scooter","scope","score","scoreboard","scorecard","scorer","scoring","scorn","scotch","scoundrel","scourge","scouring","scout","scowl","scrambler","scrap","scrapbook","scrape","scraper","scratch","scratching","scrawl","scream","screamer","screaming","scree","screech","screen","screening","screenplay","screenwriter","screw","screwball","screwdriver","scribbling","scribe","scrim","scrimmage","script","scripture","scriptwriter","scrivener","scroll","scrub","scrubber","scrubbing","scruple","scuffle","scuffling","scullery","sculptor","sculpture","scythe","sea","seabed","seafood","seagull","seal","sealer","sealskin","seam","seaman","seamstress","seance","seaplane","seaport","search","searcher","searchlight","seascape","seashell","seashore","seasoning","seat","seating","seaway","seaweed","secession","secondary","secrecy","secret","secretion","sect","section","sector","security","sedan","sedge","sediment","sedition","seed","seedbed","seeding","seedling","seedship","seeker","seer","seesaw","segment","segmentation","segregationist","seine","seismometer","seizure","selection","selector","self","self-congratulation","self-criticism","self-deception","self-delusion","self-denial","self-doubt","self-examination","self-image","self-indulgence","self-interest","self-justification","self-portrait","self-sacrifice","self-satisfaction","seller","sellout","semaphore","semblance","semester","semi","semi-circle","semicircle","semiconductor","seminar","seminarian","seminary","sen","senate","senator","sender","sending","senior","senor","sensation","sense","sensibility","sensitivity","sensor","sensuality","sentence","sentiment","sentimentalist","sentimentality","sentinel","sentry","separation","separator","sepulcher","sequel","sequence","serenade","serf","sergeant","serial","sermon","serpent","serum","servant","serve","server","service","serving","sesame","set-up","setback","settee","setter","setting","settlement","settler","settling","setup","sewer","shack","shade","shading","shadow","shaft","shake","shake-up","shakedown","shaker","shakeup","shale","sham","shaman","shame","shampoo","shank","shanty","shantytown","shape","shaping","shard","share","sharecropper","shareholder","shark","sharpener","sharpness","sharpshooter","shave","shaver","shaving","shawl","sheaf","sheath","shed","sheen","sheepherder","sheepskin","sheet","sheik","shelf","shell","shellac","shelling","shelter","shepherd","sherbet","sheriff","sherry","shield","shift","shifting","shiksa","shill","shimmer","shimmy","shin","shindig","shingle","ship","shipload","shipment","shipwreck","shipwright","shipyard","shire","shirt","shirtmaker","shirttail","shirtwaist","shiver","shivering","sho","shoal","shock","shocker","shoe","shoestring","shoot","shooter","shooting","shootout","shop","shopkeeper","shopper","shore","shoreline","short","shortage","shortcoming","shortcut","shortening","shortfall","shortstop","shot","shotgun","shoulder","shout","shouting","shove","shovel","show","showcase","showdown","shower","showing","showman","showpiece","showplace","showroom","shred","shrew","shriek","shrimp","shrine","shrink","shroud","shrub","shrubbery","shrug","shtetl","shudder","shuffle","shuffling","shunt","shutdown","shutout","shutter","shuttle","sibling","sickle","sidearm","sideboard","sidecar","sidekick","sideline","sideshow","sidewalk","sidewinder","siding","siege","siesta","sieve","sigh","sight","sighting","sign","signal","signalman","signature","signer","significance","signification","signifier","signing","signora","signpost","silage","silence","silencer","silhouette","silicone","silk","sill","silver","similarity","simile","simpleton","simplicity","simplification","simulation","simulator","sinecure","sinew","singer","single","singsong","singularity","sink","sinker","sinkhole","sire","siren","sirloin","sit","sitcom","site","siting","sitter","sitting","sitting-room","situation","six-pack","sizzle","skate","skater","skein","skeleton","skeptic","skepticism","sketch","sketchbook","skewer","ski","skid","skier","skiff","skill","skillet","skim","skimmer","skin","skip","skipper","skirmish","skirmishing","skirt","skit","skull","skullcap","skunk","sky","skylight","skyline","skyrocket","skyscraper","slab","slack","slag","slalom","slamming","slander","slant","slash","slat","slate","slaver","slayer","slaying","sledge","sledgehammer","sleeper","sleeping","sleepwalker","sleet","sleeve","sleigh","sleight","sleuth","slice","slick","slicker","slide","slider","slime","sling","slingshot","slip","slippage","slipper","slit","sliver","slob","slobber","slogan","sloop","slop","slope","slot","sloth","slouch","slough","slowdown","sluice","slum","slumber","slump","slur","slurry","smack","small","smash","smattering","smear","smell","smelter","smidgen","smile","smirk","smith","smithy","smock","smoke","smoker","smokescreen","smokestack","smudge","smut","snack","snail","snake","snakebite","snap","snapper","snapshot","snare","snarl","snatch","sneak","sneaker","sneer","sneeze","snicker","sniff","sniffer","snifter","snip","sniper","snitch","snob","snobbery","snooper","snooze","snore","snorkel","snort","snot","snout","snow","snowball","snowbank","snowdrift","snowfall","snowfield","snowflake","snowman","snowmobile","snowplow","snowshoe","snowstorm","snub","snuffler","soap","soapbox","sobbing","sobriquet","socialism","socialist","socialite","society","sociology","sock","socket","sod","soda","sofa","softball","softener","softening","softness","soil","sojourn","solace","solder","soldier","sole","solemnity","solicitation","solicitor","solicitude","solid","solidarity","soliloquy","solitude","solo","soloist","solstice","solution","solvent","somersault","son","sonar","sonarman","sonata","song","songwriter","sonnet","sonobuoy","soot","sophistication","sophistry","sophomore","sor","sorbet","sorcerer","sorcery","sore","sorghum","sorority","sorrow","sortie","sorting","souffle","soul","sound","sounding","soundtrack","soup","source","sourdough","southerner","southpaw","souvenir","sovereign","sovereignty","soviet","sow","soybean","spa","space","spaceman","spaceport","spacer","spaceship","spacesuit","spacing","spade","span","spaniel","spanking","spar","spark","sparkle","sparrow","spasm","spat","spate","spatter","spatula","speakeasy","speaker","speaking","spear","specialist","speciality","specialization","specialty","specification","specimen","speck","spectacle","spectator","specter","spectre","spectrum","speculation","speculator","speech","speechwriter","speed","speedboat","speedometer","speedster","spell","spelling","spend","spender","spendthrift","sphere","spice","spider","spiderweb","spiel","spigot","spike","spill","spillway","spin","spindle","spine","spinnaker","spinner","spinoff","spinster","spiral","spire","spirit","spiritualist","spirituality","spirochete","spit","spitball","spite","splash","splashing","splat","spleen","splendor","splendour","splint","splinter","split","splitting","splotch","spoil","spoiler","spoke","sponge","sponsor","sponsorship","spoof","spook","spool","spoon","spoonful","spoor","spore","sporophyte","sport","sportscaster","sportsman","sportswriter","spot","spotlight","spotter","spouse","spout","sprawl","spray","spraying","spread","spree","sprig","spring","springboard","sprinkler","sprinkling","sprint","sprinter","sprite","spruce","spume","spur","spurt","spy","squab","squabble","squad","squadron","squall","square","squash","squat","squatter","squaw","squawk","squeak","squeal","squeeze","squint","squire","squirm","squirrel","squirt","stability","stabilizer","stable","stack","stadium","staffer","stag","stage","stagecoach","stagger","staging","stain","stair","staircase","stairway","stairwell","stake","stakeout","stalemate","stalk","stall","stamp","stampede","stance","stanchion","stand","standard","standard-bearer","standing","standoff","standout","standpoint","standstill","stanza","staple","star","starburst","starch","stare","starlet","starling","starship","start","start-up","starter","stash","state","statehouse","statement","stateroom","statesman","static","station","stationmaster","statistician","statue","statuette","stature","statute","stave","stead","steak","steam","steamboat","steamer","steamship","steed","steel","steelworker","steeple","steer","stein","stele","stem","stench","stenographer","stepladder","steppe","stepping-stone","stepson","stereo","stereotype","stern","stethoscope","stevedore","stew","steward","stewardess","stick","sticker","stickler","stickup","stiff","stigma","still","stilt","stimulant","stimulation","sting","stinger","stink","stinker","stint","stipend","stipulation","stir","stirrup","stitch","stoan","stock","stockade","stockbroker","stockholder","stocking","stockpile","stockroom","stockyard","stoic","stole","stone","stoneware","stooge","stool","stoop","stopgap","stoplight","stopover","stoppage","stopper","stopwatch","store","storefront","storehouse","storekeeper","storeroom","stork","storm","story","storyboard","storybook","storyteller","stout","stove","stovepipe","strain","strait","straitjacket","strand","stranger","strangle","strangler","strangulation","strap","stratagem","strategist","strategy","stratum","straw","strawberry","streak","stream","streamer","street","streetcar","streetlamp","streetlight","strength","stress","stretch","stretcher","stricture","stride","stridency","strike","strikeout","striker","string","stringency","stringer","strip","stripe","striving","strobe","stroke","stroll","stroller","strongbox","stronghold","strongman","strop","struction","structure","strudel","struggle","strumpet","strut","stub","stubble","stud","student","studio","study","stuff","stuffing","stumble","stumbling","stump","stunner","stunt","stupor","sturgeon","stutter","sty","style","styling","stylist","stylus","suasion","sub","subcommittee","subcompact","subcontractor","subculture","subdivision","subgroup","subject","subjectivist","subjugation","sublet","sublimation","submarine","submission","subordination","subpena","subpoena","subscriber","subscription","subset","subsidiary","subsidy","substage","substance","substation","substitute","substitution","substrate","substructure","subterfuge","subtext","subtitle","subtlety","subtraction","suburb","suburbanite","subversion","subway","success","succession","successor","succor","suede","suffix","suffocation","sugar","suggestion","suit","suitcase","suite","suitor","sulfate","sulfide","sulfite","sulfur","sulphate","sultan","summary","summation","summit","sun","sunbeam","sunburn","sunburst","sundae","sundial","sunflower","sunlight","sunrise","sunset","suntan","super","supercomputer","superficiality","supergiant","superhighway","superintendent","superior","superiority","superman","supermarket","supernova","superpower","superstar","superstructure","supervisor","supper","supplement","supplicant","supplication","supplier","supply","support","supporter","supposition","suppression","surcharge","surcoat","surety","surface","surfboard","surfeit","surfer","surge","surgeon","surgery","surmise","surname","surprise","surrender","surrogate","surround","surtax","surveillance","survey","surveyor","survival","survivor","susceptibility","suspect","suspension","suspicion","suture","swagger","swallow","swami","swamp","swampland","swan","swarm","swastika","swatch","swath","swathe","sweat","sweatband","sweater","sweating","sweatshirt","sweatshop","sweatsuit","sweet","sweetener","sweetheart","sweetie","sweetness","swell","swig","swim","swimmer","swimsuit","swindle","swindler","swing","swinger","swipe","swirl","swish","switch","switchback","switchblade","switchboard","switching","swivel","swoon","swoop","sword","swordsman","sycamore","sycophant","syllable","syllogism","symbol","symbolism","symmetry","sympathizer","sympathy","symphony","symposium","symptom","synagogue","synapse","syndicate","syndication","syndrome","synod","synonym","synopsis","synthesis","synthesizer","syringe","syrup","system","tab","tabby","tabernacle","table","tableau","tablecloth","tablespoon","tablet","tabletop","tableware","tabloid","taboo","tabulation","tack","tactic","tactician","taffeta","tag","tai-pan","tail","tailback","tailcoat","tailgate","taillight","tailor","tailspin","taint","take","takeoff","takeover","taker","taking","talc","tale","talent","talker","tally","talon","tamale","tambourine","tamer","taming","tampering","tan","tance","tang","tangent","tangle","tank","tankard","tanker","tanner","tannin","tantrum","tap","tape","taper","tapestry","taping","tapping","tar","tarantula","target","tariff","tarp","tarpaulin","tart","tary","taskmaster","tassel","taste","tasting","tat","tation","tattoo","taunt","tautology","tavern","tavern-keeper","taverna","tax","taxation","taxi","taxicab","taxiway","taxpayer","tea","teacher","teaching","teacup","teahouse","teak","teakettle","team","teammate","teamster","teapot","teardrop","teaspoon","teat","technicality","technician","technique","technocrat","technology","teddy","tedium","tee","teetotaler","teevee","tektite","tel","telecast","telegram","telegraph","telephone","telescope","telethon","teletype","television","telex","teller","telling","telltale","temper","temperament","temperature","tempest","template","temple","tempo","temptation","temptress","tenancy","tenant","tendency","tender","tenderness","tendon","tendril","tenement","tenet","tenon","tenor","tense","tension","tent","tentacle","tention","tenure","tepee","tequila","terminal","termination","terminology","tern","terrace","terracotta","terrain","terrarium","terrier","territory","terror","terrorist","testament","tester","testimonial","testimony","tetracycline","text","textbook","textile","texture","thang","thanksgiving","thatch","thaw","the","theater","theatre","theft","theme","theologian","theology","theorem","theoretician","theorist","theorizing","theory","ther","therapist","therapy","thermometer","thermostat","these","thesis","thickening","thicket","thickness","thief","thievery","thigh","thimble","thing","thinker","thinking","thinning","thistle","thorax","thorn","thornbush","thoroughbred","thoroughfare","thought","thrall","thrashing","thread","threat","three-star","threesome","threshing","threshold","thrift","thrill","thriller","throat","throb","throbbing","throne","throng","throttle","throw","throwaway","throwback","thrower","thrum","thrush","thrust","thud","thug","thumb","thumbnail","thump","thumping","thunder","thunderbolt","thunderclap","thunderstorm","thwack","thyme","thyroid","tiara","tibia","tic","tick","ticker","ticket","ticking","tickle","tidbit","tide","tie","tie-up","tiger","tile","till","tiller","tilt","timber","timberland","timbre","timeline","timepiece","timer","timetable","timidity","timing","tin","tincture","tine","ting","tinge","tingle","tingling","tinker","tint","tinting","tip","tipper","tiptoe","tirade","tissue","titan","tithe","tithing","titillation","title","toad","toast","toaster","tobacconist","toboggan","toddler","toddy","toe","toehold","toenail","toffee","toga","toil","toilet","toke","token","tolerance","toll","tom","tomahawk","tomato","tomb","tomboy","tombstone","tomcat","tome","tonality","tong","tongue","tonic","tonnage","tonsillectomy","tonsure","tool","toolbox","tooth","toothache","toothbrush","toothpaste","toothpick","topcoat","topic","topping","topside","torch","torchlight","torment","tormentor","tornado","torpedo","torpor","torque","torrent","tort","torte","tortilla","tortoise","torture","torturer","toss","tossing","tot","total","totalitarianism","totality","tote","totem","touch","touchdown","touchstone","tough","toupee","tour","tourist","tournament","tourney","tourniquet","tow","towel","tower","town","townhouse","township","townsman","toy","trace","tracer","tracery","tracing","track","tracker","tract","tractor","trade","trademark","trader","tradesman","tradition","traditionalist","traffic","trafficker","tragedy","trail","trailer","train","trainee","trainer","training","trainload","trajectory","tram","tramp","trampoline","trance","tranquilizer","transaction","transceiver","transcript","transcription","transfer","transference","transformation","transformer","transfusion","transgression","transistor","transit","transition","translation","translator","transmission","transmitter","transmutation","transom","transparency","transplant","transplantation","transport","transportation","transvestite","trap","trapdoor","trapeze","trapper","trapping","tration","travail","travel","traveler","traveller","travelogue","traverse","travesty","trawler","tray","treachery","treacle","tread","treadmill","treason","treasure","treasurer","treasury","treat","treatise","treatment","treaty","treble","tree","treetop","trembling","tremor","trench","trenchcoat","trend","trepidation","trespass","trespasser","tress","trestle","triad","trial","triangle","tribe","tribesman","tribulation","tribunal","tribune","tributary","tribute","trick","trickle","trickster","tricolor","tricycle","trifle","trigger","trill","trilogy","trinket","trip","tripe","triple","triplicate","tripod","triumph","triviality","troika","troll","trolley","trombone","trombonist","troop","trooper","trophy","trot","troubadour","trouble","troublemaker","troubleshooter","trough","troupe","trouper","trouser","trove","trowel","truancy","truce","truck","trucker","truckload","truffle","truism","trump","trumpet","trumpeter","truncheon","trunk","truss","trust","trustee","trusteeship","truth","tryout","tryst","tsar","tub","tuba","tube","tuber","tuft","tug","tug-of-war","tugboat","tuition","tulip","tulle","tumble","tumbler","tumbleweed","tummy","tumor","tumult","tundra","tune","tune-up","tuner","tunic","tuning","tunnel","turban","turbine","turbocharger","turbulence","turd","ture","tureen","turkey","turmoil","turnabout","turnaround","turncoat","turning","turnip","turnkey","turnout","turnover","turnpike","turnstile","turntable","turquoise","turret","turtle","turtleneck","tusk","tussle","tutor","tutorial","tutu","tux","tuxedo","twang","tweed","tween","twick","twig","twilight","twill","twin","twine","twinge","twinkle","twirl","twist","twister","twit","twitch","twitching","ty","tycoon","tyke","typer","typescript","typewriter","typhoid","typhoon","typist","typology","tyranny","tyrant","udder","umber","umbrella","umpire","unbutton","uncertainty","underclass","undercurrent","underdog","undergarment","undergraduate","underground","underling","underpass","undersecretary","underside","understatement","understudy","undertaker","undertaking","undertone","undertow","underwriter","underwriting","undoing","undulation","unfairness","unicorn","unification","uniform","uniformity","union","unity","universe","university","unreality","upbringing","update","updraft","upheaval","upland","uplift","uprising","upstart","upsurge","upswing","urchin","ureter","urgency","urging","urn","usage","user","usher","usurpation","usurper","utility","utopia","utterance","vacancy","vacation","vaccination","vaccine","vacillation","vagabond","vagrant","valedictorian","valentine","valet","validation","valise","valley","valuation","value","valve","van","vandal","vane","vanity","vantage","vapor","variability","variable","variance","variant","variation","variety","varnish","vase","vassal","vastness","vat","vault","vaulting","veal","vector","vegetable","vegetarian","vegetation","vehicle","veil","vein","velocity","velour","velvet","vendetta","vendor","veneer","veneration","vent","ventilator","ventricle","venture","venue","ver","veranda","verb","verdict","verge","verification","verity","vermouth","vernacular","verse","version","versity","vertebra","vertical","vessel","vest","vestibule","vestige","vet","veteran","veterinarian","veto","vexation","vial","vibration","vibrator","vicar","vice","vice-chairman","vice-president","viceroy","victor","victory","video","videocassette","videodisc","videotape","viewer","viewing","viewpoint","viewscreen","vigil","vigilante","vignette","villa","village","villager","vindication","vine","vinegar","vineyard","vintage","vinyl","violet","violin","violinist","viper","virologist","virtue","visa","visage","vise","vision","visit","visitation","visitor","visor","vista","visualization","vitamin","vivacity","vocabulary","vocalist","vocalization","vocation","vodka","vogue","voice","void","volatility","volcano","volition","volley","volleyball","voltage","volume","volunteer","vomit","vortex","voter","voucher","vow","vowel","voyage","voyce","voyeur","vulnerability","waddle","wafer","waffle","wag","wage","wager","wagon","waif","wail","wailing","waist","waistband","waistcoat","waistline","wait","waiver","waking","walk","walk-up","walker","walkie-talkie","walkout","walkway","wall","wallet","walleye","wallflower","wallop","wallow","wallpaper","walnut","wand","wanderer","wane","want","war","war-horse","warbler","warden","wardrobe","wardroom","ware","warehouse","warhead","warhorse","warlord","warm-up","warmth","warmup","warning","warp","warrant","warranty","warren","warrior","warship","wart","wartime","wash","washbasin","washboard","washcloth","washer","washing","washout","washroom","washstand","washtub","wasp","waste","wastebasket","wasteland","wastrel","watch","watchdog","watcher","watching","watchman","watchtower","watchword","water","watercolor","waterfall","waterfront","watering","waterman","watermelon","watershed","waterway","wattle","wave","wavelength","wax","wayfarer","weal","weapon","wear","wearer","wearing","weasel","weather","weatherman","weave","weaver","weaving","web","wedding","wedge","weed","weekly","weighing","weight","welcome","welder","well","wellspring","welt","welterweight","wench","werewolf","werowance","whack","whale","whalebone","whaler","whammy","wharf","whatnot","wheat","wheel","wheelbarrow","wheelchair","wheelhouse","wheeling","wheeze","whelp","which","whiff","whim","whimper","whimpering","whimsy","whine","whining","whinny","whip","whiplash","whipping","whir","whirl","whirlpool","whirlwind","whirr","whirring","whisk","whisker","whiskey","whisky","whisper","whispering","whistle","whistling","white","whitey","whodunit","whole","wholesaler","whoosh","whopper","whorl","wick","wickedness","wicket","width","wig","wiggle","wigwam","wil","wildcat","wilderness","wildfire","will","willow","wimp","wince","winch","wind","windbreaker","windfall","windmill","window","windowpane","windowsill","windpipe","windshield","wine","wineglass","winery","wingman","wingspan","wink","winner","winning","wipe","wire","wiretap","wisdom","wisecrack","wish","wishbone","wisp","wit","witch","withdrawal","withholding","witness","witticism","wizard","wizardry","wobble","woe","wok","wolf","wonder","wondering","wonderland","wonderment","wood","woodchuck","woodcutter","woodland","woodpecker","woodpile","woodshed","woodsman","woodworker","wool","word","wording","workbench","workday","worker","workhorse","workhouse","working","workingman","workload","workman","workout","workplace","workroom","workshirt","workshop","workstation","worktable","workweek","world","world-system","world-view","worldview","worm","worrier","worry","worsted","worthy","wound","wounding","wraith","wrangle","wrangling","wrap","wrapper","wrapping","wreath","wreck","wrecker","wren","wrench","wrestler","wrestling","wretch","wrinkle","wrist","wristwatch","writ","writer","writhing","writing","wrong","wrongdoing","wyrm","x-ray","yacht","yachtsman","yam","yard","yardstick","yarmulke","yarn","yawn","yearbook","yearling","yearning","yeast","yell","yelling","yellow","yellow-green","yeoman","yew","yield","yogurt","yoke","yolk","youngster","youth","yucca","yuppie","zation","zealot","zebra","zero","zigzag","zipper","zombie","zone","zoo","zoologist","zoom","zygote"]),gs}var Hh;function Vh(){if(Hh)return gi;Hh=1,Object.defineProperty(gi,"__esModule",{value:!0}),gi.nouns=gi.adjectives=void 0;const o=_N();gi.adjectives=o.default;const i=$N();return gi.nouns=i.default,gi}var Ei={},jh;function eA(){if(jh)return Ei;jh=1,Object.defineProperty(Ei,"__esModule",{value:!0}),Ei.createSeededRandomInt=Ei.getRandomInt=void 0;function o(){const E=typeof globalThis<"u"?globalThis:void 0;return E&&E.crypto?E.crypto:void 0}let i=(Date.now()^2654435769)>>>0;function c(){return i^=i<<13,i>>>=0,i^=i>>>17,i>>>=0,i^=i<<5,i>>>=0,i>>>0}function s(E){const m=o();if(m&&typeof m.getRandomValues=="function"){const v=new Uint32Array(E);return m.getRandomValues(v),v}const b=new Uint32Array(E);for(let v=0;v<E;v++)b[v]=c();return b}const d=(E,m)=>{if(!Number.isFinite(E)||!Number.isFinite(m))throw new Error("Invalid bounds for getRandomInt");if(m<E)throw new Error("maxInclusive must be >= minInclusive");if(E===m)return E;const[b]=s(1),v=m-E+1;return E+b%v};Ei.getRandomInt=d;function u(E){let m=1779033703^E.length;for(let b=0;b<E.length;b++)m=Math.imul(m^E.charCodeAt(b),3432918353),m=m<<13|m>>>19;return function(){return m=Math.imul(m^m>>>16,2246822507),m=Math.imul(m^m>>>13,3266489909),(m^=m>>>16)>>>0}}function f(E){return function(){E|=0,E=E+1831565813|0;let m=Math.imul(E^E>>>15,1|E);return m=m+Math.imul(m^m>>>7,61|m)^m,((m^m>>>14)>>>0)/4294967296}}function p(E){const m=String(E),v=u(m)(),T=f(v);return(O,h)=>{if(!Number.isFinite(O)||!Number.isFinite(h))throw new Error("Invalid bounds for getRandomInt");if(h<O)throw new Error("maxInclusive must be >= minInclusive");if(O===h)return O;const y=T(),C=h-O+1;return O+Math.floor(y*C)}}return Ei.createSeededRandomInt=p,Ei}var fi={},Wh;function Xh(){if(Wh)return fi;Wh=1,Object.defineProperty(fi,"__esModule",{value:!0}),fi.buildProfanityFilter=fi.DEFAULT_PROFANITY=void 0,fi.DEFAULT_PROFANITY=["ass","asses","asshole","bastard","bitch","bloody","bollocks","bugger","cock","cocks","cocksucker","crap","cunt","damn","dick","douche","dumb","dumber","dumbest","fag","faggot","fuck","fucked","fucker","fucking","goddam","goddamn","goddamned","hell","jerk","moron","nazi","nuts","piss","pisser","pissing","prick","retard","shit","shitty","slut","tits","twat","wanker"];function o(i,c){var s;const d=i.filter(Boolean).map(m=>m.trim().toLowerCase()).filter(m=>m.length>0),u=Array.from(new Set(d)),f=c?.matchSubstrings===!0,p=(s=c?.wordBoundary)!==null&&s!==void 0?s:"(?:^|[^a-z0-9])(?:%s)(?:$|[^a-z0-9])",E=u.map(m=>{const b=m.replace(/[.*+?^\${}()|[\\]\\\\]/g,"\\\\$&");if(f)return new RegExp(b,"i");const v=p.replace("%s",b);return new RegExp(v,"i")});return m=>{if(!m)return!1;const b=String(m).toLowerCase();return E.some(v=>v.test(b))}}return fi.buildProfanityFilter=o,fi}var Jh;function tA(){return Jh||(Jh=1,(function(o){var i=pi&&pi.__awaiter||function(A,G,F,k){function K(ie){return ie instanceof F?ie:new F(function(se){se(ie)})}return new(F||(F=Promise))(function(ie,se){function le(J){try{Y(k.next(J))}catch(ce){se(ce)}}function w(J){try{Y(k.throw(J))}catch(ce){se(ce)}}function Y(J){J.done?ie(J.value):K(J.value).then(le,w)}Y((k=k.apply(A,G||[])).next())})},c=pi&&pi.__rest||function(A,G){var F={};for(var k in A)Object.prototype.hasOwnProperty.call(A,k)&&G.indexOf(k)<0&&(F[k]=A[k]);if(A!=null&&typeof Object.getOwnPropertySymbols=="function")for(var K=0,k=Object.getOwnPropertySymbols(A);K<k.length;K++)G.indexOf(k[K])<0&&Object.prototype.propertyIsEnumerable.call(A,k[K])&&(F[k[K]]=A[k[K]]);return F};Object.defineProperty(o,"__esModule",{value:!0}),o.DEFAULT_PROFANITY=o.nouns=o.adjectives=o.uniqueUsernameGenerator=o.generateUsername=o.generateFromEmail=o.generateMany=o.generateUniqueAsync=void 0;const s=Vh(),d=eA(),u=Xh();function f(A,G,F=1e3){return i(this,void 0,void 0,function*(){const k=new Set;for(let K=0;K<F;K++){const ie=v(A);if(k.has(ie))continue;if(!(yield Promise.resolve(G(ie))))return ie;k.add(ie)}throw new Error("Unable to find a unique username within the given attempts")})}o.generateUniqueAsync=f;function p(A){const{count:G,unique:F=!1}=A,k=c(A,["count","unique"]),K=[],ie=new Set;for(let se=0;se<G;se++){let le=v(k);if(F){let w=0;for(;ie.has(le)&&w<1e3;)le=v(k),w++;if(ie.has(le))throw new Error("Unable to produce the requested number of unique usernames");ie.add(le)}K.push(le)}return K}o.generateMany=p;const E=A=>{let G;switch(A){case 1:G=Math.floor((0,d.getRandomInt)(1,9)).toString();break;case 2:G=Math.floor((0,d.getRandomInt)(10,90)).toString();break;case 3:G=Math.floor((0,d.getRandomInt)(100,900)).toString();break;case 4:G=Math.floor((0,d.getRandomInt)(1e3,9e3)).toString();break;case 5:G=Math.floor((0,d.getRandomInt)(1e4,9e4)).toString();break;case 6:G=Math.floor((0,d.getRandomInt)(1e5,9e5)).toString();break;default:G="";break}return G};function m(A,G){var F;let K=A.replace(/@.+/,"").replace(/[&/\\\\#,+()$~%._@'":*?<>{}]/g,"");const ie=typeof G=="object"&&G!==null?G:{randomDigits:typeof G=="number"?G:void 0},se=ie.stripLeadingDigits!==!1,le=(F=ie.leadingFallback)!==null&&F!==void 0?F:"user";se&&(K=K.replace(/^[0-9]+/,""),K.length===0&&(K=le));const w=typeof ie.randomDigits=="number"?ie.randomDigits:void 0;return K+E(w)}o.generateFromEmail=m;function b(A,G,F,k){const K=y(),ie=h(),se=K[Math.floor(Math.random()*K.length)],le=k?k.replace(/\\s{2,}/g," ").replace(/\\s/g,A??"").toLocaleLowerCase():ie[Math.floor(Math.random()*ie.length)];let w;return A?w=le+A+se+E(G):w=le+se+E(G),F?w.substring(0,F):w}o.generateUsername=b;function v(A){var G,F,k,K;if(A.dictionaries){const ie=Array.from(new Set([...(G=A.profanityList)!==null&&G!==void 0?G:u.DEFAULT_PROFANITY,...(F=A.exclude)!==null&&F!==void 0?F:[]])).filter(re=>!!re),se=(0,u.buildProfanityFilter)(ie,A.profanityOptions),w=A.dictionaries.map(re=>re.filter(me=>!se(String(me)))).filter(re=>re.length>0);if(w.length===0)throw new Error("All provided dictionaries are empty after filtering. Consider relaxing filters or providing more words.");const Y=typeof A.seed<"u"?(0,d.createSeededRandomInt)(A.seed):d.getRandomInt,J=re=>w[re][Y(0,w[re].length-1)],ce=w.length,ue=A.separator||"";let D,W=!1;if(A.template)D=q(A.template,w,Y,ue,A.randomDigits);else{const re=[];for(let _=0;_<ce;_++){const oe=J(_);re.push(oe)}D=x(re,(k=A.style)!==null&&k!==void 0?k:"lowerCase",ue)+E(A.randomDigits),W=!0}return W||(D=N(D,(K=A.style)!==null&&K!==void 0?K:"lowerCase",ue)),A.length?D.substring(0,A.length):D.substring(0,15)}else throw new Error("Cannot find any dictionary. Please provide at least one, or leave the 'dictionary' field empty in the config object")}o.uniqueUsernameGenerator=v;var T=Vh();Object.defineProperty(o,"adjectives",{enumerable:!0,get:function(){return T.adjectives}}),Object.defineProperty(o,"nouns",{enumerable:!0,get:function(){return T.nouns}});var O=Xh();Object.defineProperty(o,"DEFAULT_PROFANITY",{enumerable:!0,get:function(){return O.DEFAULT_PROFANITY}});function h(){const A=(0,u.buildProfanityFilter)(u.DEFAULT_PROFANITY);return s.adjectives.filter(G=>!A(G))}function y(){const A=(0,u.buildProfanityFilter)(u.DEFAULT_PROFANITY);return s.nouns.filter(G=>!A(G))}function C(A){return A&&A.charAt(0).toUpperCase()+A.slice(1).toLowerCase()}function I(A,G){return G?A.split(G).filter(Boolean):[A]}function N(A,G,F){const k=typeof F=="string"?F:"",K=I(A,k);switch(G){case"upperCase":return K.join(k).toUpperCase();case"capital":return K.map(C).join(k);case"camelCase":{const[ie,...se]=K.map(le=>le.toLowerCase());return[ie??"",...se.map(C)].join("")}case"pascalCase":return K.map(C).join("");case"kebabCase":return K.map(ie=>ie.toLowerCase()).join("-");case"snakeCase":return K.map(ie=>ie.toLowerCase()).join("_");case"lowerCase":default:return K.join(k).toLowerCase()}}function x(A,G,F){const k=A.map(K=>V(K,F));switch(G){case"upperCase":return k.map(K=>K.toUpperCase()).join(F);case"capital":{const K=k.join(F);return K&&K.charAt(0).toUpperCase()+K.slice(1).toLowerCase()}case"titleCase":return k.map(C).join(F);case"camelCase":{const[K,...ie]=k.map(se=>se.toLowerCase());return[K??"",...ie.map(C)].join("")}case"pascalCase":return k.map(C).join("");case"kebabCase":return k.map(K=>K.toLowerCase()).join("-");case"snakeCase":return k.map(K=>K.toLowerCase()).join("_");case"lowerCase":default:return k.map(K=>K.toLowerCase()).join(F)}}function V(A,G){if(!A)return A;if(!G)return A.replace(/[^a-zA-Z0-9]/g,"");const k=A.replace(/[^a-zA-Z0-9]+/g,G).replace(new RegExp(\`\${z(G)}{2,}\`,"g"),G);return U(k,G)}function z(A){return A.replace(/[.*+?^\${}()|[\\]\\\\]/g,"\\\\$&")}function U(A,G){const F=new RegExp(\`^\${z(G)}|\${z(G)}$\`,"g");return A.replace(F,"")}function q(A,G,F,k,K){const ie=/\\{(adjective|noun|digits(?::\\d+)?|\\d+)\\}/gi,se=Y=>G[Y][F(0,G[Y].length-1)];let le=-1,w=-1;return G.length>0&&(le=0),G.length>1&&(w=1),A.replace(ie,Y=>{const J=Y.slice(1,-1);if(J.startsWith("digits")){const ue=J.split(":"),D=ue[1]?parseInt(ue[1],10):K??0;return E(Number.isFinite(D)?D:void 0)}if(J==="adjective"&&le>=0)return se(le);if(J==="noun"&&w>=0)return se(w);const ce=parseInt(J,10);return Number.isFinite(ce)&&ce>=0&&ce<G.length?se(ce):Y}).replace(/\\s+/g,k||"")}})(pi)),pi}var op=tA();const nA=3600*24*365;function aA(o){try{const i=document.cookie.match(new RegExp(\`(?:^|; )\${oA(o)}=([^;]*)\`));return i?decodeURIComponent(i[1]):null}catch{return null}}function iA(o,i){try{const c=encodeURIComponent(i);document.cookie=\`\${o}=\${c}; path=/; max-age=\${nA}; SameSite=Lax\`}catch{}}function rA(o){try{document.cookie=\`\${o}=; path=/; max-age=0\`}catch{}}function oA(o){return o.replace(/[.*+?^\${}()|[\\]\\\\]/g,"\\\\$&")}const Xt={getItem:aA,setItem:iA,removeItem:rA},gp="plannotator-identity";function sT(){const o=op.uniqueUsernameGenerator({dictionaries:[op.adjectives,op.nouns],separator:"|||",style:"lowerCase",randomDigits:0,length:50}),[i,c]=o.split("|||");return\`\${i}-\${c}-tater\`}function fs(){const o=Xt.getItem(gp);if(o)return o;const i=sT();return lT(i),i}function lT(o){Xt.setItem(gp,o)}function sA(){const o=sT();return lT(o),o}function Zh(o){return o?Xt.getItem(gp)===o:!1}const lA=Z.forwardRef(({blocks:o,markdown:i,annotations:c,onAddAnnotation:s,onSelectAnnotation:d,selectedAnnotationId:u,mode:f,taterMode:p,globalAttachments:E=[],onAddGlobalAttachment:m,onRemoveGlobalAttachment:b},v)=>{const[T,O]=Z.useState(!1),[h,y]=Z.useState(!1),[C,I]=Z.useState(""),N=Z.useRef(null),x=async()=>{try{await navigator.clipboard.writeText(i),O(!0),setTimeout(()=>O(!1),2e3)}catch(_){console.error("Failed to copy:",_)}},V=()=>{if(!C.trim())return;const _={id:\`global-\${Date.now()}\`,blockId:"",startOffset:0,endOffset:0,type:Ze.GLOBAL_COMMENT,text:C.trim(),originalText:"",createdA:Date.now(),author:fs()};s(_),I(""),y(!1)};Z.useEffect(()=>{h&&N.current?.focus()},[h]);const z=Z.useRef(null),U=Z.useRef(null),q=Z.useRef(f),A=Z.useRef(s),G=Z.useRef(null),[F,k]=Z.useState(null),[K,ie]=Z.useState(null),[se,le]=Z.useState(!1),[w,Y]=Z.useState(!1),J=Z.useRef(null);Z.useEffect(()=>{q.current=f},[f]),Z.useEffect(()=>{A.current=s},[s]);const ce=(_,oe,ne,Ee,ve)=>{const Oe=_.getDoms(oe.id);let xe="",ke=0;if(Oe?.length>0){let De=Oe[0].parentElement;for(;De&&!De.dataset.blockId;)De=De.parentElement;De?.dataset.blockId&&(xe=De.dataset.blockId,ke=(De.textContent||"").split(oe.text)[0]?.length||0)}const Ue={id:oe.id,blockId:xe,startOffset:ke,endOffset:ke+oe.text.length,type:ne,text:Ee,originalText:oe.text,createdA:Date.now(),author:fs(),startMeta:oe.startMeta,endMeta:oe.endMeta,imagePaths:ve};ne===Ze.DELETION?_.addClass("deletion",oe.id):ne===Ze.COMMENT&&_.addClass("comment",oe.id),A.current(Ue)},ue=Z.useCallback(_=>{if(!z.current)return null;const oe=document.createTreeWalker(z.current,NodeFilter.SHOW_TEXT,null);let ne;for(;ne=oe.nextNode();){const dt=(ne.textContent||"").indexOf(_);if(dt!==-1){const ft=document.createRange();return ft.setStart(ne,dt),ft.setEnd(ne,dt+_.length),ft}}const ve=(z.current.textContent||"").indexOf(_);if(ve===-1||!window.getSelection())return null;const xe=document.createTreeWalker(z.current,NodeFilter.SHOW_TEXT,null);let ke=0,Ue=null,he=0,De=null,Qe=0;for(;ne=xe.nextNode();){const tt=ne.textContent?.length||0;if(!Ue&&ke+tt>ve&&(Ue=ne,he=ve-ke),Ue&&ke+tt>=ve+_.length){De=ne,Qe=ve+_.length-ke;break}ke+=tt}if(Ue&&De){const tt=document.createRange();return tt.setStart(Ue,he),tt.setEnd(De,Qe),tt}return null},[]);Z.useImperativeHandle(v,()=>({removeHighlight:_=>{U.current?.remove(_),z.current?.querySelectorAll(\`[data-bind-id="\${_}"]\`)?.forEach(ne=>{const Ee=ne.parentNode;for(;ne.firstChild;)Ee?.insertBefore(ne.firstChild,ne);ne.remove()})},clearAllHighlights:()=>{z.current?.querySelectorAll("[data-bind-id]")?.forEach(ne=>{const Ee=ne.parentNode;for(;ne.firstChild;)Ee?.insertBefore(ne.firstChild,ne);ne.remove()}),z.current?.querySelectorAll(".annotation-highlight")?.forEach(ne=>{const Ee=ne.parentNode;for(;ne.firstChild;)Ee?.insertBefore(ne.firstChild,ne);ne.remove()})},applySharedAnnotations:_=>{const oe=U.current;!oe||!z.current||_.forEach(ne=>{const Ee=oe.getDoms(ne.id);if(Ee&&Ee.length>0||z.current?.querySelector(\`[data-bind-id="\${ne.id}"]\`))return;const Oe=ue(ne.originalText);if(!Oe){console.warn(\`Could not find text for annotation \${ne.id}: "\${ne.originalText.slice(0,50)}..."\`);return}try{const xe=[],ke=document.createTreeWalker(Oe.commonAncestorContainer.nodeType===Node.TEXT_NODE?Oe.commonAncestorContainer.parentNode:Oe.commonAncestorContainer,NodeFilter.SHOW_TEXT,null);let Ue,he=!1;for(;Ue=ke.nextNode();){if(Ue===Oe.startContainer){he=!0;const De=Oe.startOffset,Qe=Ue===Oe.endContainer?Oe.endOffset:Ue.length;if(Qe>De&&xe.push({node:Ue,start:De,end:Qe}),Ue===Oe.endContainer)break;continue}if(Ue===Oe.endContainer){if(he){const De=Oe.endOffset;De>0&&xe.push({node:Ue,start:0,end:De})}break}he&&Ue.length>0&&xe.push({node:Ue,start:0,end:Ue.length})}if(xe.length===0){console.warn(\`No text nodes found for annotation \${ne.id}\`);return}xe.reverse().forEach(({node:De,start:Qe,end:tt})=>{try{const dt=document.createRange();dt.setStart(De,Qe),dt.setEnd(De,tt);const ft=document.createElement("mark");ft.className="annotation-highlight",ft.dataset.bindId=ne.id,ne.type===Ze.DELETION?ft.classList.add("deletion"):ne.type===Ze.COMMENT&&ft.classList.add("comment"),dt.surroundContents(ft),ft.addEventListener("click",()=>{d(ne.id)})}catch(dt){console.warn(\`Failed to wrap text node for annotation \${ne.id}:\`,dt)}})}catch(xe){console.warn(\`Failed to apply highlight for annotation \${ne.id}:\`,xe)}})}}),[ue,d]),Z.useEffect(()=>{if(!z.current)return;const _=new Ic({$root:z.current,exceptSelectors:[".annotation-toolbar","button"],wrapTag:"mark",style:{className:"annotation-highlight"}});return U.current=_,_.on(Ic.event.CREATE,({sources:oe})=>{if(oe.length>0){const ne=oe[0],Ee=_.getDoms(ne.id);Ee?.length>0&&(G.current&&(_.remove(G.current.id),G.current=null),q.current==="redline"?(ce(_,ne,Ze.DELETION),window.getSelection()?.removeAllRanges()):(G.current=ne,k({element:Ee[0],source:ne})))}}),_.on(Ic.event.CLICK,({id:oe})=>{d(oe)}),_.run(),()=>_.dispose()},[d]),Z.useEffect(()=>{const _=U.current;_&&c.forEach(oe=>{try{_.getDoms(oe.id)?.length>0&&(oe.type===Ze.DELETION?_.addClass("deletion",oe.id):oe.type===Ze.COMMENT&&_.addClass("comment",oe.id))}catch{}})},[c]);const D=(_,oe,ne)=>{const Ee=U.current;!F||!Ee||(ce(Ee,F.source,_,oe,ne),G.current=null,k(null),window.getSelection()?.removeAllRanges())},W=()=>{F&&U.current&&U.current.remove(F.source.id),G.current=null,k(null),window.getSelection()?.removeAllRanges()},re=(_,oe,ne)=>{const Ee=U.current;if(!K||!Ee)return;const ve=K.element.querySelector("code");if(!ve)return;const Oe=document.createRange();Oe.selectNodeContents(ve);const xe=window.getSelection();xe?.removeAllRanges(),xe?.addRange(Oe);const ke=\`codeblock-\${Date.now()}\`,Ue=ve.textContent||"",he=document.createElement("mark");he.className="annotation-highlight",he.dataset.bindId=ke,Oe.surroundContents(he),_===Ze.DELETION?he.classList.add("deletion"):_===Ze.COMMENT&&he.classList.add("comment");const De={id:ke,blockId:K.block.id,startOffset:0,endOffset:Ue.length,type:_,text:oe,originalText:Ue,createdA:Date.now(),author:fs(),imagePaths:ne};A.current(De),xe?.removeAllRanges(),ie(null),Y(!1)},me=()=>{ie(null),Y(!1)};return S.jsxs("div",{className:"relative z-50 w-full max-w-3xl xl:max-w-5xl 2xl:max-w-6xl",children:[p&&S.jsx(ZN,{}),S.jsxs("article",{ref:z,className:"w-full max-w-3xl xl:max-w-5xl 2xl:max-w-6xl bg-card border border-border/50 rounded-xl shadow-xl p-5 md:p-8 lg:p-10 xl:p-12 relative",children:[S.jsxs("div",{className:"absolute top-3 right-3 md:top-5 md:right-5 flex items-start gap-2",children:[m&&b&&S.jsx(pp,{paths:E,onAdd:m,onRemove:b,variant:"toolbar"}),h?S.jsxs("form",{onSubmit:_=>{_.preventDefault(),V()},className:"flex items-start gap-1.5 bg-muted/80 rounded-md p-1",children:[S.jsx("textarea",{ref:N,rows:1,className:"bg-transparent text-xs min-w-40 md:min-w-56 max-w-80 max-h-32 placeholder:text-muted-foreground resize-none px-2 py-1.5 focus:outline-none",style:{fieldSizing:"content"},placeholder:"Add a global comment...",value:C,onChange:_=>I(_.target.value),onKeyDown:_=>{_.key==="Escape"&&(y(!1),I("")),_.key==="Enter"&&!_.shiftKey&&(_.preventDefault(),C.trim()&&V())}}),S.jsx("button",{type:"submit",disabled:!C.trim(),className:"self-start px-2 py-1.5 text-xs font-medium rounded bg-purple-600 text-white hover:bg-purple-500 disabled:opacity-50 transition-all",children:"Add"}),S.jsx("button",{type:"button",onClick:()=>{y(!1),I("")},className:"self-start p-1 rounded text-muted-foreground hover:text-foreground hover:bg-muted transition-colors",children:S.jsx("svg",{className:"w-3.5 h-3.5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:S.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M6 18L18 6M6 6l12 12"})})})]}):S.jsxs("button",{onClick:()=>y(!0),className:"flex items-center gap-1.5 px-2.5 py-1.5 text-xs font-medium text-muted-foreground hover:text-foreground bg-muted/50 hover:bg-muted rounded-md transition-colors",title:"Add global comment",children:[S.jsx("svg",{className:"w-3.5 h-3.5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:S.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M12 21a9.004 9.004 0 008.716-6.747M12 21a9.004 9.004 0 01-8.716-6.747M12 21c2.485 0 4.5-4.03 4.5-9S14.485 3 12 3m0 18c-2.485 0-4.5-4.03-4.5-9S9.515 3 12 3m0 0a8.997 8.997 0 017.843 4.582M12 3a8.997 8.997 0 00-7.843 4.582m15.686 0A11.953 11.953 0 0112 10.5c-2.998 0-5.74-1.1-7.843-2.918m15.686 0A8.959 8.959 0 0121 12c0 .778-.099 1.533-.284 2.253m0 0A17.919 17.919 0 0112 16.5c-3.162 0-6.133-.815-8.716-2.247m0 0A9.015 9.015 0 013 12c0-1.605.42-3.113 1.157-4.418"})}),S.jsx("span",{className:"hidden md:inline",children:"Global comment"})]}),S.jsx("button",{onClick:x,className:"flex items-center gap-1.5 px-2.5 py-1.5 text-xs font-medium text-muted-foreground hover:text-foreground bg-muted/50 hover:bg-muted rounded-md transition-colors",title:T?"Copied!":"Copy plan",children:T?S.jsxs(S.Fragment,{children:[S.jsx("svg",{className:"w-3.5 h-3.5 text-green-500",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:S.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M5 13l4 4L19 7"})}),S.jsx("span",{className:"hidden md:inline",children:"Copied!"})]}):S.jsxs(S.Fragment,{children:[S.jsx("svg",{className:"w-3.5 h-3.5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:S.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z"})}),S.jsx("span",{className:"hidden md:inline",children:"Copy plan"})]})})]}),o.map(_=>_.type==="code"?S.jsx(cT,{block:_,onHover:oe=>{J.current&&(clearTimeout(J.current),J.current=null),le(!1),F||ie({block:_,element:oe})},onLeave:()=>{J.current=setTimeout(()=>{le(!0),setTimeout(()=>{ie(null),le(!1)},150)},100)},isHovered:K?.block.id===_.id},_.id):S.jsx(dA,{block:_},_.id)),S.jsx(jN,{highlightElement:F?.element??null,onAnnotate:D,onClose:W}),K&&!F&&S.jsx(uA,{element:K.element,onAnnotate:re,onClose:me,isExiting:se,onMouseEnter:()=>{J.current&&(clearTimeout(J.current),J.current=null),le(!1)},onMouseLeave:()=>{w||(J.current=setTimeout(()=>{le(!0),setTimeout(()=>{ie(null),le(!1)},150)},100))},onLockChange:Y})]})]})}),ar=({text:o})=>{const i=[];let c=o,s=0;for(;c.length>0;){let d=c.match(/^\\*\\*(.+?)\\*\\*/);if(d){i.push(S.jsx("strong",{className:"font-semibold",children:d[1]},s++)),c=c.slice(d[0].length);continue}if(d=c.match(/^\\*(.+?)\\*/),d){i.push(S.jsx("em",{children:d[1]},s++)),c=c.slice(d[0].length);continue}if(d=c.match(/^\`([^\`]+)\`/),d){i.push(S.jsx("code",{className:"px-1.5 py-0.5 rounded bg-muted text-sm font-mono",children:d[1]},s++)),c=c.slice(d[0].length);continue}if(d=c.match(/^\\[([^\\]]+)\\]\\(([^)]+)\\)/),d){i.push(S.jsx("a",{href:d[2],target:"_blank",rel:"noopener noreferrer",className:"text-primary underline underline-offset-2 hover:text-primary/80",children:d[1]},s++)),c=c.slice(d[0].length);continue}const u=c.slice(1).search(/[\\*\`\\[]/);if(u===-1){i.push(c);break}else i.push(c.slice(0,u+1)),c=c.slice(u+1)}return S.jsx(S.Fragment,{children:i})},cA=o=>{const i=o.split(\`
|
|
528
528
|
\`).filter(u=>u.trim());if(i.length===0)return{headers:[],rows:[]};const c=u=>u.replace(/^\\|/,"").replace(/\\|$/,"").split("|").map(f=>f.trim()),s=c(i[0]),d=[];for(let u=1;u<i.length;u++){const f=i[u].trim();/^[\\|\\-:\\s]+$/.test(f)||d.push(c(f))}return{headers:s,rows:d}},dA=({block:o})=>{switch(o.type){case"heading":const i=\`h\${o.level||1}\`,c={1:"text-2xl font-bold mb-4 mt-6 first:mt-0 tracking-tight",2:"text-xl font-semibold mb-3 mt-8 text-foreground/90",3:"text-base font-semibold mb-2 mt-6 text-foreground/80"}[o.level||1]||"text-base font-semibold mb-2 mt-4";return S.jsx(i,{className:c,"data-block-id":o.id,children:S.jsx(ar,{text:o.content})});case"blockquote":return S.jsx("blockquote",{className:"border-l-2 border-primary/50 pl-4 my-4 text-muted-foreground italic","data-block-id":o.id,children:S.jsx(ar,{text:o.content})});case"list-item":{const s=(o.level||0)*1.25,d=o.checked!==void 0;return S.jsxs("div",{className:"flex gap-3 my-1.5","data-block-id":o.id,style:{marginLeft:\`\${s}rem\`},children:[S.jsx("span",{className:"select-none shrink-0 flex items-center",children:d?o.checked?S.jsx("svg",{className:"w-4 h-4 text-green-500",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2.5,children:S.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9 12.75L11.25 15 15 9.75M21 12a9 9 0 11-18 0 9 9 0 0118 0z"})}):S.jsx("svg",{className:"w-4 h-4 text-muted-foreground/50",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,children:S.jsx("circle",{cx:"12",cy:"12",r:"9"})}):S.jsx("span",{className:"text-primary/60",children:(o.level||0)===0?"\u2022":(o.level||0)===1?"\u25E6":"\u25AA"})}),S.jsx("span",{className:\`text-sm leading-relaxed \${d&&o.checked?"text-muted-foreground line-through":"text-foreground/90"}\`,children:S.jsx(ar,{text:o.content})})]})}case"code":return S.jsx(cT,{block:o});case"table":{const{headers:s,rows:d}=cA(o.content);return S.jsx("div",{className:"my-4 overflow-x-auto","data-block-id":o.id,children:S.jsxs("table",{className:"min-w-full border-collapse text-sm",children:[S.jsx("thead",{children:S.jsx("tr",{className:"border-b border-border",children:s.map((u,f)=>S.jsx("th",{className:"px-3 py-2 text-left font-semibold text-foreground/90 bg-muted/30",children:S.jsx(ar,{text:u})},f))})}),S.jsx("tbody",{children:d.map((u,f)=>S.jsx("tr",{className:"border-b border-border/50 hover:bg-muted/20",children:u.map((p,E)=>S.jsx("td",{className:"px-3 py-2 text-foreground/80",children:S.jsx(ar,{text:p})},E))},f))})]})})}case"hr":return S.jsx("hr",{className:"border-border/30 my-8","data-block-id":o.id});default:return S.jsx("p",{className:"mb-4 leading-relaxed text-foreground/90 text-[15px]","data-block-id":o.id,children:S.jsx(ar,{text:o.content})})}},cT=({block:o,onHover:i,onLeave:c,isHovered:s})=>{const[d,u]=Z.useState(!1),f=Z.useRef(null),p=Z.useRef(null);Z.useEffect(()=>{p.current&&(p.current.removeAttribute("data-highlighted"),p.current.className=\`hljs font-mono\${o.language?\` language-\${o.language}\`:""}\`,bN.highlightElement(p.current))},[o.content,o.language]);const E=Z.useCallback(async()=>{try{await navigator.clipboard.writeText(o.content),u(!0),setTimeout(()=>u(!1),2e3)}catch(v){console.error("Failed to copy:",v)}},[o.content]),m=()=>{f.current&&i(f.current)},b=\`hljs font-mono\${o.language?\` language-\${o.language}\`:""}\`;return S.jsxs("div",{ref:f,className:"relative group my-5","data-block-id":o.id,onMouseEnter:m,onMouseLeave:c,children:[S.jsx("button",{onClick:E,className:"absolute top-2 right-2 p-1.5 rounded-md bg-muted/80 hover:bg-muted text-muted-foreground hover:text-foreground opacity-0 group-hover:opacity-100 transition-opacity z-10",title:d?"Copied!":"Copy code",children:d?S.jsx("svg",{className:"w-4 h-4 text-green-500",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:S.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M5 13l4 4L19 7"})}):S.jsx("svg",{className:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:S.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z"})})}),S.jsx("pre",{className:"rounded-lg text-[13px] overflow-x-auto bg-muted/50 border border-border/30",children:S.jsx("code",{ref:p,className:b,children:o.content})})]})},uA=({element:o,onAnnotate:i,onClose:c,isExiting:s,onMouseEnter:d,onMouseLeave:u,onLockChange:f})=>{const[p,E]=Z.useState("menu"),[m,b]=Z.useState(""),[v,T]=Z.useState([]),[O,h]=Z.useState({top:0,right:0}),y=Z.useRef(null);Z.useEffect(()=>{p==="input"&&y.current?.focus()},[p]),Z.useEffect(()=>{f?.(p==="input")},[p,f]),Z.useEffect(()=>{const x=()=>{const V=o.getBoundingClientRect();h({top:V.top-40,right:window.innerWidth-V.right})};return x(),window.addEventListener("scroll",x,!0),window.addEventListener("resize",x),()=>{window.removeEventListener("scroll",x,!0),window.removeEventListener("resize",x)}},[o]);const{top:C,right:I}=O,N=x=>{x.preventDefault(),(m.trim()||v.length>0)&&i(Ze.COMMENT,m||void 0,v.length>0?v:void 0)};return to.createPortal(S.jsxs("div",{className:"annotation-toolbar fixed z-[100] bg-popover border border-border rounded-lg shadow-2xl",style:{top:C,right:I,animation:s?"code-toolbar-out 0.15s ease-in forwards":"code-toolbar-in 0.2s ease-out"},onMouseDown:x=>x.stopPropagation(),onMouseEnter:d,onMouseLeave:u,children:[S.jsx("style",{children:\`
|
|
529
529
|
@keyframes code-toolbar-in {
|
|
530
530
|
from {
|
|
@@ -571,7 +571,7 @@ https://github.com/highlightjs/highlight.js/issues/2277\`),vt=de,_e=Ce),Fe===voi
|
|
|
571
571
|
created: \${new Date().toISOString().slice(0,19)}Z
|
|
572
572
|
source: plannotator
|
|
573
573
|
tags: [plan, ...]
|
|
574
|
-
---\`})]})]})]}),S.jsx("div",{className:"border-t border-border"}),S.jsxs("div",{className:"flex items-center justify-between",children:[S.jsxs("div",{children:[S.jsx("div",{className:"text-sm font-medium",children:"Bear Notes"}),S.jsx("div",{className:"text-xs text-muted-foreground",children:"Auto-save approved plans to Bear"})]}),S.jsx("button",{role:"switch","aria-checked":O.enabled,onClick:()=>C(!O.enabled),className:\`relative inline-flex h-6 w-11 items-center rounded-full transition-colors \${O.enabled?"bg-primary":"bg-muted"}\`,children:S.jsx("span",{className:\`inline-block h-4 w-4 transform rounded-full bg-white shadow-sm transition-transform \${O.enabled?"translate-x-6":"translate-x-1"}\`})})]})]})]})}),document.body)]})};async function LA(o){const i=JSON.stringify(o),c=new TextEncoder().encode(i),s=new CompressionStream("deflate-raw"),d=s.writable.getWriter();d.write(c),d.close();const u=await new Response(s.readable).arrayBuffer(),f=new Uint8Array(u);return btoa(String.fromCharCode(...f)).replace(/\\+/g,"-").replace(/\\//g,"_").replace(/=/g,"")}async function wA(o){const i=o.replace(/-/g,"+").replace(/_/g,"/"),c=atob(i),s=Uint8Array.from(c,E=>E.charCodeAt(0)),d=new DecompressionStream("deflate-raw"),u=d.writable.getWriter();u.write(s),u.close();const f=await new Response(d.readable).arrayBuffer(),p=new TextDecoder().decode(f);return JSON.parse(p)}function kA(o){return o.map(i=>{const c=i.author||null,s=i.imagePaths?.length?i.imagePaths:void 0;if(i.type===Ze.GLOBAL_COMMENT)return["G",i.text||"",c,s];const d=i.type[0];return d==="D"?["D",i.originalText,c,s]:[d,i.originalText,i.text||"",c,s]})}function PA(o){const i={D:Ze.DELETION,R:Ze.REPLACEMENT,C:Ze.COMMENT,I:Ze.INSERTION,G:Ze.GLOBAL_COMMENT};return o.map((c,s)=>{const d=c[0];if(d==="G"){const m=c[1],b=c[2],v=c[3];return{id:\`shared-\${s}-\${Date.now()}\`,blockId:"",startOffset:0,endOffset:0,type:Ze.GLOBAL_COMMENT,text:m||void 0,originalText:"",createdA:Date.now()+s,author:b||void 0,imagePaths:v?.length?v:void 0}}const u=c[1],f=d==="D"?void 0:c[2],p=d==="D"?c[2]:c[3],E=d==="D"?c[3]:c[4];return{id:\`shared-\${s}-\${Date.now()}\`,blockId:"",startOffset:0,endOffset:0,type:i[d],text:f||void 0,originalText:u,createdA:Date.now()+s,author:p||void 0,imagePaths:E?.length?E:void 0}})}const UA="https://share.plannotator.ai";async function zA(o,i,c){const s={p:o,a:kA(i),g:c?.length?c:void 0},d=await LA(s);return\`\${UA}/#\${d}\`}async function FA(){const o=window.location.hash.slice(1);if(!o)return null;try{return await wA(o)}catch(i){return console.warn("Failed to parse share hash:",i),null}}function BA(o){const i=new Blob([o]).size;return i<1024?\`\${i} B\`:\`\${(i/1024).toFixed(1)} KB\`}function GA(o,i,c,s,d,u,f){const[p,E]=Z.useState(!1),[m,b]=Z.useState(!0),[v,T]=Z.useState(""),[O,h]=Z.useState(""),[y,C]=Z.useState(null),[I,N]=Z.useState(null),x=Z.useCallback(()=>{C(null),N(null)},[]),V=Z.useCallback(async()=>{try{const U=await FA();if(U){s(U.p);const q=PA(U.a);return d(q),U.g?.length&&(u(U.g),N(U.g)),C(q),E(!0),f?.(),window.history.replaceState({},"",window.location.pathname),!0}return!1}catch(U){return console.error("Failed to load from share hash:",U),!1}},[s,d,u,f]);Z.useEffect(()=>{V().finally(()=>b(!1))},[]),Z.useEffect(()=>{const U=()=>{window.location.hash.length>1&&V()};return window.addEventListener("hashchange",U),()=>window.removeEventListener("hashchange",U)},[V]);const z=Z.useCallback(async()=>{try{const U=await zA(o,i,c);T(U),h(BA(U))}catch(U){console.error("Failed to generate share URL:",U),T(""),h("")}},[o,i,c]);return Z.useEffect(()=>{z()},[z]),{isSharedSession:p,isLoadingShared:m,shareUrl:v,shareUrlSize:O,pendingSharedAnnotations:y,sharedGlobalAttachments:I,clearPendingSharedAnnotations:x,refreshShareUrl:z}}const YA="https://api.github.com/repos/backnotprop/plannotator/releases/latest";function KA(o,i){const c=u=>u.replace(/^v/,""),s=c(o).split(".").map(Number),d=c(i).split(".").map(Number);for(let u=0;u<Math.max(s.length,d.length);u++){const f=s[u]||0,p=d[u]||0;if(p>f)return!0;if(p<f)return!1}return!1}function qA(){const[o,i]=Z.useState(null);return Z.useEffect(()=>{(async()=>{try{const s="0.4.
|
|
574
|
+
---\`})]})]})]}),S.jsx("div",{className:"border-t border-border"}),S.jsxs("div",{className:"flex items-center justify-between",children:[S.jsxs("div",{children:[S.jsx("div",{className:"text-sm font-medium",children:"Bear Notes"}),S.jsx("div",{className:"text-xs text-muted-foreground",children:"Auto-save approved plans to Bear"})]}),S.jsx("button",{role:"switch","aria-checked":O.enabled,onClick:()=>C(!O.enabled),className:\`relative inline-flex h-6 w-11 items-center rounded-full transition-colors \${O.enabled?"bg-primary":"bg-muted"}\`,children:S.jsx("span",{className:\`inline-block h-4 w-4 transform rounded-full bg-white shadow-sm transition-transform \${O.enabled?"translate-x-6":"translate-x-1"}\`})})]})]})]})}),document.body)]})};async function LA(o){const i=JSON.stringify(o),c=new TextEncoder().encode(i),s=new CompressionStream("deflate-raw"),d=s.writable.getWriter();d.write(c),d.close();const u=await new Response(s.readable).arrayBuffer(),f=new Uint8Array(u);return btoa(String.fromCharCode(...f)).replace(/\\+/g,"-").replace(/\\//g,"_").replace(/=/g,"")}async function wA(o){const i=o.replace(/-/g,"+").replace(/_/g,"/"),c=atob(i),s=Uint8Array.from(c,E=>E.charCodeAt(0)),d=new DecompressionStream("deflate-raw"),u=d.writable.getWriter();u.write(s),u.close();const f=await new Response(d.readable).arrayBuffer(),p=new TextDecoder().decode(f);return JSON.parse(p)}function kA(o){return o.map(i=>{const c=i.author||null,s=i.imagePaths?.length?i.imagePaths:void 0;if(i.type===Ze.GLOBAL_COMMENT)return["G",i.text||"",c,s];const d=i.type[0];return d==="D"?["D",i.originalText,c,s]:[d,i.originalText,i.text||"",c,s]})}function PA(o){const i={D:Ze.DELETION,R:Ze.REPLACEMENT,C:Ze.COMMENT,I:Ze.INSERTION,G:Ze.GLOBAL_COMMENT};return o.map((c,s)=>{const d=c[0];if(d==="G"){const m=c[1],b=c[2],v=c[3];return{id:\`shared-\${s}-\${Date.now()}\`,blockId:"",startOffset:0,endOffset:0,type:Ze.GLOBAL_COMMENT,text:m||void 0,originalText:"",createdA:Date.now()+s,author:b||void 0,imagePaths:v?.length?v:void 0}}const u=c[1],f=d==="D"?void 0:c[2],p=d==="D"?c[2]:c[3],E=d==="D"?c[3]:c[4];return{id:\`shared-\${s}-\${Date.now()}\`,blockId:"",startOffset:0,endOffset:0,type:i[d],text:f||void 0,originalText:u,createdA:Date.now()+s,author:p||void 0,imagePaths:E?.length?E:void 0}})}const UA="https://share.plannotator.ai";async function zA(o,i,c){const s={p:o,a:kA(i),g:c?.length?c:void 0},d=await LA(s);return\`\${UA}/#\${d}\`}async function FA(){const o=window.location.hash.slice(1);if(!o)return null;try{return await wA(o)}catch(i){return console.warn("Failed to parse share hash:",i),null}}function BA(o){const i=new Blob([o]).size;return i<1024?\`\${i} B\`:\`\${(i/1024).toFixed(1)} KB\`}function GA(o,i,c,s,d,u,f){const[p,E]=Z.useState(!1),[m,b]=Z.useState(!0),[v,T]=Z.useState(""),[O,h]=Z.useState(""),[y,C]=Z.useState(null),[I,N]=Z.useState(null),x=Z.useCallback(()=>{C(null),N(null)},[]),V=Z.useCallback(async()=>{try{const U=await FA();if(U){s(U.p);const q=PA(U.a);return d(q),U.g?.length&&(u(U.g),N(U.g)),C(q),E(!0),f?.(),window.history.replaceState({},"",window.location.pathname),!0}return!1}catch(U){return console.error("Failed to load from share hash:",U),!1}},[s,d,u,f]);Z.useEffect(()=>{V().finally(()=>b(!1))},[]),Z.useEffect(()=>{const U=()=>{window.location.hash.length>1&&V()};return window.addEventListener("hashchange",U),()=>window.removeEventListener("hashchange",U)},[V]);const z=Z.useCallback(async()=>{try{const U=await zA(o,i,c);T(U),h(BA(U))}catch(U){console.error("Failed to generate share URL:",U),T(""),h("")}},[o,i,c]);return Z.useEffect(()=>{z()},[z]),{isSharedSession:p,isLoadingShared:m,shareUrl:v,shareUrlSize:O,pendingSharedAnnotations:y,sharedGlobalAttachments:I,clearPendingSharedAnnotations:x,refreshShareUrl:z}}const YA="https://api.github.com/repos/backnotprop/plannotator/releases/latest";function KA(o,i){const c=u=>u.replace(/^v/,""),s=c(o).split(".").map(Number),d=c(i).split(".").map(Number);for(let u=0;u<Math.max(s.length,d.length);u++){const f=s[u]||0,p=d[u]||0;if(p>f)return!0;if(p<f)return!1}return!1}function qA(){const[o,i]=Z.useState(null);return Z.useEffect(()=>{(async()=>{try{const s="0.4.3",d=await fetch(YA);if(!d.ok)return;const u=await d.json(),f=u.tag_name,p=KA(s,f);i({currentVersion:s,latestVersion:f,updateAvailable:p,releaseUrl:u.html_url})}catch(s){console.debug("Update check failed:",s)}})()},[]),o}const QA="curl -fsSL https://plannotator.ai/install.sh | bash",HA=()=>{const o=qA(),[i,c]=Z.useState(!1),[s,d]=Z.useState(!1);if(!o?.updateAvailable||s)return null;const u=async()=>{try{await navigator.clipboard.writeText(QA),c(!0),setTimeout(()=>c(!1),2e3)}catch(f){console.error("Failed to copy:",f)}};return S.jsx("div",{className:"fixed bottom-4 right-4 z-50 max-w-sm animate-in slide-in-from-bottom-2 fade-in duration-300",children:S.jsx("div",{className:"bg-card border border-border rounded-lg shadow-xl p-4",children:S.jsxs("div",{className:"flex items-start gap-3",children:[S.jsx("div",{className:"flex-shrink-0 w-8 h-8 rounded-full bg-primary/20 flex items-center justify-center",children:S.jsx("svg",{className:"w-4 h-4 text-primary",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:S.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-8l-4-4m0 0L8 8m4-4v12"})})}),S.jsxs("div",{className:"flex-1 min-w-0",children:[S.jsxs("div",{className:"flex items-center justify-between gap-2",children:[S.jsx("h4",{className:"text-sm font-medium text-foreground",children:"Update available"}),S.jsx("button",{onClick:()=>d(!0),className:"text-muted-foreground hover:text-foreground transition-colors",children:S.jsx("svg",{className:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:S.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M6 18L18 6M6 6l12 12"})})})]}),S.jsxs("p",{className:"text-xs text-muted-foreground mt-0.5",children:[o.latestVersion," is available (you have ",o.currentVersion,")"]}),S.jsxs("div",{className:"mt-3 flex items-center gap-2",children:[S.jsx("button",{onClick:u,className:"flex-1 px-3 py-1.5 text-xs font-medium bg-primary text-primary-foreground rounded-md hover:opacity-90 transition-opacity",children:i?"Copied!":"Copy install command"}),S.jsx("a",{href:o.releaseUrl,target:"_blank",rel:"noopener noreferrer",className:"px-3 py-1.5 text-xs font-medium text-muted-foreground hover:text-foreground border border-border rounded-md hover:bg-muted transition-colors",children:"Notes"})]})]})]})})})},VA=\`# Implementation Plan: Real-time Collaboration
|
|
575
575
|
|
|
576
576
|
## Overview
|
|
577
577
|
Add real-time collaboration features to the editor using WebSocket connections and operational transforms.
|
|
@@ -845,7 +845,7 @@ export const CursorOverlay: React.FC<CursorOverlayProps> = ({
|
|
|
845
845
|
---
|
|
846
846
|
|
|
847
847
|
**Target:** Ship MVP in next sprint
|
|
848
|
-
\`,jA=()=>{const[o,i]=Z.useState(VA),[c,s]=Z.useState([]),[d,u]=Z.useState(null),[f,p]=Z.useState([]),[E,m]=Z.useState(!1),[b,v]=Z.useState(!1),[T,O]=Z.useState(!0),[h,y]=Z.useState("selection"),[C,I]=Z.useState(()=>Xt.getItem("plannotator-tater-mode")==="true"),[N,x]=Z.useState(!1),[V,z]=Z.useState(null),[U,q]=Z.useState([]),[A,G]=Z.useState(!0),[F,k]=Z.useState(!1),[K,ie]=Z.useState(null),[se,le]=Z.useState(null),w=Z.useRef(null),{isSharedSession:Y,isLoadingShared:J,shareUrl:ce,shareUrlSize:ue,pendingSharedAnnotations:D,clearPendingSharedAnnotations:W}=GA(o,c,U,i,s,q,()=>{G(!1)});Z.useEffect(()=>{if(D&&D.length>0){const he=setTimeout(()=>{w.current?.clearAllHighlights(),w.current?.applySharedAnnotations(D),W()},100);return()=>clearTimeout(he)}},[D,W]);const re=he=>{I(he),Xt.setItem("plannotator-tater-mode",String(he))};Z.useEffect(()=>{J||Y||fetch("/api/plan").then(he=>{if(!he.ok)throw new Error("Not in API mode");return he.json()}).then(he=>{i(he.plan),x(!0),he.origin&&z(he.origin)}).catch(()=>{x(!1)}).finally(()=>G(!1))},[J,Y]),Z.useEffect(()=>{p(PO(o))},[o]),Z.useEffect(()=>{const he=De=>{const Qe=De.clipboardData?.items;if(Qe){for(const tt of Qe)if(tt.type.startsWith("image/")){De.preventDefault();const dt=tt.getAsFile();if(dt){const ft=URL.createObjectURL(dt);le({file:dt,blobUrl:ft})}break}}};return document.addEventListener("paste",he),()=>document.removeEventListener("paste",he)},[]);const me=async(he,De)=>{if(se)try{const Qe=new FormData,tt=De?new File([he],"annotated.png",{type:"image/png"}):se.file;Qe.append("file",tt);const dt=await fetch("/api/upload",{method:"POST",body:Qe});if(dt.ok){const{path:ft}=await dt.json();q(yn=>[...yn,ft])}}catch{}finally{URL.revokeObjectURL(se.blobUrl),le(null)}},_=()=>{se&&(URL.revokeObjectURL(se.blobUrl),le(null))},oe=async()=>{k(!0);try{const he=bT(),De=hT(),Qe={};he.enabled&&he.vaultPath&&(Qe.obsidian={vaultPath:he.vaultPath,folder:he.folder||"plannotator",plan:o}),De.enabled&&(Qe.bear={plan:o}),await fetch("/api/approve",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(Qe)}),ie("approved")}catch{k(!1)}},ne=async()=>{k(!0);try{await fetch("/api/deny",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({feedback:Ue})}),ie("denied")}catch{k(!1)}},Ee=he=>{s(De=>[...De,he]),u(he.id),O(!0)},ve=he=>{w.current?.removeHighlight(he),s(De=>De.filter(Qe=>Qe.id!==he)),d===he&&u(null)},Oe=(he,De)=>{s(Qe=>Qe.map(tt=>tt.author===he?{...tt,author:De}:tt))},xe=he=>{q(De=>[...De,he])},ke=he=>{q(De=>De.filter(Qe=>Qe!==he))},Ue=Z.useMemo(()=>UO(f,c,U),[f,c,U]);return S.jsx(fA,{defaultTheme:"dark",children:S.jsxs("div",{className:"h-screen flex flex-col bg-background overflow-hidden",children:[C&&S.jsx(NA,{}),S.jsxs("header",{className:"h-12 flex items-center justify-between px-2 md:px-4 border-b border-border/50 bg-card/50 backdrop-blur-xl z-50",children:[S.jsxs("div",{className:"flex items-center gap-2 md:gap-3",children:[S.jsx("a",{href:"https://plannotator.ai",target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-1.5 md:gap-2 hover:opacity-80 transition-opacity",children:S.jsx("span",{className:"text-sm font-semibold tracking-tight",children:"Plannotator"})}),S.jsxs("a",{href:"https://github.com/backnotprop/plannotator/releases",target:"_blank",rel:"noopener noreferrer",className:"text-xs text-muted-foreground font-mono opacity-60 hidden md:inline hover:opacity-100 transition-opacity",children:["v","0.4.0"]}),V&&S.jsx("span",{className:\`text-[10px] px-1.5 py-0.5 rounded font-medium hidden md:inline \${V==="claude-code"?"bg-orange-500/15 text-orange-400":"bg-zinc-500/20 text-zinc-400"}\`,children:V==="claude-code"?"Claude Code":"OpenCode"})]}),S.jsxs("div",{className:"flex items-center gap-1 md:gap-2",children:[N&&S.jsxs(S.Fragment,{children:[S.jsxs("button",{onClick:()=>{c.length===0?v(!0):ne()},disabled:F,className:\`p-1.5 md:px-2.5 md:py-1 rounded-md text-xs font-medium transition-all \${F?"opacity-50 cursor-not-allowed bg-muted text-muted-foreground":"bg-accent/15 text-accent hover:bg-accent/25 border border-accent/30"}\`,title:"Deny with Feedback",children:[S.jsx("svg",{className:"w-4 h-4 md:hidden",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:S.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M8 12h.01M12 12h.01M16 12h.01M21 12c0 4.418-4.03 8-9 8a9.863 9.863 0 01-4.255-.949L3 20l1.395-3.72C3.512 15.042 3 13.574 3 12c0-4.418 4.03-8 9-8s9 3.582 9 8z"})}),S.jsx("span",{className:"hidden md:inline",children:F?"Sending...":"Deny with Feedback"})]}),S.jsxs("div",{className:"relative group/approve",children:[S.jsxs("button",{onClick:oe,disabled:F,className:\`px-2 py-1 md:px-2.5 rounded-md text-xs font-medium transition-all \${F?"opacity-50 cursor-not-allowed bg-muted text-muted-foreground":V==="claude-code"&&c.length>0?"bg-green-600/50 text-white/70 hover:bg-green-600 hover:text-white":"bg-green-600 text-white hover:bg-green-500"}\`,children:[S.jsx("span",{className:"md:hidden",children:F?"...":"OK"}),S.jsx("span",{className:"hidden md:inline",children:F?"Approving...":"Approve"})]}),V==="claude-code"&&c.length>0&&S.jsxs("div",{className:"absolute top-full right-0 mt-2 px-3 py-2 bg-popover border border-border rounded-lg shadow-xl text-xs text-foreground w-56 text-center opacity-0 invisible group-hover/approve:opacity-100 group-hover/approve:visible transition-all pointer-events-none z-50",children:[S.jsx("div",{className:"absolute bottom-full right-4 border-4 border-transparent border-b-border"}),S.jsx("div",{className:"absolute bottom-full right-4 mt-px border-4 border-transparent border-b-popover"}),"Claude Code doesn't support feedback on approval. Your annotations won't be seen."]})]}),S.jsx("div",{className:"w-px h-5 bg-border/50 mx-1 hidden md:block"})]}),S.jsx(bA,{}),S.jsx(MA,{taterMode:C,onTaterModeChange:re,onIdentityChange:Oe}),S.jsx("button",{onClick:()=>O(!T),className:\`p-1.5 rounded-md text-xs font-medium transition-all \${T?"bg-primary/15 text-primary":"text-muted-foreground hover:text-foreground hover:bg-muted"}\`,children:S.jsx("svg",{className:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:S.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M7 8h10M7 12h4m1 8l-4-4H5a2 2 0 01-2-2V6a2 2 0 012-2h14a2 2 0 012 2v8a2 2 0 01-2 2h-3l-4 4z"})})}),S.jsxs("button",{onClick:()=>m(!0),className:"p-1.5 md:px-2.5 md:py-1 rounded-md text-xs font-medium bg-muted hover:bg-muted/80 transition-colors",title:"Export",children:[S.jsx("svg",{className:"w-4 h-4 md:hidden",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:S.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-8l-4-4m0 0L8 8m4-4v12"})}),S.jsx("span",{className:"hidden md:inline",children:"Export"})]})]})]}),S.jsxs("div",{className:"flex-1 flex overflow-hidden",children:[S.jsx("main",{className:"flex-1 overflow-y-auto bg-grid",children:S.jsxs("div",{className:"min-h-full flex flex-col items-center p-3 md:p-8",children:[S.jsx("div",{className:"w-full max-w-3xl mb-3 md:mb-4 flex justify-start",children:S.jsx(RA,{mode:h,onChange:y,taterMode:C})}),S.jsx(lA,{ref:w,blocks:f,markdown:o,annotations:c,onAddAnnotation:Ee,onSelectAnnotation:u,selectedAnnotationId:d,mode:h,taterMode:C,globalAttachments:U,onAddGlobalAttachment:xe,onRemoveGlobalAttachment:ke})]})}),S.jsx(mA,{isOpen:T,blocks:f,annotations:c,selectedId:d,onSelect:u,onDelete:ve,shareUrl:ce})]}),S.jsx(EA,{isOpen:E,onClose:()=>m(!1),shareUrl:ce,shareUrlSize:ue,diffOutput:Ue,annotationCount:c.length,taterSprite:C?S.jsx(Ep,{}):void 0}),b&&S.jsx("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-background/80 backdrop-blur-sm p-4",children:S.jsxs("div",{className:"bg-card border border-border rounded-xl w-full max-w-sm shadow-2xl p-6",children:[S.jsxs("div",{className:"flex items-center gap-3 mb-4",children:[S.jsx("div",{className:"w-10 h-10 rounded-full bg-accent/20 flex items-center justify-center",children:S.jsx("svg",{className:"w-5 h-5 text-accent",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:S.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M7 8h10M7 12h4m1 8l-4-4H5a2 2 0 01-2-2V6a2 2 0 012-2h14a2 2 0 012 2v8a2 2 0 01-2 2h-3l-4 4z"})})}),S.jsx("h3",{className:"font-semibold",children:"Add Annotations First"})]}),S.jsx("p",{className:"text-sm text-muted-foreground mb-6",children:"To provide feedback, select text in the plan and add annotations. Claude will use your annotations to revise the plan."}),S.jsx("div",{className:"flex justify-end",children:S.jsx("button",{onClick:()=>v(!1),className:"px-4 py-2 rounded-md text-sm font-medium bg-primary text-primary-foreground hover:opacity-90 transition-opacity",children:"Got it"})})]})}),K&&S.jsx("div",{className:"fixed inset-0 z-[100] bg-background flex items-center justify-center",children:S.jsxs("div",{className:"text-center space-y-6 max-w-md px-8",children:[S.jsx("div",{className:\`mx-auto w-16 h-16 rounded-full flex items-center justify-center \${K==="approved"?"bg-green-500/20 text-green-500":"bg-accent/20 text-accent"}\`,children:K==="approved"?S.jsx("svg",{className:"w-8 h-8",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2.5,children:S.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M5 13l4 4L19 7"})}):S.jsx("svg",{className:"w-8 h-8",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2.5,children:S.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M8 12h.01M12 12h.01M16 12h.01M21 12c0 4.418-4.03 8-9 8a9.863 9.863 0 01-4.255-.949L3 20l1.395-3.72C3.512 15.042 3 13.574 3 12c0-4.418 4.03-8 9-8s9 3.582 9 8z"})})}),S.jsxs("div",{className:"space-y-2",children:[S.jsx("h2",{className:"text-xl font-semibold text-foreground",children:K==="approved"?"Plan Approved":"Feedback Sent"}),S.jsx("p",{className:"text-muted-foreground",children:K==="approved"?"Claude will proceed with the implementation.":"Claude will revise the plan based on your annotations."})]}),S.jsx("div",{className:"pt-4 border-t border-border",children:S.jsxs("p",{className:"text-sm text-muted-foreground",children:["Return to your ",S.jsx("span",{className:"text-foreground font-medium",children:"Claude Code terminal"})," to continue."]})})]})}),S.jsx(HA,{}),S.jsx(rT,{isOpen:!!se,imageSrc:se?.blobUrl??"",onAccept:me,onClose:_})]})})},TT=document.getElementById("root");if(!TT)throw new Error("Could not find root element to mount to");const WA=kO.createRoot(TT);WA.render(S.jsx(NO.StrictMode,{children:S.jsx(jA,{})}));</script>
|
|
848
|
+
\`,jA=()=>{const[o,i]=Z.useState(VA),[c,s]=Z.useState([]),[d,u]=Z.useState(null),[f,p]=Z.useState([]),[E,m]=Z.useState(!1),[b,v]=Z.useState(!1),[T,O]=Z.useState(!0),[h,y]=Z.useState("selection"),[C,I]=Z.useState(()=>Xt.getItem("plannotator-tater-mode")==="true"),[N,x]=Z.useState(!1),[V,z]=Z.useState(null),[U,q]=Z.useState([]),[A,G]=Z.useState(!0),[F,k]=Z.useState(!1),[K,ie]=Z.useState(null),[se,le]=Z.useState(null),w=Z.useRef(null),{isSharedSession:Y,isLoadingShared:J,shareUrl:ce,shareUrlSize:ue,pendingSharedAnnotations:D,clearPendingSharedAnnotations:W}=GA(o,c,U,i,s,q,()=>{G(!1)});Z.useEffect(()=>{if(D&&D.length>0){const he=setTimeout(()=>{w.current?.clearAllHighlights(),w.current?.applySharedAnnotations(D),W()},100);return()=>clearTimeout(he)}},[D,W]);const re=he=>{I(he),Xt.setItem("plannotator-tater-mode",String(he))};Z.useEffect(()=>{J||Y||fetch("/api/plan").then(he=>{if(!he.ok)throw new Error("Not in API mode");return he.json()}).then(he=>{i(he.plan),x(!0),he.origin&&z(he.origin)}).catch(()=>{x(!1)}).finally(()=>G(!1))},[J,Y]),Z.useEffect(()=>{p(PO(o))},[o]),Z.useEffect(()=>{const he=De=>{const Qe=De.clipboardData?.items;if(Qe){for(const tt of Qe)if(tt.type.startsWith("image/")){De.preventDefault();const dt=tt.getAsFile();if(dt){const ft=URL.createObjectURL(dt);le({file:dt,blobUrl:ft})}break}}};return document.addEventListener("paste",he),()=>document.removeEventListener("paste",he)},[]);const me=async(he,De)=>{if(se)try{const Qe=new FormData,tt=De?new File([he],"annotated.png",{type:"image/png"}):se.file;Qe.append("file",tt);const dt=await fetch("/api/upload",{method:"POST",body:Qe});if(dt.ok){const{path:ft}=await dt.json();q(yn=>[...yn,ft])}}catch{}finally{URL.revokeObjectURL(se.blobUrl),le(null)}},_=()=>{se&&(URL.revokeObjectURL(se.blobUrl),le(null))},oe=async()=>{k(!0);try{const he=bT(),De=hT(),Qe={};he.enabled&&he.vaultPath&&(Qe.obsidian={vaultPath:he.vaultPath,folder:he.folder||"plannotator",plan:o}),De.enabled&&(Qe.bear={plan:o}),await fetch("/api/approve",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(Qe)}),ie("approved")}catch{k(!1)}},ne=async()=>{k(!0);try{await fetch("/api/deny",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({feedback:Ue})}),ie("denied")}catch{k(!1)}},Ee=he=>{s(De=>[...De,he]),u(he.id),O(!0)},ve=he=>{w.current?.removeHighlight(he),s(De=>De.filter(Qe=>Qe.id!==he)),d===he&&u(null)},Oe=(he,De)=>{s(Qe=>Qe.map(tt=>tt.author===he?{...tt,author:De}:tt))},xe=he=>{q(De=>[...De,he])},ke=he=>{q(De=>De.filter(Qe=>Qe!==he))},Ue=Z.useMemo(()=>UO(f,c,U),[f,c,U]);return S.jsx(fA,{defaultTheme:"dark",children:S.jsxs("div",{className:"h-screen flex flex-col bg-background overflow-hidden",children:[C&&S.jsx(NA,{}),S.jsxs("header",{className:"h-12 flex items-center justify-between px-2 md:px-4 border-b border-border/50 bg-card/50 backdrop-blur-xl z-50",children:[S.jsxs("div",{className:"flex items-center gap-2 md:gap-3",children:[S.jsx("a",{href:"https://plannotator.ai",target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-1.5 md:gap-2 hover:opacity-80 transition-opacity",children:S.jsx("span",{className:"text-sm font-semibold tracking-tight",children:"Plannotator"})}),S.jsxs("a",{href:"https://github.com/backnotprop/plannotator/releases",target:"_blank",rel:"noopener noreferrer",className:"text-xs text-muted-foreground font-mono opacity-60 hidden md:inline hover:opacity-100 transition-opacity",children:["v","0.4.3"]}),V&&S.jsx("span",{className:\`text-[10px] px-1.5 py-0.5 rounded font-medium hidden md:inline \${V==="claude-code"?"bg-orange-500/15 text-orange-400":"bg-zinc-500/20 text-zinc-400"}\`,children:V==="claude-code"?"Claude Code":"OpenCode"})]}),S.jsxs("div",{className:"flex items-center gap-1 md:gap-2",children:[N&&S.jsxs(S.Fragment,{children:[S.jsxs("button",{onClick:()=>{c.length===0?v(!0):ne()},disabled:F,className:\`p-1.5 md:px-2.5 md:py-1 rounded-md text-xs font-medium transition-all \${F?"opacity-50 cursor-not-allowed bg-muted text-muted-foreground":"bg-accent/15 text-accent hover:bg-accent/25 border border-accent/30"}\`,title:"Deny with Feedback",children:[S.jsx("svg",{className:"w-4 h-4 md:hidden",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:S.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M8 12h.01M12 12h.01M16 12h.01M21 12c0 4.418-4.03 8-9 8a9.863 9.863 0 01-4.255-.949L3 20l1.395-3.72C3.512 15.042 3 13.574 3 12c0-4.418 4.03-8 9-8s9 3.582 9 8z"})}),S.jsx("span",{className:"hidden md:inline",children:F?"Sending...":"Deny with Feedback"})]}),S.jsxs("div",{className:"relative group/approve",children:[S.jsxs("button",{onClick:oe,disabled:F,className:\`px-2 py-1 md:px-2.5 rounded-md text-xs font-medium transition-all \${F?"opacity-50 cursor-not-allowed bg-muted text-muted-foreground":V==="claude-code"&&c.length>0?"bg-green-600/50 text-white/70 hover:bg-green-600 hover:text-white":"bg-green-600 text-white hover:bg-green-500"}\`,children:[S.jsx("span",{className:"md:hidden",children:F?"...":"OK"}),S.jsx("span",{className:"hidden md:inline",children:F?"Approving...":"Approve"})]}),V==="claude-code"&&c.length>0&&S.jsxs("div",{className:"absolute top-full right-0 mt-2 px-3 py-2 bg-popover border border-border rounded-lg shadow-xl text-xs text-foreground w-56 text-center opacity-0 invisible group-hover/approve:opacity-100 group-hover/approve:visible transition-all pointer-events-none z-50",children:[S.jsx("div",{className:"absolute bottom-full right-4 border-4 border-transparent border-b-border"}),S.jsx("div",{className:"absolute bottom-full right-4 mt-px border-4 border-transparent border-b-popover"}),"Claude Code doesn't support feedback on approval. Your annotations won't be seen."]})]}),S.jsx("div",{className:"w-px h-5 bg-border/50 mx-1 hidden md:block"})]}),S.jsx(bA,{}),S.jsx(MA,{taterMode:C,onTaterModeChange:re,onIdentityChange:Oe}),S.jsx("button",{onClick:()=>O(!T),className:\`p-1.5 rounded-md text-xs font-medium transition-all \${T?"bg-primary/15 text-primary":"text-muted-foreground hover:text-foreground hover:bg-muted"}\`,children:S.jsx("svg",{className:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:S.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M7 8h10M7 12h4m1 8l-4-4H5a2 2 0 01-2-2V6a2 2 0 012-2h14a2 2 0 012 2v8a2 2 0 01-2 2h-3l-4 4z"})})}),S.jsxs("button",{onClick:()=>m(!0),className:"p-1.5 md:px-2.5 md:py-1 rounded-md text-xs font-medium bg-muted hover:bg-muted/80 transition-colors",title:"Export",children:[S.jsx("svg",{className:"w-4 h-4 md:hidden",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:S.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-8l-4-4m0 0L8 8m4-4v12"})}),S.jsx("span",{className:"hidden md:inline",children:"Export"})]})]})]}),S.jsxs("div",{className:"flex-1 flex overflow-hidden",children:[S.jsx("main",{className:"flex-1 overflow-y-auto bg-grid",children:S.jsxs("div",{className:"min-h-full flex flex-col items-center px-4 py-3 md:px-10 md:py-8 xl:px-16",children:[S.jsx("div",{className:"w-full max-w-3xl xl:max-w-5xl 2xl:max-w-6xl mb-3 md:mb-4 flex justify-start",children:S.jsx(RA,{mode:h,onChange:y,taterMode:C})}),S.jsx(lA,{ref:w,blocks:f,markdown:o,annotations:c,onAddAnnotation:Ee,onSelectAnnotation:u,selectedAnnotationId:d,mode:h,taterMode:C,globalAttachments:U,onAddGlobalAttachment:xe,onRemoveGlobalAttachment:ke})]})}),S.jsx(mA,{isOpen:T,blocks:f,annotations:c,selectedId:d,onSelect:u,onDelete:ve,shareUrl:ce})]}),S.jsx(EA,{isOpen:E,onClose:()=>m(!1),shareUrl:ce,shareUrlSize:ue,diffOutput:Ue,annotationCount:c.length,taterSprite:C?S.jsx(Ep,{}):void 0}),b&&S.jsx("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-background/80 backdrop-blur-sm p-4",children:S.jsxs("div",{className:"bg-card border border-border rounded-xl w-full max-w-sm shadow-2xl p-6",children:[S.jsxs("div",{className:"flex items-center gap-3 mb-4",children:[S.jsx("div",{className:"w-10 h-10 rounded-full bg-accent/20 flex items-center justify-center",children:S.jsx("svg",{className:"w-5 h-5 text-accent",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,children:S.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M7 8h10M7 12h4m1 8l-4-4H5a2 2 0 01-2-2V6a2 2 0 012-2h14a2 2 0 012 2v8a2 2 0 01-2 2h-3l-4 4z"})})}),S.jsx("h3",{className:"font-semibold",children:"Add Annotations First"})]}),S.jsx("p",{className:"text-sm text-muted-foreground mb-6",children:"To provide feedback, select text in the plan and add annotations. Claude will use your annotations to revise the plan."}),S.jsx("div",{className:"flex justify-end",children:S.jsx("button",{onClick:()=>v(!1),className:"px-4 py-2 rounded-md text-sm font-medium bg-primary text-primary-foreground hover:opacity-90 transition-opacity",children:"Got it"})})]})}),K&&S.jsx("div",{className:"fixed inset-0 z-[100] bg-background flex items-center justify-center",children:S.jsxs("div",{className:"text-center space-y-6 max-w-md px-8",children:[S.jsx("div",{className:\`mx-auto w-16 h-16 rounded-full flex items-center justify-center \${K==="approved"?"bg-green-500/20 text-green-500":"bg-accent/20 text-accent"}\`,children:K==="approved"?S.jsx("svg",{className:"w-8 h-8",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2.5,children:S.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M5 13l4 4L19 7"})}):S.jsx("svg",{className:"w-8 h-8",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2.5,children:S.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M8 12h.01M12 12h.01M16 12h.01M21 12c0 4.418-4.03 8-9 8a9.863 9.863 0 01-4.255-.949L3 20l1.395-3.72C3.512 15.042 3 13.574 3 12c0-4.418 4.03-8 9-8s9 3.582 9 8z"})})}),S.jsxs("div",{className:"space-y-2",children:[S.jsx("h2",{className:"text-xl font-semibold text-foreground",children:K==="approved"?"Plan Approved":"Feedback Sent"}),S.jsx("p",{className:"text-muted-foreground",children:K==="approved"?"Claude will proceed with the implementation.":"Claude will revise the plan based on your annotations."})]}),S.jsx("div",{className:"pt-4 border-t border-border",children:S.jsxs("p",{className:"text-sm text-muted-foreground",children:["Return to your ",S.jsx("span",{className:"text-foreground font-medium",children:"Claude Code terminal"})," to continue."]})})]})}),S.jsx(HA,{}),S.jsx(rT,{isOpen:!!se,imageSrc:se?.blobUrl??"",onAccept:me,onClose:_})]})})},TT=document.getElementById("root");if(!TT)throw new Error("Could not find root element to mount to");const WA=kO.createRoot(TT);WA.render(S.jsx(NO.StrictMode,{children:S.jsx(jA,{})}));</script>
|
|
849
849
|
<style rel="stylesheet" crossorigin>pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}/*!
|
|
850
850
|
Theme: GitHub Dark
|
|
851
851
|
Description: Dark theme as seen on github.com
|
|
@@ -855,7 +855,7 @@ export const CursorOverlay: React.FC<CursorOverlayProps> = ({
|
|
|
855
855
|
|
|
856
856
|
Outdated base version: https://github.com/primer/github-syntax-dark
|
|
857
857
|
Current colors taken from GitHub's CSS
|
|
858
|
-
*/.hljs{color:#c9d1d9;background:#0d1117}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#ff7b72}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#d2a8ff}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-variable,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id{color:#79c0ff}.hljs-regexp,.hljs-string,.hljs-meta .hljs-string{color:#a5d6ff}.hljs-built_in,.hljs-symbol{color:#ffa657}.hljs-comment,.hljs-code,.hljs-formula{color:#8b949e}.hljs-name,.hljs-quote,.hljs-selector-tag,.hljs-selector-pseudo{color:#7ee787}.hljs-subst{color:#c9d1d9}.hljs-section{color:#1f6feb;font-weight:700}.hljs-bullet{color:#f2cc60}.hljs-emphasis{color:#c9d1d9;font-style:italic}.hljs-strong{color:#c9d1d9;font-weight:700}.hljs-addition{color:#aff5b4;background-color:#033a16}.hljs-deletion{color:#ffdcd7;background-color:#67060c}/*! tailwindcss v4.1.18 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial}}}@layer theme{:root,:host{--font-sans:var(--font-sans);--font-mono:var(--font-mono);--color-orange-400:oklch(75% .183 55.934);--color-orange-500:oklch(70.5% .213 47.604);--color-green-500:oklch(72.3% .219 149.579);--color-green-600:oklch(62.7% .194 149.214);--color-blue-500:oklch(62.3% .214 259.815);--color-purple-500:oklch(62.7% .265 303.9);--color-purple-600:oklch(55.8% .288 302.321);--color-zinc-400:oklch(70.5% .015 286.067);--color-zinc-500:oklch(55.2% .016 285.938);--color-white:#fff;--spacing:.25rem;--container-sm:24rem;--container-md:28rem;--container-lg:32rem;--container-2xl:42rem;--container-3xl:48rem;--container-4xl:56rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-base:1rem;--text-base--line-height: 1.5 ;--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75/1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2/1.5);--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5/2.25);--text-5xl:3rem;--text-5xl--line-height:1;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--tracking-wide:.025em;--tracking-wider:.05em;--leading-relaxed:1.625;--ease-in:cubic-bezier(.4,0,1,1);--ease-out:cubic-bezier(0,0,.2,1);--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4,0,.6,1)infinite;--blur-sm:8px;--blur-xl:24px;--aspect-video:16/9;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-none{pointer-events:none}.invisible{visibility:hidden}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.inset-0{inset:calc(var(--spacing)*0)}.-top-1{top:calc(var(--spacing)*-1)}.-top-5{top:calc(var(--spacing)*-5)}.top-0{top:calc(var(--spacing)*0)}.top-2{top:calc(var(--spacing)*2)}.top-3{top:calc(var(--spacing)*3)}.top-full{top:100%}.-right-1{right:calc(var(--spacing)*-1)}.right-0{right:calc(var(--spacing)*0)}.right-2{right:calc(var(--spacing)*2)}.right-3{right:calc(var(--spacing)*3)}.right-4{right:calc(var(--spacing)*4)}.bottom-0{bottom:calc(var(--spacing)*0)}.bottom-2{bottom:calc(var(--spacing)*2)}.bottom-4{bottom:calc(var(--spacing)*4)}.bottom-full{bottom:100%}.left-0{left:calc(var(--spacing)*0)}.-z-10{z-index:-10}.z-10{z-index:10}.z-50{z-index:50}.z-\\[90\\]{z-index:90}.z-\\[100\\]{z-index:100}.z-\\[200\\]{z-index:200}.container{width:100%}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.mx-0\\.5{margin-inline:calc(var(--spacing)*.5)}.mx-1{margin-inline:calc(var(--spacing)*1)}.mx-auto{margin-inline:auto}.my-1\\.5{margin-block:calc(var(--spacing)*1.5)}.my-4{margin-block:calc(var(--spacing)*4)}.my-5{margin-block:calc(var(--spacing)*5)}.my-8{margin-block:calc(var(--spacing)*8)}.-mt-1{margin-top:calc(var(--spacing)*-1)}.mt-0\\.5{margin-top:calc(var(--spacing)*.5)}.mt-1{margin-top:calc(var(--spacing)*1)}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-3{margin-top:calc(var(--spacing)*3)}.mt-4{margin-top:calc(var(--spacing)*4)}.mt-5{margin-top:calc(var(--spacing)*5)}.mt-6{margin-top:calc(var(--spacing)*6)}.mt-8{margin-top:calc(var(--spacing)*8)}.mt-10{margin-top:calc(var(--spacing)*10)}.mt-px{margin-top:1px}.mb-1{margin-bottom:calc(var(--spacing)*1)}.mb-1\\.5{margin-bottom:calc(var(--spacing)*1.5)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.mb-3{margin-bottom:calc(var(--spacing)*3)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.mb-6{margin-bottom:calc(var(--spacing)*6)}.mb-8{margin-bottom:calc(var(--spacing)*8)}.ml-2{margin-left:calc(var(--spacing)*2)}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.list-item{display:list-item}.table{display:table}.aspect-video{aspect-ratio:var(--aspect-video)}.h-1{height:calc(var(--spacing)*1)}.h-1\\.5{height:calc(var(--spacing)*1.5)}.h-2{height:calc(var(--spacing)*2)}.h-2\\.5{height:calc(var(--spacing)*2.5)}.h-3{height:calc(var(--spacing)*3)}.h-3\\.5{height:calc(var(--spacing)*3.5)}.h-4{height:calc(var(--spacing)*4)}.h-5{height:calc(var(--spacing)*5)}.h-6{height:calc(var(--spacing)*6)}.h-7{height:calc(var(--spacing)*7)}.h-8{height:calc(var(--spacing)*8)}.h-10{height:calc(var(--spacing)*10)}.h-12{height:calc(var(--spacing)*12)}.h-16{height:calc(var(--spacing)*16)}.h-20{height:calc(var(--spacing)*20)}.h-32{height:calc(var(--spacing)*32)}.h-40{height:calc(var(--spacing)*40)}.h-80{height:calc(var(--spacing)*80)}.h-full{height:100%}.h-screen{height:100vh}.max-h-24{max-height:calc(var(--spacing)*24)}.max-h-32{max-height:calc(var(--spacing)*32)}.max-h-\\[70vh\\]{max-height:70vh}.max-h-\\[80vh\\]{max-height:80vh}.min-h-full{min-height:100%}.min-h-screen{min-height:100vh}.w-0\\.5{width:calc(var(--spacing)*.5)}.w-1{width:calc(var(--spacing)*1)}.w-1\\.5{width:calc(var(--spacing)*1.5)}.w-1\\/2{width:50%}.w-1\\/3{width:33.3333%}.w-1\\/4{width:25%}.w-1\\/6{width:16.6667%}.w-2{width:calc(var(--spacing)*2)}.w-2\\.5{width:calc(var(--spacing)*2.5)}.w-2\\/3{width:66.6667%}.w-3{width:calc(var(--spacing)*3)}.w-3\\.5{width:calc(var(--spacing)*3.5)}.w-3\\/4{width:75%}.w-4{width:calc(var(--spacing)*4)}.w-4\\/5{width:80%}.w-5{width:calc(var(--spacing)*5)}.w-5\\/6{width:83.3333%}.w-6{width:calc(var(--spacing)*6)}.w-7{width:calc(var(--spacing)*7)}.w-8{width:calc(var(--spacing)*8)}.w-10{width:calc(var(--spacing)*10)}.w-11{width:calc(var(--spacing)*11)}.w-16{width:calc(var(--spacing)*16)}.w-20{width:calc(var(--spacing)*20)}.w-32{width:calc(var(--spacing)*32)}.w-48{width:calc(var(--spacing)*48)}.w-56{width:calc(var(--spacing)*56)}.w-72{width:calc(var(--spacing)*72)}.w-80{width:calc(var(--spacing)*80)}.w-full{width:100%}.w-px{width:1px}.max-w-2xl{max-width:var(--container-2xl)}.max-w-3xl{max-width:var(--container-3xl)}.max-w-4xl{max-width:var(--container-4xl)}.max-w-80{max-width:calc(var(--spacing)*80)}.max-w-\\[85vw\\]{max-width:85vw}.max-w-lg{max-width:var(--container-lg)}.max-w-md{max-width:var(--container-md)}.max-w-sm{max-width:var(--container-sm)}.min-w-0{min-width:calc(var(--spacing)*0)}.min-w-40{min-width:calc(var(--spacing)*40)}.min-w-44{min-width:calc(var(--spacing)*44)}.min-w-full{min-width:100%}.flex-1{flex:1}.flex-shrink-0,.shrink-0{flex-shrink:0}.border-collapse{border-collapse:collapse}.-translate-x-1\\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-x-1{--tw-translate-x:calc(var(--spacing)*1);translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-x-6{--tw-translate-x:calc(var(--spacing)*6);translate:var(--tw-translate-x)var(--tw-translate-y)}.scale-110{--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x)var(--tw-scale-y)}.-scale-x-100{--tw-scale-x: -100% ;scale:var(--tw-scale-x)var(--tw-scale-y)}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-crosshair{cursor:crosshair}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.resize{resize:both}.resize-none{resize:none}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-start{justify-content:flex-start}.gap-0\\.5{gap:calc(var(--spacing)*.5)}.gap-1{gap:calc(var(--spacing)*1)}.gap-1\\.5{gap:calc(var(--spacing)*1.5)}.gap-2{gap:calc(var(--spacing)*2)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}.gap-6{gap:calc(var(--spacing)*6)}.gap-8{gap:calc(var(--spacing)*8)}:where(.space-y-1\\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1.5)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1.5)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*3)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*6)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*6)*calc(1 - var(--tw-space-y-reverse)))}.self-start{align-self:flex-start}.self-stretch{align-self:stretch}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-xl{border-radius:calc(var(--radius) + 4px)}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-4{border-style:var(--tw-border-style);border-width:4px}.border-x{border-inline-style:var(--tw-border-style);border-inline-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-accent,.border-accent\\/30{border-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.border-accent\\/30{border-color:color-mix(in oklab,var(--accent)30%,transparent)}}.border-background{border-color:var(--background)}.border-border,.border-border\\/30{border-color:var(--border)}@supports (color:color-mix(in lab,red,red)){.border-border\\/30{border-color:color-mix(in oklab,var(--border)30%,transparent)}}.border-border\\/50{border-color:var(--border)}@supports (color:color-mix(in lab,red,red)){.border-border\\/50{border-color:color-mix(in oklab,var(--border)50%,transparent)}}.border-destructive\\/30{border-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.border-destructive\\/30{border-color:color-mix(in oklab,var(--destructive)30%,transparent)}}.border-foreground{border-color:var(--foreground)}.border-primary,.border-primary\\/30{border-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.border-primary\\/30{border-color:color-mix(in oklab,var(--primary)30%,transparent)}}.border-primary\\/50{border-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.border-primary\\/50{border-color:color-mix(in oklab,var(--primary)50%,transparent)}}.border-purple-500\\/50{border-color:#ac4bff80}@supports (color:color-mix(in lab,red,red)){.border-purple-500\\/50{border-color:color-mix(in oklab,var(--color-purple-500)50%,transparent)}}.border-transparent{border-color:#0000}.border-b-border{border-bottom-color:var(--border)}.border-b-popover{border-bottom-color:var(--popover)}.bg-\\[\\#7c3aed\\]\\/10{background-color:#7c3aed1a}.bg-\\[\\#121011\\]{background-color:#121011}.bg-accent\\/5{background-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.bg-accent\\/5{background-color:color-mix(in oklab,var(--accent)5%,transparent)}}.bg-accent\\/10{background-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.bg-accent\\/10{background-color:color-mix(in oklab,var(--accent)10%,transparent)}}.bg-accent\\/15{background-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.bg-accent\\/15{background-color:color-mix(in oklab,var(--accent)15%,transparent)}}.bg-accent\\/20{background-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.bg-accent\\/20{background-color:color-mix(in oklab,var(--accent)20%,transparent)}}.bg-accent\\/40{background-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.bg-accent\\/40{background-color:color-mix(in oklab,var(--accent)40%,transparent)}}.bg-accent\\/60{background-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.bg-accent\\/60{background-color:color-mix(in oklab,var(--accent)60%,transparent)}}.bg-background,.bg-background\\/50{background-color:var(--background)}@supports (color:color-mix(in lab,red,red)){.bg-background\\/50{background-color:color-mix(in oklab,var(--background)50%,transparent)}}.bg-background\\/80{background-color:var(--background)}@supports (color:color-mix(in lab,red,red)){.bg-background\\/80{background-color:color-mix(in oklab,var(--background)80%,transparent)}}.bg-background\\/90{background-color:var(--background)}@supports (color:color-mix(in lab,red,red)){.bg-background\\/90{background-color:color-mix(in oklab,var(--background)90%,transparent)}}.bg-blue-500{background-color:var(--color-blue-500)}.bg-border,.bg-border\\/50{background-color:var(--border)}@supports (color:color-mix(in lab,red,red)){.bg-border\\/50{background-color:color-mix(in oklab,var(--border)50%,transparent)}}.bg-card,.bg-card\\/30{background-color:var(--card)}@supports (color:color-mix(in lab,red,red)){.bg-card\\/30{background-color:color-mix(in oklab,var(--card)30%,transparent)}}.bg-card\\/50{background-color:var(--card)}@supports (color:color-mix(in lab,red,red)){.bg-card\\/50{background-color:color-mix(in oklab,var(--card)50%,transparent)}}.bg-card\\/80{background-color:var(--card)}@supports (color:color-mix(in lab,red,red)){.bg-card\\/80{background-color:color-mix(in oklab,var(--card)80%,transparent)}}.bg-card\\/95{background-color:var(--card)}@supports (color:color-mix(in lab,red,red)){.bg-card\\/95{background-color:color-mix(in oklab,var(--card)95%,transparent)}}.bg-destructive,.bg-destructive\\/5{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.bg-destructive\\/5{background-color:color-mix(in oklab,var(--destructive)5%,transparent)}}.bg-destructive\\/10{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.bg-destructive\\/10{background-color:color-mix(in oklab,var(--destructive)10%,transparent)}}.bg-destructive\\/15{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.bg-destructive\\/15{background-color:color-mix(in oklab,var(--destructive)15%,transparent)}}.bg-destructive\\/20{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.bg-destructive\\/20{background-color:color-mix(in oklab,var(--destructive)20%,transparent)}}.bg-destructive\\/40{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.bg-destructive\\/40{background-color:color-mix(in oklab,var(--destructive)40%,transparent)}}.bg-destructive\\/60{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.bg-destructive\\/60{background-color:color-mix(in oklab,var(--destructive)60%,transparent)}}.bg-foreground\\/60{background-color:var(--foreground)}@supports (color:color-mix(in lab,red,red)){.bg-foreground\\/60{background-color:color-mix(in oklab,var(--foreground)60%,transparent)}}.bg-foreground\\/80{background-color:var(--foreground)}@supports (color:color-mix(in lab,red,red)){.bg-foreground\\/80{background-color:color-mix(in oklab,var(--foreground)80%,transparent)}}.bg-green-500\\/20{background-color:#00c75833}@supports (color:color-mix(in lab,red,red)){.bg-green-500\\/20{background-color:color-mix(in oklab,var(--color-green-500)20%,transparent)}}.bg-green-600{background-color:var(--color-green-600)}.bg-green-600\\/50{background-color:#00a54480}@supports (color:color-mix(in lab,red,red)){.bg-green-600\\/50{background-color:color-mix(in oklab,var(--color-green-600)50%,transparent)}}.bg-muted{background-color:var(--muted)}.bg-muted-foreground\\/30{background-color:var(--muted-foreground)}@supports (color:color-mix(in lab,red,red)){.bg-muted-foreground\\/30{background-color:color-mix(in oklab,var(--muted-foreground)30%,transparent)}}.bg-muted\\/30{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.bg-muted\\/30{background-color:color-mix(in oklab,var(--muted)30%,transparent)}}.bg-muted\\/50{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.bg-muted\\/50{background-color:color-mix(in oklab,var(--muted)50%,transparent)}}.bg-muted\\/80{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.bg-muted\\/80{background-color:color-mix(in oklab,var(--muted)80%,transparent)}}.bg-orange-500\\/15{background-color:#fe6e0026}@supports (color:color-mix(in lab,red,red)){.bg-orange-500\\/15{background-color:color-mix(in oklab,var(--color-orange-500)15%,transparent)}}.bg-popover{background-color:var(--popover)}.bg-primary,.bg-primary\\/5{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.bg-primary\\/5{background-color:color-mix(in oklab,var(--primary)5%,transparent)}}.bg-primary\\/10{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.bg-primary\\/10{background-color:color-mix(in oklab,var(--primary)10%,transparent)}}.bg-primary\\/15{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.bg-primary\\/15{background-color:color-mix(in oklab,var(--primary)15%,transparent)}}.bg-primary\\/20{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.bg-primary\\/20{background-color:color-mix(in oklab,var(--primary)20%,transparent)}}.bg-primary\\/40{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.bg-primary\\/40{background-color:color-mix(in oklab,var(--primary)40%,transparent)}}.bg-primary\\/60{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.bg-primary\\/60{background-color:color-mix(in oklab,var(--primary)60%,transparent)}}.bg-purple-500\\/10{background-color:#ac4bff1a}@supports (color:color-mix(in lab,red,red)){.bg-purple-500\\/10{background-color:color-mix(in oklab,var(--color-purple-500)10%,transparent)}}.bg-purple-600{background-color:var(--color-purple-600)}.bg-secondary,.bg-secondary\\/10{background-color:var(--secondary)}@supports (color:color-mix(in lab,red,red)){.bg-secondary\\/10{background-color:color-mix(in oklab,var(--secondary)10%,transparent)}}.bg-secondary\\/20{background-color:var(--secondary)}@supports (color:color-mix(in lab,red,red)){.bg-secondary\\/20{background-color:color-mix(in oklab,var(--secondary)20%,transparent)}}.bg-secondary\\/40{background-color:var(--secondary)}@supports (color:color-mix(in lab,red,red)){.bg-secondary\\/40{background-color:color-mix(in oklab,var(--secondary)40%,transparent)}}.bg-secondary\\/60{background-color:var(--secondary)}@supports (color:color-mix(in lab,red,red)){.bg-secondary\\/60{background-color:color-mix(in oklab,var(--secondary)60%,transparent)}}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.bg-zinc-500\\/20{background-color:#71717b33}@supports (color:color-mix(in lab,red,red)){.bg-zinc-500\\/20{background-color:color-mix(in oklab,var(--color-zinc-500)20%,transparent)}}.object-contain{object-fit:contain}.object-cover{object-fit:cover}.p-0\\.5{padding:calc(var(--spacing)*.5)}.p-1{padding:calc(var(--spacing)*1)}.p-1\\.5{padding:calc(var(--spacing)*1.5)}.p-2{padding:calc(var(--spacing)*2)}.p-2\\.5{padding:calc(var(--spacing)*2.5)}.p-3{padding:calc(var(--spacing)*3)}.p-4{padding:calc(var(--spacing)*4)}.p-5{padding:calc(var(--spacing)*5)}.p-6{padding:calc(var(--spacing)*6)}.px-1\\.5{padding-inline:calc(var(--spacing)*1.5)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-2\\.5{padding-inline:calc(var(--spacing)*2.5)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.px-5{padding-inline:calc(var(--spacing)*5)}.px-6{padding-inline:calc(var(--spacing)*6)}.px-8{padding-inline:calc(var(--spacing)*8)}.px-\\[15px\\]{padding-inline:15px}.py-0\\.5{padding-block:calc(var(--spacing)*.5)}.py-1{padding-block:calc(var(--spacing)*1)}.py-1\\.5{padding-block:calc(var(--spacing)*1.5)}.py-2{padding-block:calc(var(--spacing)*2)}.py-2\\.5{padding-block:calc(var(--spacing)*2.5)}.py-4{padding-block:calc(var(--spacing)*4)}.py-8{padding-block:calc(var(--spacing)*8)}.py-16{padding-block:calc(var(--spacing)*16)}.pt-4{padding-top:calc(var(--spacing)*4)}.pt-32{padding-top:calc(var(--spacing)*32)}.pr-20{padding-right:calc(var(--spacing)*20)}.pb-20{padding-bottom:calc(var(--spacing)*20)}.pl-0\\.5{padding-left:calc(var(--spacing)*.5)}.pl-2{padding-left:calc(var(--spacing)*2)}.pl-3{padding-left:calc(var(--spacing)*3)}.pl-4{padding-left:calc(var(--spacing)*4)}.text-center{text-align:center}.text-left{text-align:left}.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\\[9px\\]{font-size:9px}.text-\\[10px\\]{font-size:10px}.text-\\[11px\\]{font-size:11px}.text-\\[13px\\]{font-size:13px}.text-\\[15px\\]{font-size:15px}.leading-\\[1\\.1\\]{--tw-leading:1.1;line-height:1.1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-\\[\\#7c3aed\\]{color:#7c3aed}.text-accent{color:var(--accent)}.text-destructive{color:var(--destructive)}.text-destructive-foreground{color:var(--destructive-foreground)}.text-foreground,.text-foreground\\/80{color:var(--foreground)}@supports (color:color-mix(in lab,red,red)){.text-foreground\\/80{color:color-mix(in oklab,var(--foreground)80%,transparent)}}.text-foreground\\/90{color:var(--foreground)}@supports (color:color-mix(in lab,red,red)){.text-foreground\\/90{color:color-mix(in oklab,var(--foreground)90%,transparent)}}.text-green-500{color:var(--color-green-500)}.text-muted-foreground,.text-muted-foreground\\/30{color:var(--muted-foreground)}@supports (color:color-mix(in lab,red,red)){.text-muted-foreground\\/30{color:color-mix(in oklab,var(--muted-foreground)30%,transparent)}}.text-muted-foreground\\/50{color:var(--muted-foreground)}@supports (color:color-mix(in lab,red,red)){.text-muted-foreground\\/50{color:color-mix(in oklab,var(--muted-foreground)50%,transparent)}}.text-muted-foreground\\/60{color:var(--muted-foreground)}@supports (color:color-mix(in lab,red,red)){.text-muted-foreground\\/60{color:color-mix(in oklab,var(--muted-foreground)60%,transparent)}}.text-muted-foreground\\/70{color:var(--muted-foreground)}@supports (color:color-mix(in lab,red,red)){.text-muted-foreground\\/70{color:color-mix(in oklab,var(--muted-foreground)70%,transparent)}}.text-orange-400{color:var(--color-orange-400)}.text-popover-foreground{color:var(--popover-foreground)}.text-primary{color:var(--primary)}.text-primary-foreground{color:var(--primary-foreground)}.text-primary\\/60{color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.text-primary\\/60{color:color-mix(in oklab,var(--primary)60%,transparent)}}.text-purple-500{color:var(--color-purple-500)}.text-secondary{color:var(--secondary)}.text-white{color:var(--color-white)}.text-white\\/70{color:#ffffffb3}@supports (color:color-mix(in lab,red,red)){.text-white\\/70{color:color-mix(in oklab,var(--color-white)70%,transparent)}}.text-zinc-400{color:var(--color-zinc-400)}.capitalize{text-transform:capitalize}.uppercase{text-transform:uppercase}.italic{font-style:italic}.line-through{text-decoration-line:line-through}.underline{text-decoration-line:underline}.underline-offset-2{text-underline-offset:2px}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-0{opacity:0}.opacity-25{opacity:.25}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-75{opacity:.75}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a),0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-blur-xl{--tw-backdrop-blur:blur(var(--blur-xl));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-75{--tw-duration:75ms;transition-duration:75ms}.duration-150{--tw-duration:.15s;transition-duration:.15s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.ease-in{--tw-ease:var(--ease-in);transition-timing-function:var(--ease-in)}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.select-none{-webkit-user-select:none;user-select:none}@media(hover:hover){.group-hover\\:opacity-100:is(:where(.group):hover *){opacity:1}.group-hover\\/approve\\:visible:is(:where(.group\\/approve):hover *){visibility:visible}.group-hover\\/approve\\:opacity-100:is(:where(.group\\/approve):hover *){opacity:1}}.placeholder\\:text-muted-foreground::placeholder,.placeholder\\:text-muted-foreground\\/50::placeholder{color:var(--muted-foreground)}@supports (color:color-mix(in lab,red,red)){.placeholder\\:text-muted-foreground\\/50::placeholder{color:color-mix(in oklab,var(--muted-foreground)50%,transparent)}}.first\\:mt-0:first-child{margin-top:calc(var(--spacing)*0)}@media(hover:hover){.hover\\:scale-105:hover{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x)var(--tw-scale-y)}.hover\\:border-accent:hover{border-color:var(--accent)}.hover\\:border-border\\/50:hover{border-color:var(--border)}@supports (color:color-mix(in lab,red,red)){.hover\\:border-border\\/50:hover{border-color:color-mix(in oklab,var(--border)50%,transparent)}}.hover\\:border-muted-foreground:hover{border-color:var(--muted-foreground)}.hover\\:bg-accent\\/10:hover{background-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.hover\\:bg-accent\\/10:hover{background-color:color-mix(in oklab,var(--accent)10%,transparent)}}.hover\\:bg-accent\\/25:hover{background-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.hover\\:bg-accent\\/25:hover{background-color:color-mix(in oklab,var(--accent)25%,transparent)}}.hover\\:bg-background:hover{background-color:var(--background)}.hover\\:bg-destructive\\/10:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.hover\\:bg-destructive\\/10:hover{background-color:color-mix(in oklab,var(--destructive)10%,transparent)}}.hover\\:bg-green-500:hover{background-color:var(--color-green-500)}.hover\\:bg-green-600:hover{background-color:var(--color-green-600)}.hover\\:bg-muted:hover,.hover\\:bg-muted\\/20:hover{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.hover\\:bg-muted\\/20:hover{background-color:color-mix(in oklab,var(--muted)20%,transparent)}}.hover\\:bg-muted\\/50:hover{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.hover\\:bg-muted\\/50:hover{background-color:color-mix(in oklab,var(--muted)50%,transparent)}}.hover\\:bg-muted\\/80:hover{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.hover\\:bg-muted\\/80:hover{background-color:color-mix(in oklab,var(--muted)80%,transparent)}}.hover\\:bg-purple-500:hover{background-color:var(--color-purple-500)}.hover\\:text-destructive:hover{color:var(--destructive)}.hover\\:text-foreground:hover{color:var(--foreground)}.hover\\:text-muted-foreground:hover{color:var(--muted-foreground)}.hover\\:text-primary:hover,.hover\\:text-primary\\/80:hover{color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.hover\\:text-primary\\/80:hover{color:color-mix(in oklab,var(--primary)80%,transparent)}}.hover\\:text-white:hover{color:var(--color-white)}.hover\\:underline:hover{text-decoration-line:underline}.hover\\:opacity-80:hover{opacity:.8}.hover\\:opacity-90:hover{opacity:.9}.hover\\:opacity-100:hover{opacity:1}.hover\\:shadow-sm:hover{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}.focus\\:bg-muted\\/30:focus{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.focus\\:bg-muted\\/30:focus{background-color:color-mix(in oklab,var(--muted)30%,transparent)}}.focus\\:ring-1:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\\:ring-accent\\/50:focus{--tw-ring-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.focus\\:ring-accent\\/50:focus{--tw-ring-color:color-mix(in oklab,var(--accent)50%,transparent)}}.focus\\:ring-primary:focus,.focus\\:ring-primary\\/50:focus{--tw-ring-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.focus\\:ring-primary\\/50:focus{--tw-ring-color:color-mix(in oklab,var(--primary)50%,transparent)}}.focus\\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\\:ring-ring:focus-visible{--tw-ring-color:var(--ring)}.focus-visible\\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\\:opacity-50:disabled{opacity:.5}@media(min-width:48rem){.md\\:top-5{top:calc(var(--spacing)*5)}.md\\:right-5{right:calc(var(--spacing)*5)}.md\\:mb-4{margin-bottom:calc(var(--spacing)*4)}.md\\:block{display:block}.md\\:hidden{display:none}.md\\:inline{display:inline}.md\\:h-24{height:calc(var(--spacing)*24)}.md\\:w-24{width:calc(var(--spacing)*24)}.md\\:min-w-56{min-width:calc(var(--spacing)*56)}.md\\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\\:gap-2{gap:calc(var(--spacing)*2)}.md\\:gap-3{gap:calc(var(--spacing)*3)}.md\\:p-8{padding:calc(var(--spacing)*8)}.md\\:p-10{padding:calc(var(--spacing)*10)}.md\\:px-2\\.5{padding-inline:calc(var(--spacing)*2.5)}.md\\:px-4{padding-inline:calc(var(--spacing)*4)}.md\\:py-1{padding-block:calc(var(--spacing)*1)}.md\\:text-5xl{font-size:var(--text-5xl);line-height:var(--tw-leading,var(--text-5xl--line-height))}}@media(min-width:64rem){.lg\\:p-14{padding:calc(var(--spacing)*14)}}}:root{--background:oklch(13% .02 260);--foreground:oklch(95% .01 260);--card:oklch(16% .02 260);--card-foreground:oklch(95% .01 260);--popover:oklch(18% .025 260);--popover-foreground:oklch(95% .01 260);--primary:oklch(75% .18 280);--primary-foreground:oklch(13% .02 260);--secondary:oklch(65% .15 180);--secondary-foreground:oklch(13% .02 260);--muted:oklch(22% .02 260);--muted-foreground:oklch(65% .02 260);--accent:oklch(70% .2 60);--accent-foreground:oklch(13% .02 260);--destructive:oklch(65% .22 25);--destructive-foreground:oklch(98% 0 0);--border:oklch(28% .02 260);--input:oklch(22% .02 260);--ring:oklch(75% .18 280);--font-sans:"Inter",system-ui,sans-serif;--font-mono:"JetBrains Mono","Fira Code",monospace;--radius:.75rem}.light{--background:oklch(97% .005 260);--foreground:oklch(18% .02 260);--card:oklch(100% 0 0);--card-foreground:oklch(18% .02 260);--popover:oklch(100% 0 0);--popover-foreground:oklch(18% .02 260);--primary:oklch(50% .25 280);--primary-foreground:oklch(100% 0 0);--secondary:oklch(50% .18 180);--secondary-foreground:oklch(100% 0 0);--muted:oklch(92% .01 260);--muted-foreground:oklch(40% .02 260);--accent:oklch(60% .22 50);--accent-foreground:oklch(18% .02 260);--destructive:oklch(50% .25 25);--destructive-foreground:oklch(100% 0 0);--border:oklch(88% .01 260);--input:oklch(92% .01 260);--ring:oklch(50% .25 280)}*{border-color:var(--border)}body{font-family:var(--font-sans);background:var(--background);color:var(--foreground);font-feature-settings:"ss01","ss02","cv01"}.bg-grid{background-image:linear-gradient(90deg,#1c222b80 1px,#0000 1px),linear-gradient(#1c222b80 1px,#0000 1px);background-size:24px 24px}.light .bg-grid{background-image:linear-gradient(90deg,#dadee599 1px,#0000 1px),linear-gradient(#dadee599 1px,#0000 1px)}.glow-primary{box-shadow:0 0 20px oklch(75% .18 280/.15),0 0 40px oklch(75% .18 280/.05)}.glow-sm{box-shadow:0 0 10px oklch(75% .18 280/.1)}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--muted-foreground)}pre code.hljs{border-radius:var(--radius);padding:1rem;font-size:.8125rem;line-height:1.6;display:block;background:var(--muted)!important}.light pre code.hljs{color:#1c222b!important}.light .hljs-keyword,.light .hljs-selector-tag,.light .hljs-built_in,.light .hljs-name,.light .hljs-tag{color:#4a1fd9!important}.light .hljs-string,.light .hljs-title,.light .hljs-section,.light .hljs-attribute,.light .hljs-literal,.light .hljs-template-tag,.light .hljs-template-variable,.light .hljs-type{color:oklch(45% .18 150)!important}.light .hljs-comment,.light .hljs-quote{font-style:italic;color:#6b727e!important}.light .hljs-number,.light .hljs-symbol,.light .hljs-bullet{color:oklch(50% .2 50)!important}.light .hljs-attr,.light .hljs-variable,.light .hljs-template-variable,.light .hljs-class .hljs-title,.light .hljs-function{color:#4838bf!important}::selection{background:oklch(75% .18 280/.3)}*{transition-property:color,background-color,border-color,box-shadow,opacity,transform;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}:focus-visible{outline:2px solid var(--ring);outline-offset:2px}.annotation-highlight{border-radius:2px;margin:0 -2px;padding:0 2px}.annotation-highlight.deletion{text-decoration:line-through;-webkit-text-decoration-color:var(--destructive);text-decoration-color:var(--destructive);background:#f9414440;text-decoration-thickness:2px}.annotation-highlight.comment{border-bottom:2px solid var(--accent);background:oklch(70% .2 60/.2)}.annotation-highlight:hover{filter:brightness(1.2);cursor:pointer}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}</style>
|
|
858
|
+
*/.hljs{color:#c9d1d9;background:#0d1117}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#ff7b72}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#d2a8ff}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-variable,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id{color:#79c0ff}.hljs-regexp,.hljs-string,.hljs-meta .hljs-string{color:#a5d6ff}.hljs-built_in,.hljs-symbol{color:#ffa657}.hljs-comment,.hljs-code,.hljs-formula{color:#8b949e}.hljs-name,.hljs-quote,.hljs-selector-tag,.hljs-selector-pseudo{color:#7ee787}.hljs-subst{color:#c9d1d9}.hljs-section{color:#1f6feb;font-weight:700}.hljs-bullet{color:#f2cc60}.hljs-emphasis{color:#c9d1d9;font-style:italic}.hljs-strong{color:#c9d1d9;font-weight:700}.hljs-addition{color:#aff5b4;background-color:#033a16}.hljs-deletion{color:#ffdcd7;background-color:#67060c}/*! tailwindcss v4.1.18 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial}}}@layer theme{:root,:host{--font-sans:var(--font-sans);--font-mono:var(--font-mono);--color-orange-400:oklch(75% .183 55.934);--color-orange-500:oklch(70.5% .213 47.604);--color-green-500:oklch(72.3% .219 149.579);--color-green-600:oklch(62.7% .194 149.214);--color-blue-500:oklch(62.3% .214 259.815);--color-purple-500:oklch(62.7% .265 303.9);--color-purple-600:oklch(55.8% .288 302.321);--color-zinc-400:oklch(70.5% .015 286.067);--color-zinc-500:oklch(55.2% .016 285.938);--color-white:#fff;--spacing:.25rem;--container-sm:24rem;--container-md:28rem;--container-lg:32rem;--container-2xl:42rem;--container-3xl:48rem;--container-4xl:56rem;--container-5xl:64rem;--container-6xl:72rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-base:1rem;--text-base--line-height: 1.5 ;--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75/1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2/1.5);--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5/2.25);--text-5xl:3rem;--text-5xl--line-height:1;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--tracking-wide:.025em;--tracking-wider:.05em;--leading-relaxed:1.625;--ease-in:cubic-bezier(.4,0,1,1);--ease-out:cubic-bezier(0,0,.2,1);--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4,0,.6,1)infinite;--blur-sm:8px;--blur-xl:24px;--aspect-video:16/9;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-none{pointer-events:none}.invisible{visibility:hidden}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.inset-0{inset:calc(var(--spacing)*0)}.-top-1{top:calc(var(--spacing)*-1)}.-top-5{top:calc(var(--spacing)*-5)}.top-0{top:calc(var(--spacing)*0)}.top-2{top:calc(var(--spacing)*2)}.top-3{top:calc(var(--spacing)*3)}.top-full{top:100%}.-right-1{right:calc(var(--spacing)*-1)}.right-0{right:calc(var(--spacing)*0)}.right-2{right:calc(var(--spacing)*2)}.right-3{right:calc(var(--spacing)*3)}.right-4{right:calc(var(--spacing)*4)}.bottom-0{bottom:calc(var(--spacing)*0)}.bottom-2{bottom:calc(var(--spacing)*2)}.bottom-4{bottom:calc(var(--spacing)*4)}.bottom-full{bottom:100%}.left-0{left:calc(var(--spacing)*0)}.-z-10{z-index:-10}.z-10{z-index:10}.z-50{z-index:50}.z-\\[90\\]{z-index:90}.z-\\[100\\]{z-index:100}.z-\\[200\\]{z-index:200}.container{width:100%}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.mx-0\\.5{margin-inline:calc(var(--spacing)*.5)}.mx-1{margin-inline:calc(var(--spacing)*1)}.mx-auto{margin-inline:auto}.my-1\\.5{margin-block:calc(var(--spacing)*1.5)}.my-4{margin-block:calc(var(--spacing)*4)}.my-5{margin-block:calc(var(--spacing)*5)}.my-8{margin-block:calc(var(--spacing)*8)}.-mt-1{margin-top:calc(var(--spacing)*-1)}.mt-0\\.5{margin-top:calc(var(--spacing)*.5)}.mt-1{margin-top:calc(var(--spacing)*1)}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-3{margin-top:calc(var(--spacing)*3)}.mt-4{margin-top:calc(var(--spacing)*4)}.mt-5{margin-top:calc(var(--spacing)*5)}.mt-6{margin-top:calc(var(--spacing)*6)}.mt-8{margin-top:calc(var(--spacing)*8)}.mt-10{margin-top:calc(var(--spacing)*10)}.mt-px{margin-top:1px}.mb-1{margin-bottom:calc(var(--spacing)*1)}.mb-1\\.5{margin-bottom:calc(var(--spacing)*1.5)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.mb-3{margin-bottom:calc(var(--spacing)*3)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.mb-6{margin-bottom:calc(var(--spacing)*6)}.mb-8{margin-bottom:calc(var(--spacing)*8)}.ml-2{margin-left:calc(var(--spacing)*2)}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.list-item{display:list-item}.table{display:table}.aspect-video{aspect-ratio:var(--aspect-video)}.h-1{height:calc(var(--spacing)*1)}.h-1\\.5{height:calc(var(--spacing)*1.5)}.h-2{height:calc(var(--spacing)*2)}.h-2\\.5{height:calc(var(--spacing)*2.5)}.h-3{height:calc(var(--spacing)*3)}.h-3\\.5{height:calc(var(--spacing)*3.5)}.h-4{height:calc(var(--spacing)*4)}.h-5{height:calc(var(--spacing)*5)}.h-6{height:calc(var(--spacing)*6)}.h-7{height:calc(var(--spacing)*7)}.h-8{height:calc(var(--spacing)*8)}.h-10{height:calc(var(--spacing)*10)}.h-12{height:calc(var(--spacing)*12)}.h-16{height:calc(var(--spacing)*16)}.h-20{height:calc(var(--spacing)*20)}.h-32{height:calc(var(--spacing)*32)}.h-40{height:calc(var(--spacing)*40)}.h-80{height:calc(var(--spacing)*80)}.h-full{height:100%}.h-screen{height:100vh}.max-h-24{max-height:calc(var(--spacing)*24)}.max-h-32{max-height:calc(var(--spacing)*32)}.max-h-\\[70vh\\]{max-height:70vh}.max-h-\\[80vh\\]{max-height:80vh}.min-h-full{min-height:100%}.min-h-screen{min-height:100vh}.w-0\\.5{width:calc(var(--spacing)*.5)}.w-1{width:calc(var(--spacing)*1)}.w-1\\.5{width:calc(var(--spacing)*1.5)}.w-1\\/2{width:50%}.w-1\\/3{width:33.3333%}.w-1\\/4{width:25%}.w-1\\/6{width:16.6667%}.w-2{width:calc(var(--spacing)*2)}.w-2\\.5{width:calc(var(--spacing)*2.5)}.w-2\\/3{width:66.6667%}.w-3{width:calc(var(--spacing)*3)}.w-3\\.5{width:calc(var(--spacing)*3.5)}.w-3\\/4{width:75%}.w-4{width:calc(var(--spacing)*4)}.w-4\\/5{width:80%}.w-5{width:calc(var(--spacing)*5)}.w-5\\/6{width:83.3333%}.w-6{width:calc(var(--spacing)*6)}.w-7{width:calc(var(--spacing)*7)}.w-8{width:calc(var(--spacing)*8)}.w-10{width:calc(var(--spacing)*10)}.w-11{width:calc(var(--spacing)*11)}.w-16{width:calc(var(--spacing)*16)}.w-20{width:calc(var(--spacing)*20)}.w-32{width:calc(var(--spacing)*32)}.w-48{width:calc(var(--spacing)*48)}.w-56{width:calc(var(--spacing)*56)}.w-72{width:calc(var(--spacing)*72)}.w-\\[min\\(22rem\\,32vw\\)\\]{width:min(22rem,32vw)}.w-full{width:100%}.w-px{width:1px}.max-w-2xl{max-width:var(--container-2xl)}.max-w-3xl{max-width:var(--container-3xl)}.max-w-4xl{max-width:var(--container-4xl)}.max-w-80{max-width:calc(var(--spacing)*80)}.max-w-\\[85vw\\]{max-width:85vw}.max-w-lg{max-width:var(--container-lg)}.max-w-md{max-width:var(--container-md)}.max-w-sm{max-width:var(--container-sm)}.min-w-0{min-width:calc(var(--spacing)*0)}.min-w-40{min-width:calc(var(--spacing)*40)}.min-w-44{min-width:calc(var(--spacing)*44)}.min-w-\\[16rem\\]{min-width:16rem}.min-w-full{min-width:100%}.flex-1{flex:1}.flex-shrink-0,.shrink-0{flex-shrink:0}.border-collapse{border-collapse:collapse}.-translate-x-1\\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-x-1{--tw-translate-x:calc(var(--spacing)*1);translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-x-6{--tw-translate-x:calc(var(--spacing)*6);translate:var(--tw-translate-x)var(--tw-translate-y)}.scale-110{--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x)var(--tw-scale-y)}.-scale-x-100{--tw-scale-x: -100% ;scale:var(--tw-scale-x)var(--tw-scale-y)}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-crosshair{cursor:crosshair}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.resize{resize:both}.resize-none{resize:none}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-start{justify-content:flex-start}.gap-0\\.5{gap:calc(var(--spacing)*.5)}.gap-1{gap:calc(var(--spacing)*1)}.gap-1\\.5{gap:calc(var(--spacing)*1.5)}.gap-2{gap:calc(var(--spacing)*2)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}.gap-6{gap:calc(var(--spacing)*6)}.gap-8{gap:calc(var(--spacing)*8)}:where(.space-y-1\\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1.5)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1.5)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*3)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*6)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*6)*calc(1 - var(--tw-space-y-reverse)))}.self-start{align-self:flex-start}.self-stretch{align-self:stretch}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-xl{border-radius:calc(var(--radius) + 4px)}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-4{border-style:var(--tw-border-style);border-width:4px}.border-x{border-inline-style:var(--tw-border-style);border-inline-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-accent,.border-accent\\/30{border-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.border-accent\\/30{border-color:color-mix(in oklab,var(--accent)30%,transparent)}}.border-background{border-color:var(--background)}.border-border,.border-border\\/30{border-color:var(--border)}@supports (color:color-mix(in lab,red,red)){.border-border\\/30{border-color:color-mix(in oklab,var(--border)30%,transparent)}}.border-border\\/50{border-color:var(--border)}@supports (color:color-mix(in lab,red,red)){.border-border\\/50{border-color:color-mix(in oklab,var(--border)50%,transparent)}}.border-destructive\\/30{border-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.border-destructive\\/30{border-color:color-mix(in oklab,var(--destructive)30%,transparent)}}.border-foreground{border-color:var(--foreground)}.border-primary,.border-primary\\/30{border-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.border-primary\\/30{border-color:color-mix(in oklab,var(--primary)30%,transparent)}}.border-primary\\/50{border-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.border-primary\\/50{border-color:color-mix(in oklab,var(--primary)50%,transparent)}}.border-purple-500\\/50{border-color:#ac4bff80}@supports (color:color-mix(in lab,red,red)){.border-purple-500\\/50{border-color:color-mix(in oklab,var(--color-purple-500)50%,transparent)}}.border-transparent{border-color:#0000}.border-b-border{border-bottom-color:var(--border)}.border-b-popover{border-bottom-color:var(--popover)}.bg-\\[\\#7c3aed\\]\\/10{background-color:#7c3aed1a}.bg-\\[\\#121011\\]{background-color:#121011}.bg-accent\\/5{background-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.bg-accent\\/5{background-color:color-mix(in oklab,var(--accent)5%,transparent)}}.bg-accent\\/10{background-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.bg-accent\\/10{background-color:color-mix(in oklab,var(--accent)10%,transparent)}}.bg-accent\\/15{background-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.bg-accent\\/15{background-color:color-mix(in oklab,var(--accent)15%,transparent)}}.bg-accent\\/20{background-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.bg-accent\\/20{background-color:color-mix(in oklab,var(--accent)20%,transparent)}}.bg-accent\\/40{background-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.bg-accent\\/40{background-color:color-mix(in oklab,var(--accent)40%,transparent)}}.bg-accent\\/60{background-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.bg-accent\\/60{background-color:color-mix(in oklab,var(--accent)60%,transparent)}}.bg-background,.bg-background\\/50{background-color:var(--background)}@supports (color:color-mix(in lab,red,red)){.bg-background\\/50{background-color:color-mix(in oklab,var(--background)50%,transparent)}}.bg-background\\/80{background-color:var(--background)}@supports (color:color-mix(in lab,red,red)){.bg-background\\/80{background-color:color-mix(in oklab,var(--background)80%,transparent)}}.bg-background\\/90{background-color:var(--background)}@supports (color:color-mix(in lab,red,red)){.bg-background\\/90{background-color:color-mix(in oklab,var(--background)90%,transparent)}}.bg-blue-500{background-color:var(--color-blue-500)}.bg-border,.bg-border\\/50{background-color:var(--border)}@supports (color:color-mix(in lab,red,red)){.bg-border\\/50{background-color:color-mix(in oklab,var(--border)50%,transparent)}}.bg-card,.bg-card\\/30{background-color:var(--card)}@supports (color:color-mix(in lab,red,red)){.bg-card\\/30{background-color:color-mix(in oklab,var(--card)30%,transparent)}}.bg-card\\/50{background-color:var(--card)}@supports (color:color-mix(in lab,red,red)){.bg-card\\/50{background-color:color-mix(in oklab,var(--card)50%,transparent)}}.bg-card\\/80{background-color:var(--card)}@supports (color:color-mix(in lab,red,red)){.bg-card\\/80{background-color:color-mix(in oklab,var(--card)80%,transparent)}}.bg-card\\/95{background-color:var(--card)}@supports (color:color-mix(in lab,red,red)){.bg-card\\/95{background-color:color-mix(in oklab,var(--card)95%,transparent)}}.bg-destructive,.bg-destructive\\/5{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.bg-destructive\\/5{background-color:color-mix(in oklab,var(--destructive)5%,transparent)}}.bg-destructive\\/10{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.bg-destructive\\/10{background-color:color-mix(in oklab,var(--destructive)10%,transparent)}}.bg-destructive\\/15{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.bg-destructive\\/15{background-color:color-mix(in oklab,var(--destructive)15%,transparent)}}.bg-destructive\\/20{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.bg-destructive\\/20{background-color:color-mix(in oklab,var(--destructive)20%,transparent)}}.bg-destructive\\/40{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.bg-destructive\\/40{background-color:color-mix(in oklab,var(--destructive)40%,transparent)}}.bg-destructive\\/60{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.bg-destructive\\/60{background-color:color-mix(in oklab,var(--destructive)60%,transparent)}}.bg-foreground\\/60{background-color:var(--foreground)}@supports (color:color-mix(in lab,red,red)){.bg-foreground\\/60{background-color:color-mix(in oklab,var(--foreground)60%,transparent)}}.bg-foreground\\/80{background-color:var(--foreground)}@supports (color:color-mix(in lab,red,red)){.bg-foreground\\/80{background-color:color-mix(in oklab,var(--foreground)80%,transparent)}}.bg-green-500\\/20{background-color:#00c75833}@supports (color:color-mix(in lab,red,red)){.bg-green-500\\/20{background-color:color-mix(in oklab,var(--color-green-500)20%,transparent)}}.bg-green-600{background-color:var(--color-green-600)}.bg-green-600\\/50{background-color:#00a54480}@supports (color:color-mix(in lab,red,red)){.bg-green-600\\/50{background-color:color-mix(in oklab,var(--color-green-600)50%,transparent)}}.bg-muted{background-color:var(--muted)}.bg-muted-foreground\\/30{background-color:var(--muted-foreground)}@supports (color:color-mix(in lab,red,red)){.bg-muted-foreground\\/30{background-color:color-mix(in oklab,var(--muted-foreground)30%,transparent)}}.bg-muted\\/30{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.bg-muted\\/30{background-color:color-mix(in oklab,var(--muted)30%,transparent)}}.bg-muted\\/50{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.bg-muted\\/50{background-color:color-mix(in oklab,var(--muted)50%,transparent)}}.bg-muted\\/80{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.bg-muted\\/80{background-color:color-mix(in oklab,var(--muted)80%,transparent)}}.bg-orange-500\\/15{background-color:#fe6e0026}@supports (color:color-mix(in lab,red,red)){.bg-orange-500\\/15{background-color:color-mix(in oklab,var(--color-orange-500)15%,transparent)}}.bg-popover{background-color:var(--popover)}.bg-primary,.bg-primary\\/5{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.bg-primary\\/5{background-color:color-mix(in oklab,var(--primary)5%,transparent)}}.bg-primary\\/10{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.bg-primary\\/10{background-color:color-mix(in oklab,var(--primary)10%,transparent)}}.bg-primary\\/15{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.bg-primary\\/15{background-color:color-mix(in oklab,var(--primary)15%,transparent)}}.bg-primary\\/20{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.bg-primary\\/20{background-color:color-mix(in oklab,var(--primary)20%,transparent)}}.bg-primary\\/40{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.bg-primary\\/40{background-color:color-mix(in oklab,var(--primary)40%,transparent)}}.bg-primary\\/60{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.bg-primary\\/60{background-color:color-mix(in oklab,var(--primary)60%,transparent)}}.bg-purple-500\\/10{background-color:#ac4bff1a}@supports (color:color-mix(in lab,red,red)){.bg-purple-500\\/10{background-color:color-mix(in oklab,var(--color-purple-500)10%,transparent)}}.bg-purple-600{background-color:var(--color-purple-600)}.bg-secondary,.bg-secondary\\/10{background-color:var(--secondary)}@supports (color:color-mix(in lab,red,red)){.bg-secondary\\/10{background-color:color-mix(in oklab,var(--secondary)10%,transparent)}}.bg-secondary\\/20{background-color:var(--secondary)}@supports (color:color-mix(in lab,red,red)){.bg-secondary\\/20{background-color:color-mix(in oklab,var(--secondary)20%,transparent)}}.bg-secondary\\/40{background-color:var(--secondary)}@supports (color:color-mix(in lab,red,red)){.bg-secondary\\/40{background-color:color-mix(in oklab,var(--secondary)40%,transparent)}}.bg-secondary\\/60{background-color:var(--secondary)}@supports (color:color-mix(in lab,red,red)){.bg-secondary\\/60{background-color:color-mix(in oklab,var(--secondary)60%,transparent)}}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.bg-zinc-500\\/20{background-color:#71717b33}@supports (color:color-mix(in lab,red,red)){.bg-zinc-500\\/20{background-color:color-mix(in oklab,var(--color-zinc-500)20%,transparent)}}.object-contain{object-fit:contain}.object-cover{object-fit:cover}.p-0\\.5{padding:calc(var(--spacing)*.5)}.p-1{padding:calc(var(--spacing)*1)}.p-1\\.5{padding:calc(var(--spacing)*1.5)}.p-2{padding:calc(var(--spacing)*2)}.p-2\\.5{padding:calc(var(--spacing)*2.5)}.p-3{padding:calc(var(--spacing)*3)}.p-4{padding:calc(var(--spacing)*4)}.p-5{padding:calc(var(--spacing)*5)}.p-6{padding:calc(var(--spacing)*6)}.px-1\\.5{padding-inline:calc(var(--spacing)*1.5)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-2\\.5{padding-inline:calc(var(--spacing)*2.5)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.px-5{padding-inline:calc(var(--spacing)*5)}.px-6{padding-inline:calc(var(--spacing)*6)}.px-8{padding-inline:calc(var(--spacing)*8)}.px-\\[15px\\]{padding-inline:15px}.py-0\\.5{padding-block:calc(var(--spacing)*.5)}.py-1{padding-block:calc(var(--spacing)*1)}.py-1\\.5{padding-block:calc(var(--spacing)*1.5)}.py-2{padding-block:calc(var(--spacing)*2)}.py-2\\.5{padding-block:calc(var(--spacing)*2.5)}.py-3{padding-block:calc(var(--spacing)*3)}.py-4{padding-block:calc(var(--spacing)*4)}.py-8{padding-block:calc(var(--spacing)*8)}.py-16{padding-block:calc(var(--spacing)*16)}.pt-4{padding-top:calc(var(--spacing)*4)}.pt-32{padding-top:calc(var(--spacing)*32)}.pr-20{padding-right:calc(var(--spacing)*20)}.pb-20{padding-bottom:calc(var(--spacing)*20)}.pl-0\\.5{padding-left:calc(var(--spacing)*.5)}.pl-2{padding-left:calc(var(--spacing)*2)}.pl-3{padding-left:calc(var(--spacing)*3)}.pl-4{padding-left:calc(var(--spacing)*4)}.text-center{text-align:center}.text-left{text-align:left}.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\\[9px\\]{font-size:9px}.text-\\[10px\\]{font-size:10px}.text-\\[11px\\]{font-size:11px}.text-\\[13px\\]{font-size:13px}.text-\\[15px\\]{font-size:15px}.leading-\\[1\\.1\\]{--tw-leading:1.1;line-height:1.1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-\\[\\#7c3aed\\]{color:#7c3aed}.text-accent{color:var(--accent)}.text-destructive{color:var(--destructive)}.text-destructive-foreground{color:var(--destructive-foreground)}.text-foreground,.text-foreground\\/80{color:var(--foreground)}@supports (color:color-mix(in lab,red,red)){.text-foreground\\/80{color:color-mix(in oklab,var(--foreground)80%,transparent)}}.text-foreground\\/90{color:var(--foreground)}@supports (color:color-mix(in lab,red,red)){.text-foreground\\/90{color:color-mix(in oklab,var(--foreground)90%,transparent)}}.text-green-500{color:var(--color-green-500)}.text-muted-foreground,.text-muted-foreground\\/30{color:var(--muted-foreground)}@supports (color:color-mix(in lab,red,red)){.text-muted-foreground\\/30{color:color-mix(in oklab,var(--muted-foreground)30%,transparent)}}.text-muted-foreground\\/50{color:var(--muted-foreground)}@supports (color:color-mix(in lab,red,red)){.text-muted-foreground\\/50{color:color-mix(in oklab,var(--muted-foreground)50%,transparent)}}.text-muted-foreground\\/60{color:var(--muted-foreground)}@supports (color:color-mix(in lab,red,red)){.text-muted-foreground\\/60{color:color-mix(in oklab,var(--muted-foreground)60%,transparent)}}.text-muted-foreground\\/70{color:var(--muted-foreground)}@supports (color:color-mix(in lab,red,red)){.text-muted-foreground\\/70{color:color-mix(in oklab,var(--muted-foreground)70%,transparent)}}.text-orange-400{color:var(--color-orange-400)}.text-popover-foreground{color:var(--popover-foreground)}.text-primary{color:var(--primary)}.text-primary-foreground{color:var(--primary-foreground)}.text-primary\\/60{color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.text-primary\\/60{color:color-mix(in oklab,var(--primary)60%,transparent)}}.text-purple-500{color:var(--color-purple-500)}.text-secondary{color:var(--secondary)}.text-white{color:var(--color-white)}.text-white\\/70{color:#ffffffb3}@supports (color:color-mix(in lab,red,red)){.text-white\\/70{color:color-mix(in oklab,var(--color-white)70%,transparent)}}.text-zinc-400{color:var(--color-zinc-400)}.capitalize{text-transform:capitalize}.uppercase{text-transform:uppercase}.italic{font-style:italic}.line-through{text-decoration-line:line-through}.underline{text-decoration-line:underline}.underline-offset-2{text-underline-offset:2px}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-0{opacity:0}.opacity-25{opacity:.25}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-75{opacity:.75}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a),0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-blur-xl{--tw-backdrop-blur:blur(var(--blur-xl));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-75{--tw-duration:75ms;transition-duration:75ms}.duration-150{--tw-duration:.15s;transition-duration:.15s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.ease-in{--tw-ease:var(--ease-in);transition-timing-function:var(--ease-in)}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.select-none{-webkit-user-select:none;user-select:none}@media(hover:hover){.group-hover\\:opacity-100:is(:where(.group):hover *){opacity:1}.group-hover\\/approve\\:visible:is(:where(.group\\/approve):hover *){visibility:visible}.group-hover\\/approve\\:opacity-100:is(:where(.group\\/approve):hover *){opacity:1}}.placeholder\\:text-muted-foreground::placeholder,.placeholder\\:text-muted-foreground\\/50::placeholder{color:var(--muted-foreground)}@supports (color:color-mix(in lab,red,red)){.placeholder\\:text-muted-foreground\\/50::placeholder{color:color-mix(in oklab,var(--muted-foreground)50%,transparent)}}.first\\:mt-0:first-child{margin-top:calc(var(--spacing)*0)}@media(hover:hover){.hover\\:scale-105:hover{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x)var(--tw-scale-y)}.hover\\:border-accent:hover{border-color:var(--accent)}.hover\\:border-border\\/50:hover{border-color:var(--border)}@supports (color:color-mix(in lab,red,red)){.hover\\:border-border\\/50:hover{border-color:color-mix(in oklab,var(--border)50%,transparent)}}.hover\\:border-muted-foreground:hover{border-color:var(--muted-foreground)}.hover\\:bg-accent\\/10:hover{background-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.hover\\:bg-accent\\/10:hover{background-color:color-mix(in oklab,var(--accent)10%,transparent)}}.hover\\:bg-accent\\/25:hover{background-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.hover\\:bg-accent\\/25:hover{background-color:color-mix(in oklab,var(--accent)25%,transparent)}}.hover\\:bg-background:hover{background-color:var(--background)}.hover\\:bg-destructive\\/10:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.hover\\:bg-destructive\\/10:hover{background-color:color-mix(in oklab,var(--destructive)10%,transparent)}}.hover\\:bg-green-500:hover{background-color:var(--color-green-500)}.hover\\:bg-green-600:hover{background-color:var(--color-green-600)}.hover\\:bg-muted:hover,.hover\\:bg-muted\\/20:hover{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.hover\\:bg-muted\\/20:hover{background-color:color-mix(in oklab,var(--muted)20%,transparent)}}.hover\\:bg-muted\\/50:hover{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.hover\\:bg-muted\\/50:hover{background-color:color-mix(in oklab,var(--muted)50%,transparent)}}.hover\\:bg-muted\\/80:hover{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.hover\\:bg-muted\\/80:hover{background-color:color-mix(in oklab,var(--muted)80%,transparent)}}.hover\\:bg-purple-500:hover{background-color:var(--color-purple-500)}.hover\\:text-destructive:hover{color:var(--destructive)}.hover\\:text-foreground:hover{color:var(--foreground)}.hover\\:text-muted-foreground:hover{color:var(--muted-foreground)}.hover\\:text-primary:hover,.hover\\:text-primary\\/80:hover{color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.hover\\:text-primary\\/80:hover{color:color-mix(in oklab,var(--primary)80%,transparent)}}.hover\\:text-white:hover{color:var(--color-white)}.hover\\:underline:hover{text-decoration-line:underline}.hover\\:opacity-80:hover{opacity:.8}.hover\\:opacity-90:hover{opacity:.9}.hover\\:opacity-100:hover{opacity:1}.hover\\:shadow-sm:hover{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}.focus\\:bg-muted\\/30:focus{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.focus\\:bg-muted\\/30:focus{background-color:color-mix(in oklab,var(--muted)30%,transparent)}}.focus\\:ring-1:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\\:ring-accent\\/50:focus{--tw-ring-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.focus\\:ring-accent\\/50:focus{--tw-ring-color:color-mix(in oklab,var(--accent)50%,transparent)}}.focus\\:ring-primary:focus,.focus\\:ring-primary\\/50:focus{--tw-ring-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.focus\\:ring-primary\\/50:focus{--tw-ring-color:color-mix(in oklab,var(--primary)50%,transparent)}}.focus\\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\\:ring-ring:focus-visible{--tw-ring-color:var(--ring)}.focus-visible\\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\\:opacity-50:disabled{opacity:.5}@media(min-width:48rem){.md\\:top-5{top:calc(var(--spacing)*5)}.md\\:right-5{right:calc(var(--spacing)*5)}.md\\:mb-4{margin-bottom:calc(var(--spacing)*4)}.md\\:block{display:block}.md\\:hidden{display:none}.md\\:inline{display:inline}.md\\:h-24{height:calc(var(--spacing)*24)}.md\\:w-24{width:calc(var(--spacing)*24)}.md\\:min-w-56{min-width:calc(var(--spacing)*56)}.md\\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\\:gap-2{gap:calc(var(--spacing)*2)}.md\\:gap-3{gap:calc(var(--spacing)*3)}.md\\:p-8{padding:calc(var(--spacing)*8)}.md\\:px-2\\.5{padding-inline:calc(var(--spacing)*2.5)}.md\\:px-4{padding-inline:calc(var(--spacing)*4)}.md\\:px-10{padding-inline:calc(var(--spacing)*10)}.md\\:py-1{padding-block:calc(var(--spacing)*1)}.md\\:py-8{padding-block:calc(var(--spacing)*8)}.md\\:text-5xl{font-size:var(--text-5xl);line-height:var(--tw-leading,var(--text-5xl--line-height))}}@media(min-width:64rem){.lg\\:p-10{padding:calc(var(--spacing)*10)}}@media(min-width:80rem){.xl\\:max-w-5xl{max-width:var(--container-5xl)}.xl\\:p-12{padding:calc(var(--spacing)*12)}.xl\\:px-16{padding-inline:calc(var(--spacing)*16)}}@media(min-width:96rem){.\\32xl\\:max-w-6xl{max-width:var(--container-6xl)}}}:root{--background:oklch(13% .02 260);--foreground:oklch(95% .01 260);--card:oklch(16% .02 260);--card-foreground:oklch(95% .01 260);--popover:oklch(18% .025 260);--popover-foreground:oklch(95% .01 260);--primary:oklch(75% .18 280);--primary-foreground:oklch(13% .02 260);--secondary:oklch(65% .15 180);--secondary-foreground:oklch(13% .02 260);--muted:oklch(22% .02 260);--muted-foreground:oklch(65% .02 260);--accent:oklch(70% .2 60);--accent-foreground:oklch(13% .02 260);--destructive:oklch(65% .22 25);--destructive-foreground:oklch(98% 0 0);--border:oklch(28% .02 260);--input:oklch(22% .02 260);--ring:oklch(75% .18 280);--font-sans:"Inter",system-ui,sans-serif;--font-mono:"JetBrains Mono","Fira Code",monospace;--radius:.75rem}.light{--background:oklch(97% .005 260);--foreground:oklch(18% .02 260);--card:oklch(100% 0 0);--card-foreground:oklch(18% .02 260);--popover:oklch(100% 0 0);--popover-foreground:oklch(18% .02 260);--primary:oklch(50% .25 280);--primary-foreground:oklch(100% 0 0);--secondary:oklch(50% .18 180);--secondary-foreground:oklch(100% 0 0);--muted:oklch(92% .01 260);--muted-foreground:oklch(40% .02 260);--accent:oklch(60% .22 50);--accent-foreground:oklch(18% .02 260);--destructive:oklch(50% .25 25);--destructive-foreground:oklch(100% 0 0);--border:oklch(88% .01 260);--input:oklch(92% .01 260);--ring:oklch(50% .25 280)}*{border-color:var(--border)}body{font-family:var(--font-sans);background:var(--background);color:var(--foreground);font-feature-settings:"ss01","ss02","cv01"}.bg-grid{background-image:linear-gradient(90deg,#1c222b80 1px,#0000 1px),linear-gradient(#1c222b80 1px,#0000 1px);background-size:24px 24px}.light .bg-grid{background-image:linear-gradient(90deg,#dadee599 1px,#0000 1px),linear-gradient(#dadee599 1px,#0000 1px)}.glow-primary{box-shadow:0 0 20px oklch(75% .18 280/.15),0 0 40px oklch(75% .18 280/.05)}.glow-sm{box-shadow:0 0 10px oklch(75% .18 280/.1)}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--muted-foreground)}pre code.hljs{border-radius:var(--radius);padding:1rem;font-size:.8125rem;line-height:1.6;display:block;background:var(--muted)!important}.light pre code.hljs{color:#1c222b!important}.light .hljs-keyword,.light .hljs-selector-tag,.light .hljs-built_in,.light .hljs-name,.light .hljs-tag{color:#4a1fd9!important}.light .hljs-string,.light .hljs-title,.light .hljs-section,.light .hljs-attribute,.light .hljs-literal,.light .hljs-template-tag,.light .hljs-template-variable,.light .hljs-type{color:oklch(45% .18 150)!important}.light .hljs-comment,.light .hljs-quote{font-style:italic;color:#6b727e!important}.light .hljs-number,.light .hljs-symbol,.light .hljs-bullet{color:oklch(50% .2 50)!important}.light .hljs-attr,.light .hljs-variable,.light .hljs-template-variable,.light .hljs-class .hljs-title,.light .hljs-function{color:#4838bf!important}::selection{background:oklch(75% .18 280/.3)}*{transition-property:color,background-color,border-color,box-shadow,opacity,transform;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}:focus-visible{outline:2px solid var(--ring);outline-offset:2px}.annotation-highlight{border-radius:2px;margin:0 -2px;padding:0 2px}.annotation-highlight.deletion{text-decoration:line-through;-webkit-text-decoration-color:var(--destructive);text-decoration-color:var(--destructive);background:#f9414440;text-decoration-thickness:2px}.annotation-highlight.comment{border-bottom:2px solid var(--accent);background:oklch(70% .2 60/.2)}.annotation-highlight:hover{filter:brightness(1.2);cursor:pointer}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}</style>
|
|
859
859
|
</head>
|
|
860
860
|
<body class="min-h-screen antialiased">
|
|
861
861
|
<div id="root" class="h-full"></div>
|
|
@@ -909,15 +909,13 @@ Do NOT proceed with implementation until your plan is approved.
|
|
|
909
909
|
body: { command: "agent_cycle" }
|
|
910
910
|
});
|
|
911
911
|
} catch {}
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
});
|
|
920
|
-
} catch {}
|
|
912
|
+
ctx.client.session.prompt({
|
|
913
|
+
path: { id: context.sessionID },
|
|
914
|
+
body: {
|
|
915
|
+
agent: "build",
|
|
916
|
+
parts: [{ type: "text", text: "Proceed with implementation" }]
|
|
917
|
+
}
|
|
918
|
+
}).catch(() => {});
|
|
921
919
|
return `Plan approved!
|
|
922
920
|
|
|
923
921
|
Plan Summary: ${args.summary}`;
|