Download index (1).html from openmodelai/BrowserClick-V0.1: direct link, hf CLI and curl.
- Browser
- Download file 102 kB
-
https://huggingface.co/openmodelai/BrowserClick-V0.1/resolve/main/index%20(1).html
- Command line
-
hf download 'hf://openmodelai/BrowserClick-V0.1/index (1).html'
-
curl -L -o 'index (1).html' 'https://huggingface.co/openmodelai/BrowserClick-V0.1/resolve/main/index%20(1).html'
102 kB
| <html lang="ru" data-theme="light"> | |
| <head> | |
| <meta charset="utf-8"> | |
| <meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover"> | |
| <title>BrowserClick</title> | |
| <link rel="preconnect" href="https://fonts.googleapis.com"> | |
| <link href="https://fonts.googleapis.com/css2?family=Manrope:wght@400;500;600;700;800&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet"> | |
| <style> | |
| :root{--ac:#2457ff;--ac2:rgba(36,87,255,.1);--aci:#fff;--bg:#e8ebf0;--sf:#fff;--sf2:#f1f3f7;--tx:#10151c;--mu:#667085;--bd:#dde1e8;--warn:#b25e09;--ok:#12805c;--sh:0 1px 2px rgba(16,21,28,.05),0 12px 32px rgba(16,21,28,.07); | |
| --f:"Manrope","Segoe UI Variable Text","Segoe UI",system-ui,-apple-system,Roboto,sans-serif;--m:"JetBrains Mono",ui-monospace,Menlo,Consolas,monospace} | |
| [data-theme=dark]{--ac:#8aa2ff;--ac2:rgba(138,162,255,.14);--aci:#0a0e18;--bg:#0b0d11;--sf:#13161c;--sf2:#1b1f27;--tx:#e8ebf1;--mu:#8f98a7;--bd:#252a33;--warn:#f0b25c;--ok:#4cc79b;--sh:0 1px 2px rgba(0,0,0,.4),0 12px 32px rgba(0,0,0,.35)} | |
| *,*::before,*::after{box-sizing:border-box} | |
| html,body{height:100%} | |
| body{margin:0;font:500 15px/1.5 var(--f);background:var(--bg);color:var(--tx);-webkit-font-smoothing:antialiased} | |
| button,input{font:inherit;color:inherit}button{cursor:pointer} | |
| :focus-visible{outline:2px solid var(--ac);outline-offset:2px;border-radius:8px} | |
| .app{display:flex;height:100dvh;overflow:hidden} | |
| .side{width:272px;flex:0 0 272px;display:flex;flex-direction:column;gap:10px;background:var(--sf);border-right:1px solid var(--bd);padding:max(16px,env(safe-area-inset-top)) 12px max(12px,env(safe-area-inset-bottom));z-index:60} | |
| .brand{display:flex;align-items:center;gap:10px;padding:2px 6px 8px;font-weight:800;font-size:16px;letter-spacing:-.02em} | |
| .logo{width:28px;height:28px;border-radius:9px;background:var(--ac);color:var(--aci);display:grid;place-items:center} | |
| .btn-new{display:flex;align-items:center;justify-content:center;gap:7px;padding:10px;border:1px solid var(--bd);border-radius:11px;background:var(--sf2);font-weight:650;font-size:13.5px;transition:.15s} | |
| .btn-new:hover{border-color:var(--ac);color:var(--ac);background:var(--ac2)} | |
| .list{flex:1;min-height:0;overflow-y:auto;display:flex;flex-direction:column;gap:2px;overscroll-behavior:contain} | |
| .item{display:flex;align-items:center;border-radius:10px;padding:2px} | |
| .item:hover{background:var(--sf2)}.item.on{background:var(--ac2)} | |
| .open{flex:1;min-width:0;text-align:left;border:0;background:none;padding:8px;border-radius:8px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13.5px} | |
| .item.on .open{color:var(--ac);font-weight:700} | |
| .act{display:grid;place-items:center;width:26px;height:26px;border:0;border-radius:7px;background:none;color:var(--mu);opacity:0} | |
| .item:hover .act,.item:focus-within .act{opacity:1}.act:hover{background:var(--sf);color:var(--tx)} | |
| @media(hover:none){.act{opacity:1}} | |
| .ren{flex:1;min-width:0;padding:6px 8px;border-radius:8px;border:1px solid var(--ac);background:var(--sf);outline:0;font-size:13.5px} | |
| .foot{display:flex;gap:6px;padding-top:8px;border-top:1px solid var(--bd)} | |
| .ghost{flex:1;padding:8px;border-radius:9px;border:1px solid transparent;background:none;color:var(--mu);font-size:12.5px;font-weight:650} | |
| .ghost:hover{background:var(--sf2);color:#d14343} | |
| .main{flex:1;min-width:0;display:flex;flex-direction:column} | |
| .top{display:flex;align-items:center;gap:8px;padding:max(10px,env(safe-area-inset-top)) 16px 10px;min-height:56px} | |
| .ttl{flex:1;min-width:0;font-weight:700;font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap} | |
| .ib{display:grid;place-items:center;width:38px;height:38px;flex:0 0 auto;border:0;border-radius:11px;background:none;color:var(--mu);transition:.15s} | |
| .ib:hover{background:var(--sf2);color:var(--tx)}.ib:disabled{opacity:.4;cursor:not-allowed} | |
| .ib.rec{background:var(--ac);color:var(--aci);animation:pl 1.4s ease-in-out infinite} | |
| @keyframes pl{50%{box-shadow:0 0 0 8px var(--ac2)}} | |
| .menu{display:none} | |
| .msgs{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:12px 18px} | |
| .thread{max-width:740px;margin:0 auto;display:flex;flex-direction:column;gap:14px} | |
| .u{align-self:flex-end;max-width:min(82%,540px);padding:9px 15px;border-radius:16px 16px 4px 16px;background:var(--ac);color:var(--aci);font-weight:600;overflow-wrap:anywhere} | |
| .card{width:100%;max-width:600px;background:var(--sf);border:1px solid var(--bd);border-radius:16px;box-shadow:var(--sh);overflow:hidden} | |
| .row{display:flex;align-items:center;gap:12px;padding:11px 14px} | |
| .row+.row{border-top:1px solid var(--bd)} | |
| .mono{flex:0 0 auto;width:38px;height:38px;border-radius:11px;display:grid;place-items:center;color:#fff;font-weight:800;font-size:16px} | |
| .info{flex:1;min-width:0} | |
| .nm{font-weight:700;font-size:14px;display:flex;gap:8px;align-items:center;flex-wrap:wrap} | |
| .tag{font-size:11.5px;font-weight:700;padding:1px 8px;border-radius:99px;background:var(--ac2);color:var(--ac)} | |
| .tag.bad{background:rgba(178,94,9,.14);color:var(--warn)}.tag.ok{background:rgba(18,128,92,.13);color:var(--ok)} | |
| .url{font:400 12px var(--m);color:var(--mu);overflow:hidden;text-overflow:ellipsis;white-space:nowrap} | |
| .qq{font-size:12.5px;color:var(--mu)} | |
| .rb{flex:0 0 auto;border:1px solid var(--bd);background:var(--sf2);border-radius:9px;padding:6px 11px;font-size:12.5px;font-weight:700;transition:.15s} | |
| .rb:hover{border-color:var(--ac);color:var(--ac)} | |
| .all{display:block;width:100%;border:0;border-top:1px solid var(--bd);background:var(--sf2);padding:9px;font-weight:700;font-size:13px;color:var(--ac)} | |
| .empty{padding:10vh 0 3vh} | |
| .big{margin:0 0 8px;font-size:clamp(32px,6vw,52px);line-height:1.05;font-weight:800;letter-spacing:-.04em} | |
| .sub{margin:0 0 26px;color:var(--mu);max-width:46ch} | |
| .chips{display:flex;flex-wrap:wrap;gap:8px} | |
| .chip{padding:8px 14px;border-radius:99px;border:1px solid var(--bd);background:var(--sf);font-size:13px;font-weight:600;transition:.15s} | |
| .chip:hover{border-color:var(--ac);color:var(--ac);background:var(--ac2)} | |
| .comp{padding:8px 18px calc(14px + env(safe-area-inset-bottom));position:relative} | |
| .wrap{max-width:740px;margin:0 auto;position:relative} | |
| .bar{display:flex;align-items:center;gap:4px;padding:6px 6px 6px 14px;background:var(--sf);border:1.5px solid var(--bd);border-radius:18px;box-shadow:var(--sh);transition:border-color .15s} | |
| .bar:focus-within{border-color:var(--ac)} | |
| .pr{font:500 16px var(--m);color:var(--ac)} | |
| #in{flex:1;min-width:0;border:0;background:none;outline:0;padding:11px 8px;font-size:15.5px} | |
| #in::placeholder{color:var(--mu)} | |
| .go{display:grid;place-items:center;width:40px;height:40px;border:0;border-radius:12px;background:var(--ac);color:var(--aci)} | |
| .go:hover{filter:brightness(1.08)} | |
| .sg{position:absolute;left:0;right:0;bottom:calc(100% + 8px);background:var(--sf);border:1px solid var(--bd);border-radius:14px;box-shadow:var(--sh);overflow:hidden} | |
| .sg[hidden]{display:none} | |
| .sgi{display:flex;align-items:center;gap:10px;width:100%;border:0;background:none;padding:8px 12px;text-align:left} | |
| .sgi.hl,.sgi:hover{background:var(--ac2)} | |
| .sgi .mono{width:26px;height:26px;border-radius:8px;font-size:12px} | |
| .sgi small{margin-left:auto;color:var(--mu);font:400 12px var(--m)} | |
| .hint{max-width:740px;margin:8px auto 0;text-align:center;font-size:12px;color:var(--mu)} | |
| .scrim{position:fixed;inset:0;z-index:50;background:rgba(8,10,14,.45);opacity:0;pointer-events:none;transition:opacity .18s} | |
| .scrim.show{opacity:1;pointer-events:auto} | |
| @media(max-width:820px){.side{position:fixed;inset:0 auto 0 0;width:min(84vw,300px);flex-basis:auto;transform:translateX(-101%);transition:transform .2s;box-shadow:0 20px 50px rgba(0,0,0,.3)}.side.open{transform:none}.menu{display:grid}.msgs{padding:10px 12px}.comp{padding-left:12px;padding-right:12px}.hint{display:none}} | |
| @media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}} | |
| </style> | |
| </head> | |
| <body> | |
| <div class="app"> | |
| <div class="scrim" id="scrim"></div> | |
| <aside class="side" id="side"> | |
| <div class="brand"><span class="logo"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.6" stroke-linecap="round" stroke-linejoin="round"><path d="M5 4l14 8-14 8 3-8z"/></svg></span>BrowserClick</div> | |
| <button class="btn-new" id="newBtn" type="button"><svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round"><path d="M12 5v14M5 12h14"/></svg><span id="newTx"></span></button> | |
| <div class="list" id="list"></div> | |
| <div class="foot"><button class="ghost" id="clrBtn" type="button"></button></div> | |
| </aside> | |
| <main class="main"> | |
| <header class="top"> | |
| <button class="ib menu" id="menuBtn" type="button" aria-label="Menu"><svg width="19" height="19" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"><path d="M4 7h16M4 12h16M4 17h16"/></svg></button> | |
| <div class="ttl" id="ttl"></div> | |
| <button class="ib" id="themeBtn" type="button"></button> | |
| </header> | |
| <div class="msgs" id="msgs"></div> | |
| <div class="comp"> | |
| <div class="wrap"> | |
| <div class="sg" id="sg" hidden></div> | |
| <div class="bar"> | |
| <span class="pr" aria-hidden="true">></span> | |
| <input id="in" type="text" aria-label="Command" spellcheck="false" autocomplete="off" autocapitalize="off"> | |
| <button class="ib" id="mic" type="button" aria-pressed="false"><svg width="19" height="19" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.9" stroke-linecap="round" stroke-linejoin="round"><rect x="9" y="2.5" width="6" height="11" rx="3"/><path d="M5 11a7 7 0 0 0 14 0M12 18.5v3"/></svg></button> | |
| <button class="go" id="sendBtn" type="button"><svg width="19" height="19" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.3" stroke-linecap="round" stroke-linejoin="round"><path d="M12 19V5M5 12l7-7 7 7"/></svg></button> | |
| </div> | |
| </div> | |
| <div class="hint" id="hint"></div> | |
| </div> | |
| </main> | |
| </div> | |
| <script> | |
| (function(){ | |
| ; | |
| var RU=/^ru/i.test(navigator.language||''); | |
| var L={ | |
| newc:['New chat','Новый чат'],clr:['Clear all','Очистить всё'],ph:['Command or search — e.g. youtube lofi','Команда или запрос — например: ютуб lofi'], | |
| big:['Say where to go.','Скажи, куда идти.'],sub:['Type a site and it opens in a new tab. Add words and it searches there. Chain with “and”, commas or “+”.','Назови сайт — он откроется в новой вкладке. Добавь слова — поиск пойдёт прямо на нём. Несколько команд — через «и», запятую или «+».'], | |
| opened:['Opened','Открыто'],searched:['Searched','Поиск'],blocked:['Blocked','Заблокировано'],again:['Open','Открыть'],all:['Open all','Открыть все'], | |
| nomatch:['No command matched — searched Google','Команда не найдена — ищу в Google'],inSite:['Search on','Поиск на'], | |
| dc:['Delete “%”?','Удалить «%»?'],ca:['Delete all chats?','Удалить все чаты?'],ren:['Rename','Переименовать'],del:['Delete','Удалить'], | |
| hint:['% commands · Enter to run · ↑↓ to pick a suggestion · Ctrl+K new chat','% команд · Enter — запуск · ↑↓ — подсказки · Ctrl+K — новый чат'],theme:['Theme','Тема'] | |
| }; | |
| function t(k,a){var s=L[k][RU?1:0];return a==null?s:s.replace('%',a)} | |
| /* ====== COMMAND DATA ====== */ | |
| var COMMANDS=[ | |
| /* ── Search engines ─────────────────────────────────────────────────── */ | |
| { n:'Google', u:'https://www.google.com', en:['google','google search','search google'], ru:['гугл','гуглить','загугли','поиск в гугле'] }, | |
| { n:'Google Images', u:'https://images.google.com', en:['google images'], ru:['гугл картинки','картинки гугл'] }, | |
| { n:'Google News', u:'https://news.google.com', en:['google news','news'], ru:['гугл новости','новости'] }, | |
| { n:'Bing', u:'https://www.bing.com', en:['bing'], ru:['бинг'] }, | |
| { n:'DuckDuckGo', u:'https://duckduckgo.com', en:['duckduckgo','duck duck go'], ru:['дакдакго','дат дак го'] }, | |
| { n:'Yahoo', u:'https://www.yahoo.com', en:['yahoo'], ru:['яху'] }, | |
| { n:'Yandex', u:'https://yandex.ru', en:['yandex'], ru:['яндекс','яндекс поиск'] }, | |
| { n:'Brave Search', u:'https://search.brave.com', en:['brave search','brave'], ru:['брейв','брейв серч'] }, | |
| { n:'Ecosia', u:'https://www.ecosia.org', en:['ecosia'], ru:['экозия'] }, | |
| { n:'Startpage', u:'https://www.startpage.com', en:['startpage'], ru:['стартпейдж'] }, | |
| /* ── Video ──────────────────────────────────────────────────────────── */ | |
| { n:'YouTube', u:'https://www.youtube.com', en:['youtube'], ru:['ютуб','ютьюб'] }, | |
| { n:'YouTube Music', u:'https://music.youtube.com', en:['youtube music'], ru:['ютуб мьюзик','ютуб музыка'] }, | |
| { n:'Netflix', u:'https://www.netflix.com', en:['netflix'], ru:['нетфликс'] }, | |
| { n:'Twitch', u:'https://www.twitch.tv', en:['twitch'], ru:['твич'] }, | |
| { n:'Vimeo', u:'https://vimeo.com', en:['vimeo'], ru:['вимео'] }, | |
| { n:'Hulu', u:'https://www.hulu.com', en:['hulu'], ru:['хулу'] }, | |
| { n:'Disney+', u:'https://www.disneyplus.com', en:['disney plus','disney'], ru:['дисней плюс','дисней'] }, | |
| { n:'Prime Video', u:'https://www.primevideo.com', en:['prime video','amazon prime'], ru:['прайм видео'] }, | |
| { n:'HBO Max', u:'https://www.max.com', en:['hbo max','hbo'], ru:['эйчбио макс','макс'] }, | |
| { n:'Rutube', u:'https://rutube.ru', en:['rutube'], ru:['рутуб'] }, | |
| { n:'Dailymotion', u:'https://www.dailymotion.com', en:['dailymotion'], ru:['дейлимоншен'] }, | |
| /* ── Music ──────────────────────────────────────────────────────────── */ | |
| { n:'Spotify', u:'https://open.spotify.com', en:['spotify'], ru:['спотифай','спотифи'] }, | |
| { n:'Apple Music', u:'https://music.apple.com', en:['apple music'], ru:['эпл мьюзик','эпл музыка'] }, | |
| { n:'SoundCloud', u:'https://soundcloud.com', en:['soundcloud'], ru:['саундклауд'] }, | |
| { n:'Deezer', u:'https://www.deezer.com', en:['deezer'], ru:['дизер'] }, | |
| { n:'Bandcamp', u:'https://bandcamp.com', en:['bandcamp'], ru:['бэндкэмп'] }, | |
| { n:'Last.fm', u:'https://www.last.fm', en:['last fm','lastfm'], ru:['ласт фм'] }, | |
| { n:'Yandex Music', u:'https://music.yandex.ru', en:['yandex music'], ru:['яндекс музыка'] }, | |
| { n:'Shazam', u:'https://www.shazam.com', en:['shazam'], ru:['шазам'] }, | |
| { n:'Tidal', u:'https://tidal.com', en:['tidal'], ru:['тайдал'] }, | |
| { n:'Discogs', u:'https://www.discogs.com', en:['discogs'], ru:['дискогс'] }, | |
| /* ── Social ─────────────────────────────────────────────────────────── */ | |
| { n:'Facebook', u:'https://www.facebook.com', en:['facebook','fb'], ru:['фейсбук','фб'] }, | |
| { n:'Instagram', u:'https://www.instagram.com', en:['instagram','insta'], ru:['инстаграм','инста'] }, | |
| { n:'X (Twitter)', u:'https://x.com', en:['twitter','x com'], ru:['твиттер','икс'] }, | |
| { n:'TikTok', u:'https://www.tiktok.com', en:['tiktok'], ru:['тикток','тик ток'] }, | |
| { n:'Reddit', u:'https://www.reddit.com', en:['reddit'], ru:['реддит'] }, | |
| { n:'LinkedIn', u:'https://www.linkedin.com', en:['linkedin'], ru:['линкедин','линкдин'] }, | |
| { n:'Pinterest', u:'https://www.pinterest.com', en:['pinterest'], ru:['пинтерест'] }, | |
| { n:'Snapchat', u:'https://www.snapchat.com', en:['snapchat'], ru:['снапчат'] }, | |
| { n:'Telegram Web', u:'https://web.telegram.org', en:['telegram','telegram web'], ru:['телеграм','телега'] }, | |
| { n:'Discord', u:'https://discord.com/app', en:['discord'], ru:['дискорд'] }, | |
| { n:'Tumblr', u:'https://www.tumblr.com', en:['tumblr'], ru:['тамблер'] }, | |
| { n:'Threads', u:'https://www.threads.net', en:['threads'], ru:['тредс','тредс нет'] }, | |
| { n:'Mastodon', u:'https://mastodon.social', en:['mastodon'], ru:['мастодон'] }, | |
| { n:'VK', u:'https://vk.com', en:['vk'], ru:['вконтакте','вк'] }, | |
| { n:'OK.ru', u:'https://ok.ru', en:['ok ru'], ru:['одноклассники','ок ру'] }, | |
| /* ── Email & productivity ───────────────────────────────────────────── */ | |
| { n:'Gmail', u:'https://mail.google.com', en:['gmail'], ru:['гмейл','джимейл','почта гугл'] }, | |
| { n:'Outlook', u:'https://outlook.live.com', en:['outlook'], ru:['аутлук','аутлук почта'] }, | |
| { n:'Proton Mail', u:'https://mail.proton.me', en:['proton mail','protonmail'], ru:['протон мейл','протон'] }, | |
| { n:'Google Drive', u:'https://drive.google.com', en:['google drive'], ru:['гугл диск','гугл драйв'] }, | |
| { n:'Google Docs', u:'https://docs.google.com', en:['google docs'], ru:['гугл докс','гугл документы'] }, | |
| { n:'Google Sheets', u:'https://sheets.google.com', en:['google sheets'], ru:['гугл таблицы'] }, | |
| { n:'Google Calendar', u:'https://calendar.google.com', en:['google calendar'], ru:['гугл календарь'] }, | |
| { n:'Google Keep', u:'https://keep.google.com', en:['google keep'], ru:['гугл кип','заметки гугл'] }, | |
| { n:'Notion', u:'https://www.notion.so', en:['notion'], ru:['ноушн','ноушен'] }, | |
| { n:'Trello', u:'https://trello.com', en:['trello'], ru:['трелло'] }, | |
| { n:'Asana', u:'https://app.asana.com', en:['asana'], ru:['асана'] }, | |
| { n:'Slack', u:'https://app.slack.com', en:['slack'], ru:['слэк','слак'] }, | |
| { n:'Dropbox', u:'https://www.dropbox.com', en:['dropbox'], ru:['дропбокс'] }, | |
| { n:'Zoom', u:'https://zoom.us', en:['zoom'], ru:['зум'] }, | |
| { n:'Google Meet', u:'https://meet.google.com', en:['google meet'], ru:['гугл мит'] }, | |
| { n:'Calendly', u:'https://calendly.com', en:['calendly'], ru:['календли'] }, | |
| /* ── Maps & travel ──────────────────────────────────────────────────── */ | |
| { n:'Google Maps', u:'https://maps.google.com', en:['google maps'], ru:['гугл карты','гугл мапс'] }, | |
| { n:'Yandex Maps', u:'https://yandex.ru/maps', en:['yandex maps'], ru:['яндекс карты'] }, | |
| { n:'OpenStreetMap', u:'https://www.openstreetmap.org', en:['openstreetmap'], ru:['опенстритмап','осм'] }, | |
| { n:'2GIS', u:'https://2gis.ru', en:['2gis'], ru:['2гис','два гис'] }, | |
| { n:'Booking.com', u:'https://www.booking.com', en:['booking'], ru:['букинг','букинг ком'] }, | |
| { n:'Airbnb', u:'https://www.airbnb.com', en:['airbnb'], ru:['эйрбиэнби','аирбиэнби'] }, | |
| { n:'Expedia', u:'https://www.expedia.com', en:['expedia'], ru:['экспидия'] }, | |
| { n:'Skyscanner', u:'https://www.skyscanner.com', en:['skyscanner'], ru:['скайсканнер'] }, | |
| { n:'Aviasales', u:'https://www.aviasales.ru', en:['aviasales'], ru:['авиасейлс','авиа сейлс'] }, | |
| { n:'Tripadvisor', u:'https://www.tripadvisor.com', en:['tripadvisor'], ru:['трипадвизор'] }, | |
| { n:'Uber', u:'https://www.uber.com', en:['uber'], ru:['убер'] }, | |
| { n:'Bolt', u:'https://bolt.eu', en:['bolt'], ru:['болт'] }, | |
| { n:'BlaBlaCar', u:'https://www.blablacar.com', en:['blablacar'], ru:['блаблакар'] }, | |
| { n:'Agoda', u:'https://www.agoda.com', en:['agoda'], ru:['агода'] }, | |
| { n:'Hotels.com', u:'https://www.hotels.com', en:['hotels com'], ru:['отели','хотелс'] }, | |
| { n:'Rome2Rio', u:'https://www.rome2rio.com', en:['rome2rio'], ru:['ром2рио'] }, | |
| { n:'FlixBus', u:'https://www.flixbus.com', en:['flixbus'], ru:['фликсбас'] }, | |
| /* ── Shopping ───────────────────────────────────────────────────────── */ | |
| { n:'Amazon', u:'https://www.amazon.com', en:['amazon'], ru:['амазон'] }, | |
| { n:'eBay', u:'https://www.ebay.com', en:['ebay'], ru:['ибей','и бей'] }, | |
| { n:'AliExpress', u:'https://www.aliexpress.com', en:['aliexpress'], ru:['алиэкспресс'] }, | |
| { n:'Alibaba', u:'https://www.alibaba.com', en:['alibaba'], ru:['алибаба'] }, | |
| { n:'Walmart', u:'https://www.walmart.com', en:['walmart'], ru:['волмарт'] }, | |
| { n:'Target', u:'https://www.target.com', en:['target'], ru:['таргет'] }, | |
| { n:'Best Buy', u:'https://www.bestbuy.com', en:['best buy'], ru:['бест бай'] }, | |
| { n:'Etsy', u:'https://www.etsy.com', en:['etsy'], ru:['этси'] }, | |
| { n:'IKEA', u:'https://www.ikea.com', en:['ikea'], ru:['икеа'] }, | |
| { n:'Wildberries', u:'https://www.wildberries.ru', en:['wildberries'], ru:['вайлдберриз','вайлдберрис'] }, | |
| { n:'Ozon', u:'https://www.ozon.ru', en:['ozon'], ru:['озон'] }, | |
| { n:'Avito', u:'https://www.avito.ru', en:['avito'], ru:['авито'] }, | |
| { n:'Shein', u:'https://www.shein.com', en:['shein'], ru:['шейн'] }, | |
| { n:'Yandex Market', u:'https://market.yandex.ru', en:['yandex market'], ru:['яндекс маркет'] }, | |
| /* ── News ───────────────────────────────────────────────────────────── */ | |
| { n:'BBC', u:'https://www.bbc.com', en:['bbc'], ru:['бибиси','ббс'] }, | |
| { n:'CNN', u:'https://edition.cnn.com', en:['cnn'], ru:['сиэнэн'] }, | |
| { n:'Reuters', u:'https://www.reuters.com', en:['reuters'], ru:['ройтерс'] }, | |
| { n:'The Guardian', u:'https://www.theguardian.com', en:['guardian'], ru:['гардиан','гвардиан'] }, | |
| { n:'New York Times', u:'https://www.nytimes.com', en:['new york times','nyt'], ru:['нью йорк таймс'] }, | |
| { n:'Washington Post', u:'https://www.washingtonpost.com', en:['washington post'], ru:['вашингтон пост'] }, | |
| { n:'Hacker News', u:'https://news.ycombinator.com', en:['hacker news'], ru:['хакер ньюс'] }, | |
| { n:'TechCrunch', u:'https://techcrunch.com', en:['techcrunch'], ru:['текранч','техкранч'] }, | |
| { n:'The Verge', u:'https://www.theverge.com', en:['the verge','verge'], ru:['вердж'] }, | |
| { n:'Ars Technica', u:'https://arstechnica.com', en:['ars technica'], ru:['арс техника'] }, | |
| { n:'Wired', u:'https://www.wired.com', en:['wired'], ru:['вайред'] }, | |
| { n:'Engadget', u:'https://www.engadget.com', en:['engadget'], ru:['энгаджет'] }, | |
| { n:'Financial Times', u:'https://www.ft.com', en:['financial times'], ru:['файнэншл таймс'] }, | |
| { n:'The Economist', u:'https://www.economist.com', en:['economist'], ru:['экономист'] }, | |
| { n:'Forbes', u:'https://www.forbes.com', en:['forbes'], ru:['форбс'] }, | |
| { n:'Al Jazeera', u:'https://www.aljazeera.com', en:['al jazeera'], ru:['альджазира'] }, | |
| { n:'RBC', u:'https://www.rbc.ru', en:['rbc'], ru:['рбк'] }, | |
| { n:'Lenta', u:'https://lenta.ru', en:['lenta'], ru:['лента'] }, | |
| { n:'Meduza', u:'https://meduza.io', en:['meduza'], ru:['медуза'] }, | |
| { n:'Habr', u:'https://habr.com', en:['habr'], ru:['хабр'] }, | |
| /* ── Developer tools ────────────────────────────────────────────────── */ | |
| { n:'GitHub', u:'https://github.com', en:['github'], ru:['гитхаб','гатхаб'] }, | |
| { n:'GitLab', u:'https://gitlab.com', en:['gitlab'], ru:['гитлаб'] }, | |
| { n:'Stack Overflow', u:'https://stackoverflow.com', en:['stack overflow','stackoverflow'], ru:['стек оверфлоу','стековерфлоу'] }, | |
| { n:'MDN', u:'https://developer.mozilla.org', en:['mdn'], ru:['мдн','мозилла документация'] }, | |
| { n:'npm', u:'https://www.npmjs.com', en:['npm'], ru:['нпм'] }, | |
| { n:'PyPI', u:'https://pypi.org', en:['pypi'], ru:['пайпи'] }, | |
| { n:'CodePen', u:'https://codepen.io', en:['codepen'], ru:['кодпен'] }, | |
| { n:'JSFiddle', u:'https://jsfiddle.net', en:['jsfiddle'], ru:['джейэсфиддл'] }, | |
| { n:'CodeSandbox', u:'https://codesandbox.io', en:['codesandbox'], ru:['кодсандбокс'] }, | |
| { n:'Replit', u:'https://replit.com', en:['replit'], ru:['реплит'] }, | |
| { n:'Vercel', u:'https://vercel.com', en:['vercel'], ru:['верцель'] }, | |
| { n:'Netlify', u:'https://www.netlify.com', en:['netlify'], ru:['нетлифай'] }, | |
| { n:'Docker Hub', u:'https://hub.docker.com', en:['docker hub','docker'], ru:['докер хаб','докер'] }, | |
| { n:'Postman', u:'https://www.postman.com', en:['postman'], ru:['постман'] }, | |
| { n:'LeetCode', u:'https://leetcode.com', en:['leetcode'], ru:['литкод'] }, | |
| { n:'HackerRank', u:'https://www.hackerrank.com', en:['hackerrank'], ru:['хакеранк'] }, | |
| { n:'W3Schools', u:'https://www.w3schools.com', en:['w3schools'], ru:['в3скулс','дабл ю три скулс'] }, | |
| { n:'GeeksforGeeks', u:'https://www.geeksforgeeks.org', en:['geeksforgeeks'], ru:['гиксфоргикс'] }, | |
| { n:'Can I Use', u:'https://caniuse.com', en:['can i use','caniuse'], ru:['канайюз','кэн ай юз'] }, | |
| { n:'Regex101', u:'https://regex101.com', en:['regex101','regex'], ru:['регекс','регексп'] }, | |
| { n:'DevDocs', u:'https://devdocs.io', en:['devdocs'], ru:['девдокс'] }, | |
| { n:'Bitbucket', u:'https://bitbucket.org', en:['bitbucket'], ru:['битбакет'] }, | |
| { n:'Google Cloud', u:'https://console.cloud.google.com', en:['google cloud'], ru:['гугл клауд'] }, | |
| { n:'AWS', u:'https://aws.amazon.com', en:['aws','amazon web services'], ru:['авс','амазон веб сервис'] }, | |
| { n:'Azure', u:'https://portal.azure.com', en:['azure'], ru:['азур','азюр'] }, | |
| { n:'DigitalOcean', u:'https://www.digitalocean.com', en:['digitalocean'], ru:['диджитал оушен'] }, | |
| { n:'Cloudflare', u:'https://dash.cloudflare.com', en:['cloudflare'], ru:['клаудфлер'] }, | |
| /* ── AI tools ───────────────────────────────────────────────────────── */ | |
| { n:'ChatGPT', u:'https://chatgpt.com', en:['chatgpt'], ru:['чатгпт','чат джипити'] }, | |
| { n:'Claude', u:'https://claude.ai', en:['claude'], ru:['клавд','клоуд'] }, | |
| { n:'Gemini', u:'https://gemini.google.com', en:['gemini'], ru:['гемини','джемини'] }, | |
| { n:'Copilot', u:'https://copilot.microsoft.com', en:['copilot'], ru:['копилот'] }, | |
| { n:'Perplexity', u:'https://www.perplexity.ai', en:['perplexity'], ru:['перплексити'] }, | |
| { n:'Midjourney', u:'https://www.midjourney.com', en:['midjourney'], ru:['миджорни'] }, | |
| { n:'Hugging Face', u:'https://huggingface.co', en:['hugging face'], ru:['хагингфейс'] }, | |
| { n:'Grok', u:'https://grok.com', en:['grok'], ru:['грок'] }, | |
| { n:'Mistral', u:'https://chat.mistral.ai', en:['mistral'], ru:['мистраль'] }, | |
| { n:'Suno', u:'https://suno.com', en:['suno'], ru:['суно'] }, | |
| { n:'Runway', u:'https://runwayml.com', en:['runway'], ru:['ранвей'] }, | |
| { n:'Ollama', u:'https://ollama.com', en:['ollama'], ru:['оллама'] }, | |
| /* ── Finance ────────────────────────────────────────────────────────── */ | |
| { n:'CoinMarketCap', u:'https://coinmarketcap.com', en:['coinmarketcap'], ru:['коинмаркеткап'] }, | |
| { n:'CoinGecko', u:'https://www.coingecko.com', en:['coingecko'], ru:['коингеко'] }, | |
| { n:'TradingView', u:'https://www.tradingview.com', en:['tradingview'], ru:['трейдингвью'] }, | |
| { n:'Binance', u:'https://www.binance.com', en:['binance'], ru:['бинанс'] }, | |
| { n:'Coinbase', u:'https://www.coinbase.com', en:['coinbase'], ru:['коинбейс'] }, | |
| { n:'Kraken', u:'https://www.kraken.com', en:['kraken'], ru:['кракен'] }, | |
| { n:'Bloomberg', u:'https://www.bloomberg.com', en:['bloomberg'], ru:['блумберг'] }, | |
| { n:'Yahoo Finance', u:'https://finance.yahoo.com', en:['yahoo finance'], ru:['яху финанс'] }, | |
| { n:'Investing.com', u:'https://www.investing.com', en:['investing'], ru:['инвестинг'] }, | |
| { n:'PayPal', u:'https://www.paypal.com', en:['paypal'], ru:['пейпал','пэйпал'] }, | |
| { n:'Stripe', u:'https://stripe.com', en:['stripe'], ru:['страйп'] }, | |
| { n:'Revolut', u:'https://www.revolut.com', en:['revolut'], ru:['револют'] }, | |
| { n:'Wise', u:'https://wise.com', en:['wise'], ru:['вайз'] }, | |
| { n:'Nasdaq', u:'https://www.nasdaq.com', en:['nasdaq'], ru:['наздак'] }, | |
| /* ── Education ──────────────────────────────────────────────────────── */ | |
| { n:'Wikipedia', u:'https://www.wikipedia.org', en:['wikipedia'], ru:['википедия','вики'] }, | |
| { n:'Khan Academy', u:'https://www.khanacademy.org', en:['khan academy'], ru:['хан академия'] }, | |
| { n:'Coursera', u:'https://www.coursera.org', en:['coursera'], ru:['курсера'] }, | |
| { n:'Udemy', u:'https://www.udemy.com', en:['udemy'], ru:['юдеми','удами'] }, | |
| { n:'Duolingo', u:'https://www.duolingo.com', en:['duolingo'], ru:['дуолинго'] }, | |
| { n:'edX', u:'https://www.edx.org', en:['edx'], ru:['едэкс'] }, | |
| { n:'Quizlet', u:'https://quizlet.com', en:['quizlet'], ru:['квизлет'] }, | |
| { n:'arXiv', u:'https://arxiv.org', en:['arxiv'], ru:['арксив'] }, | |
| { n:'Google Scholar', u:'https://scholar.google.com', en:['google scholar'], ru:['гугл сколар','гугл академия'] }, | |
| { n:'Wolfram Alpha', u:'https://www.wolframalpha.com', en:['wolfram alpha','wolfram'], ru:['вольфрам альфа','вольфрам'] }, | |
| { n:'freeCodeCamp', u:'https://www.freecodecamp.org', en:['freecodecamp'], ru:['фри код кэмп'] }, | |
| { n:'Codecademy', u:'https://www.codecademy.com', en:['codecademy'], ru:['кодекэдеми'] }, | |
| { n:'Grammarly', u:'https://www.grammarly.com', en:['grammarly'], ru:['граммарли'] }, | |
| { n:'DeepL', u:'https://www.deepl.com/translator', en:['deepl'], ru:['дипл','деепл'] }, | |
| { n:'Google Translate', u:'https://translate.google.com', en:['google translate','translate'], ru:['гугл переводчик','переводчик','переведи'] }, | |
| /* ── Entertainment & games ──────────────────────────────────────────── */ | |
| { n:'IMDb', u:'https://www.imdb.com', en:['imdb'], ru:['имдб'] }, | |
| { n:'Rotten Tomatoes', u:'https://www.rottentomatoes.com', en:['rotten tomatoes'], ru:['гнилые помидоры'] }, | |
| { n:'Letterboxd', u:'https://letterboxd.com', en:['letterboxd'], ru:['леттербоксд'] }, | |
| { n:'Goodreads', u:'https://www.goodreads.com', en:['goodreads'], ru:['гудридс'] }, | |
| { n:'Genius', u:'https://genius.com', en:['genius'], ru:['гениус'] }, | |
| { n:'Steam', u:'https://store.steampowered.com', en:['steam'], ru:['стим'] }, | |
| { n:'Epic Games', u:'https://store.epicgames.com', en:['epic games'], ru:['эпик геймс'] }, | |
| { n:'GOG', u:'https://www.gog.com', en:['gog'], ru:['гог'] }, | |
| { n:'Roblox', u:'https://www.roblox.com', en:['roblox'], ru:['роблокс'] }, | |
| { n:'Chess.com', u:'https://www.chess.com', en:['chess','chess com'], ru:['шахматы','чесс'] }, | |
| { n:'itch.io', u:'https://itch.io', en:['itch io'], ru:['итч ио'] }, | |
| { n:'Nexus Mods', u:'https://www.nexusmods.com', en:['nexus mods'], ru:['нексус модс'] }, | |
| { n:'IGN', u:'https://www.ign.com', en:['ign'], ru:['игн'] }, | |
| { n:'Metacritic', u:'https://www.metacritic.com', en:['metacritic'], ru:['метакритик'] }, | |
| { n:'Fandom', u:'https://www.fandom.com', en:['fandom'], ru:['фандом'] }, | |
| { n:'PlayStation Store', u:'https://store.playstation.com', en:['playstation'], ru:['плейстейшн'] }, | |
| { n:'Xbox', u:'https://www.xbox.com', en:['xbox'], ru:['иксбокс'] }, | |
| { n:'Nintendo', u:'https://www.nintendo.com', en:['nintendo'], ru:['нинтендо'] }, | |
| /* ── Utilities & everything else ────────────────────────────────────── */ | |
| { n:'Weather', u:'https://weather.com', en:['weather'], ru:['погода'] }, | |
| { n:'Windy', u:'https://www.windy.com', en:['windy'], ru:['винди'] }, | |
| { n:'Speedtest', u:'https://www.speedtest.net', en:['speedtest'], ru:['спидтест','тест скорости'] }, | |
| { n:'Internet Archive', u:'https://archive.org', en:['internet archive','archive'], ru:['интернет архив','архив интернета'] }, | |
| { n:'Wayback Machine', u:'https://web.archive.org', en:['wayback machine','wayback'], ru:['вейбек','вэйбэк машин'] }, | |
| { n:'CloudConvert', u:'https://cloudconvert.com', en:['cloudconvert'], ru:['клаудконверт'] }, | |
| { n:'TinyPNG', u:'https://tinypng.com', en:['tinypng'], ru:['тинипнг'] }, | |
| { n:'remove.bg', u:'https://www.remove.bg', en:['remove bg'], ru:['ремув бг','убрать фон'] }, | |
| { n:'Canva', u:'https://www.canva.com', en:['canva'], ru:['канва'] }, | |
| { n:'Figma', u:'https://www.figma.com', en:['figma'], ru:['фигма'] }, | |
| { n:'Miro', u:'https://miro.com', en:['miro'], ru:['миро'] }, | |
| { n:'Unsplash', u:'https://unsplash.com', en:['unsplash'], ru:['ансплэш'] }, | |
| { n:'Pexels', u:'https://www.pexels.com', en:['pexels'], ru:['пексельс'] }, | |
| { n:'Imgur', u:'https://imgur.com', en:['imgur'], ru:['имгур'] }, | |
| { n:'Giphy', u:'https://giphy.com', en:['giphy'], ru:['гифи'] }, | |
| { n:'Bitly', u:'https://bitly.com', en:['bitly'], ru:['битли'] }, | |
| { n:'Downdetector', u:'https://downdetector.com', en:['downdetector'], ru:['даундетектор'] }, | |
| { n:'Time.is', u:'https://time.is', en:['time is','what time'], ru:['время','точное время','сколько времени'] }, | |
| { n:'XE Currency', u:'https://www.xe.com', en:['xe currency','xe'], ru:['конвертер валют','курс валют'] }, | |
| { n:'Random.org', u:'https://www.random.org', en:['random'], ru:['рандом','случайное число'] }, | |
| { n:'QR Generator', u:'https://www.qr-code-generator.com', en:['qr code','qr generator'], ru:['куар код','qr код'] }, | |
| { n:'Product Hunt', u:'https://www.producthunt.com', en:['product hunt'], ru:['продакт хант'] }, | |
| { n:'Kickstarter', u:'https://www.kickstarter.com', en:['kickstarter'], ru:['кикстартер'] }, | |
| { n:'Patreon', u:'https://www.patreon.com', en:['patreon'], ru:['патреон'] }, | |
| { n:'Strava', u:'https://www.strava.com', en:['strava'], ru:['страва'] }, | |
| { n:'MyFitnessPal', u:'https://www.myfitnesspal.com', en:['myfitnesspal'], ru:['майфитнеспал'] }, | |
| { n:'WebMD', u:'https://www.webmd.com', en:['webmd'], ru:['вебмд'] }, | |
| { n:'Yelp', u:'https://www.yelp.com', en:['yelp'], ru:['йелп'] }, | |
| { n:'OpenTable', u:'https://www.opentable.com', en:['opentable'], ru:['опентабл'] }, | |
| { n:'Uber Eats', u:'https://www.ubereats.com', en:['uber eats'], ru:['убер ист','убер еда'] }, | |
| { n:'DoorDash', u:'https://www.doordash.com', en:['doordash'], ru:['дурдаш'] }, | |
| { n:'Allrecipes', u:'https://www.allrecipes.com', en:['allrecipes'], ru:['оллресипис','рецепты'] }, | |
| { n:'Indeed', u:'https://www.indeed.com', en:['indeed'], ru:['индид'] }, | |
| { n:'Glassdoor', u:'https://www.glassdoor.com', en:['glassdoor'], ru:['глассдор'] }, | |
| { n:'Upwork', u:'https://www.upwork.com', en:['upwork'], ru:['апворк'] }, | |
| { n:'Fiverr', u:'https://www.fiverr.com', en:['fiverr'], ru:['фиверр'] }, | |
| { n:'HH.ru', u:'https://hh.ru', en:['hh ru'], ru:['хедхантер','hh','работа'] }, | |
| { n:'ESPN', u:'https://www.espn.com', en:['espn'], ru:['еспн'] }, | |
| { n:'NBA', u:'https://www.nba.com', en:['nba'], ru:['нба'] }, | |
| { n:'Formula 1', u:'https://www.formula1.com', en:['formula 1','f1'], ru:['формула 1','ф1'] }, | |
| { n:'SofaScore', u:'https://www.sofascore.com', en:['sofascore'], ru:['софаскор'] }, | |
| { n:'NASA', u:'https://www.nasa.gov', en:['nasa'], ru:['наса'] }, | |
| { n:'National Geographic',u:'https://www.nationalgeographic.com', en:['national geographic'], ru:['нат гео','национальная география'] } | |
| ]; | |
| var SITES="Wikipedia|en.wikipedia.org|википедия\nWikipedia RU|ru.wikipedia.org|русская википедия\nGoogle Maps|www.google.com/maps|гугл карты,карты\nGoogle Translate|translate.google.com|переводчик,гугл переводчик\nGoogle Drive|drive.google.com|гугл диск\nGmail|mail.google.com|почта,гмейл\nGoogle Docs|docs.google.com|гугл докс\nGoogle Calendar|calendar.google.com|календарь\nGoogle Photos|photos.google.com|гугл фото\nGoogle Scholar|scholar.google.com|гугл академия\nGoogle Trends|trends.google.com|гугл тренды\nGoogle Earth|earth.google.com|гугл земля\nGoogle Flights|www.google.com/travel/flights|гугл авиабилеты\nGoogle Keep|keep.google.com\nGoogle Meet|meet.google.com\nGoogle Sheets|sheets.google.com|гугл таблицы\nGoogle Slides|slides.google.com\nGoogle Play|play.google.com|гугл плей\nGoogle Cloud|cloud.google.com\nGoogle Analytics|analytics.google.com\nGoogle Ads|ads.google.com\nSearch Console|search.google.com/search-console\nGemini|gemini.google.com|джемини\nNotebookLM|notebooklm.google.com\nAI Studio|aistudio.google.com\nClaude|claude.ai|клод\nChatGPT|chatgpt.com|чатгпт,чат гпт\nPerplexity|www.perplexity.ai|перплексити\nDeepSeek|chat.deepseek.com|дипсик\nGrok|grok.com|грок\nMistral|chat.mistral.ai\nCopilot|copilot.microsoft.com|копайлот\nMidjourney|www.midjourney.com|миджорни\nHugging Face|huggingface.co|хаггинг фейс\nOpenRouter|openrouter.ai\nCharacter AI|character.ai\nPoe|poe.com\nSuno|suno.com|суно\nRunway|runwayml.com\nElevenLabs|elevenlabs.io\nLeonardo AI|leonardo.ai\nIdeogram|ideogram.ai\nKaggle|www.kaggle.com|каггл\nReplicate|replicate.com\nStability AI|stability.ai\nOutlook|outlook.live.com|аутлук\nOneDrive|onedrive.live.com|ванДрайв\nMicrosoft 365|www.microsoft365.com|офис\nTeams|teams.microsoft.com|тимс\nAzure|portal.azure.com|азур\nXbox Cloud|www.xbox.com/play\nApple|www.apple.com|эппл\niCloud|www.icloud.com|айклауд\nApp Store|apps.apple.com|апп стор\nApple Music|music.apple.com|эппл мьюзик\nApple TV|tv.apple.com\nSamsung|www.samsung.com|самсунг\nSony|www.sony.com|сони\nDell|www.dell.com|делл\nHP|www.hp.com\nLenovo|www.lenovo.com|леново\nAsus|www.asus.com|асус\nAcer|www.acer.com\nLogitech|www.logitech.com|логитек\nRazer|www.razer.com|рейзер\nNvidia|www.nvidia.com|нвидиа,энвидиа\nAMD|www.amd.com|амд\nIntel|www.intel.com|интел\nQualcomm|www.qualcomm.com\nTesla|www.tesla.com|тесла\nToyota|www.toyota.com|тойота\nBMW|www.bmw.com|бмв\nMercedes|www.mercedes-benz.com|мерседес\nVolkswagen|www.volkswagen.com|фольксваген\nAudi|www.audi.com|ауди\nFord|www.ford.com|форд\nHonda|www.honda.com|хонда\nPorsche|www.porsche.com|порше\nFerrari|www.ferrari.com|феррари\nLamborghini|www.lamborghini.com|ламборгини\nRolls-Royce|www.rolls-roycemotorcars.com\nHyundai|www.hyundai.com|хендай\nKia|www.kia.com|киа\nMazda|www.mazda.com|мазда\nSubaru|www.subaru.com\nVolvo|www.volvocars.com|вольво\nNissan|www.nissan-global.com|ниссан\nLada|www.lada.ru|лада\nAuto.ru|auto.ru|авто ру\nDrom|www.drom.ru|дром\nMobile.de|www.mobile.de\nCarGurus|www.cargurus.com\nCars.com|www.cars.com\nZillow|www.zillow.com|зиллоу\nRealtor|www.realtor.com\nRightmove|www.rightmove.co.uk\nIdealista|www.idealista.com\nCian|www.cian.ru|циан\nDomclick|domclick.ru|домклик\nAirbnb|www.airbnb.com|эирбнб,айрбнб\nBooking|www.booking.com|букинг\nExpedia|www.expedia.com|экспедия\nKayak|www.kayak.com\nSkyscanner|www.skyscanner.com|скайсканнер\nTripadvisor|www.tripadvisor.com|трипадвизор\nHostelworld|www.hostelworld.com\nAgoda|www.agoda.com\nTrivago|www.trivago.com\nHotels.com|www.hotels.com\nTutu|www.tutu.ru|туту\nAviasales|www.aviasales.ru|авиасейлс\nOstrovok|ostrovok.ru|островок\nRyanair|www.ryanair.com|райанэйр\nLufthansa|www.lufthansa.com|люфтганза\nEmirates|www.emirates.com|эмирейтс\nQatar Airways|www.qatarairways.com\nDelta|www.delta.com\nUnited|www.united.com\nKLM|www.klm.com\nAir France|www.airfrance.com\nBritish Airways|www.britishairways.com\nAeroflot|www.aeroflot.ru|аэрофлот\nS7|www.s7.ru|эс семь\nFlightradar24|www.flightradar24.com|флайтрадар\nUber|www.uber.com|убер\nLyft|www.lyft.com\nBolt|bolt.eu|болт\nYandex Go|go.yandex|яндекс го\nWaze|www.waze.com|вейз\nOpenStreetMap|www.openstreetmap.org|опенстритмап\nRome2Rio|www.rome2rio.com\nMaps.me|maps.me\n2GIS|2gis.ru|двагис,2гис\nYandex Maps|yandex.ru/maps|яндекс карты\nYandex Mail|mail.yandex.ru|яндекс почта\nYandex Disk|disk.yandex.ru|яндекс диск\nYandex Music|music.yandex.ru|яндекс музыка\nYandex Market|market.yandex.ru|яндекс маркет\nYandex Translate|translate.yandex.ru|яндекс переводчик\nYandex Images|yandex.ru/images|яндекс картинки\nYandex Weather|yandex.ru/pogoda|яндекс погода\nYandex Games|yandex.ru/games\nYandex Zen|dzen.ru|дзен\nKinopoisk|www.kinopoisk.ru|кинопоиск\nIvi|www.ivi.ru|иви\nOkko|okko.tv|окко\nWink|wink.ru|винк\nKion|kion.ru|кион\nPremier|premier.one|премьер\nVK Video|vkvideo.ru|вк видео\nVK Music|vk.com/music|вк музыка\nOK.ru|ok.ru|одноклассники\nMail.ru|mail.ru|мэйл ру\nRambler|www.rambler.ru|рамблер\nSber|www.sberbank.ru|сбер,сбербанк\nTinkoff|www.tbank.ru|тинькофф,т банк\nVTB|www.vtb.ru|втб\nAlfa-Bank|alfabank.ru|альфа банк\nGosuslugi|www.gosuslugi.ru|госуслуги\nOzon|www.ozon.ru|озон\nWildberries|www.wildberries.ru|вайлдберриз,вб\nAvito|www.avito.ru|авито\nLamoda|www.lamoda.ru|ламода\nDNS|www.dns-shop.ru|днс\nCitilink|www.citilink.ru|ситилинк\nM.Video|www.mvideo.ru|мвидео\nEldorado|www.eldorado.ru|эльдорадо\nMegamarket|megamarket.ru|мегамаркет\nSamokat|samokat.ru|самокат\nDelivery Club|www.delivery-club.ru|деливери клаб\nSportmaster|www.sportmaster.ru|спортмастер\nLeroy Merlin|leroymerlin.ru|леруа мерлен\nIKEA|www.ikea.com|икеа\nHabr|habr.com|хабр\nPikabu|pikabu.ru|пикабу\nDTF|dtf.ru|дтф\nVC.ru|vc.ru|вц\nLenta|lenta.ru|лента\nRBC|www.rbc.ru|рбк\nMeduza|meduza.io|медуза\nTASS|tass.ru|тасс\nRIA|ria.ru|риа новости\nKommersant|www.kommersant.ru|коммерсант\nChampionat|www.championat.com|чемпионат\nSports.ru|www.sports.ru|спортс ру\nLivelib|www.livelib.ru|лайвлиб\nLitres|www.litres.ru|литрес\nLib.ru|lib.ru\nCoursera|www.coursera.org|курсера\nUdemy|www.udemy.com|юдеми\nedX|www.edx.org\nKhan Academy|www.khanacademy.org|кан академи\nDuolingo|www.duolingo.com|дуолинго\nSkillbox|skillbox.ru|скиллбокс\nStepik|stepik.org|степик\nCodecademy|www.codecademy.com\nfreeCodeCamp|www.freecodecamp.org\nLeetCode|leetcode.com|литкод\nHackerRank|www.hackerrank.com\nCodeforces|codeforces.com|кодфорсес\nCodewars|www.codewars.com\nTryHackMe|tryhackme.com\nBrilliant|brilliant.org\nQuizlet|quizlet.com\nWolfram Alpha|www.wolframalpha.com|вольфрам\nDesmos|www.desmos.com|десмос\nGeoGebra|www.geogebra.org\nSymbolab|www.symbolab.com\narXiv|arxiv.org|архив\nPubMed|pubmed.ncbi.nlm.nih.gov|пабмед\nNature|www.nature.com\nScience|www.science.org\nResearchGate|www.researchgate.net\nJSTOR|www.jstor.org\nSci-Hub|sci-hub.se\nSemantic Scholar|www.semanticscholar.org\nGoogle Books|books.google.com|гугл книги\nGoodreads|www.goodreads.com|гудридс\nProject Gutenberg|www.gutenberg.org\nAudible|www.audible.com\nScribd|www.scribd.com\nNotion|www.notion.so|ноушен\nObsidian|obsidian.md|обсидиан\nEvernote|evernote.com\nTrello|trello.com|трелло\nAsana|asana.com\nJira|www.atlassian.com/software/jira|джира\nConfluence|www.atlassian.com/software/confluence\nLinear|linear.app\nClickUp|clickup.com\nMonday|monday.com\nAirtable|airtable.com\nTodoist|todoist.com\nTickTick|ticktick.com\nSlack|slack.com|слэк\nZoom|zoom.us|зум\nDiscord|discord.com|дискорд\nTelegram Web|web.telegram.org|телеграм\nWhatsApp Web|web.whatsapp.com|ватсап\nSignal|signal.org\nSkype|www.skype.com|скайп\nMessenger|www.messenger.com|мессенджер\nViber|www.viber.com|вайбер\nDropbox|www.dropbox.com|дропбокс\nBox|www.box.com\nWeTransfer|wetransfer.com\nMega|mega.nz|мега\nProton|proton.me|протон\nTutanota|tuta.com\nBitwarden|bitwarden.com\n1Password|1password.com\nLastPass|www.lastpass.com\nNordVPN|nordvpn.com|нордвпн\nExpressVPN|www.expressvpn.com\nCloudflare|www.cloudflare.com|клаудфлер\nNamecheap|www.namecheap.com\nGoDaddy|www.godaddy.com|годэдди\nVercel|vercel.com|версель\nNetlify|www.netlify.com|нетлифай\nHeroku|www.heroku.com\nDigitalOcean|www.digitalocean.com\nAWS|aws.amazon.com|амазон веб сервисы\nFirebase|firebase.google.com\nSupabase|supabase.com\nMongoDB|www.mongodb.com\nPostgreSQL|www.postgresql.org\nMySQL|www.mysql.com\nRedis|redis.io\nDocker Hub|hub.docker.com|докер\nKubernetes|kubernetes.io|кубернетес\nTerraform|www.terraform.io\nGitLab|gitlab.com|гитлаб\nBitbucket|bitbucket.org\nCodeberg|codeberg.org\nGitea|gitea.com\nSourcehut|sourcehut.org\nnpm|www.npmjs.com|нпм\nPyPI|pypi.org\ncrates.io|crates.io\nMaven Central|search.maven.org\nNuGet|www.nuget.org\nPackagist|packagist.org\nRubyGems|rubygems.org\npkg.go.dev|pkg.go.dev\nHomebrew|brew.sh\nCodePen|codepen.io|кодпен\nJSFiddle|jsfiddle.net\nCodeSandbox|codesandbox.io\nStackBlitz|stackblitz.com\nReplit|replit.com|реплит\nGlitch|glitch.com\nRegex101|regex101.com\nCan I Use|caniuse.com\nPostman|www.postman.com\nSwagger|swagger.io\nJSON Formatter|jsonformatter.org\nExcalidraw|excalidraw.com\nDraw.io|app.diagrams.net\nMermaid Live|mermaid.live\nTailwind CSS|tailwindcss.com|тейлвинд\nBootstrap|getbootstrap.com|бутстрап\nReact|react.dev|реакт\nVue|vuejs.org|вью\nAngular|angular.dev|ангуляр\nSvelte|svelte.dev\nNext.js|nextjs.org\nNuxt|nuxt.com\nNode.js|nodejs.org|ноды,нод\nDeno|deno.com\nBun|bun.sh\nTypeScript|www.typescriptlang.org|тайпскрипт\nPython Docs|docs.python.org|питон,python\nRust|www.rust-lang.org|раст\nGo|go.dev|голанг\nKotlin|kotlinlang.org|котлин\nSwift|www.swift.org|свифт\nJava|www.java.com|джава\nPHP|www.php.net|пхп\nRuby|www.ruby-lang.org\nLaravel|laravel.com|ларавель\nDjango|www.djangoproject.com|джанго\nFlask|flask.palletsprojects.com\nFastAPI|fastapi.tiangolo.com\nSpring|spring.io\nFlutter|flutter.dev|флаттер\nAndroid Developers|developer.android.com\nApple Developer|developer.apple.com\nMDN|developer.mozilla.org|мдн\nW3Schools|www.w3schools.com\nDevDocs|devdocs.io\nLearn X in Y|learnxinyminutes.com\nRoadmap.sh|roadmap.sh\nPyTorch|pytorch.org\nTensorFlow|www.tensorflow.org\nScikit-learn|scikit-learn.org\nNumPy|numpy.org\nPandas|pandas.pydata.org\nJupyter|jupyter.org\nColab|colab.research.google.com|колаб\nLichess|lichess.org|личесс\nChess.com|www.chess.com|шахматы\nSteam|store.steampowered.com|стим\nEpic Games|store.epicgames.com|эпик геймс\nGOG|www.gog.com\nitch.io|itch.io\nRoblox|www.roblox.com|роблокс\nMinecraft|www.minecraft.net|майнкрафт\nFortnite|www.fortnite.com|фортнайт\nValorant|playvalorant.com\nLeague of Legends|www.leagueoflegends.com\nDota 2|www.dota2.com|дота\nCounter-Strike|www.counter-strike.net|кс\nGenshin Impact|genshin.hoyoverse.com|геншин\nBattle.net|battle.net\nEA|www.ea.com\nUbisoft|www.ubisoft.com|юбисофт\nRockstar|www.rockstargames.com|рокстар\nPlayStation|www.playstation.com|плейстейшн\nMetacritic|www.metacritic.com\nHowLongToBeat|howlongtobeat.com\nIGN|www.ign.com\nGameSpot|www.gamespot.com\nKotaku|kotaku.com\nPolygon|www.polygon.com\nSpeedrun|www.speedrun.com\nFandom|www.fandom.com|фэндом\nLiquipedia|liquipedia.net\nCrunchyroll|www.crunchyroll.com|кранчиролл\nMyAnimeList|myanimelist.net\nAniList|anilist.co\nShikimori|shikimori.one|шикимори\nLetterboxd|letterboxd.com\nRotten Tomatoes|www.rottentomatoes.com\nTMDB|www.themoviedb.org\nTrakt|trakt.tv\nJustWatch|www.justwatch.com\nParamount+|www.paramountplus.com\nPeacock|www.peacocktv.com\nApple Podcasts|podcasts.apple.com\nPocket Casts|pocketcasts.com\nDeezer|www.deezer.com|дизер\nTidal|tidal.com\nBandcamp|bandcamp.com|бэндкэмп\nLast.fm|www.last.fm\nGenius|genius.com\nShazam|www.shazam.com|шазам\nSetlist.fm|www.setlist.fm\nDiscogs|www.discogs.com\nRateYourMusic|rateyourmusic.com\nMusescore|musescore.com\nUltimate Guitar|www.ultimate-guitar.com\nFreesound|freesound.org\nSplice|splice.com\nBehance|www.behance.net|бехэнс\nDribbble|dribbble.com\nAwwwards|www.awwwards.com\nPixabay|pixabay.com|пиксабей\nFlickr|www.flickr.com|фликр\n500px|500px.com\nDeviantArt|www.deviantart.com\nArtStation|www.artstation.com\nPixiv|www.pixiv.net\nFreepik|www.freepik.com|фрипик\nFlaticon|www.flaticon.com\nIconify|iconify.design\nFont Awesome|fontawesome.com\nGoogle Fonts|fonts.google.com|гугл шрифты\nCoolors|coolors.co\nAdobe|www.adobe.com|адоби\nPhotopea|www.photopea.com|фотопея\nPixlr|pixlr.com\nSquoosh|squoosh.app\nRemove Photos|www.photoroom.com\nBlender|www.blender.org|блендер\nSketchfab|sketchfab.com\nThingiverse|www.thingiverse.com\nPrintables|www.printables.com\nOnShape|www.onshape.com\nWix|www.wix.com\nSquarespace|www.squarespace.com\nWordPress|wordpress.com|вордпресс\nShopify|www.shopify.com|шопифай\nWebflow|webflow.com\nGhost|ghost.org\nSubstack|substack.com\nMedium|medium.com|медиум\nTumblr|www.tumblr.com\nBlogger|www.blogger.com\nQuora|www.quora.com|квора\nStack Exchange|stackexchange.com\nHacker News|news.ycombinator.com|хакер ньюс\nLobsters|lobste.rs\nSlashdot|slashdot.org\nArs Technica|arstechnica.com\nThe Verge|www.theverge.com\nTechCrunch|techcrunch.com\nWired|www.wired.com\nEngadget|www.engadget.com\nGizmodo|gizmodo.com\nMashable|mashable.com\nBBC|www.bbc.com|биби си\nCNN|www.cnn.com|си эн эн\nReuters|www.reuters.com|рейтер\nAP News|apnews.com\nNPR|www.npr.org\nAl Jazeera|www.aljazeera.com|аль джазира\nThe Guardian|www.theguardian.com|гардиан\nNYTimes|www.nytimes.com\nWashington Post|www.washingtonpost.com\nWSJ|www.wsj.com\nBloomberg|www.bloomberg.com|блумберг\nFinancial Times|www.ft.com\nThe Economist|www.economist.com\nForbes|www.forbes.com|форбс\nPolitico|www.politico.com\nDer Spiegel|www.spiegel.de\nLe Monde|www.lemonde.fr\nEl Pais|elpais.com\nDW|www.dw.com\nFrance 24|www.france24.com\nNHK|www.nhk.or.jp\nXinhua|www.xinhuanet.com\nRT|www.rt.com\nFox News|www.foxnews.com\nSky News|news.sky.com\nEuronews|www.euronews.com\nSnopes|www.snopes.com\nInvestopedia|www.investopedia.com\nYahoo Finance|finance.yahoo.com\nTradingView|www.tradingview.com|трейдингвью\nCoinMarketCap|coinmarketcap.com\nCoinGecko|www.coingecko.com\nBinance|www.binance.com|бинанс\nCoinbase|www.coinbase.com\nKraken|www.kraken.com\nBybit|www.bybit.com\nOKX|www.okx.com\nMetaMask|metamask.io\nEtherscan|etherscan.io\nBlockchain.com|www.blockchain.com\nUniswap|app.uniswap.org\nOpenSea|opensea.io\nRobinhood|robinhood.com\nRevolut|www.revolut.com|револют\nWise|wise.com\nPayPal|www.paypal.com|пэйпал\nStripe|stripe.com\nVisa|www.visa.com\nMastercard|www.mastercard.com\nWestern Union|www.westernunion.com\nMint|mint.intuit.com\nMorningstar|www.morningstar.com\nFinviz|finviz.com\nMacrotrends|www.macrotrends.net\nStatista|www.statista.com\nWorld Bank|www.worldbank.org\nIMF|www.imf.org\nUN|www.un.org|оон\nWHO|www.who.int|воз\nUNESCO|www.unesco.org\nNATO|www.nato.int\nEU|european-union.europa.eu\nCIA Factbook|www.cia.gov/the-world-factbook\nOur World in Data|ourworldindata.org\nWorldometer|www.worldometers.info\nNumbeo|www.numbeo.com\nNomad List|nomadlist.com\nCouchsurfing|www.couchsurfing.com\nLonely Planet|www.lonelyplanet.com\nAtlas Obscura|www.atlasobscura.com\nVisa Guide|www.passportindex.org\nGetYourGuide|www.getyourguide.com\nViator|www.viator.com\nEventbrite|www.eventbrite.com\nTicketmaster|www.ticketmaster.com\nStubHub|www.stubhub.com\nSongkick|www.songkick.com\nMeetup|www.meetup.com\nYelp Reviews|www.yelp.com/search\nFoursquare|foursquare.com\nZomato|www.zomato.com\nDeliveroo|deliveroo.co.uk\nJust Eat|www.just-eat.co.uk\nGlovo|glovoapp.com\nGrubhub|www.grubhub.com\nInstacart|www.instacart.com\nWalmart|www.walmart.com|уолмарт\nTarget|www.target.com\nCostco|www.costco.com\nBest Buy|www.bestbuy.com\nHome Depot|www.homedepot.com\nLowe's|www.lowes.com\nNewegg|www.newegg.com\nB&H|www.bhphotovideo.com\nAlibaba|www.alibaba.com|алибаба\nAliExpress|www.aliexpress.com|алиэкспресс,али\nTemu|www.temu.com|тему\nShein|www.shein.com\nTaobao|www.taobao.com\nJD|www.jd.com\nRakuten|www.rakuten.com\nMercari|www.mercari.com\nEtsy|www.etsy.com|этси\nCraigslist|www.craigslist.org\nOLX|www.olx.com\nVinted|www.vinted.com\nDepop|www.depop.com\nPoshmark|poshmark.com\nZalando|www.zalando.com\nASOS|www.asos.com\nH&M|www.hm.com\nZara|www.zara.com|зара\nNike|www.nike.com|найк\nAdidas|www.adidas.com|адидас\nPuma|www.puma.com\nUniqlo|www.uniqlo.com\nDecathlon|www.decathlon.com|декатлон\nREI|www.rei.com\nAmazon DE|www.amazon.de\nAmazon UK|www.amazon.co.uk\nAmazon JP|www.amazon.co.jp\nAmazon NL|www.amazon.nl\nBol|www.bol.com|бол\nCoolblue|www.coolblue.nl\nMarktplaats|www.marktplaats.nl\nNS|www.ns.nl\n9292|9292.nl\nAlbert Heijn|www.ah.nl\nJumbo|www.jumbo.com\nThuisbezorgd|www.thuisbezorgd.nl\nDigiD|www.digid.nl\nRijksmuseum|www.rijksmuseum.nl\nLouvre|www.louvre.fr\nBritish Museum|www.britishmuseum.org\nMet Museum|www.metmuseum.org\nSmithsonian|www.si.edu\nGoogle Arts|artsandculture.google.com\nRijksoverheid|www.rijksoverheid.nl\nGOV.UK|www.gov.uk\nUSA.gov|www.usa.gov\nIRS|www.irs.gov\nUSPS|www.usps.com\nUPS|www.ups.com\nFedEx|www.fedex.com\nDHL|www.dhl.com\nTrack Parcel|www.17track.net|трек посылки\nPochta|www.pochta.ru|почта россии\nCDEK|www.cdek.ru|сдэк\nHealthLine|www.healthline.com\nMayo Clinic|www.mayoclinic.org\nNHS|www.nhs.uk\nDrugs.com|www.drugs.com\nCalm|www.calm.com\nHeadspace|www.headspace.com\nCronometer|cronometer.com\nFitbit|www.fitbit.com\nGarmin|www.garmin.com|гармин\nZwift|www.zwift.com\nAllTrails|www.alltrails.com\nKomoot|www.komoot.com\nWindguru|www.windguru.cz\nWeather Underground|www.wunderground.com\nAccuWeather|www.accuweather.com\nMeteoblue|www.meteoblue.com\nBuienradar|www.buienradar.nl|бьюнрадар\nKNMI|www.knmi.nl\nVentusky|www.ventusky.com\nEarthQuake USGS|earthquake.usgs.gov\nWikimedia Commons|commons.wikimedia.org\nWikidata|www.wikidata.org\nWiktionary|en.wiktionary.org|викисловарь\nWikiquote|en.wikiquote.org\nWikiHow|www.wikihow.com\nBritannica|www.britannica.com\nMerriam-Webster|www.merriam-webster.com\nDictionary.com|www.dictionary.com\nThesaurus|www.thesaurus.com\nUrban Dictionary|www.urbandictionary.com\nLinguee|www.linguee.com\nDeepL|www.deepl.com|дипл\nReverso|www.reverso.net\nForvo|forvo.com\nGrammarly|www.grammarly.com\nLanguageTool|languagetool.org\nGramota|gramota.ru|грамота\nSlovari|slovari.yandex.ru\nWiktionary RU|ru.wiktionary.org\nTatoeba|tatoeba.org\nMemrise|www.memrise.com\nBusuu|www.busuu.com\nAnki|apps.ankiweb.net\nCoursera RU|ru.coursera.org\nYouTube Studio|studio.youtube.com\nYouTube Kids|www.youtubekids.com\nYouTube TV|tv.youtube.com\nKick|kick.com\nRumble|rumble.com\nOdysee|odysee.com\nBilibili|www.bilibili.com\nNiconico|www.nicovideo.jp\nTikTok|www.tiktok.com|тикток\nInstagram|www.instagram.com|инстаграм\nFacebook|www.facebook.com|фейсбук\nX|x.com|икс\nTwitter|twitter.com|твиттер\nThreads|www.threads.net\nBluesky|bsky.app\nMastodon|mastodon.social\nLinkedIn|www.linkedin.com|линкедин\nPinterest|www.pinterest.com|пинтерест\nSnapchat|www.snapchat.com\nReddit|www.reddit.com|реддит\nVK|vk.com|вк,вконтакте\nTelegram|telegram.org\nTruth Social|truthsocial.com\nNextdoor|nextdoor.com\nStrava Routes|www.strava.com/routes\nLinktree|linktr.ee\nCanva Docs|www.canva.com/docs\nGamma|gamma.app\nPitch|pitch.com\nPrezi|prezi.com\nLoom|www.loom.com\nOBS|obsproject.com\nAudacity|www.audacityteam.org\nVLC|www.videolan.org\nHandbrake|handbrake.fr\n7-Zip|www.7-zip.org\nNotepad++|notepad-plus-plus.org\nVS Code|code.visualstudio.com|вс код\nJetBrains|www.jetbrains.com|джетбрейнс\nSublime|www.sublimetext.com\nVim|www.vim.org\nNeovim|neovim.io\nUbuntu|ubuntu.com|убунту\nDebian|www.debian.org\nArch Linux|archlinux.org\nFedora|fedoraproject.org\nLinux Mint|linuxmint.com\nKali|www.kali.org\nWindows|www.microsoft.com/windows\nmacOS|www.apple.com/macos\nAndroid|www.android.com|андроид\nChrome|www.google.com/chrome|хром\nFirefox|www.mozilla.org/firefox|файрфокс\nOpera|www.opera.com|опера\nEdge|www.microsoft.com/edge\nTor|www.torproject.org|тор\nVivaldi|vivaldi.com\nArc|arc.net\nSpeedtest Fast|fast.com\nPingdom|tools.pingdom.com\nWhois|who.is\nIP Address|www.whatismyip.com|мой айпи,мой ip\nDNS Checker|dnschecker.org\nHave I Been Pwned|haveibeenpwned.com\nVirusTotal|www.virustotal.com\nShodan|www.shodan.io\nWireshark|www.wireshark.org\nOWASP|owasp.org\nCVE|cve.mitre.org\nExploit DB|www.exploit-db.com\nPastebin|pastebin.com|пастбин\nGitHub Gist|gist.github.com\nHastebin|hastebin.com\nTemp Mail|temp-mail.org|временная почта\nGuerrilla Mail|www.guerrillamail.com\nOnline Notepad|onlinenotepad.org\nCalculator|www.calculator.net|калькулятор\nUnit Converter|www.unitconverters.net|конвертер единиц\nTimer|www.timeanddate.com/timer|таймер\nStopwatch|www.timeanddate.com/stopwatch|секундомер\nWorld Clock|www.timeanddate.com/worldclock|мировое время\nCalendar Holidays|www.timeanddate.com/holidays|праздники\nSunrise Sunset|www.timeanddate.com/sun|рассвет закат\nMoon Phase|www.timeanddate.com/moon|фаза луны\nLorem Ipsum|www.lipsum.com\nColor Picker|htmlcolorcodes.com|выбор цвета\nPomodoro|pomofocus.io|помодоро\nRain Sounds|rainymood.com|шум дождя\nNoisli|www.noisli.com\nCoffitivity|coffitivity.com\nLofi Girl|www.youtube.com/@LofiGirl|лоуфай\nRadio Garden|radio.garden|радио\nTuneIn|tunein.com\nBBC iPlayer|www.bbc.co.uk/iplayer\nARD Mediathek|www.ardmediathek.de\nArte|www.arte.tv\nSVT Play|www.svtplay.se\nNPO|www.npo.nl\nVimeo Watch|vimeo.com/watch\nArchive Movies|archive.org/details/movies\nPublic Domain Review|publicdomainreview.org\nOpen Library|openlibrary.org\nZ-Library|z-lib.gs\nAnna's Archive|annas-archive.org\nLibrary Genesis|libgen.is\nStandard Ebooks|standardebooks.org\nWikisource|en.wikisource.org|викитека\nPerseus|www.perseus.tufts.edu\nStanford Encyclopedia|plato.stanford.edu\nInternet Encyclopedia of Philosophy|iep.utm.edu\nMath StackExchange|math.stackexchange.com\nOverleaf|www.overleaf.com\nZotero|www.zotero.org\nMendeley|www.mendeley.com\nORCID|orcid.org\nGoogle Patents|patents.google.com\nWIPO|www.wipo.int\nEPO|www.epo.org\nEspacenet|worldwide.espacenet.com\nSEC EDGAR|www.sec.gov/edgar\nOpenCorporates|opencorporates.com\nCrunchbase|www.crunchbase.com\nGlassdoor Salaries|www.glassdoor.com/Salaries\nLevels.fyi|www.levels.fyi\nHired|hired.com\nWellfound|wellfound.com\nRemote OK|remoteok.com\nWe Work Remotely|weworkremotely.com\nToptal|www.toptal.com\nFreelancer|www.freelancer.com\nKwork|kwork.ru|кворк\nFL.ru|www.fl.ru\nHabr Career|career.habr.com\nSuperJob|www.superjob.ru|суперджоб\nRabota.ru|www.rabota.ru\nZarplata|www.zarplata.ru\nTrudvsem|trudvsem.ru"; | |
| var CITIES="London|Лондон;Paris|Париж;Berlin|Берлин;Madrid|Мадрид;Rome|Рим;Amsterdam|Амстердам;Rotterdam|Роттердам;The Hague|Гаага;Utrecht|Утрехт;Brussels|Брюссель;Vienna|Вена;Prague|Прага;Warsaw|Варшава;Budapest|Будапешт;Lisbon|Лиссабон;Barcelona|Барселона;Milan|Милан;Venice|Венеция;Florence|Флоренция;Naples|Неаполь;Munich|Мюнхен;Hamburg|Гамбург;Frankfurt|Франкфурт;Cologne|Кёльн;Zurich|Цюрих;Geneva|Женева;Copenhagen|Копенгаген;Stockholm|Стокгольм;Oslo|Осло;Helsinki|Хельсинки;Dublin|Дублин;Edinburgh|Эдинбург;Athens|Афины;Istanbul|Стамбул;Ankara|Анкара;Antalya|Анталья;Kyiv|Киев;Minsk|Минск;Moscow|Москва;Saint Petersburg|Санкт-Петербург;Kazan|Казань;Sochi|Сочи;Novosibirsk|Новосибирск;Yekaterinburg|Екатеринбург;Vladivostok|Владивосток;Tbilisi|Тбилиси;Yerevan|Ереван;Baku|Баку;Almaty|Алматы;Astana|Астана;Tashkent|Ташкент;Bishkek|Бишкек;Riga|Рига;Vilnius|Вильнюс;Tallinn|Таллин;Belgrade|Белград;Zagreb|Загреб;Sofia|София;Bucharest|Бухарест;Dubrovnik|Дубровник;New York|Нью-Йорк;Los Angeles|Лос-Анджелес;San Francisco|Сан-Франциско;Chicago|Чикаго;Miami|Майами;Las Vegas|Лас-Вегас;Seattle|Сиэтл;Boston|Бостон;Washington|Вашингтон;Toronto|Торонто;Vancouver|Ванкувер;Montreal|Монреаль;Mexico City|Мехико;Cancun|Канкун;Havana|Гавана;Rio de Janeiro|Рио-де-Жанейро;Sao Paulo|Сан-Паулу;Buenos Aires|Буэнос-Айрес;Santiago|Сантьяго;Lima|Лима;Bogota|Богота;Dubai|Дубай;Abu Dhabi|Абу-Даби;Doha|Доха;Riyadh|Эр-Рияд;Tel Aviv|Тель-Авив;Jerusalem|Иерусалим;Cairo|Каир;Marrakech|Марракеш;Cape Town|Кейптаун;Johannesburg|Йоханнесбург;Nairobi|Найроби;Mumbai|Мумбаи;Delhi|Дели;Bangkok|Бангкок;Phuket|Пхукет;Bali|Бали;Singapore|Сингапур;Kuala Lumpur|Куала-Лумпур;Hanoi|Ханой;Ho Chi Minh City|Хошимин;Manila|Манила;Jakarta|Джакарта;Beijing|Пекин;Shanghai|Шанхай;Hong Kong|Гонконг;Seoul|Сеул;Tokyo|Токио;Osaka|Осака;Kyoto|Киото;Sydney|Сидней;Melbourne|Мельбурн;Auckland|Окленд;Reykjavik|Рейкьявик;Monaco|Монако;Valencia|Валенсия;Seville|Севилья;Porto|Порту;Nice|Ницца;Lyon|Лион;Bruges|Брюгге;Krakow|Краков;Gdansk|Гданьск;Bratislava|Братислава;Ljubljana|Любляна;Luxembourg|Люксембург;Malta|Мальта;Cyprus|Кипр"; | |
| var SUBS="programming webdev javascript python rust golang linux selfhosted homelab unixporn technology gadgets futurology science space askscience todayilearned explainlikeimfive askreddit worldnews news politics economics investing personalfinance cryptocurrency bitcoin wallstreetbets gaming pcgaming buildapc pcmasterrace games nintendo playstation xbox movies television books music hiphopheads metal indieheads art design photography itookapicture earthporn cityporn food cooking mealprepsunday fitness running cycling travel solotravel digitalnomad europe netherlands germany russia ukraine memes funny aww dataisbeautiful mildlyinteresting interestingasfuck history askhistorians philosophy psychology productivity getdisciplined learnprogramming cscareerquestions machinelearning localllama chatgpt artificial opensource android apple mac ios"; | |
| var WIKI="en,English;ru,Russian;de,German;fr,French;es,Spanish;it,Italian;pt,Portuguese;nl,Dutch;pl,Polish;sv,Swedish;uk,Ukrainian;ja,Japanese;zh,Chinese;ar,Arabic;tr,Turkish;ko,Korean;cs,Czech;fi,Finnish;no,Norwegian;da,Danish;hu,Hungarian;el,Greek;he,Hebrew;id,Indonesian;vi,Vietnamese;th,Thai;ro,Romanian;bg,Bulgarian;sr,Serbian;hr,Croatian;sk,Slovak;lt,Lithuanian;lv,Latvian;et,Estonian;fa,Persian;hi,Hindi;ca,Catalan;ka,Georgian;hy,Armenian;kk,Kazakh;be,Belarusian;la,Latin;simple,Simple English"; | |
| var S={"google.com": "https://www.google.com/search?q=%s", "google.com/maps": "https://www.google.com/maps/search/%s", "google.com/travel/flights": "https://www.google.com/travel/flights?q=%s", "images.google.com": "https://www.google.com/search?tbm=isch&q=%s", "news.google.com": "https://news.google.com/search?q=%s", "translate.google.com": "https://translate.google.com/?sl=auto&tl=en&text=%s", "scholar.google.com": "https://scholar.google.com/scholar?q=%s", "books.google.com": "https://www.google.com/search?tbm=bks&q=%s", "patents.google.com": "https://patents.google.com/?q=%s", "bing.com": "https://www.bing.com/search?q=%s", "duckduckgo.com": "https://duckduckgo.com/?q=%s", "yandex.ru": "https://yandex.ru/search/?text=%s", "yandex.ru/maps": "https://yandex.ru/maps/?text=%s", "yandex.ru/images": "https://yandex.ru/images/search?text=%s", "search.brave.com": "https://search.brave.com/search?q=%s", "ecosia.org": "https://www.ecosia.org/search?q=%s", "yahoo.com": "https://search.yahoo.com/search?p=%s", "youtube.com": "https://www.youtube.com/results?search_query=%s", "music.youtube.com": "https://music.youtube.com/search?q=%s", "youtube.com/@": "https://www.youtube.com/results?search_query=%s", "amazon.com": "https://www.amazon.com/s?k=%s", "amazon.de": "https://www.amazon.de/s?k=%s", "amazon.co.uk": "https://www.amazon.co.uk/s?k=%s", "amazon.nl": "https://www.amazon.nl/s?k=%s", "ebay.com": "https://www.ebay.com/sch/i.html?_nkw=%s", "aliexpress.com": "https://www.aliexpress.com/wholesale?SearchText=%s", "etsy.com": "https://www.etsy.com/search?q=%s", "walmart.com": "https://www.walmart.com/search?q=%s", "bol.com": "https://www.bol.com/nl/nl/s/?searchtext=%s", "wikipedia.org": "https://en.wikipedia.org/w/index.php?search=%s", "en.wikipedia.org": "https://en.wikipedia.org/w/index.php?search=%s", "ru.wikipedia.org": "https://ru.wikipedia.org/w/index.php?search=%s", "en.wiktionary.org": "https://en.wiktionary.org/w/index.php?search=%s", "github.com": "https://github.com/search?q=%s", "gitlab.com": "https://gitlab.com/search?search=%s", "stackoverflow.com": "https://stackoverflow.com/search?q=%s", "reddit.com": "https://www.reddit.com/search/?q=%s", "x.com": "https://x.com/search?q=%s", "twitter.com": "https://twitter.com/search?q=%s", "pinterest.com": "https://www.pinterest.com/search/pins/?q=%s", "instagram.com": "https://www.instagram.com/explore/search/keyword/?q=%s", "tiktok.com": "https://www.tiktok.com/search?q=%s", "linkedin.com": "https://www.linkedin.com/search/results/all/?keywords=%s", "facebook.com": "https://www.facebook.com/search/top?q=%s", "vk.com": "https://vk.com/search?c[q]=%s", "open.spotify.com": "https://open.spotify.com/search/%s", "soundcloud.com": "https://soundcloud.com/search?q=%s", "genius.com": "https://genius.com/search?q=%s", "bandcamp.com": "https://bandcamp.com/search?q=%s", "deezer.com": "https://www.deezer.com/search/%s", "twitch.tv": "https://www.twitch.tv/search?term=%s", "netflix.com": "https://www.netflix.com/search?q=%s", "imdb.com": "https://www.imdb.com/find/?q=%s", "kinopoisk.ru": "https://www.kinopoisk.ru/index.php?kp_query=%s", "rottentomatoes.com": "https://www.rottentomatoes.com/search?search=%s", "themoviedb.org": "https://www.themoviedb.org/search?query=%s", "myanimelist.net": "https://myanimelist.net/anime.php?q=%s", "steampowered.com": "https://store.steampowered.com/search/?term=%s", "habr.com": "https://habr.com/ru/search/?q=%s", "pikabu.ru": "https://pikabu.ru/search?q=%s", "ozon.ru": "https://www.ozon.ru/search/?text=%s", "wildberries.ru": "https://www.wildberries.ru/catalog/0/search.aspx?search=%s", "avito.ru": "https://www.avito.ru/rossiya?q=%s", "market.yandex.ru": "https://market.yandex.ru/search?text=%s", "dns-shop.ru": "https://www.dns-shop.ru/search/?q=%s", "lamoda.ru": "https://www.lamoda.ru/catalogsearch/result/?q=%s", "rutube.ru": "https://rutube.ru/search/?query=%s", "npmjs.com": "https://www.npmjs.com/search?q=%s", "pypi.org": "https://pypi.org/search/?q=%s", "crates.io": "https://crates.io/search?q=%s", "pkg.go.dev": "https://pkg.go.dev/search?q=%s", "hub.docker.com": "https://hub.docker.com/search?q=%s", "huggingface.co": "https://huggingface.co/search/full-text?q=%s", "kaggle.com": "https://www.kaggle.com/search?q=%s", "developer.mozilla.org": "https://developer.mozilla.org/en-US/search?q=%s", "devdocs.io": "https://devdocs.io/#q=%s", "caniuse.com": "https://caniuse.com/?search=%s", "codepen.io": "https://codepen.io/search/pens?q=%s", "medium.com": "https://medium.com/search?q=%s", "quora.com": "https://www.quora.com/search?q=%s", "news.ycombinator.com": "https://hn.algolia.com/?q=%s", "arxiv.org": "https://arxiv.org/search/?query=%s", "pubmed.ncbi.nlm.nih.gov": "https://pubmed.ncbi.nlm.nih.gov/?term=%s", "archive.org": "https://archive.org/search?query=%s", "goodreads.com": "https://www.goodreads.com/search?q=%s", "openlibrary.org": "https://openlibrary.org/search?q=%s", "booking.com": "https://www.booking.com/searchresults.html?ss=%s", "airbnb.com": "https://www.airbnb.com/s/%s/homes", "tripadvisor.com": "https://www.tripadvisor.com/Search?q=%s", "skyscanner.com": "https://www.skyscanner.com/transport/flights-to/%s", "yelp.com": "https://www.yelp.com/search?find_desc=%s", "udemy.com": "https://www.udemy.com/courses/search/?q=%s", "coursera.org": "https://www.coursera.org/search?query=%s", "unsplash.com": "https://unsplash.com/s/photos/%s", "pexels.com": "https://www.pexels.com/search/%s/", "pixabay.com": "https://pixabay.com/images/search/%s/", "flickr.com": "https://www.flickr.com/search/?text=%s", "behance.net": "https://www.behance.net/search/projects?search=%s", "giphy.com": "https://giphy.com/search/%s", "imgur.com": "https://imgur.com/search?q=%s", "freepik.com": "https://www.freepik.com/search?query=%s", "flaticon.com": "https://www.flaticon.com/search?word=%s", "fonts.google.com": "https://fonts.google.com/?query=%s", "coinmarketcap.com": "https://coinmarketcap.com/currencies/%s/", "finance.yahoo.com": "https://finance.yahoo.com/lookup?s=%s", "tradingview.com": "https://www.tradingview.com/symbols/%s/", "wolframalpha.com": "https://www.wolframalpha.com/input?i=%s", "deepl.com": "https://www.deepl.com/translator#auto/en/%s", "urbandictionary.com": "https://www.urbandictionary.com/define.php?term=%s", "merriam-webster.com": "https://www.merriam-webster.com/dictionary/%s", "dictionary.com": "https://www.dictionary.com/browse/%s", "genius.com/": "https://genius.com/search?q=%s", "perplexity.ai": "https://www.perplexity.ai/search?q=%s", "chatgpt.com": "https://chatgpt.com/?q=%s", "claude.ai": "https://claude.ai/new?q=%s", "grok.com": "https://grok.com/?q=%s", "hh.ru": "https://hh.ru/search/vacancy?text=%s", "indeed.com": "https://www.indeed.com/jobs?q=%s", "glassdoor.com": "https://www.glassdoor.com/Search/results.htm?keyword=%s", "wikihow.com": "https://www.wikihow.com/wikiHowTo?search=%s", "britannica.com": "https://www.britannica.com/search?query=%s", "weather.com": "https://www.google.com/search?q=weather+%s", "imdb.com/": "https://www.imdb.com/find/?q=%s", "soundcloud.com/": "https://soundcloud.com/search?q=%s"}; | |
| SITES.split('\n').forEach(function(l){var p=l.split('|');if(p.length<2)return;COMMANDS.push({n:p[0],u:'https://'+p[1],en:[p[0]],ru:p[2]?p[2].split(','):[]})}); | |
| SUBS.split(' ').forEach(function(s){COMMANDS.push({n:'r/'+s,u:'https://www.reddit.com/r/'+s,en:['reddit '+s,'r '+s],ru:[],s:'https://www.reddit.com/r/'+s+'/search/?q=%s&restrict_sr=1'})}); | |
| WIKI.split(';').forEach(function(w){var p=w.split(',');COMMANDS.push({n:'Wikipedia '+p[1],u:'https://'+p[0]+'.wikipedia.org',en:['wikipedia '+p[1].toLowerCase()],ru:[],s:'https://'+p[0]+'.wikipedia.org/w/index.php?search=%s'})}); | |
| var ACT=[ | |
| ['Weather','Погода','weather %','погода %','https://www.google.com/search?q=weather+%'], | |
| ['Map','Карта','map %','карта %','https://www.google.com/maps/search/%'], | |
| ['Hotels','Отели','hotels %','отели %','https://www.booking.com/searchresults.html?ss=%'], | |
| ['Flights to','Билеты в','flights %','авиабилеты %','https://www.google.com/travel/flights?q=Flights%20to%20%'], | |
| ['Time in','Время','time %','время %','https://time.is/%'], | |
| ['Wikipedia:','Википедия:','wiki %','википедия %','https://en.wikipedia.org/wiki/%'], | |
| ['Restaurants in','Рестораны:','restaurants %','рестораны %','https://www.google.com/maps/search/restaurants+in+%'], | |
| ['Attractions in','Достопримечательности:','attractions %','достопримечательности %','https://www.google.com/search?q=top+attractions+in+%'], | |
| ['Jobs in','Работа:','jobs %','работа %','https://www.google.com/search?q=jobs+in+%'], | |
| ['Rent in','Аренда:','rent %','аренда %','https://www.google.com/search?q=apartments+for+rent+in+%'], | |
| ['News from','Новости:','news %','новости %','https://news.google.com/search?q=%'], | |
| ['Photos of','Фото:','photos %','фото %','https://www.google.com/search?tbm=isch&q=%'] | |
| ]; | |
| CITIES.split(';').forEach(function(c){var p=c.split('|'); | |
| ACT.forEach(function(a){COMMANDS.push({n:a[0]+' '+p[0],u:a[4].replace('%',encodeURIComponent(p[0])),f:1,en:[a[2].replace('%',p[0])],ru:[a[3].replace('%',p[1])]})})}); | |
| /* ====== ENGINE ====== */ | |
| //ENGINE | |
| function normalize(s){return String(s==null?'':s).toLowerCase().replace(/ё/g,'е').replace(/[^a-zа-я0-9]+/g,' ').trim()} | |
| var STOP={};'open go goto launch start run search find show for to on in at the a please me site website открой открыть запусти запустить найди найти поищи покажи зайди на в во по для мне пожалуйста сайт'.split(' ').forEach(function(w){STOP[w]=1}); | |
| function strip(n){var o=n.split(' ').filter(function(w){return w&&!STOP[w]});return o.length?o.join(' '):n} | |
| var SEP={and:1,then:1,also:1,plus:1,'и':1,'потом':1,'затем':1,'также':1,'еще':1,'плюс':1}; | |
| function host(u){return u.replace(/^https?:\/\/(www\.)?/,'')} | |
| var SK=Object.keys(S); | |
| COMMANDS.forEach(function(c){if(c.s||c.f)return;var h=host(c.u),b='';SK.forEach(function(k){if(h.indexOf(k)===0&&k.length>b.length)b=k});if(b)c.s=S[b]}); | |
| var MAP={},KEYS=[]; | |
| COMMANDS.forEach(function(c){(c.en||[]).concat(c.ru||[],[c.n]).forEach(function(k){var n=strip(normalize(k));if(n&&!MAP[n]){MAP[n]=c;KEYS.push({k:n,c:c})}})}); | |
| function splitSegments(text){var out=[];String(text||'').split(/[,;+]/).forEach(function(part){var cur=[];part.split(/\s+/).forEach(function(w){if(!w)return;if(SEP[w.toLowerCase().replace(/[^a-zа-я0-9]/g,'')]){if(cur.length)out.push(cur.join(' '));cur=[]}else cur.push(w)});if(cur.length)out.push(cur.join(' '))});return out.map(function(s){return s.trim()}).filter(Boolean)} | |
| function matchSeg(seg){ | |
| var raw=seg.split(/\s+/).filter(Boolean),P=[],allStop=[]; | |
| raw.forEach(function(r,i){var ps=normalize(r).split(' ').filter(Boolean);allStop[i]=ps.every(function(p){return STOP[p]});ps.forEach(function(p){if(!STOP[p])P.push({n:p,i:i})})}); | |
| var best=null,bl=0,bs=0,bn=0; | |
| for(var s=0;s<P.length;s++)for(var l=Math.min(4,P.length-s);l>=1;l--){var k=P.slice(s,s+l).map(function(x){return x.n}).join(' '),c=MAP[k];if(c){if(k.length>bl){best=c;bl=k.length;bs=s;bn=l}break}} | |
| if(!best)return null; | |
| var used={};for(var j=bs;j<bs+bn;j++)used[P[j].i]=1; | |
| var q=raw.filter(function(r,i){return !used[i]&&!allStop[i]}).join(' '); | |
| var qn=q?q.split(' ').length:0;if(bn===1&&((bs>0&&qn>=2)||qn>=4))return null; | |
| return{cmd:best,q:q}} | |
| function buildUrl(c,q){if(!q||c.f)return c.u;if(c.s)return c.s.replace('%s',encodeURIComponent(q));return 'https://www.google.com/search?q='+encodeURIComponent('site:'+host(c.u).split('/')[0]+' '+q)} | |
| function resolve(text){var segs=splitSegments(text),ms=segs.map(matchSeg);if(segs.length>1&&!ms.some(Boolean))segs=[String(text).trim()],ms=[null];return segs.map(function(seg,i){var m=ms[i]; | |
| if(m)return{kind:'cmd',name:m.cmd.n,url:buildUrl(m.cmd,m.q),q:(m.cmd.f?'':m.q)}; | |
| return{kind:'search',name:'Google',q:seg,url:'https://www.google.com/search?q='+encodeURIComponent(seg)}})} | |
| function suggest(val){var segs=splitSegments(val),seg=segs.length?segs[segs.length-1]:'',q=strip(normalize(seg));if(q.length<2)return[]; | |
| var out=[],seen={};function add(x){if(!seen[x.c.n]&&out.length<6){seen[x.c.n]=1;out.push(x)}} | |
| KEYS.forEach(function(x){if(x.k.indexOf(q)===0)add(x)}); | |
| KEYS.forEach(function(x){if((' '+x.k).indexOf(' '+q)>-1)add(x)}); | |
| return out.map(function(x){return{c:x.c,k:x.k,seg:seg}})} | |
| //ENDENGINE | |
| /* ====== STATE ====== */ | |
| var KEY='browserclick.v1',state={chats:[],activeId:null,theme:'auto'}; | |
| function uid(){return Date.now().toString(36)+Math.random().toString(36).slice(2,8)} | |
| function load(){try{var d=JSON.parse(localStorage.getItem(KEY)||localStorage.getItem('browserclick.v0.1')||'null');if(!d)return; | |
| if(Array.isArray(d.chats))state.chats=d.chats.filter(function(c){return c&&typeof c.id==='string'&&Array.isArray(c.messages)}).map(function(c){return{id:c.id,title:c.title||t('newc'),createdAt:c.createdAt||Date.now(),messages:c.messages.filter(function(m){return m&&(m.role==='user'||m.role==='bot')})}}); | |
| if(typeof d.activeId==='string')state.activeId=d.activeId;if(/^(light|dark|auto)$/.test(d.theme))state.theme=d.theme}catch(e){}} | |
| function persist(){try{localStorage.setItem(KEY,JSON.stringify(state))}catch(e){}} | |
| function ensure(){if(!state.chats.length){var c={id:uid(),title:t('newc'),createdAt:Date.now(),messages:[]};state.chats.push(c);state.activeId=c.id} | |
| var f=null;state.chats.forEach(function(c){if(c.id===state.activeId)f=c});if(!f){f=state.chats[0];state.activeId=f.id}return f} | |
| /* ====== DOM ====== */ | |
| function $(i){return document.getElementById(i)} | |
| var msgs=$('msgs'),list=$('list'),ttl=$('ttl'),inp=$('in'),mic=$('mic'),themeBtn=$('themeBtn'),side=$('side'),scrim=$('scrim'),sg=$('sg'); | |
| function el(tag,cls,txt){var e=document.createElement(tag);if(cls)e.className=cls;if(txt!=null)e.textContent=txt;return e} | |
| var IC={auto:'<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8"><circle cx="12" cy="12" r="8.4"/><path d="M12 3.6a8.4 8.4 0 0 1 0 16.8z" fill="currentColor" stroke="none"/></svg>', | |
| light:'<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"><circle cx="12" cy="12" r="4.1"/><path d="M12 2.6v2M12 19.4v2M2.6 12h2M19.4 12h2M5.3 5.3l1.4 1.4M17.3 17.3l1.4 1.4M18.7 5.3l-1.4 1.4M6.7 17.3l-1.4 1.4"/></svg>', | |
| dark:'<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M20.2 14.6A8.6 8.6 0 1 1 9.4 3.8a6.9 6.9 0 0 0 10.8 10.8z"/></svg>', | |
| pen:'<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.9" stroke-linecap="round" stroke-linejoin="round"><path d="M4 20h4L19 9a2.1 2.1 0 0 0-3-3L5 17z"/></svg>', | |
| bin:'<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.9" stroke-linecap="round" stroke-linejoin="round"><path d="M4 7h16M9.5 7V4.8h5V7M6.5 7l.9 12.2h9.2L17.5 7"/></svg>'}; | |
| function applyTheme(){var dk=state.theme==='dark'||(state.theme==='auto'&&matchMedia('(prefers-color-scheme:dark)').matches);document.documentElement.setAttribute('data-theme',dk?'dark':'light');themeBtn.innerHTML=IC[state.theme];themeBtn.title=themeBtn.ariaLabel=t('theme')+': '+state.theme} | |
| themeBtn.onclick=function(){state.theme={auto:'light',light:'dark',dark:'auto'}[state.theme];applyTheme();persist()}; | |
| try{matchMedia('(prefers-color-scheme:dark)').addEventListener('change',function(){if(state.theme==='auto')applyTheme()})}catch(e){} | |
| function openUrl(u){try{var w=window.open(u,'_blank');if(w){try{w.opener=null}catch(e){}}return!!w}catch(e){return false}} | |
| function mono(name){var h=0;for(var i=0;i<name.length;i++)h=(h*31+name.charCodeAt(i))%360;var m=el('div','mono',name.replace(/^[^A-Za-zА-Яа-я0-9]+/,'').charAt(0).toUpperCase()||'•');m.style.background='hsl('+h+' 58% 44%)';return m} | |
| function title(x){x=x.replace(/\s+/g,' ').trim();return x.length>48?x.slice(0,48).trim()+'…':x} | |
| function renderTop(){var c=ensure();ttl.textContent=c.title;ttl.title=c.title} | |
| function renderSide(){list.innerHTML='';state.chats.forEach(function(c){ | |
| var it=el('div','item'+(c.id===state.activeId?' on':'')),o=el('button','open',c.title);o.type='button';o.title=c.title;o.onclick=function(){state.activeId=c.id;persist();all();closeDrawer()}; | |
| var r=el('button','act');r.type='button';r.innerHTML=IC.pen;r.title=t('ren');r.onclick=function(e){e.stopPropagation();rename(c,it)}; | |
| var d=el('button','act');d.type='button';d.innerHTML=IC.bin;d.title=t('del');d.onclick=function(e){e.stopPropagation();delChat(c)}; | |
| it.append(o,r,d);list.appendChild(it)})} | |
| function rename(c,it){var o=it.querySelector('.open'),i=el('input','ren');i.value=c.title;i.maxLength=60;o.replaceWith(i);i.focus();i.select();var done=0; | |
| function fin(ok){if(done)return;done=1;if(ok){var v=i.value.trim();if(v)c.title=v;persist()}renderSide();renderTop()} | |
| i.onblur=function(){fin(1)};i.onkeydown=function(e){if(e.key==='Enter')fin(1);else if(e.key==='Escape')fin(0)}} | |
| function bot(m){var card=el('div','card');(m.results||[]).forEach(function(r){ | |
| var row=el('div','row');row.appendChild(mono(r.name));var inf=el('div','info'),nm=el('div','nm'); | |
| nm.appendChild(el('span','',r.kind==='search'?'Google':r.name)); | |
| var tag=el('span','tag ok',r.kind==='search'?t('searched'):(r.q?t('inSite')+' '+r.name:t('opened')));if(r.kind==='cmd'&&r.q)nm.firstChild.textContent=r.q; | |
| if(r.blocked){tag.className='tag bad';tag.textContent=t('blocked')}nm.appendChild(tag);inf.appendChild(nm); | |
| if(r.kind==='search'&&r.q)inf.appendChild(el('div','qq',t('nomatch'))); | |
| inf.appendChild(el('div','url',r.url));row.appendChild(inf); | |
| var b=el('button','rb',t('again'));b.type='button';b.onclick=function(){var ok=openUrl(r.url);r.blocked=!ok;tag.className='tag '+(ok?'ok':'bad');tag.textContent=ok?t('opened'):t('blocked');persist()};row.appendChild(b);card.appendChild(row)}); | |
| if((m.results||[]).length>1){var a=el('button','all',t('all'));a.type='button';a.onclick=function(){m.results.forEach(function(r){r.blocked=!openUrl(r.url)});persist();renderMsgs()};card.appendChild(a)} | |
| return card} | |
| function empty(){var b=el('div','empty');b.appendChild(el('h1','big',t('big')));b.appendChild(el('p','sub',t('sub')));var ch=el('div','chips'); | |
| (RU?['ютуб lofi','открой гитхаб и хабр','погода лондон','карта токио','википедия python']:['youtube lofi beats','github and hacker news','weather paris','map tokyo','amazon mechanical keyboard']).forEach(function(x){var c=el('button','chip',x);c.type='button';c.onclick=function(){send(x)};ch.appendChild(c)});b.appendChild(ch);return b} | |
| function renderMsgs(){var c=ensure();msgs.innerHTML='';var th=el('div','thread'); | |
| if(!c.messages.length)th.appendChild(empty());else c.messages.forEach(function(m){th.appendChild(m.role==='user'?el('div','u',m.text||''):bot(m))}); | |
| msgs.appendChild(th)} | |
| function bottom(){requestAnimationFrame(function(){msgs.scrollTop=msgs.scrollHeight})} | |
| function all(){renderSide();renderTop();renderMsgs();bottom()} | |
| function newChat(){var c=ensure();if(c.messages.length){c={id:uid(),title:t('newc'),createdAt:Date.now(),messages:[]};state.chats.unshift(c);state.activeId=c.id;persist()}all();closeDrawer();inp.focus()} | |
| function delChat(c){if(!confirm(t('dc',c.title)))return;state.chats=state.chats.filter(function(x){return x.id!==c.id});if(state.activeId===c.id)state.activeId=null;ensure();persist();all()} | |
| $('clrBtn').onclick=function(){if(!state.chats.length||!confirm(t('ca')))return;state.chats=[];state.activeId=null;ensure();persist();all()}; | |
| $('newBtn').onclick=newChat; | |
| function send(raw){var text=String(raw==null?'':raw).trim();if(!text)return;var c=ensure(),first=!c.messages.some(function(m){return m.role==='user'}); | |
| c.messages.push({role:'user',text:text,ts:Date.now()});if(first)c.title=title(text); | |
| var res;try{res=resolve(text)}catch(e){res=[{kind:'search',name:'Google',q:text,url:'https://www.google.com/search?q='+encodeURIComponent(text)}]} | |
| res.forEach(function(r){r.blocked=!openUrl(r.url)}); | |
| c.messages.push({role:'bot',ts:Date.now(),results:res});persist();hideSg();all()} | |
| function submit(){var v=inp.value;if(!v.trim())return;inp.value='';send(v);inp.focus()} | |
| $('sendBtn').onclick=submit; | |
| /* suggestions */ | |
| var sgItems=[],sgIdx=-1; | |
| function hideSg(){sg.hidden=true;sgItems=[];sgIdx=-1} | |
| function showSg(){sgItems=suggest(inp.value);sgIdx=-1;sg.innerHTML='';if(!sgItems.length){sg.hidden=true;return} | |
| sgItems.forEach(function(x,i){var b=el('button','sgi');b.type='button';b.appendChild(mono(x.c.n));b.appendChild(el('span','',x.c.n));b.appendChild(el('small','',x.k)); | |
| b.onmousedown=function(e){e.preventDefault();pick(i,true)};sg.appendChild(b)});sg.hidden=false} | |
| function pick(i,go){var x=sgItems[i];if(!x)return;var v=inp.value,p=v.toLowerCase().lastIndexOf(x.seg.toLowerCase());inp.value=(p>-1?v.slice(0,p):'')+x.k;hideSg();if(go)submit();else inp.focus()} | |
| function mark(){var k=sg.children;for(var i=0;i<k.length;i++)k[i].classList.toggle('hl',i===sgIdx)} | |
| inp.addEventListener('input',showSg);inp.addEventListener('blur',function(){setTimeout(hideSg,120)}); | |
| inp.addEventListener('keydown',function(e){ | |
| if(!sg.hidden&&sgItems.length){if(e.key==='ArrowDown'){e.preventDefault();sgIdx=(sgIdx+1)%sgItems.length;mark();return} | |
| if(e.key==='ArrowUp'){e.preventDefault();sgIdx=(sgIdx-1+sgItems.length)%sgItems.length;mark();return} | |
| if(e.key==='Tab'){e.preventDefault();pick(sgIdx<0?0:sgIdx,false);return} | |
| if(e.key==='Enter'&&sgIdx>-1){e.preventDefault();pick(sgIdx,true);return} | |
| if(e.key==='Escape'){hideSg();return}} | |
| if(e.key==='Enter'&&!e.shiftKey){e.preventDefault();submit()}}); | |
| /* drawer + hotkeys */ | |
| function openDrawer(){side.classList.add('open');scrim.classList.add('show')} | |
| function closeDrawer(){side.classList.remove('open');scrim.classList.remove('show')} | |
| $('menuBtn').onclick=openDrawer;scrim.onclick=closeDrawer; | |
| document.addEventListener('keydown',function(e){if((e.metaKey||e.ctrlKey)&&/^k$/i.test(e.key)){e.preventDefault();newChat()}if(e.key==='Escape')closeDrawer()}); | |
| /* voice */ | |
| var SR=window.SpeechRecognition||window.webkitSpeechRecognition,rec=null,on=false; | |
| function setOn(v){on=v;mic.classList.toggle('rec',v);mic.setAttribute('aria-pressed',v)} | |
| if(!SR){mic.disabled=true;mic.title='Voice input is not supported in this browser'} | |
| else{rec=new SR();rec.continuous=false;rec.interimResults=false; | |
| rec.onresult=function(e){var x='';for(var i=0;i<e.results.length;i++)x+=e.results[i][0].transcript;x=x.replace(/\s+/g,' ').trim();if(x)send(x)}; | |
| rec.onerror=rec.onend=function(){setOn(false)}} | |
| mic.onclick=function(){if(!rec)return;if(on){try{rec.stop()}catch(e){}setOn(false);return}try{rec.lang=RU?'ru-RU':'en-US';rec.start();setOn(true)}catch(e){setOn(false)}}; | |
| /* boot */ | |
| $('newTx').textContent=t('newc');$('clrBtn').textContent=t('clr');inp.placeholder=t('ph'); | |
| $('hint').textContent=t('hint',COMMANDS.length.toLocaleString(RU?'ru-RU':'en-US')); | |
| mic.title=mic.ariaLabel=RU?'Голосовой ввод':'Voice input'; | |
| load();applyTheme();ensure();persist();all();inp.focus(); | |
| })(); | |
| </script> | |
| </body> | |
| </html> | |