My Prompt

Optimize your workflow and turn AI into your personal agent! Save and organize all your prompts in your personal library. Explore Dynamic Prompt Mode to create interactive prompts. Elevate simple prompts to professional quality with AI Enhance and auto-attach recurring files. Perfect for boosting productivity on ChatGPT, Gemini, Grok, DeepSeek, and other LLMs.

You will need to install an extension such as Tampermonkey, Greasemonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Userscripts to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install a user script manager extension to install this script.

(I already have a user script manager, let me install it!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

(I already have a user style manager, let me install it!)

// ==UserScript==
// @name                My Prompt
// @name:pt-BR          My Prompt
// @name:zh-CN          My Prompt
// @name:zh-TW          My Prompt
// @name:fr-CA          My Prompt
// @name:ckb            My Prompt
// @name:ar             My Prompt
// @name:be             My Prompt
// @name:bg             My Prompt
// @name:cs             My Prompt
// @name:da             My Prompt
// @name:de             My Prompt
// @name:el             My Prompt
// @name:en             My Prompt
// @name:eo             My Prompt
// @name:es             My Prompt
// @name:fi             My Prompt
// @name:fr             My Prompt
// @name:he             My Prompt
// @name:hr             My Prompt
// @name:hu             My Prompt
// @name:id             My Prompt
// @name:it             My Prompt
// @name:ja             My Prompt
// @name:ka             My Prompt
// @name:ko             My Prompt
// @name:mr             My Prompt
// @name:nb             My Prompt
// @name:nl             My Prompt
// @name:pl             My Prompt
// @name:ro             My Prompt
// @name:ru             My Prompt
// @name:sk             My Prompt
// @name:sr             My Prompt
// @name:sv             My Prompt
// @name:th             My Prompt
// @name:tr             My Prompt
// @name:uk             My Prompt
// @name:ug             My Prompt
// @name:vi             My Prompt
// @namespace           https://github.com/0H4S
// @version             5.9
// @author              OHAS
// @icon                https://cdn.jsdelivr.net/gh/0H4S/My-Prompt@main/icon.svg
// @license             CC-BY-NC-ND-4.0
// @copyright           2025-2026 OHAS. All Rights Reserved.
// @description         Optimize your workflow and turn AI into your personal agent! Save and organize all your prompts in your personal library. Explore Dynamic Prompt Mode to create interactive prompts. Elevate simple prompts to professional quality with AI Enhance and auto-attach recurring files. Perfect for boosting productivity on ChatGPT, Gemini, Grok, DeepSeek, and other LLMs.
// @description:pt-BR   Otimize seu fluxo de trabalho e transforme a IA em seu agente pessoal! Salve e organize todos os seus prompts na biblioteca pessoal. Explore o Modo de Prompt Dinâmico para criar prompts interativos. Eleve prompts simples à qualidade profissional com Aprimorar com IA e anexe arquivos recorrentes automaticamente. Ideal para aumentar a produtividade no ChatGPT, Gemini, Grok, DeepSeek e outras LLMs.
// @description:zh-CN   优化工作流程,将人工智能变为您的专属助手!将所有提示保存并整理至个人库。探索动态提示模式,创建交互式提示。借助AI增强功能,将简单提示提升至专业水准,并自动附加常用文件。完美适用于提升在ChatGPT、Gemini、Grok、DeepSeek等大语言模型上的生产力。
// @description:zh-TW   優化工作流程,將人工智慧轉化為您的專屬助手!將所有提示儲存並整理至個人庫。探索動態提示模式,建立互動式提示。透過AI增強功能,將簡易提示提升至專業水準,並自動附加常用檔案。完美適用於提升在ChatGPT、Gemini、Grok、DeepSeek等大型語言模型上的生產力。
// @description:fr-CA   Optimisez votre flux de travail et transformez l'IA en votre agent personnel ! Enregistrez et organisez tous vos prompts dans votre bibliothèque personnelle. Découvrez le Mode Prompt Dynamique pour créer des prompts interactifs. Portez vos prompts simples à un niveau professionnel grâce à Améliorer avec l'IA et joignez automatiquement les fichiers récurrents. Idéal pour booster votre productivité sur ChatGPT, Gemini, Grok, DeepSeek et autres LLM.
// @description:ckb     کاریگەری کارگوزارییەکەت بەینەوە و زیرەکی دەستکرد بگۆڕە بۆ ئاژەڵی کەسیت! هەموو پرۆمپتەکانت لە کتێبخانەی کەسیتدا پاشەکەوت و ڕێکبخە. مۆدی پرۆمپتی دینامیکی تاقی بکەرەوە بۆ دروستکردنی پرۆمپتی ناوخۆیی. کوالیتی پرۆمپتە سادەکانت بەرزبکەرەوە بۆ ئاستی پیشەگەری بە تایبەتمەندی باشترکردن لەگەڵ زیرەکی دەستکرد و فایلە دووبارەکان بەگۆڕانکاری پاشەکەوت بکە. بەتاڵ بۆ زیادکردنی بەرهەمهێنان لەسەر ChatGPT، Gemini، Grok، DeepSeek و چەند LLMی تر.
// @description:ar      حسِّن سير عملك وحوِّل الذكاء الاصطناعي إلى وكيلك الشخصي! احفظ ونظِّم جميع مطالباتك في مكتبتك الشخصية. استكشف وضع المطالبة الديناميكي لإنشاء مطالبات تفاعلية. ارتقِ بجودة مطالباتك البسيطة إلى المستوى الاحترافي باستخدام ميزة التحسين بالذكاء الاصطناعي وأرفق الملفات المتكررة تلقائيًا. مثالي لزيادة الإنتاجية على ChatGPT وGemini وGrok وDeepSeek ونماذج اللغة الكبيرة الأخرى.
// @description:be      Аптымізуйце працоўны працэс і ператварыце ШІ ў свайго асабістага агента! Захоўвайце і арганізуйце ўсе запыты ў асабістай бібліятэцы. Даследуйце дынамічны рэжым запытаў для стварэння інтэрактыўных запытаў. Падвысіце якасць простых запытаў да прафесійнага ўзроўню з дапамогай функцыі «Палепшыць з ШІ» і аўтаматычна далучайце паўтаральныя файлы. Ідэальна для павелічэння прадукцыйнасці ў ChatGPT, Gemini, Grok, DeepSeek і іншых LLM.
// @description:bg      Оптимизирайте работния си процес и превърнете ИИ във вашия личен агент! Запазвайте и организирайте всички промпти в личната си библиотека. Изследвайте Динамичен режим на промптите, за да създавате интерактивни промпти. Повишете качеството на простите промпти до професионално ниво с функцията «Подобри с ИИ» и автоматично прикачайте повтарящи се файлове. Идеално за повишаване на продуктивността в ChatGPT, Gemini, Grok, DeepSeek и други LLM.
// @description:cs      Optimalizujte svůj pracovní postup a proměňte AI ve svého osobního agenta! Ukládejte a organizujte všechny své prompty ve své osobní knihovně. Prozkoumejte Dynamický režim promptů pro vytváření interaktivních promptů. Zvyšte kvalitu jednoduchých promptů na profesionální úroveň funkcí Vylepšit pomocí AI a automaticky přikládejte opakující se soubory. Ideální pro zvýšení produktivity v ChatGPT, Gemini, Grok, DeepSeek a dalších LLM.
// @description:da      Optimer dit arbejdsflow, og gør AI til din personlige agent! Gem og organiser alle dine prompts i dit personlige bibliotek. Udforsk Dynamisk Prompt-tilstand til at skabe interaktive prompts. Løft kvaliteten af dine enkle prompts til et professionelt niveau med AI-forbedring og vedhæft gentagne filer automatisk. Perfekt til at øge produktiviteten på ChatGPT, Gemini, Grok, DeepSeek og andre LLM'er.
// @description:de      Optimieren Sie Ihren Arbeitsablauf und machen Sie KI zu Ihrem persönlichen Agenten! Speichern und organisieren Sie alle Prompts in Ihrer persönlichen Bibliothek. Entdecken Sie den Dynamischen Prompt-Modus für interaktive Prompts. Veredeln Sie einfache Prompts mit KI-Verbesserung auf Profi-Niveau und hängen Sie wiederkehrende Dateien automatisch an. Perfekt zur Produktivitätssteigerung in ChatGPT, Gemini, Grok, DeepSeek und anderen LLMs.
// @description:el      Βελτιστοποιήστε τη ροή εργασίας σας και μετατρέψτε την ΤΝ σε προσωπικό σας βοηθό! Αποθηκεύστε και οργανώστε όλα τα prompts σας στην προσωπική σας βιβλιοθήκη. Εξερευνήστε τη Δυναμική Λειτουργία Prompt για δημιουργία διαδραστικών prompts. Ανεβάστε απλά prompts σε επαγγελματικό επίπεδο με τη λειτουργία Βελτίωση με ΤΝ και επισυνάψτε αυτόματα επαναλαμβανόμενα αρχεία. Ιδανικό για αύξηση παραγωγικότητας σε ChatGPT, Gemini, Grok, DeepSeek και άλλα LLM.
// @description:en      Optimize your workflow and turn AI into your personal agent! Save and organize all your prompts in your personal library. Explore Dynamic Prompt Mode to create interactive prompts. Elevate simple prompts to professional quality with AI Enhance and auto-attach recurring files. Perfect for boosting productivity on ChatGPT, Gemini, Grok, DeepSeek, and other LLMs.
// @description:eo      Optimumigu vian laborfluon kaj transformu la AI-n al via persona agento! Konservu kaj organizu ĉiujn viajn promptojn en via persona biblioteko. Esploru la Dinaman Prompt-Reĝimon por krei interaktivajn promptojn. Levu simplajn promptojn al profesian nivelo per la funkcio AI-Plibonigi kaj aŭtomate alkroĉu ripetajn dosierojn. Perfekte por pliigi produktivecon en ChatGPT, Gemini, Grok, DeepSeek kaj aliaj LLM.
// @description:es      ¡Optimiza tu flujo de trabajo y convierte la IA en tu agente personal! Guarda y organiza todos tus prompts en tu biblioteca personal. Explora el Modo de Prompt Dinámico para crear prompts interactivos. Eleva prompts simples a nivel profesional con Mejorar con IA y adjunta archivos recurrentes automáticamente. Perfecto para aumentar la productividad en ChatGPT, Gemini, Grok, DeepSeek y otras LLM.
// @description:fi      Optimoi työnkulku ja muuta tekoäly henkilökohtaiseksi avustajaksesi! Tallenna ja järjestä kaikki kehotteesi henkilökohtaiseen kirjastoosi. Tutustu dynaamiseen kehotetilaan vuorovaikutteisten kehotteiden luomiseksi. Nosta yksinkertaisten kehotteidesi laatu ammattitasolle tekoälyparannuksella ja liitä toistuvat tiedostot automaattisesti. Täydellinen tuottavuuden lisäämiseksi ChatGPT:ssä, Gemini:ssä, Grok:ssa, DeepSeek:ssä ja muissa LLM:ssä.
// @description:fr      Optimisez votre flux de travail et transformez l'IA en votre agent personnel ! Enregistrez et organisez tous vos prompts dans votre bibliothèque personnelle. Découvrez le Mode Prompt Dynamique pour créer des prompts interactifs. Portez vos prompts simples à un niveau professionnel grâce à Améliorer avec l'IA et joignez automatiquement les fichiers récurrents. Idéal pour booster votre productivité sur ChatGPT, Gemini, Grok, DeepSeek et autres LLM.
// @description:he      מיטוב זרימת העבודה והפיכת הבינה המלאכותית לסוכן האישי שלך! שמור וסדר את כל ה-prompts שלך בספריה האישית. גלה את מצב ה-Prompt הדינמי ליצירת prompts אינטראקטיביים. הרם prompts פשוטים לרמה מקצועית עם תכונת השדרוג בעזרת בינה מלאכותית והוסף קבצים חוזרים אוטומטית. מושלם להגברת פרודוקטיביות ב-ChatGPT, Gemini, Grok, DeepSeek ו-LLM נוספים.
// @description:hr      Optimizirajte radni tijek i pretvorite AI u svog osobnog agenta! Spremite i organizirajte sve svoje upite u osobnu biblioteku. Istražite Dinamički način rada s upitima za stvaranje interaktivnih upita. Podignite kvalitetu jednostavnih upita na profesionalnu razinu pomoću značajke Poboljšaj pomoću AI i automatski priložite ponavljajuće datoteke. Savršeno za povećanje produktivnosti na ChatGPT-u, Gemini-u, Grok-u, DeepSeek-u i drugim LLM-ovima.
// @description:hu      Optimalizáld a munkafolyamatodat, és változtasd az MI-t személyes ügynökké! Mentsd és rendezd el az összes promptodat a személyes könyvtárban. Fedezd fel a Dinamikus Prompt módot interaktív promptok létrehozásához. Emeld egyszerű promptjaid minőségét professzionális szintre az MI-fejlesztés funkcióval, és csatold automatikusan az ismétlődő fájlokat. Tökéletes a termelékenység növeléséhez ChatGPT, Gemini, Grok, DeepSeek és egyéb LLM esetén.
// @description:id      Optimalkan alur kerja Anda dan ubah AI menjadi agen pribadi Anda! Simpan dan atur semua prompt Anda di perpustakaan pribadi. Jelajahi Mode Prompt Dinamis untuk membuat prompt interaktif. Tingkatkan prompt sederhana ke kualitas profesional dengan Tingkatkan dengan AI dan lampirkan file berulang secara otomatis. Sempurna untuk meningkatkan produktivitas di ChatGPT, Gemini, Grok, DeepSeek, dan LLM lainnya.
// @description:it      Ottimizza il tuo flusso di lavoro e trasforma l'IA nel tuo agente personale! Salva e organizza tutti i tuoi prompt nella libreria personale. Esplora la Modalità Prompt Dinamico per creare prompt interattivi. Eleva prompt semplici a qualità professionale con Migliora con IA e allega automaticamente file ricorrenti. Perfetto per aumentare la produttività su ChatGPT, Gemini, Grok, DeepSeek e altri LLM.
// @description:ja      ワークフローを最適化し、AIをパーソナルエージェントに!すべてのプロンプトをパーソナルライブラリに保存・整理。ダイナミックプロンプトモードでインタラクティブなプロンプトを生成。AI強化機能でシンプルなプロンプトをプロ品質へ。頻出ファイルを自動添付。ChatGPT、Gemini、Grok、DeepSeekなど主要LLMでの生産性向上に最適。
// @description:ka      ოპტიმიზაცია თქვენი სამუშაო პროცესი და გადააქციეთ AI თქვენს პირად აგენტად! შეინახეთ და დაალაგეთ ყველა პრომპტი პირად ბიბლიოთეკაში. გამოიყენეთ დინამიური პრომპტის რეჟიმი ინტერაქტიული პრომპტების შესაქმნელად. აწიეთ მარტივი პრომპტების ხარისხი პროფესიონალურ დონეზე AI გაუმჯობესებით და ავტომატურად მიაბარეთ განმეორებადი ფაილები. სრულყოფილია პროდუქტიულობის გასაზრდელად ChatGPT, Gemini, Grok, DeepSeek და სხვა LLM-ებში.
// @description:ko      워크플로우를 최적화하고 AI를 개인 에이전트로 승격하세요! 모든 프롬프트를 개인 라이브러리에 저장 및 정리. 다이나믹 프롬프트 모드로 인터랙티브 프롬프트 생성. AI 향상 기능으로 간단한 프롬프트를 전문 수준으로 개선하고 반복 파일 자동 첨부. ChatGPT, Gemini, Grok, DeepSeek 등 주요 LLM에서 생산성 향상에 완벽합니다.
// @description:mr      तुमचा कार्यप्रवाह ऑप्टिमाइझ करा आणि AI ला तुमचा वैयक्तिक एजंट बनवा! तुमचे सर्व प्रॉम्प्ट्स वैयक्तिक लायब्ररीत साठवा आणि व्यवस्थित करा. इंटरॅक्टिव्ह प्रॉम्प्ट्स तयार करण्यासाठी डायनॅमिक प्रॉम्प्ट मोड एक्सप्लोर करा. AI इन्हँन्ससह साध्या प्रॉम्प्ट्सची गुणवत्ता प्रोफेशनल स्तरावर आणा आणि वारंवार फायली ऑटो-अटॅच करा. ChatGPT, Gemini, Grok, DeepSeek आणि इतर LLM वर उत्पादकता वाढवण्यासाठी आदर्श.
// @description:nb      Optimaliser arbeidsflyten og gjør AI til din personlige agent! Lagre og organiser alle promptene dine i det personlige biblioteket. Utforsk Dynamisk prompt-modus for å lage interaktive prompts. Løft enkle prompts til profesjonell kvalitet med AI-forbedring og fest gjentakende filer automatisk. Perfekt for økt produktivitet på ChatGPT, Gemini, Grok, DeepSeek og andre LLM-er.
// @description:nl      Optimaliseer je workflow en maak van AI je persoonlijke agent! Bewaar en organiseer al je prompts in je persoonlijke bibliotheek. Verken de Dynamische Prompt-modus voor interactieve prompts. Verhef eenvoudige prompts naar professioneel niveau met AI Verbeteren en koppel terugkerende bestanden automatisch. Ideaal om productiviteit te verhogen op ChatGPT, Gemini, Grok, DeepSeek en andere LLM's.
// @description:pl      Zoptymalizuj przepływ pracy i zamień AI w swojego osobistego agenta! Zapisuj i organizuj wszystkie swoje prompty w osobistej bibliotece. Poznaj Dynamiczny Tryb Promptów do tworzenia interaktywnych promptów. Podnieś jakość prostych promptów na poziom profesjonalny dzięki funkcji Ulepsz z AI i automatycznie dołączaj powtarzające się pliki. Idealne do zwiększenia produktywności w ChatGPT, Gemini, Grok, DeepSeek i innych LLM.
// @description:ro      Optimizează-ți fluxul de lucru și transformă IA în agentul tău personal! Salvează și organizează toate prompturile în biblioteca ta personală. Explorează Modul Prompt Dinamic pentru a crea prompturi interactive. Ridică prompturile simple la nivel profesional cu Îmbunătățește cu IA și atașează automat fișierele recurente. Perfect pentru creșterea productivității pe ChatGPT, Gemini, Grok, DeepSeek și alte LLM.
// @description:ru      Оптимизируйте рабочий процесс и превратите ИИ в вашего личного агента! Сохраняйте и организуйте все промпты в личной библиотеке. Исследуйте Динамический режим промптов для создания интерактивных промптов. Повысьте качество простых промптов до профессионального уровня функцией «Улучшить с ИИ» и автоматически прикрепляйте повторяющиеся файлы. Идеально для повышения продуктивности в ChatGPT, Gemini, Grok, DeepSeek и других LLM.
// @description:sk      Optimalizujte pracovný postup a premeňte AI na svojho osobného agenta! Ukladajte a organizujte všetky svoje prompty vo svojej osobnej knižnici. Preskúmajte Dynamický režim promptov na vytváranie interaktívnych promptov. Zvýšte kvalitu jednoduchých promptov na profesionálnu úroveň funkciou Vylepšiť pomocou AI a automaticky pripojte opakujúce sa súbory. Ideálne na zvýšenie produktivity v ChatGPT, Gemini, Grok, DeepSeek a ďalších LLM.
// @description:sr      Optimizujte radni tok i pretvorite veštačku inteligenciju u svog ličnog agenta! Sačuvajte i organizujte sve promptove u ličnoj biblioteci. Istražite Dinamički režim promptova za kreiranje interaktivnih promptova. Podignite kvalitet jednostavnih promptova na profesionalni nivo funkcijom Unapredi pomoću VI i automatski priložite ponavljajuće fajlove. Savršeno za povećanje produktivnosti na ChatGPT-u, Gemini-u, Grok-u, DeepSeek-u i drugim VJM-ima.
// @description:sv      Optimera ditt arbetsflöde och förvandla AI till din personliga agent! Spara och organisera alla dina prompts i ditt personliga bibliotek. Utforska Dynamiskt promptläge för att skapa interaktiva prompts. Lyft enkla prompts till professionell kvalitet med AI-förbättring och bifoga återkommande filer automatiskt. Perfekt för ökad produktivitet i ChatGPT, Gemini, Grok, DeepSeek och andra LLM:er.
// @description:th      เพิ่มประสิทธิภาพเวิร์กโฟลว์และเปลี่ยน AI ให้เป็นผู้ช่วยส่วนตัว! บันทึกและจัดระเบียบพรอมต์ทั้งหมดในคลังส่วนตัว สำรวจโหมดพรอมต์แบบไดนามิกเพื่อสร้างพรอมต์อินเทอร์แอคทีฟ ยกระดับพรอมต์พื้นฐานสู่คุณภาพมืออาชีพด้วยคุณสมบัติปรับปรุงด้วย AI และแนบไฟล์ประจำโดยอัตโนมัติ เหมาะอย่างยิ่งสำหรับเพิ่มผลิตภาพบน ChatGPT, Gemini, Grok, DeepSeek และ LLM อื่น ๆ
// @description:tr      İş akışınızı optimize edin, yapay zekayı kişisel temsilcinize dönüştürün! Tüm prompt'larınızı kişisel kütüphanenizde kaydedin ve düzenleyin. İnteraktif prompt'lar oluşturmak için Dinamik Prompt Modu'nu keşfedin. Basit prompt'larınızı Yapay Zeka İyileştirme ile profesyonel seviyeye taşıyın ve tekrarlanan dosyaları otomatik ekleyin. ChatGPT, Gemini, Grok, DeepSeek ve diğer LLM'lerde üretkenliği artırmak için ideal.
// @description:uk      Оптимізуйте робочий процес і перетворіть ШІ на вашого особистого агента! Зберігайте та організовуйте всі промпти в особистій бібліотеці. Дослідіть Динамічний режим промптів для створення інтерактивних промптів. Підвищте якість простих промптів до професійного рівня функцією «Покращити за допомогою ШІ» та автоматично долучайте повторювані файли. Ідеально для підвищення продуктивності в ChatGPT, Gemini, Grok, DeepSeek та інших LLM.
// @description:ug      ئىش جەريانىڭىزنى ئوپتىماللاشتۇرۇپ، ياسايلقان زېرەكلىكنى شەخسىي ۋاكالەتچىڭىزگە ئايلاندۇرۇڭ! بارلىق سۈرۈشتۈرۈشلىرىڭىزنى شەخسىي كىتابخانىڭىزدا ساقلاپ، تەرتىپلەڭ. ئۆزئارا تەسىرلەش سۈرۈشتۈرۈشلىرىنى ياساش ئۈچۈن دىنامىك سۈرۈشتۈرۈش ھالىتىنى تەكشۈرۈڭ. ياسايلقان زېرەكلىك بىلەن ياخشىلاش خۇسۇسىيىتى بىلەن سادە سۈرۈشتۈرۈشلىرىڭىزنى كەسپىي دەرىجىگە كۆتۈرۈپ، تەكرارلانغان ھۆججەتلەرنى ئاپتوماتىك تىرکەڭ. ChatGPT، Gemini، Grok، DeepSeek ۋە باشقا چوڭ تىل مودېلىدا مەھسۇلدارلىقنى ئاشۇرۇشقا مۇۋاپىق.
// @description:vi      Tối ưu hóa quy trình làm việc và biến AI thành trợ lý cá nhân! Lưu trữ và sắp xếp mọi prompt trong thư viện cá nhân. Khám phá Chế độ Prompt Động để tạo prompt tương tác. Nâng prompt đơn giản lên chuẩn chuyên nghiệp nhờ Tăng cường bằng AI và tự động đính kèm tệp định kỳ. Hoàn hảo để tăng năng suất trên ChatGPT, Gemini, Grok, DeepSeek và các LLM khác.
// @match               *://poe.com/*
// @match               *://grok.com/*
// @match               *://arena.ai/*
// @match               *://claude.ai/*
// @match               *://chat.z.ai/*
// @match               *://image.z.ai/*
// @match               *://chatglm.cn/*
// @match               *://chatgpt.com/*
// @match               *://longcat.chat/*
// @match               *://chat.qwen.ai/*
// @match               *://www.kimi.com/*
// @match               *://geminigen.ai/*
// @match               *://www.doubao.com/*
// @match               *://ernie.baidu.com/*
// @match               *://chat.mistral.ai/*
// @match               *://www.qianwen.com/*
// @match               *://build.nvidia.com/*
// @match               *://www.perplexity.ai/*
// @match               *://chat.deepseek.com/*
// @match               *://gemini.google.com/*
// @match               *://arena.ai4bharat.org/*
// @match               *://yuanbao.tencent.com/*
// @match               *://aistudio.google.com/*
// @match               *://dreamina.capcut.com/*
// @match               *://jimeng.jianying.com/*
// @match               *://hunyuan.tencent.com/*
// @match               *://copilot.microsoft.com/*
// @match               *://notebooklm.google.com/*
// @match               *://www.bing.com/images/create*
// @match               *://labs.google/fx/*/tools/flow*
// @match               *://www.google.com/search?*udm=50*
// @require             https://update.greasyfork.org/scripts/564164.js
// @require             https://update.greasyfork.org/scripts/549920.js
// @resource            CSS https://cdn.jsdelivr.net/gh/0H4S/[email protected]/Files/style.min.css
// @resource            IDIOMAS https://cdn.jsdelivr.net/gh/0H4S/[email protected]/Files/languages.min.json
// @connect             generativelanguage.googleapis.com
// @connect             fonts.googleapis.com
// @connect             fonts.gstatic.com
// @connect             cdn.streamain.com
// @connect             files.catbox.moe
// @connect             api.longcat.chat
// @connect             cdn.jsdelivr.net
// @connect             gist.github.com
// @connect             openrouter.ai
// @connect             api.groq.com
// @connect             i.ibb.co
// @grant               GM_getValue
// @grant               GM_setValue
// @grant               GM_listValues
// @grant               GM_deleteValue
// @grant               GM_xmlhttpRequest
// @grant               GM_getResourceText
// @grant               GM_registerMenuCommand
// @run-at              document-end
// @noframes
// @compatible          chrome
// @compatible          firefox
// @compatible          edge
// @compatible          opera
// @bgf-compatible      brave
// @bgf-colorLT         #847dfd
// @bgf-colorDT         #6963ca
// @bgf-copyright       [2025-2026 OHAS. All Rights Reserved.](https://gist.github.com/0H4S/ae2fa82957a089576367e364cbf02438)
// @contributionURL     https://ko-fi.com/ohas
// ==/UserScript==

(function() {
    'use strict';
    const LANG_STORAGE_KEY="UserScriptLang",GLOBAL_FILES_KEY="GlobalFiles",PROMPT_STORAGE_KEY="Prompts",THEME_STORAGE_KEY="Theme",IMPORTED_THEMES_KEY="ImportedThemes",PREDICTION_STORAGE_KEY="Prediction",SHORTCUTS_STORAGE_KEY="ShortcutsConfig",AI_SETTINGS_KEY="AISettings",NAV_STORAGE_KEY="NavConfig",NAV_SESSION_KEY="NavState",TAGS_STORAGE_KEY="PromptTags",SYNTAX_STORAGE_KEY="SyntaxHighlight",DEFAULT_SYNTAX_CONFIG={enabled:!0},DEFAULT_PREDICTION_CONFIG={enabled:!0},DEFAULT_NAV_CONFIG={enabled:!0,filterMode:"all"},DEFAULT_THEME_CONFIG={themeId:"default",mode:"auto"},NO_NAV_PLATFORMS=["dreamina","jimengJianying","glmimage","flow","longcat","geminigen","hunyuan","bing"],DEFAULT_SHORTCUTS={newPrompt:{keys:"Alt+N",descKey:"altN"},listPrompts:{keys:"Alt+P",descKey:"altP"},saveSend:{keys:"Ctrl+Enter",descKey:"ctrlEnter"},lineBreak:{keys:"Shift+Enter",descKey:"shiftEnter"},enhancePrompt:{keys:"Alt+E",descKey:"altE"}},DEFAULT_AI_CONFIG={apiKeyGemini:"",apiKeyLongcat:"",apiKeyGroq:"",apiKeyOpenRouter:"",keyIndexGemini:0,keyIndexLongcat:0,keyIndexGroq:0,keyIndexOpenRouter:0,model:"gemini-2.5-flash",systemPrompt:'You are an expert prompt engineer. Improve the user\'s prompt to be clearer, more detailed, and effective for an LLM. Respond ONLY with the improved prompt text, in the same language as the user. Do not add introductions like "Here is the improved prompt:".'},DEFAULT_TAGS_CONFIG={tags:{},activeFilters:[]},TAG_MEMORY={active:!1,list:[],index:0,startPos:0,typed:""};let isInitialized=!1,isInitializing=!1,currentPlatform=null,currentLang="en",mediaQueryList=window.matchMedia("(prefers-color-scheme: dark)"),currentSyntaxConfig=DEFAULT_SYNTAX_CONFIG,currentThemeConfig=DEFAULT_THEME_CONFIG,currentPredictionConfig=DEFAULT_PREDICTION_CONFIG,currentAIConfig=JSON.parse(JSON.stringify(DEFAULT_AI_CONFIG)),currentShortcuts=JSON.parse(JSON.stringify(DEFAULT_SHORTCUTS)),currentNavConfig=JSON.parse(JSON.stringify(DEFAULT_NAV_CONFIG)),currentTagsConfig=JSON.parse(JSON.stringify(DEFAULT_TAGS_CONFIG)),importedThemes={},settingsModal=null,languageModal=null,currentPlaceholderModal=null,infoModal=null,currentModal=null,inlineMenu=null,currentMenu=null,navContainer=null,navListPopup=null,currentButton=null,tagsModal=null,pageObserver=null,cachedMessages=[],currentActiveFileIds=new Set,currentPromptTags=new Set,navFilterMode="all",navLiveInterval=null,navLastDomCount=0,currentNavIndex=-1,inlineMenuCurrentItems=[],inlineMenuIndex=0,macroMemory={active:!1,text:"",startIndex:0,hashCount:0},varMemory={active:!1,list:[],index:0,startPos:0,typed:""},scriptPolicy=null;const policyNames=["MyPromptPolicy","dompurify","default","cwm-policy"];if(window.trustedTypes&&window.trustedTypes.createPolicy)for(const e of policyNames)try{scriptPolicy=window.trustedTypes.createPolicy(e,{createHTML:e=>e});break}catch(e){}function setSafeInnerHTML(e,t){e&&(e.innerHTML=scriptPolicy?scriptPolicy.createHTML(t):t)}const SCRIPT_CONFIG={notificationsUrl:"https://gist.github.com/0H4S/b2f9a9f92259deadc35bdccb11cd9a75",scriptVersion:"5.9",runtimePolicy:scriptPolicy},notifier=new ScriptNotifier(SCRIPT_CONFIG);notifier.run(),window.addEventListener("load",(()=>{[{url:"https://cdn.jsdelivr.net/gh/0H4S/[email protected]/Fonts/fonts.css"}].forEach((e=>{FontLoaderBypass.load(e.url,e.nome,e.peso)}))})),FontLoaderBypass.clear("https://fonts.googleapis.com/css2?family=Roboto+Slab&display=swap");const platformSelectors={chatgpt:"#prompt-textarea",deepseek:"textarea.ds-scroll-area",googleaistudio:"textarea",qwen:".message-input-textarea",zai:"textarea#chat-input",gemini:'div.ql-editor[contenteditable="true"]',arena:'textarea[name="message"]',kimi:'div.chat-input-editor[contenteditable="true"]',claude:'div.ProseMirror[contenteditable="true"]',grok:'div.tiptap.ProseMirror[contenteditable="true"], textarea',perplexity:"#ask-input",longcat:"div.tiptap.ProseMirror",mistral:".ProseMirror",yuanbao:'div.ql-editor[contenteditable="true"]',chatglm:"textarea.scroll-display-none",poe:'textarea[class*="GrowingTextArea_textArea"]',googleModoIA:"textarea.ITIRGe",notebooklm:"textarea.query-box-input",doubao:'textarea[data-testid="chat_input_input"]',copilot:'#userInput, textarea[data-testid="composer-input"]',glmimage:"textarea.flex.w-full",flow:'div[role="textbox"][data-slate-editor="true"][contenteditable="true"]',ernie:'div[contenteditable="true"][role="textbox"].editable__QRoAFgYA',dreamina:'textarea.lv-textarea.textarea-xle6zp.prompt-textarea-zqvueo, [contenteditable="true"]',jimengJianying:'textarea[class*="prompt-textarea"]',nvidiaNim:'textarea.nv-text-area-element[data-testid="nv-text-area-element"]',indicArena:'textarea[data-testid="rt-input-component"]',qianwen:'div[role="textbox"][data-slate-editor="true"], [contenteditable="true"]',geminigen:"textarea.w-full.rounded-md",hunyuan:"textarea.t-textarea__inner",bing:"#gi_form_q, textarea.b_searchbox"};let translations={};try{const e=GM_getResourceText("IDIOMAS");e&&(translations=JSON.parse(e))}catch(e){}function getTranslation(e,t={}){let n=translations[currentLang]?.[e]||translations.en[e];return Object.entries(t).forEach((([e,t])=>n=n.replace(`{${e}}`,t))),n}async function determineLanguage(){const e=await GM_getValue(LANG_STORAGE_KEY);if(e&&translations[e])return void(currentLang=e);const t=(navigator.language||navigator.userLanguage).toLowerCase(),n=t.split("-")[0];if(translations[t])return void(currentLang=t);if(translations[n])return void(currentLang=n);const o=Object.keys(translations).find((e=>e.startsWith(n)));currentLang=o||"en"}async function getGlobalFiles(){return await GM_getValue(GLOBAL_FILES_KEY,[])}async function saveGlobalFile(e){const t=await getGlobalFiles();return t.find((t=>t.name===e.name&&t.size===e.size))||(t.push(e),await GM_setValue(GLOBAL_FILES_KEY,t)),t}async function deleteGlobalFile(e){let t=await getGlobalFiles();t=t.filter((t=>t.id!==e)),await GM_setValue(GLOBAL_FILES_KEY,t)}function dataURLtoFile(e,t){for(var n=e.split(","),o=n[0].match(/:(.*?);/)[1],a=atob(n[1]),r=a.length,i=new Uint8Array(r);r--;)i[r]=a.charCodeAt(r);return new File([i],t,{type:o})}async function loadTagsConfig(){const e=await GM_getValue(TAGS_STORAGE_KEY,null);currentTagsConfig=e?{...DEFAULT_TAGS_CONFIG,...e}:JSON.parse(JSON.stringify(DEFAULT_TAGS_CONFIG))}async function saveTagsConfig(){await GM_setValue(TAGS_STORAGE_KEY,currentTagsConfig)}function getTagStyle(e){return{backgroundColor:e.bgColor||"#7071fc",color:e.textColor||"#ffffff"}}async function createOrUpdateTag(e){const{name:t,bgColor:n,textColor:o,comment:a}=e;if(!t)return!1;const r=t.toLowerCase().trim();return currentTagsConfig.tags[r]={name:t.trim(),bgColor:n||"#7071fc",textColor:o||"#ffffff",comment:a||""},await saveTagsConfig(),!0}async function deleteTag(e){const t=e.toLowerCase().trim();delete currentTagsConfig.tags[t];const n=await getAll();for(const e of n)e.tags&&e.tags.includes(t)&&(e.tags=e.tags.filter((e=>e!==t)),await updateById(e.id,{tags:e.tags}));currentTagsConfig.activeFilters=currentTagsConfig.activeFilters.filter((e=>e!==t)),await saveTagsConfig()}function getTag(e){const t=e.toLowerCase().trim();return currentTagsConfig.tags[t]||null}function getAllTags(){return Object.values(currentTagsConfig.tags)}async function toggleTagFilter(e){const t=e.toLowerCase().trim(),n=currentTagsConfig.activeFilters.indexOf(t);n>-1?currentTagsConfig.activeFilters.splice(n,1):currentTagsConfig.activeFilters.push(t),await saveTagsConfig()}async function clearTagFilters(){currentTagsConfig.activeFilters=[],await saveTagsConfig()}function isTagFilterActive(e){const t=e.toLowerCase().trim();return currentTagsConfig.activeFilters.includes(t)}function promptMatchesFilter(e){return 0===currentTagsConfig.activeFilters.length||!(!e.tags||0===e.tags.length)&&e.tags.some((e=>currentTagsConfig.activeFilters.includes(e.toLowerCase())))}function generatePromptId(){const e=new Date,t=(e,t=2)=>String(e).padStart(t,"0");return[e.getFullYear(),t(e.getMonth()+1),t(e.getDate()),t(e.getHours()),t(e.getMinutes()),t(e.getSeconds()),t(e.getMilliseconds(),3)].join("")+t(Math.floor(1e3*performance.now()%1e3),3)+t(Math.floor(1e3*Math.random()),3)}function normalizePositions(e){return e.forEach(((e,t)=>{e.position=t+1})),e}async function getRawPrompts(){return await GM_getValue(PROMPT_STORAGE_KEY,{})}async function saveRawPrompts(e){await GM_setValue(PROMPT_STORAGE_KEY,e)}function promptsToStorage(e){const t={};return e.forEach((e=>{const{id:n,...o}=e;t[n]=o})),t}function waitFor(e,t=8e3){return new Promise(((n,o)=>{const a=document.querySelector(e);if(a)return void n(a);const r=setTimeout((()=>{i.disconnect(),o()}),t),i=new MutationObserver((()=>{const t=document.querySelector(e);t&&(clearTimeout(r),i.disconnect(),n(t))}));document.body?i.observe(document.body,{childList:!0,subtree:!0}):document.addEventListener("DOMContentLoaded",(()=>i.observe(document.body,{childList:!0,subtree:!0})))}))}const debounce=(e,t)=>{let n;return(...o)=>{clearTimeout(n),n=setTimeout((()=>e.apply(this,o)),t)}};async function getAll(){let e=await getRawPrompts();if(Array.isArray(e)){const t={};e.forEach(((e,n)=>{const o=e.id||generatePromptId()+String(n).padStart(3,"0"),{id:a,position:r,...i}=e;t[o]={...i,position:n+1}})),await saveRawPrompts(t),e=t}const t=Object.entries(e).map((([e,t])=>({id:e,...t})));return t.sort(((e,t)=>(e.position||0)-(t.position||0))),normalizePositions(t),t}async function addItem(e){const t=await getAll(),n={id:generatePromptId(),title:e.title||"",text:e.text||"",usePlaceholders:e.usePlaceholders||!1,autoExecute:e.autoExecute||!1,isFixed:e.isFixed||!1,activeFileIds:e.activeFileIds||[],tags:e.tags||[],position:0};let o=t.findIndex((e=>!e.isFixed));return-1===o&&(o=t.length),t.splice(o,0,n),normalizePositions(t),await saveRawPrompts(promptsToStorage(t)),n}async function updateById(e,t){const n=await getRawPrompts();if(Array.isArray(n))return await getAll(),updateById(e,t);if(!n[e])return!1;const o={...t};return delete o.id,delete o.position,n[e]={...n[e],...o},await saveRawPrompts(n),!0}async function removeById(e){const t=(await getAll()).filter((t=>t.id!==e));normalizePositions(t),await saveRawPrompts(promptsToStorage(t))}const themeDefinitions={default:{name:"default",light:{"--mp-bg-primary":"#ffffff","--mp-bg-secondary":"#f8f9fa","--mp-bg-tertiary":"#f1f3f5","--mp-bg-overlay":"rgba(10, 10, 10, 0.5)","--mp-bg-disabled":"#e9ecef","--mp-text-primary":"#212529","--mp-text-secondary":"#495057","--mp-text-tertiary":"#868e96","--mp-text-buttons":"#ffffff","--mp-text-disabled":"#adb5bd","--mp-border-primary":"#dee2e6","--mp-border-secondary":"#ced4da","--mp-focus-ring":"rgba(112, 113, 252, 0.4)","--mp-accent-primary":"#7071fc","--mp-accent-primary-hover":"#595ac9","--mp-success":"#28a745","--mp-warning":"#ffc107","--mp-error":"#dc3545","--mp-info":"#17a2b8","--mp-switch-knob":"#ffffff","--mp-shadow-sm":"0 1px 2px rgba(0, 0, 0, 0.04)","--mp-shadow-md":"0 4px 12px rgba(0, 0, 0, 0.1)","--mp-syntax-escape":"#ff6b6b","--mp-syntax-ignore-fence":"#868e96","--mp-syntax-ignore-content":"#adb5bd","--mp-syntax-quote-fence":"#2b8a3e","--mp-syntax-quote-content":"#40c057","--mp-syntax-var-keyword":"#15aabf","--mp-syntax-var-flag":"#0c8599","--mp-syntax-file-keyword":"#e64980","--mp-syntax-sel-fence":"#4c6ef5","--mp-syntax-sel-header":"#3b5bdb","--mp-syntax-sel-multi":"#339af0","--mp-syntax-sel-single":"#ff8787","--mp-syntax-sel-id":"#da77f2","--mp-syntax-sel-sep":"#adb5bd","--mp-syntax-free-bracket":"#fab005","--mp-syntax-free-label":"#e67700","--mp-syntax-in-bracket":"#d6336c","--mp-syntax-in-label":"#a61e4d","--mp-syntax-in-eq":"#f06595","--mp-syntax-sil-bracket":"#845ef7","--mp-syntax-sil-label":"#6741d9","--mp-syntax-sil-eq":"#b197fc","--mp-syntax-var":"#099268","--mp-syntax-context":"#868e96","--mp-syntax-caret":"var(--mp-text-primary, #000000)","--mp-syntax-selection":"color-mix(in srgb, var(--mp-accent-primary, #4c6ef5) 30%, transparent)"},dark:{"--mp-bg-primary":"#212529","--mp-bg-secondary":"#2c2c30","--mp-bg-tertiary":"#343a40","--mp-bg-overlay":"rgba(0, 0, 0, 0.7)","--mp-bg-disabled":"#3d4248","--mp-text-primary":"#f8f9fa","--mp-text-secondary":"#e9ecef","--mp-text-tertiary":"#adb5bd","--mp-text-buttons":"#ffffff","--mp-text-disabled":"#6c757d","--mp-border-primary":"#495057","--mp-border-secondary":"#868e96","--mp-focus-ring":"rgba(112, 113, 252, 0.6)","--mp-accent-primary":"#7071fc","--mp-accent-primary-hover":"#595ac9","--mp-success":"#34c759","--mp-warning":"#ff9f0a","--mp-error":"#ff4d4f","--mp-info":"#5ac8fa","--mp-switch-knob":"#ffffff","--mp-shadow-sm":"0 1px 2px rgba(0, 0, 0, 0.15)","--mp-shadow-md":"0 4px 12px rgba(0, 0, 0, 0.25)","--mp-syntax-escape":"#ff8787","--mp-syntax-ignore-fence":"#adb5bd","--mp-syntax-ignore-content":"#868e96","--mp-syntax-quote-fence":"#69db7c","--mp-syntax-quote-content":"#b2f2bb","--mp-syntax-var-keyword":"#3bc9db","--mp-syntax-var-flag":"#99e9f2","--mp-syntax-file-keyword":"#f783ac","--mp-syntax-sel-fence":"#91a7ff","--mp-syntax-sel-header":"#bac8ff","--mp-syntax-sel-multi":"#74c0fc","--mp-syntax-sel-single":"#ffc9c9","--mp-syntax-sel-id":"#e599f7","--mp-syntax-sel-sep":"#868e96","--mp-syntax-free-bracket":"#ffd43b","--mp-syntax-free-label":"#fab005","--mp-syntax-in-bracket":"#f06595","--mp-syntax-in-label":"#fcc2d7","--mp-syntax-in-eq":"#faa2c1","--mp-syntax-sil-bracket":"#b197fc","--mp-syntax-sil-label":"#d0bfff","--mp-syntax-sil-eq":"#9775fa","--mp-syntax-var":"#38d9a9","--mp-syntax-context":"#ced4da"}},dracula:{name:"Dracula",light:{"--mp-bg-primary":"#f8f8f2","--mp-bg-secondary":"#e2e2e2","--mp-bg-tertiary":"#d6d6d6","--mp-bg-overlay":"rgba(40, 42, 54, 0.5)","--mp-text-primary":"#282a36","--mp-text-secondary":"#44475a","--mp-text-tertiary":"#6272a4","--mp-border-primary":"#bd93f9","--mp-border-secondary":"#6272a4","--mp-accent-primary":"#ff79c6","--mp-accent-primary-hover":"#ff92d0","--mp-accent-edit":"#f1fa8c","--mp-accent-edit-hover":"#e6ee82","--mp-accent-close":"#ff5555","--mp-accent-close-hover":"#ff6e6e","--mp-btn-export-bg":"rgba(139, 233, 253, 0.1)","--mp-btn-export-color":"#8be9fd","--mp-btn-add-bg":"rgba(80, 250, 123, 0.1)","--mp-btn-add-color":"#50fa7b","--mp-btn-import-bg":"rgba(255, 184, 108, 0.1)","--mp-btn-import-color":"#ffb86c","--mp-switch-knob":"#ffffff","--mp-shadow-sm":"0 1px 2px rgba(98, 114, 164, 0.2)","--mp-shadow-md":"0 4px 12px rgba(98, 114, 164, 0.2)","--mp-syntax-escape":"#ff5555","--mp-syntax-ignore-fence":"#6272a4","--mp-syntax-ignore-content":"#9099b5","--mp-syntax-quote-fence":"#2e8b57","--mp-syntax-quote-content":"#3cb371","--mp-syntax-var-keyword":"#0092a8","--mp-syntax-var-flag":"#007a8c","--mp-syntax-file-keyword":"#d8479a","--mp-syntax-sel-fence":"#8b5fcf","--mp-syntax-sel-header":"#7048b5","--mp-syntax-sel-multi":"#0097a7","--mp-syntax-sel-single":"#e65100","--mp-syntax-sel-id":"#c040a0","--mp-syntax-sel-sep":"#6272a4","--mp-syntax-free-bracket":"#d4a017","--mp-syntax-free-label":"#b8860b","--mp-syntax-in-bracket":"#d63384","--mp-syntax-in-label":"#a02568","--mp-syntax-in-eq":"#e04898","--mp-syntax-sil-bracket":"#8b5fcf","--mp-syntax-sil-label":"#6a40b0","--mp-syntax-sil-eq":"#a882e8","--mp-syntax-var":"#2e8b57","--mp-syntax-context":"#6272a4"},dark:{"--mp-bg-primary":"#282a36","--mp-bg-secondary":"#44475a","--mp-bg-tertiary":"#6272a4","--mp-bg-overlay":"rgba(0, 0, 0, 0.7)","--mp-text-primary":"#f8f8f2","--mp-text-secondary":"#bfbfbf","--mp-text-tertiary":"#6272a4","--mp-border-primary":"#6272a4","--mp-border-secondary":"#44475a","--mp-accent-primary":"#bd93f9","--mp-accent-primary-hover":"#caa9fa","--mp-accent-edit":"#f1fa8c","--mp-accent-edit-hover":"#ffffa5","--mp-accent-close":"#ff5555","--mp-accent-close-hover":"#ff6e6e","--mp-btn-export-bg":"rgba(139, 233, 253, 0.15)","--mp-btn-export-color":"#8be9fd","--mp-btn-add-bg":"rgba(80, 250, 123, 0.15)","--mp-btn-add-color":"#50fa7b","--mp-btn-import-bg":"rgba(255, 184, 108, 0.15)","--mp-btn-import-color":"#ffb86c","--mp-switch-knob":"#ffffff","--mp-shadow-sm":"0 1px 2px rgba(0, 0, 0, 0.3)","--mp-shadow-md":"0 4px 12px rgba(0, 0, 0, 0.4)","--mp-syntax-escape":"#ff5555","--mp-syntax-ignore-fence":"#6272a4","--mp-syntax-ignore-content":"#44475a","--mp-syntax-quote-fence":"#50fa7b","--mp-syntax-quote-content":"#8afc9f","--mp-syntax-var-keyword":"#8be9fd","--mp-syntax-var-flag":"#a6effd","--mp-syntax-file-keyword":"#ff79c6","--mp-syntax-sel-fence":"#bd93f9","--mp-syntax-sel-header":"#caa9fa","--mp-syntax-sel-multi":"#8be9fd","--mp-syntax-sel-single":"#ffb86c","--mp-syntax-sel-id":"#ff79c6","--mp-syntax-sel-sep":"#6272a4","--mp-syntax-free-bracket":"#f1fa8c","--mp-syntax-free-label":"#e6ee82","--mp-syntax-in-bracket":"#ff79c6","--mp-syntax-in-label":"#ff92d0","--mp-syntax-in-eq":"#ffa6da","--mp-syntax-sil-bracket":"#bd93f9","--mp-syntax-sil-label":"#d0b0fa","--mp-syntax-sil-eq":"#a577f5","--mp-syntax-var":"#50fa7b","--mp-syntax-context":"#6272a4"}},coffee:{name:"Coffee",light:{"--mp-bg-primary":"#fffbf0","--mp-bg-secondary":"#f3e5d0","--mp-bg-tertiary":"#e6d0b3","--mp-bg-overlay":"rgba(67, 40, 24, 0.3)","--mp-text-primary":"#432818","--mp-text-secondary":"#6f4e37","--mp-text-tertiary":"#9c6644","--mp-border-primary":"#d4a373","--mp-border-secondary":"#e6ccb2","--mp-accent-primary":"#bb9457","--mp-accent-primary-hover":"#997b46","--mp-accent-edit":"#e9c46a","--mp-accent-edit-hover":"#deb045","--mp-accent-close":"#bc4749","--mp-accent-close-hover":"#a3393b","--mp-btn-export-bg":"rgba(69, 123, 157, 0.1)","--mp-btn-export-color":"#457b9d","--mp-btn-add-bg":"rgba(106, 153, 78, 0.1)","--mp-btn-add-color":"#6a994e","--mp-btn-import-bg":"rgba(231, 111, 81, 0.1)","--mp-btn-import-color":"#e76f51","--mp-switch-knob":"#ffffff","--mp-shadow-sm":"0 1px 2px rgba(67, 40, 24, 0.1)","--mp-shadow-md":"0 4px 12px rgba(67, 40, 24, 0.15)","--mp-syntax-escape":"#bc4749","--mp-syntax-ignore-fence":"#9c6644","--mp-syntax-ignore-content":"#b8977a","--mp-syntax-quote-fence":"#386641","--mp-syntax-quote-content":"#6a994e","--mp-syntax-var-keyword":"#457b9d","--mp-syntax-var-flag":"#2a6f97","--mp-syntax-file-keyword":"#c44536","--mp-syntax-sel-fence":"#8a5a44","--mp-syntax-sel-header":"#6f4e37","--mp-syntax-sel-multi":"#457b9d","--mp-syntax-sel-single":"#e76f51","--mp-syntax-sel-id":"#9c6644","--mp-syntax-sel-sep":"#b8977a","--mp-syntax-free-bracket":"#c9a227","--mp-syntax-free-label":"#a68b1f","--mp-syntax-in-bracket":"#bc4749","--mp-syntax-in-label":"#9b2226","--mp-syntax-in-eq":"#d6595b","--mp-syntax-sil-bracket":"#8a5a44","--mp-syntax-sil-label":"#6f4e37","--mp-syntax-sil-eq":"#a77357","--mp-syntax-var":"#386641","--mp-syntax-context":"#9c6644"},dark:{"--mp-bg-primary":"#1a1412","--mp-bg-secondary":"#2b211e","--mp-bg-tertiary":"#3e312b","--mp-bg-overlay":"rgba(0, 0, 0, 0.8)","--mp-text-primary":"#ede0d4","--mp-text-secondary":"#ddb892","--mp-text-tertiary":"#b08968","--mp-border-primary":"#7f5539","--mp-border-secondary":"#5c3d2e","--mp-accent-primary":"#d4a373","--mp-accent-primary-hover":"#e6ccb2","--mp-accent-edit":"#f4a261","--mp-accent-edit-hover":"#fbc492","--mp-accent-close":"#e76f51","--mp-accent-close-hover":"#ff8a6e","--mp-btn-export-bg":"rgba(168, 218, 220, 0.15)","--mp-btn-export-color":"#a8dadc","--mp-btn-add-bg":"rgba(144, 190, 109, 0.15)","--mp-btn-add-color":"#90be6d","--mp-btn-import-bg":"rgba(244, 162, 97, 0.15)","--mp-btn-import-color":"#f4a261","--mp-switch-knob":"#ffffff","--mp-shadow-sm":"0 1px 2px rgba(0, 0, 0, 0.5)","--mp-shadow-md":"0 4px 12px rgba(0, 0, 0, 0.6)","--mp-syntax-escape":"#e76f51","--mp-syntax-ignore-fence":"#b08968","--mp-syntax-ignore-content":"#7f5539","--mp-syntax-quote-fence":"#90be6d","--mp-syntax-quote-content":"#a8d08d","--mp-syntax-var-keyword":"#a8dadc","--mp-syntax-var-flag":"#c4e7e8","--mp-syntax-file-keyword":"#f4a261","--mp-syntax-sel-fence":"#d4a373","--mp-syntax-sel-header":"#e6ccb2","--mp-syntax-sel-multi":"#a8dadc","--mp-syntax-sel-single":"#f4a261","--mp-syntax-sel-id":"#ddb892","--mp-syntax-sel-sep":"#7f5539","--mp-syntax-free-bracket":"#e9c46a","--mp-syntax-free-label":"#d4a647","--mp-syntax-in-bracket":"#e76f51","--mp-syntax-in-label":"#f4a261","--mp-syntax-in-eq":"#f5c28e","--mp-syntax-sil-bracket":"#c99a65","--mp-syntax-sil-label":"#d4a373","--mp-syntax-sil-eq":"#a67c52","--mp-syntax-var":"#90be6d","--mp-syntax-context":"#b08968"}},cyberpunk:{name:"Cyberpunk",light:{"--mp-bg-primary":"#f0f0f5","--mp-bg-secondary":"#e2e2ea","--mp-bg-tertiary":"#d1d1db","--mp-bg-overlay":"rgba(10, 10, 35, 0.4)","--mp-text-primary":"#050505","--mp-text-secondary":"#2e2e38","--mp-text-tertiary":"#5a5a66","--mp-border-primary":"#b8b8c2","--mp-border-secondary":"#d1d1db","--mp-accent-primary":"#b000b0","--mp-accent-primary-hover":"#8a008a","--mp-accent-edit":"#e6b800","--mp-accent-edit-hover":"#c29b00","--mp-accent-close":"#d90429","--mp-accent-close-hover":"#a1031f","--mp-btn-export-bg":"rgba(0, 168, 181, 0.1)","--mp-btn-export-color":"#0097a7","--mp-btn-add-bg":"rgba(0, 184, 92, 0.1)","--mp-btn-add-color":"#008f47","--mp-btn-import-bg":"rgba(245, 124, 0, 0.1)","--mp-btn-import-color":"#ef6c00","--mp-switch-knob":"#ffffff","--mp-shadow-sm":"0 1px 2px rgba(0, 0, 0, 0.15)","--mp-shadow-md":"0 4px 12px rgba(0, 0, 0, 0.2)","--mp-syntax-escape":"#d90429","--mp-syntax-ignore-fence":"#5a5a66","--mp-syntax-ignore-content":"#8a8a96","--mp-syntax-quote-fence":"#008f47","--mp-syntax-quote-content":"#00a854","--mp-syntax-var-keyword":"#0097a7","--mp-syntax-var-flag":"#00838f","--mp-syntax-file-keyword":"#b000b0","--mp-syntax-sel-fence":"#7b00a0","--mp-syntax-sel-header":"#5c0078","--mp-syntax-sel-multi":"#0097a7","--mp-syntax-sel-single":"#ef6c00","--mp-syntax-sel-id":"#9c0090","--mp-syntax-sel-sep":"#7a7a86","--mp-syntax-free-bracket":"#b89600","--mp-syntax-free-label":"#9a7d00","--mp-syntax-in-bracket":"#d90429","--mp-syntax-in-label":"#a50320","--mp-syntax-in-eq":"#e83553","--mp-syntax-sil-bracket":"#7b00a0","--mp-syntax-sil-label":"#5c0078","--mp-syntax-sil-eq":"#9a30c0","--mp-syntax-var":"#008f47","--mp-syntax-context":"#5a5a66"},dark:{"--mp-bg-primary":"#09090b","--mp-bg-secondary":"#121217","--mp-bg-tertiary":"#1c1c24","--mp-bg-overlay":"rgba(0, 0, 0, 0.85)","--mp-text-primary":"#ffffff","--mp-text-secondary":"#e0e0e0","--mp-text-tertiary":"#a1a1aa","--mp-border-primary":"#272730","--mp-border-secondary":"#3f3f46","--mp-accent-primary":"#f700ff","--mp-accent-primary-hover":"#d900df","--mp-accent-edit":"#fcee0a","--mp-accent-edit-hover":"#e6d805","--mp-accent-close":"#ff2a6d","--mp-accent-close-hover":"#e01655","--mp-btn-export-bg":"rgba(0, 243, 255, 0.15)","--mp-btn-export-color":"#00f3ff","--mp-btn-add-bg":"rgba(0, 255, 65, 0.15)","--mp-btn-add-color":"#00ff41","--mp-btn-import-bg":"rgba(255, 153, 0, 0.15)","--mp-btn-import-color":"#ff9900","--mp-switch-knob":"#ffffff","--mp-shadow-sm":"0 1px 4px rgba(0, 243, 255, 0.1)","--mp-shadow-md":"0 4px 12px rgba(247, 0, 255, 0.15)","--mp-syntax-escape":"#ff2a6d","--mp-syntax-ignore-fence":"#a1a1aa","--mp-syntax-ignore-content":"#52525b","--mp-syntax-quote-fence":"#00ff41","--mp-syntax-quote-content":"#66ff85","--mp-syntax-var-keyword":"#00f3ff","--mp-syntax-var-flag":"#66f8ff","--mp-syntax-file-keyword":"#f700ff","--mp-syntax-sel-fence":"#bf00ff","--mp-syntax-sel-header":"#d966ff","--mp-syntax-sel-multi":"#00f3ff","--mp-syntax-sel-single":"#ff9900","--mp-syntax-sel-id":"#f700ff","--mp-syntax-sel-sep":"#52525b","--mp-syntax-free-bracket":"#fcee0a","--mp-syntax-free-label":"#fdf45c","--mp-syntax-in-bracket":"#ff2a6d","--mp-syntax-in-label":"#ff6699","--mp-syntax-in-eq":"#ff4d88","--mp-syntax-sil-bracket":"#bf00ff","--mp-syntax-sil-label":"#d147ff","--mp-syntax-sil-eq":"#9900cc","--mp-syntax-var":"#00ff41","--mp-syntax-context":"#a1a1aa"}},"full-dark":{name:"Full Dark",light:{"--mp-bg-primary":"#ffffff","--mp-bg-secondary":"#f5f5f5","--mp-bg-tertiary":"#e6e6e6","--mp-bg-overlay":"rgba(0, 0, 0, 0.2)","--mp-text-primary":"#000000","--mp-text-secondary":"#404040","--mp-text-tertiary":"#737373","--mp-text-buttons":"#ffffff","--mp-border-primary":"#000000","--mp-border-secondary":"#cccccc","--mp-accent-primary":"#000000","--mp-accent-primary-hover":"#333333","--mp-accent-edit":"#eab308","--mp-accent-edit-hover":"#ca8a04","--mp-accent-close":"#dc2626","--mp-accent-close-hover":"#b91c1c","--mp-btn-export-bg":"rgba(37, 99, 235, 0.1)","--mp-btn-export-color":"#2563eb","--mp-btn-add-bg":"rgba(5, 150, 105, 0.1)","--mp-btn-add-color":"#059669","--mp-btn-import-bg":"rgba(234, 88, 12, 0.1)","--mp-btn-import-color":"#ea580c","--mp-switch-knob":"#ffffff","--mp-shadow-sm":"0 1px 2px rgba(0, 0, 0, 0.1)","--mp-shadow-md":"0 4px 12px rgba(0, 0, 0, 0.15)","--mp-syntax-escape":"#dc2626","--mp-syntax-ignore-fence":"#737373","--mp-syntax-ignore-content":"#a3a3a3","--mp-syntax-quote-fence":"#059669","--mp-syntax-quote-content":"#10b981","--mp-syntax-var-keyword":"#2563eb","--mp-syntax-var-flag":"#1d4ed8","--mp-syntax-file-keyword":"#ea580c","--mp-syntax-sel-fence":"#7c3aed","--mp-syntax-sel-header":"#6d28d9","--mp-syntax-sel-multi":"#2563eb","--mp-syntax-sel-single":"#ea580c","--mp-syntax-sel-id":"#db2777","--mp-syntax-sel-sep":"#a3a3a3","--mp-syntax-free-bracket":"#ca8a04","--mp-syntax-free-label":"#a16207","--mp-syntax-in-bracket":"#dc2626","--mp-syntax-in-label":"#b91c1c","--mp-syntax-in-eq":"#e11d48","--mp-syntax-sil-bracket":"#7c3aed","--mp-syntax-sil-label":"#6d28d9","--mp-syntax-sil-eq":"#8b5cf6","--mp-syntax-var":"#059669","--mp-syntax-context":"#737373"},dark:{"--mp-bg-primary":"#000000","--mp-bg-secondary":"#0a0a0a","--mp-bg-tertiary":"#141414","--mp-bg-overlay":"rgba(255, 255, 255, 0.05)","--mp-text-primary":"#ffffff","--mp-text-secondary":"#e5e5e5","--mp-text-tertiary":"#a3a3a3","--mp-text-buttons":"#000000","--mp-border-primary":"#333333","--mp-border-secondary":"#262626","--mp-accent-primary":"#ffffff","--mp-accent-primary-hover":"#d4d4d4","--mp-accent-edit":"#facc15","--mp-accent-edit-hover":"#fde047","--mp-accent-close":"#f87171","--mp-accent-close-hover":"#fca5a5","--mp-btn-export-bg":"rgba(59, 130, 246, 0.2)","--mp-btn-export-color":"#3b82f6","--mp-btn-add-bg":"rgba(34, 197, 94, 0.2)","--mp-btn-add-color":"#22c55e","--mp-btn-import-bg":"rgba(249, 115, 22, 0.2)","--mp-btn-import-color":"#f97316","--mp-switch-knob":"#000000","--mp-shadow-sm":"none","--mp-shadow-md":"0 0 0 1px #333333","--mp-syntax-escape":"#f87171","--mp-syntax-ignore-fence":"#a3a3a3","--mp-syntax-ignore-content":"#525252","--mp-syntax-quote-fence":"#22c55e","--mp-syntax-quote-content":"#4ade80","--mp-syntax-var-keyword":"#3b82f6","--mp-syntax-var-flag":"#60a5fa","--mp-syntax-file-keyword":"#f97316","--mp-syntax-sel-fence":"#a855f7","--mp-syntax-sel-header":"#c084fc","--mp-syntax-sel-multi":"#3b82f6","--mp-syntax-sel-single":"#f97316","--mp-syntax-sel-id":"#ec4899","--mp-syntax-sel-sep":"#525252","--mp-syntax-free-bracket":"#facc15","--mp-syntax-free-label":"#fde047","--mp-syntax-in-bracket":"#f87171","--mp-syntax-in-label":"#fca5a5","--mp-syntax-in-eq":"#fb7185","--mp-syntax-sil-bracket":"#a855f7","--mp-syntax-sil-label":"#c084fc","--mp-syntax-sil-eq":"#8b5cf6","--mp-syntax-var":"#22c55e","--mp-syntax-context":"#a3a3a3"}}};function applyTheme(e){if(!e)return;const t=importedThemes[e.themeId]||themeDefinitions[e.themeId]||themeDefinitions.default;if(Object.assign(ICONS,DEFAULT_ICONS),t.icons){const e={};Object.keys(t.icons).forEach((n=>{DEFAULT_ICONS.hasOwnProperty(n)&&(e[n]=t.icons[n])})),Object.assign(ICONS,e)}let n=e.mode;"auto"===n&&(n=mediaQueryList.matches?"dark":"light");const o=t[n]||themeDefinitions.default[n],a=[],r=e=>{Array.isArray(e)?e.forEach((e=>a.push(e))):e&&a.push(e)};t["@import"]&&r(t["@import"]),Object.keys(t).forEach((e=>{e.startsWith("@import")&&"@import"!==e&&r(t[e])})),Object.entries(o).forEach((([e,t])=>{e.startsWith("@import")&&r(t)}));const i=new Set;a.forEach((e=>{"string"==typeof e?i.has(e)||(FontLoaderBypass.load(e),i.add(e)):"object"==typeof e&&e.url&&(i.has(e.url)||(FontLoaderBypass.load(e.url,e.name,e.peso),i.add(e.url)))}));const s=document.getElementById("mp-theme-override");s&&s.remove();const l=document.createElement("style");l.id="mp-theme-override";let c=":root {";Object.entries(t).forEach((([e,t])=>{e.startsWith("@import")||"object"==typeof t||(c+=`${e}: ${t} !important;`)})),Object.entries(o).forEach((([e,t])=>{e.startsWith("@import")||"object"==typeof t||(c+=`${e}: ${t} !important;`)})),c+="}",setSafeInnerHTML(l,c),document.head.appendChild(l),document.documentElement.setAttribute("data-mp-theme",n)}async function loadThemeConfig(){const e=await GM_getValue(THEME_STORAGE_KEY);if(e)try{currentThemeConfig=JSON.parse(e)}catch(e){console.error(e)}applyTheme(currentThemeConfig)}async function saveThemeConfig(e){currentThemeConfig={...currentThemeConfig,...e},await GM_setValue(THEME_STORAGE_KEY,JSON.stringify(currentThemeConfig)),applyTheme(currentThemeConfig)}async function loadImportedThemes(){const e=await GM_getValue(IMPORTED_THEMES_KEY,"{}");try{importedThemes=JSON.parse(e)}catch(e){console.error(`${getTranslation("errorLoadingThemes")} `,e),importedThemes={}}}async function saveImportedThemesData(){await GM_setValue(IMPORTED_THEMES_KEY,JSON.stringify(importedThemes))}async function importThemesFromFile(e,t){if(!e)return;const n=new FileReader;n.onload=async e=>{try{const n=JSON.parse(e.target.result);let o=0;for(const[e,t]of Object.entries(n))t.name&&(t.light||t.dark)&&"object"==typeof t.light&&"object"==typeof t.dark&&(importedThemes[e]=t,o++);o>0?(await saveImportedThemesData(),alert(getTranslation("successThemeImport",{count:o})),t&&t()):alert(getTranslation("noValidThemesFound"))}catch(e){console.error(e),alert(getTranslation("errorReadingJSON"))}},n.readAsText(e)}async function deleteImportedTheme(e,t){const n=importedThemes[e]?.name||e;if(confirm(getTranslation("confirmDeleteTheme",{name:n}))){const n=importedThemes[e];if(n){const e=new Set,t=n=>{n&&(Array.isArray(n)?n.forEach((e=>t(e))):"object"==typeof n&&n.url?e.add(n.url):"string"==typeof n&&e.add(n))};n["@import"]&&t(n["@import"]),Object.keys(n).forEach((e=>{e.startsWith("@import")&&"@import"!==e&&t(n[e])})),["light","dark"].forEach((e=>{n[e]&&Object.entries(n[e]).forEach((([e,n])=>{e.startsWith("@import")&&t(n)}))})),"undefined"!=typeof FontLoaderBypass&&FontLoaderBypass.clear&&e.forEach((e=>{FontLoaderBypass.clear(e)}))}delete importedThemes[e],currentThemeConfig.themeId===e&&(currentThemeConfig.themeId="default",await saveThemeConfig(currentThemeConfig)),await saveImportedThemesData(),t&&t()}}function injectGlobalStyles(){const e="my-prompt-styles";if(document.getElementById(e))return;const t=GM_getResourceText("CSS"),n=document.createElement("style");n.id=e,setSafeInnerHTML(n,t),document.head.appendChild(n)}function createCustomTooltip(e,t,n="top"){let o=null,a=null;const r=`tooltip-${Math.random().toString(36).substr(2,9)}`;e.setAttribute("aria-describedby",r),e.setAttribute("tabindex","0");const i="string"==typeof t?{text:t}:t,s=i.actions&&i.actions.length>0,l=()=>{if(clearTimeout(a),o)return;o=document.createElement("div"),o.className=`mp-tooltip mp-tooltip-${n}`,s&&o.classList.add("mp-tooltip-interactive"),o.setAttribute("role","tooltip"),o.setAttribute("id",r),o.style.visibility="hidden";const t=document.createElement("div");if(t.className="mp-tooltip-content",i.text){const e=document.createElement("div");e.className="mp-tooltip-text",e.textContent=i.text,t.appendChild(e)}if(s){const e=document.createElement("div");e.className=`mp-tooltip-actions mp-tooltip-actions-${i.layout||"row"}`,i.actions.forEach((t=>{const n=document.createElement("button");if(n.className="mp-tooltip-btn",t.icon){const e=document.createElement("span");e.className="mp-tooltip-btn-icon","string"==typeof t.icon?setSafeInnerHTML(e,t.icon):t.icon instanceof HTMLElement&&e.appendChild(t.icon),n.appendChild(e)}if(t.label){const e=document.createElement("span");e.textContent=t.label,n.appendChild(e)}t.style&&Object.assign(n.style,t.style),n.addEventListener("click",(e=>{e.stopPropagation(),"function"==typeof t.action&&t.action(),c(!0)})),e.appendChild(n)})),t.appendChild(e)}const l=document.createElement("div");l.className="mp-tooltip-arrow",o.appendChild(t),o.appendChild(l),document.body.appendChild(o),o.offsetWidth;const p=e.getBoundingClientRect(),d=o.offsetWidth,m=o.offsetHeight;let u,g;"bottom"===n?u=p.bottom+8+window.scrollY:"top"===n?u=p.top-m-8+window.scrollY:"left"===n?(u=p.top+p.height/2-m/2+window.scrollY,g=p.left-d-8):"right"===n&&(u=p.top+p.height/2-m/2+window.scrollY,g=p.right+8),"top"!==n&&"bottom"!==n||(g=p.left+p.width/2-d/2);g<10?g=10:g+d>window.innerWidth-10&&(g=window.innerWidth-d-10),u<window.scrollY&&(u=10+window.scrollY),o.style.left=`${Math.round(g)}px`,o.style.top=`${Math.round(u)}px`,requestAnimationFrame((()=>{o&&(o.style.visibility="visible",o.classList.add("visible"))}))},c=(e=!1)=>{if(!o)return;const t=o;o=null,t.classList.remove("visible"),setTimeout((()=>{document.body.contains(t)&&document.body.removeChild(t)}),150)};e.addEventListener("mouseenter",l),e.addEventListener("mouseleave",(()=>{s?a=setTimeout(c,100):c()})),s&&e.addEventListener("mouseenter",(()=>{setTimeout((()=>{o&&(o.addEventListener("mouseenter",(()=>clearTimeout(a))),o.addEventListener("mouseleave",c))}),10)})),e.addEventListener("focus",l),e.addEventListener("blur",c),e.addEventListener("mousedown",(()=>c(!0)))}const ICONS={cloudFile:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill-rule="evenodd" clip-rule="evenodd" d="M6.913 7.029C7.751 5.772 9.626 4 12.5 4c2.13 0 3.65 1.08 4.607 2.33a7.1 7.1 0 0 1 1.285 2.745c.785.127 1.695.43 2.505 1.014C22.092 10.948 23 12.373 23 14.5s-.908 3.551-2.103 4.412C19.753 19.735 18.41 20 17.5 20H13v-6.586l1.293 1.293a1 1 0 0 0 1.414-1.414l-3-3a1 1 0 0 0-1.414 0l-3 3a1 1 0 1 0 1.414 1.414L11 13.414V20H7.5c-1.077 0-2.67-.315-4.022-1.288C2.075 17.701 1 16.026 1 13.5s1.075-4.201 2.478-5.212c1.124-.809 2.413-1.163 3.435-1.26z" fill="currentColor"/></svg>',monitor:'<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="2" y="3" width="20" height="14" rx="2" ry="2"></rect><line x1="8" y1="21" x2="16" y2="21"></line><line x1="12" y1="17" x2="12" y2="21"></line></svg>',globo:'<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><line x1="2" y1="12" x2="22" y2="12"></line><path d="M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"></path></svg>',plus:'<svg class="mp-add-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"><line x1="12" y1="5" x2="12" y2="19"></line><line x1="5" y1="12" x2="19" y2="12"></line></svg>',sol:'<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="5"></circle><line x1="12" y1="1" x2="12" y2="3"></line><line x1="12" y1="21" x2="12" y2="23"></line><line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line><line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line><line x1="1" y1="12" x2="3" y2="12"></line><line x1="21" y1="12" x2="23" y2="12"></line><line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line><line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line></svg>',lua:'<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path></svg>',close:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024"><path fill="currentColor" d="M195.2 195.2a64 64 0 0 1 90.5 0L512 421.5l226.3-226.3a64 64 0 0 1 90.5 90.5L602.5 512l226.3 226.3a64 64 0 0 1-90.5 90.5L512 602.5 285.7 828.8a64 64 0 0 1-90.5-90.5L421.5 512 195.2 285.7a64 64 0 0 1 0-90.5"/></svg>',file:'<svg class="mp-file-icon-gen" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 28"><path d="m16.5 0 7 7v15.6c0 2.25 0 3.38-.57 4.16a3 3 0 0 1-.67.67c-.79.57-1.91.57-4.16.57H5.9c-2.25 0-3.37 0-4.16-.57a3 3 0 0 1-.67-.67C.5 25.97.5 24.85.5 22.6V5.4c0-2.25 0-3.38.57-4.16a3 3 0 0 1 .67-.67C2.52 0 3.65 0 5.9 0z" fill="url(#a)"/><path d="m16.5 0 7 7h-3.8c-1.12 0-1.68 0-2.1-.22a2 2 0 0 1-.88-.87c-.22-.43-.22-.99-.22-2.11z" fill="var(--mp-switch-knob)" fill-opacity=".55"/><path d="M6 11.78c0-.43.35-.78.78-.78h10.44a.78.78 0 1 1 0 1.57H6.78a.8.8 0 0 1-.78-.79m0 4c0-.43.35-.78.78-.78h10.44a.78.78 0 1 1 0 1.57H6.78a.8.8 0 0 1-.78-.79m.11 4.04c0-.44.35-.79.79-.79h6.32a.78.78 0 1 1 0 1.57H6.9a.8.8 0 0 1-.79-.78" fill="var(--mp-switch-knob)"/><defs><linearGradient id="a" x1="1.5" y1="-1" x2="23.5" y2="28" gradientUnits="userSpaceOnUse"><stop stop-color="var(--mp-accent-primary)"/><stop offset="1" stop-color="var(--mp-accent-primary-hover)"/></linearGradient></defs></svg>',expand:'<svg viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" d="M15 3h6v6M9 21H3v-6M21 3l-7 7M3 21l7-7"/></svg>',collapse:'<svg viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" d="M8 3v3a2 2 0 0 1-2 2H3m18 0h-3a2 2 0 0 1-2-2V3m0 18v-3a2 2 0 0 1 2-2h3M3 16h3a2 2 0 0 1 2 2v3"/></svg>',folder:'<svg style="width:16px;height:16px;margin-right:8px;vertical-align:text-bottom;" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z"></path></svg>',chevron:'<svg class="mp-acc-arrow" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path stroke-linecap="round" stroke-linejoin="round" d="M6 9l6 6 6-6"/></svg>',chevronR:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="m7 7 5 5-5 5m6-10 5 5-5 5"/></svg>',edit:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 416 432"><path fill="currentColor" d="m366 237 45 35q7 6 3 14l-43 74q-4 8-13 4l-53-21q-18 13-36 21l-8 56q-1 9-11 9h-85q-9 0-11-9l-8-56q-19-8-36-21l-53 21q-9 3-13-4L1 286q-4-8 3-14l45-35q-1-12-1-21t1-21L4 160q-7-6-3-14l43-74q5-8 13-4l53 21q18-13 36-21l8-56q2-9 11-9h85q10 0 11 9l8 56q19 8 36 21l53-21q9-3 13 4l43 74q4 8-3 14l-45 35q2 12 2 21t-2 21m-158.5 54q30.5 0 52.5-22t22-53-22-53-52.5-22-52.5 22-22 53 22 53 52.5 22"/></svg>',delete:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 304 384"><path fill="currentColor" d="M21 341V85h256v256q0 18-12.5 30.5T235 384H64q-18 0-30.5-12.5T21 341M299 21v43H0V21h75L96 0h107l21 21z"/></svg>',export:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M21 14a1 1 0 0 0-1 1v4a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1v-4a1 1 0 0 0-2 0v4a3 3 0 0 0 3 3h14a3 3 0 0 0 3-3v-4a1 1 0 0 0-1-1m-9.71 1.71a1 1 0 0 0 .33.21 1 1 0 0 0 .76 0 1 1 0 0 0 .33-.21l4-4a1 1 0 0 0-1.42-1.42L13 12.59V3a1 1 0 0 0-2 0v9.59l-2.29-2.3a1 1 0 1 0-1.42 1.42Z"/></svg>',add:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 14 14"><path fill="currentColor" fill-rule="evenodd" d="M8 1a1 1 0 0 0-2 0v5H1a1 1 0 0 0 0 2h5v5a1 1 0 1 0 2 0V8h5a1 1 0 1 0 0-2H8z" clip-rule="evenodd"/></svg>',import:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M8.71 7.71 11 5.41V15a1 1 0 0 0 2 0V5.41l2.29 2.3a1 1 0 0 0 1.42 0 1 1 0 0 0 0-1.42l-4-4a1 1 0 0 0-.33-.21 1 1 0 0 0-.76 0 1 1 0 0 0-.33.21l-4 4a1 1 0 1 0 1.42 1.42M21 14a1 1 0 0 0-1 1v4a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1v-4a1 1 0 0 0-2 0v4a3 3 0 0 0 3 3h14a3 3 0 0 0 3-3v-4a1 1 0 0 0-1-1"/></svg>',info:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"><path d="M10 2a8 8 0 1 0 0 16 8 8 0 0 0 0-16Zm0 14a6 6 0 1 1 0-12 6 6 0 0 1 0 12ZM9 5h2v2H9V5Zm0 4h2v6H9V9Z"/></svg>',shop:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2.0" d="m21.05 11.5.28-1.66c.18-1.09.27-1.63-.02-1.98s-.82-.36-1.9-.36H4.6c-1.07 0-1.61 0-1.9.36-.3.35-.2.9-.02 1.98l1.2 7.18c.4 2.38.6 3.57 1.42 4.28.81.7 1.98.7 4.33.7H12m2-4h8m-4 4v-8m-.5-6.5a5.5 5.5 0 1 0-11 0" color="currentColor"/></svg>',cart:'<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="9" cy="21" r="1"></circle><circle cx="20" cy="21" r="1"></circle><path d="M1 1h4l2.68 13.39a2 2 0 0 0 2 1.61h9.72a2 2 0 0 0 2-1.61L23 6H6"></path></svg>',drag:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M278.6 9.4a32 32 0 0 0-45.3 0l-64 64A32 32 0 0 0 192 128h32v96h-96v-32a32.1 32.1 0 0 0-54.7-22.7l-64 64a32 32 0 0 0 0 45.3l64 64A32 32 0 0 0 128 320v-32h96v96h-32a32.1 32.1 0 0 0-22.7 54.7l64 64a32 32 0 0 0 45.3 0l64-64A32 32 0 0 0 320 384h-32v-96h96v32a32.1 32.1 0 0 0 54.7 22.7l64-64a32 32 0 0 0 0-45.3l-64-64A32 32 0 0 0 384 192v32h-96v-96h32a32.1 32.1 0 0 0 22.7-54.7l-64-64z"/></svg>',pin:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="12" y1="17" x2="12" y2="22"></line><path d="M5 17h14v-1.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V6h1a2 2 0 0 0 0-4H8a2 2 0 0 0 0 4h1v4.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24Z"></path></svg>',save:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"><path fill="currentColor" d="M11.5 12A2.5 2.5 0 0 1 9 9.5V3H7.5A4.5 4.5 0 0 0 3 7.5v17a4.5 4.5 0 0 0 4 4.47V18.5A2.5 2.5 0 0 1 9.5 16h13a2.5 2.5 0 0 1 2.5 2.5v10.47a4.5 4.5 0 0 0 4-4.47V10.45a4.5 4.5 0 0 0-1.32-3.18l-2.95-2.95A4.5 4.5 0 0 0 22 3.02V9.5a2.5 2.5 0 0 1-2.5 2.5zM20 3h-9v6.5a.5.5 0 0 0 .5.5h8a.5.5 0 0 0 .5-.5zm3 26H9V18.5a.5.5 0 0 1 .5-.5h13a.5.5 0 0 1 .5.5z"/></svg>',restore:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" fill-rule="evenodd" d="M256 448A192 192 0 0 1 65.5 279.8l42.3-5.3a149.4 149.4 0 1 0 25.6-103.8h80v42.6H64V64h42.7v71.3A192 192 0 1 1 256 448" clip-rule="evenodd"/></svg>',magic:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="m12 3-1.912 5.813a2 2 0 0 1-1.275 1.275L3 12l5.813 1.912a2 2 0 0 1 1.275 1.275L12 21l1.912-5.813a2 2 0 0 1 1.275-1.275L21 12l-5.813-1.912a2 2 0 0 1-1.275-1.275L12 3Z"/></svg>',loading:'<svg viewBox="0 0 50 50" style="width:100%;height:100%;display:block;"><circle cx="25" cy="25" r="20" fill="none" stroke="currentColor" stroke-width="6" stroke-linecap="round" stroke-dasharray="80" stroke-dashoffset="20"><animateTransform attributeName="transform" type="rotate" from="0 25 25" to="360 25 25" dur="0.8s" repeatCount="indefinite" /></circle></svg>',prompts:'<svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path fill="currentColor" d="M9.812 1.238a1 1 0 0 1 .73 1.11l-.023.115-3.106 11.591a1 1 0 0 1-1.956-.403l.024-.114L8.587 1.946a1 1 0 0 1 1.225-.708M4.707 4.293a1 1 0 0 1 0 1.414L2.414 8l2.293 2.293a1 1 0 1 1-1.414 1.414l-3-3a1 1 0 0 1 0-1.414l3-3a1 1 0 0 1 1.414 0m6.586 0a1 1 0 0 1 1.32-.083l.094.083 3 3a1 1 0 0 1 .083 1.32l-.083.094-3 3a1 1 0 0 1-1.497-1.32l.083-.094L13.586 8l-2.293-2.293a1 1 0 0 1 0-1.414"/></svg>',navUp:'<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="none"><path fill="currentColor" d="M9.286 5.65a1.01 1.01 0 011.427 0l5.785 5.785a1.009 1.009 0 01-1.427 1.427L10 7.79l-5.072 5.072A1.008 1.008 0 113.5 11.435z"></path></svg>',navMenu:'<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="none"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5.12 5.546h9.76M5.12 9.993h9.76M5.12 14.44h9.76"></path></svg>',navDown:'<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="none" style="transform: rotate(180deg);"><path fill="currentColor" d="M9.286 5.65a1.01 1.01 0 011.427 0l5.785 5.785a1.009 1.009 0 01-1.427 1.427L10 7.79l-5.072 5.072A1.008 1.008 0 113.5 11.435z"></path></svg>',expImp:'<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24"><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="m21 16-4 4-4-4m4 4V4M3 8l4-4 4 4M7 4v16"/></svg>',ai:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="6 6 20 20"><path fill="currentColor" d="M17 11h3v10h-3v2h8v-2h-3V11h3V9h-8zm-4-2H9a2 2 0 0 0-2 2v12h2v-5h4v5h2V11a2 2 0 0 0-2-2m-4 7v-5h4v5z"/></svg>',user:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><g fill="none"><path d="M12.6 23.26h-.02l-.07.03h-.03l-.07-.03h-.03v.01l-.02.43v.02l.02.02.1.07h.02l.11-.07.01-.02v-.02l-.01-.42q0-.02-.02-.02m.27-.11-.19.09-.01.01v.01l.02.43v.02l.2.1.04-.01v-.02l-.03-.61q0-.02-.02-.02m-.72 0h-.02l-.01.02-.03.61.01.03h.02l.2-.1.01-.02.02-.43v-.01l-.01-.01z"/><path fill="currentColor" d="M12 13c2.4 0 4.58.7 6.18 1.67q1.21.75 1.98 1.7c.48.6.84 1.34.84 2.13a2.5 2.5 0 0 1-1 1.99c-.56.45-1.3.74-2.09.95-1.57.42-3.68.56-5.91.56s-4.33-.14-5.91-.56A5.5 5.5 0 0 1 4 20.49a2.5 2.5 0 0 1-1-1.99c0-.79.36-1.52.84-2.14q.77-.94 1.98-1.69C7.42 13.7 9.61 13 12 13m0-11a5 5 0 1 1 0 10 5 5 0 0 1 0-10"/></g></svg>',all:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M15 21q-.8 0-1.4-.6T13 19v-4q0-.8.6-1.4T15 13h4q.8 0 1.4.6T21 15v4q0 .8-.6 1.4T19 21zm0-10q-.8 0-1.4-.6T13 9V5q0-.8.6-1.4T15 3h4q.8 0 1.4.6T21 5v4q0 .8-.6 1.4T19 11zM5 11q-.8 0-1.4-.6T3 9V5q0-.8.6-1.4T5 3h4q.8 0 1.4.6T11 5v4q0 .8-.6 1.4T9 11zm0 10q-.8 0-1.4-.6T3 19v-4q0-.8.6-1.4T5 13h4q.8 0 1.4.6T11 15v4q0 .8-.6 1.4T9 21z"/></svg>',tag:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M20.59 13.41l-7.17 7.17a2 2 0 0 1-2.83 0L2 12V2h10l8.59 8.59a2 2 0 0 1 0 2.82z"/><line x1="7" y1="7" x2="7.01" y2="7"/></svg>',filter:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polygon points="22 3 2 3 10 12.46 10 19 14 21 14 12.46 22 3"/></svg>',filterAct:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polygon points="22 3 2 3 10 12.46 10 19 14 21 14 12.46 22 3"/></svg>',bot:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 28 28"><path fill="currentColor" d="M14 1.5a.75.75 0 0 1 .75.75V3h4.5A2.75 2.75 0 0 1 22 5.75v5.5q0 .74-.35 1.34l-.16-.5a1.7 1.7 0 0 0-.6-.8 1.6 1.6 0 0 0-1.9 0 1.7 1.7 0 0 0-.57.78L18 13.62q-.06.2-.16.38H8.75A2.75 2.75 0 0 1 6 11.25v-5.5A2.75 2.75 0 0 1 8.75 3h4.5v-.75A.75.75 0 0 1 14 1.5m.3 14.59.07-.09H6.75A2.75 2.75 0 0 0 4 18.75v.75c0 1.98.96 3.64 2.72 4.78C8.44 25.4 10.92 26 14 26s5.56-.6 7.28-1.72l.27-.18a1 1 0 0 1-.3-.31A1.4 1.4 0 0 1 21 23q0-.2.06-.38l-.13.11a1.6 1.6 0 0 1-1.86 0 1.7 1.7 0 0 1-.59-.8l-.5-1.53a2 2 0 0 0-.34-.64l-.18-.21a2 2 0 0 0-.83-.52l-1.56-.5a1.6 1.6 0 0 1-.77-.59 1.6 1.6 0 0 1 0-1.85M11 10a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3m7.5-1.5a1.5 1.5 0 1 0-3 0 1.5 1.5 0 0 0 3 0m-.33 10.33a3 3 0 0 1 .76 1.24l.5 1.53a.6.6 0 0 0 1.14 0l.5-1.53a3.2 3.2 0 0 1 2-2l1.53-.5a.6.6 0 0 0 0-1.14h-.03l-1.53-.5a3.2 3.2 0 0 1-2-2l-.5-1.53a.6.6 0 0 0-1.14 0l-.5 1.53-.01.04a3.2 3.2 0 0 1-1.96 1.96l-1.53.5a.6.6 0 0 0 0 1.14l1.53.5q.72.23 1.24.76m8.65 3.53.92.3h.02a.36.36 0 0 1 0 .68l-.92.3a1.9 1.9 0 0 0-1.2 1.2l-.3.92a.36.36 0 0 1-.68 0l-.3-.92a1.9 1.9 0 0 0-1.2-1.2l-.92-.3a.36.36 0 0 1 0-.68l.92-.3a1.9 1.9 0 0 0 1.18-1.2l.3-.92a.36.36 0 0 1 .68 0l.3.92a1.9 1.9 0 0 0 1.2 1.2"/></svg>',paste:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="currentColor" d="M12.75 2c1.16 0 2.11.88 2.24 2h1.76A2.25 2.25 0 0 1 19 6.1v.15a.75.75 0 0 1-.65.74l-.1.01a.75.75 0 0 1-.74-.65l-.01-.1a.75.75 0 0 0-.65-.74l-.1-.01h-2.13a2.2 2.2 0 0 1-1.87 1h-3.5a2.2 2.2 0 0 1-1.87-1H5.25a.75.75 0 0 0-.74.65l-.01.1v13.5c0 .39.28.7.65.75h3.1a.75.75 0 0 1 .74.65l.01.1a.75.75 0 0 1-.75.75h-3a2.25 2.25 0 0 1-2.24-2.1L3 19.77V6.24A2.25 2.25 0 0 1 5.1 4h1.91a2.25 2.25 0 0 1 2.24-2zm6 6A2.25 2.25 0 0 1 21 10.1v9.65A2.25 2.25 0 0 1 18.9 22h-6.65a2.25 2.25 0 0 1-2.24-2.1l-.01-.15v-9.5a2.25 2.25 0 0 1 2.1-2.24l.15-.01zm-6-4.5h-3.5a.75.75 0 0 0 0 1.5h3.5a.75.75 0 1 0 0-1.5"/></svg>'},DEFAULT_ICONS={...ICONS};function createPromptButton(e="top"){const t=document.createElement("div");t.className="mp-prompt-wrapper";const n=document.createElement("div");n.className=`mp-sliding-pill-container mp-dir-${e}`;const o="left"===e||"right"===e?"top":"left",a=document.createElement("button");a.type="button",a.className="mp-btn-part mp-btn-ai",a.setAttribute("data-testid","composer-button-ai-enhance"),setSafeInnerHTML(a,ICONS.magic),createCustomTooltip(a,getTranslation("enhanceTooltip"),o),a.addEventListener("click",(e=>{e.stopPropagation(),handleInstantPageEnhancement()}));const r=document.createElement("button");return r.type="button",r.className="mp-btn-part mp-btn-main",r.setAttribute("data-testid","composer-button-prompts"),setSafeInnerHTML(r,ICONS.prompts),createCustomTooltip(r,getTranslation("prompts"),o),n.appendChild(a),n.appendChild(r),t.appendChild(n),t}function createSettingsModal(){let e={...currentThemeConfig};const t=document.createElement("div");t.className="mp-overlay mp-hidden",t.id="__ap_settings_overlay";t.onclick=e=>{e.target===t&&(applyTheme(currentThemeConfig),hideModal(t))};const n=document.createElement("div");n.className="mp-modal-box",n.style.width="420px !important",n.style.maxHeight="85vh !important",n.onclick=e=>e.stopPropagation();const o=`<div class="mp-settings-container"><div class="mp-tabs-header"><button class="mp-tab-btn active" data-tab="basic">${getTranslation("basic")}</button><button class="mp-tab-btn" data-tab="advanced">${getTranslation("advanced")}</button></div><div class="mp-scroll-wrapper" style="flex:1; overflow:hidden;"><div id="mp-settings-scroll-area" style="padding: 0 4px 12px 4px; overflow-y: auto;"><div class="mp-tab-content active" id="tab-basic" style="margin-bottom: 16px; margin-top: 16px;"><div class="mp-form-row"><div class="mp-form-group"><label class="mp-label">${getTranslation("languageSettings")}</label><button id="mp-btn-open-lang" class="mp-action-btn-full"><span id="mp-current-lang-display" style="font-weight:600;">${translations[currentLang]?.langName||currentLang}</span><span class="mp-btn-icon">${ICONS.globo}</span></button></div><div class="mp-form-group"><label class="mp-label">${getTranslation("backupRestore")}</label><button id="mp-btn-open-backup" class="mp-action-btn-full"><span style="font-weight:600;">${getTranslation("exportImport")}</span><span class="mp-btn-icon">${ICONS.expImp}</span></button></div></div><div class="mp-form-group"><label class="mp-label">${getTranslation("colorMode")}</label><div class="mp-segmented-control"><div class="mp-segment-opt" data-val="auto">${ICONS.monitor} <span>${getTranslation("auto")}</span></div><div class="mp-segment-opt" data-val="light">${ICONS.sol} <span>${getTranslation("light")}</span></div><div class="mp-segment-opt" data-val="dark">${ICONS.lua} <span>${getTranslation("dark")}</span></div></div></div><div class="mp-form-group style=" style="margin-bottom: 0px;"><label class="mp-label">${getTranslation("theme")}</label><div class="mp-theme-scroll-container" id="mp-theme-list-container"></div></div></div><div class="mp-tab-content" id="tab-advanced" style="margin-bottom: 16px; margin-top: 16px;"><div class="mp-form-group"><label class="mp-label">${getTranslation("featureSettings")}</label><div class="mp-settings-switch-container" style="margin-bottom: 8px;"><span id="mp-smart-predict-lbl"> ${getTranslation("smartPredict")} </span><div class="mp-switch"><input type="checkbox" id="mp_setting_prediction" /><label for="mp_setting_prediction">Toggle</label></div></div><div class="mp-settings-switch-container" style="margin-bottom: 8px;"><span id="mp-nav-lbl"> ${getTranslation("navConfig")} </span><div class="mp-switch"><input type="checkbox" id="mp_setting_nav" ${currentNavConfig.enabled?"checked":""} /><label for="mp_setting_nav">Toggle</label></div></div><div class="mp-settings-switch-container"><span id="mp-syntax-lbl"> ${getTranslation("syntaxHighlight")} </span><div style="display: flex; align-items: center; gap: 8px;"><div class="mp-switch"><span id="mp-syntax-info-icon" style="cursor: help !important;" class="mp-help-icon">${ICONS.info}</span><input type="checkbox" id="mp_setting_syntax" /><label for="mp_setting_syntax">Toggle</label></div></div></div></div><div class="mp-form-group"><label class="mp-label mp-label-row"> ${getTranslation("aiEnhanceSettings")} </label><input type="text" id="mp_ai_api_key_input" class="form-input hide-api-key" placeholder="${getTranslation("aiKeyPlaceholder")}"><select id="mp_ai_model_select" class="form-input"><optgroup label="Google Gemini"><option value="gemini-3.1-pro-preview" ${"gemini-3.1-pro-preview"===currentAIConfig.model?"selected":""}>Gemini 3.1 Pro Preview</option><option value="gemini-3-pro-preview" ${"gemini-3-pro-preview"===currentAIConfig.model?"selected":""}>Gemini 3 Pro Preview</option><option value="gemini-3-flash-preview" ${"gemini-3-flash-preview"===currentAIConfig.model?"selected":""}>Gemini 3 Flash Preview</option><option value="gemini-2.5-pro" ${"gemini-2.5-pro"===currentAIConfig.model?"selected":""}>Gemini 2.5 Pro</option><option value="gemini-2.5-flash" ${"gemini-2.5-flash"===currentAIConfig.model?"selected":""}>Gemini 2.5 Flash</option><option value="gemini-flash-latest" ${"gemini-flash-latest"===currentAIConfig.model?"selected":""}>Gemini Flash Latest</option><option value="gemini-flash-lite-latest" ${"gemini-flash-lite-latest"===currentAIConfig.model?"selected":""}>Gemini Flash-Lite Latest</option></optgroup><optgroup label="LongCat"><option value="LongCat-Flash-Thinking-2601" ${"LongCat-Flash-Thinking-2601"===currentAIConfig.model?"selected":""}>LongCat Flash Thinking 2601</option><option value="LongCat-Flash-Thinking" ${"LongCat-Flash-Thinking"===currentAIConfig.model?"selected":""}>LongCat Flash Thinking</option><option value="LongCat-Flash-Chat" ${"LongCat-Flash-Chat"===currentAIConfig.model?"selected":""}>LongCat Flash Chat</option><option value="LongCat-Flash-Lite" ${"LongCat-Flash-Lite"===currentAIConfig.model?"selected":""}>LongCat Flash Lite</option></optgroup><optgroup label="Groq"><option value="openai/gpt-oss-120b" ${"openai/gpt-oss-120b"===currentAIConfig.model?"selected":""}>GPT-OSS 120B</option><option value="qwen/qwen3-32b" ${"qwen/qwen3-32b"===currentAIConfig.model?"selected":""}>Qwen3 32B</option><option value="moonshotai/kimi-k2-instruct-0905" ${"moonshotai/kimi-k2-instruct-0905"===currentAIConfig.model?"selected":""}>Kimi K2 0905</option><option value="llama-3.3-70b-versatile" ${"llama-3.3-70b-versatile"===currentAIConfig.model?"selected":""}>Llama 3.3 70B</option><option value="llama-3.1-8b-instant" ${"llama-3.1-8b-instant"===currentAIConfig.model?"selected":""}>Llama 3.1 8B</option></optgroup><optgroup label="OpenRouter"><option value="openrouter|stepfun/step-3.5-flash:free" ${"openrouter|stepfun/step-3.5-flash:free"===currentAIConfig.model?"selected":""}>StepFun: Step 3.5 Flash (free)</option><option value="openrouter|arcee-ai/trinity-large-preview:free" ${"openrouter|arcee-ai/trinity-large-preview:free"===currentAIConfig.model?"selected":""}>Arcee AI: Trinity Large Preview (free)</option><option value="openrouter|liquid/lfm-2.5-1.2b-thinking:free" ${"openrouter|liquid/lfm-2.5-1.2b-thinking:free"===currentAIConfig.model?"selected":""}>LiquidAI: LFM2.5-1.2B-Thinking (free)</option><option value="openrouter|liquid/lfm-2.5-1.2b-instruct:free" ${"openrouter|liquid/lfm-2.5-1.2b-instruct:free"===currentAIConfig.model?"selected":""}>LiquidAI: LFM2.5-1.2B-Instruct (free)</option><option value="openrouter|nvidia/nemotron-3-nano-30b-a3b:free" ${"openrouter|nvidia/nemotron-3-nano-30b-a3b:free"===currentAIConfig.model?"selected":""}>NVIDIA: Nemotron 3 Nano 30B A3B (free)</option><option value="openrouter|arcee-ai/trinity-mini:free" ${"openrouter|arcee-ai/trinity-mini:free"===currentAIConfig.model?"selected":""}>Arcee AI: Trinity Mini (free)</option><option value="openrouter|nvidia/nemotron-nano-12b-v2-vl:free" ${"openrouter|nvidia/nemotron-nano-12b-v2-vl:free"===currentAIConfig.model?"selected":""}>NVIDIA: Nemotron Nano 12B 2 VL (free)</option><option value="openrouter|qwen/qwen3-next-80b-a3b-instruct:free" ${"openrouter|qwen/qwen3-next-80b-a3b-instruct:free"===currentAIConfig.model?"selected":""}>Qwen: Qwen3 Next 80B A3B Instruct (free)</option><option value="openrouter|nvidia/nemotron-nano-9b-v2:free" ${"openrouter|nvidia/nemotron-nano-9b-v2:free"===currentAIConfig.model?"selected":""}>NVIDIA: Nemotron Nano 9B V2 (free)</option><option value="openrouter|openai/gpt-oss-120b:free" ${"openrouter|openai/gpt-oss-120b:free"===currentAIConfig.model?"selected":""}>OpenAI: gpt-oss-120b (free)</option><option value="openrouter|openai/gpt-oss-20b:free" ${"openrouter|openai/gpt-oss-20b:free"===currentAIConfig.model?"selected":""}>OpenAI: gpt-oss-20b (free)</option><option value="openrouter|z-ai/glm-4.5-air:free" ${"openrouter|z-ai/glm-4.5-air:free"===currentAIConfig.model?"selected":""}>Z.ai: GLM 4.5 Air (free)</option><option value="openrouter|qwen/qwen3-coder:free" ${"openrouter|qwen/qwen3-coder:free"===currentAIConfig.model?"selected":""}>Qwen: Qwen3 Coder 480B A35B (free)</option><option value="openrouter|cognitivecomputations/dolphin-mistral-24b-venice-edition:free" ${"openrouter|cognitivecomputations/dolphin-mistral-24b-venice-edition:free"===currentAIConfig.model?"selected":""}>Venice: Uncensored (free)</option><option value="openrouter|google/gemma-3n-e2b-it:free" ${"openrouter|google/gemma-3n-e2b-it:free"===currentAIConfig.model?"selected":""}>Google: Gemma 3n 2B (free)</option><option value="openrouter|google/gemma-3n-e4b-it:free" ${"openrouter|google/gemma-3n-e4b-it:free"===currentAIConfig.model?"selected":""}>Google: Gemma 3n 4B (free)</option><option value="openrouter|qwen/qwen3-4b:free" ${"openrouter|qwen/qwen3-4b:free"===currentAIConfig.model?"selected":""}>Qwen: Qwen3 4B (free)</option><option value="openrouter|mistralai/mistral-small-3.1-24b-instruct:free" ${"openrouter|mistralai/mistral-small-3.1-24b-instruct:free"===currentAIConfig.model?"selected":""}>Mistral: Mistral Small 3.1 24B (free)</option><option value="openrouter|google/gemma-3-4b-it:free" ${"openrouter|google/gemma-3-4b-it:free"===currentAIConfig.model?"selected":""}>Google: Gemma 3 4B (free)</option><option value="openrouter|google/gemma-3-12b-it:free" ${"openrouter|google/gemma-3-12b-it:free"===currentAIConfig.model?"selected":""}>Google: Gemma 3 12B (free)</option><option value="openrouter|google/gemma-3-27b-it:free" ${"openrouter|google/gemma-3-27b-it:free"===currentAIConfig.model?"selected":""}>Google: Gemma 3 27B (free)</option><option value="openrouter|meta-llama/llama-3.3-70b-instruct:free" ${"openrouter|meta-llama/llama-3.3-70b-instruct:free"===currentAIConfig.model?"selected":""}>Meta: Llama 3.3 70B Instruct (free)</option><option value="openrouter|meta-llama/llama-3.2-3b-instruct:free" ${"openrouter|meta-llama/llama-3.2-3b-instruct:free"===currentAIConfig.model?"selected":""}>Meta: Llama 3.2 3B Instruct (free)</option><option value="openrouter|nousresearch/hermes-3-llama-3.1-405b:free" ${"openrouter|nousresearch/hermes-3-llama-3.1-405b:free"===currentAIConfig.model?"selected":""}>Nous: Hermes 3 405B Instruct (free)</option><option value="openrouter|qwen/qwen3-vl-30b-a3b-thinking" ${"openrouter|qwen/qwen3-vl-30b-a3b-thinking"===currentAIConfig.model?"selected":""}>Qwen: Qwen3 VL 30B A3B Thinking</option><option value="openrouter|qwen/qwen3-vl-235b-a22b-thinking" ${"openrouter|qwen/qwen3-vl-235b-a22b-thinking"===currentAIConfig.model?"selected":""}>Qwen: Qwen3 VL 235B A22B Thinking</option><option value="openrouter|openai/gpt-5.2" ${"openrouter|openai/gpt-5.2"===currentAIConfig.model?"selected":""}>OpenAI: GPT-5.2</option><option value="openrouter|openai/gpt-4o-mini" ${"openrouter|openai/gpt-4o-mini"===currentAIConfig.model?"selected":""}>OpenAI: GPT-4o-mini</option><option value="openrouter|openai/gpt-5.4" ${"openrouter|openai/gpt-5.4"===currentAIConfig.model?"selected":""}>OpenAI: GPT-5.4</option><option value="openrouter|openai/gpt-5-mini" ${"openrouter|openai/gpt-5-mini"===currentAIConfig.model?"selected":""}>OpenAI: GPT-5 Mini</option><option value="openrouter|openai/gpt-4.1-mini" ${"openrouter|openai/gpt-4.1-mini"===currentAIConfig.model?"selected":""}>OpenAI: GPT-4.1 Mini</option><option value="openrouter|openai/gpt-4.1" ${"openrouter|openai/gpt-4.1"===currentAIConfig.model?"selected":""}>OpenAI: GPT-4.1</option><option value="openrouter|openai/gpt-5.1-chat" ${"openrouter|openai/gpt-5.1-chat"===currentAIConfig.model?"selected":""}>OpenAI: GPT-5.1 Chat</option><option value="openrouter|openai/gpt-5.1" ${"openrouter|openai/gpt-5.1"===currentAIConfig.model?"selected":""}>OpenAI: GPT-5.1</option><option value="openrouter|openai/gpt-4.1-nano" ${"openrouter|openai/gpt-4.1-nano"===currentAIConfig.model?"selected":""}>OpenAI: GPT-4.1 Nano</option><option value="openrouter|openai/gpt-5" ${"openrouter|openai/gpt-5"===currentAIConfig.model?"selected":""}>OpenAI: GPT-5</option><option value="openrouter|openai/gpt-4o-mini-2024-07-18" ${"openrouter|openai/gpt-4o-mini-2024-07-18"===currentAIConfig.model?"selected":""}>OpenAI: GPT-4o-mini (2024-07-18)</option><option value="openrouter|openai/gpt-4o" ${"openrouter|openai/gpt-4o"===currentAIConfig.model?"selected":""}>OpenAI: GPT-4o</option><option value="openrouter|openai/gpt-5-chat" ${"openrouter|openai/gpt-5-chat"===currentAIConfig.model?"selected":""}>OpenAI: GPT-5 Chat</option><option value="openrouter|openai/gpt-5.2-chat" ${"openrouter|openai/gpt-5.2-chat"===currentAIConfig.model?"selected":""}>OpenAI: GPT-5.2 Chat</option><option value="openrouter|openai/gpt-5.3-chat" ${"openrouter|openai/gpt-5.3-chat"===currentAIConfig.model?"selected":""}>OpenAI: GPT-5.3 Chat</option><option value="openrouter|openai/gpt-5.4-pro" ${"openrouter|openai/gpt-5.4-pro"===currentAIConfig.model?"selected":""}>OpenAI: GPT-5.4 Pro</option><option value="openrouter|openai/gpt-4o-2024-11-20" ${"openrouter|openai/gpt-4o-2024-11-20"===currentAIConfig.model?"selected":""}>OpenAI: GPT-4o (2024-11-20)</option><option value="openrouter|openai/o3-mini" ${"openrouter|openai/o3-mini"===currentAIConfig.model?"selected":""}>OpenAI: o3 Mini</option><option value="openrouter|openai/gpt-4o-2024-08-06" ${"openrouter|openai/gpt-4o-2024-08-06"===currentAIConfig.model?"selected":""}>OpenAI: GPT-4o (2024-08-06)</option><option value="openrouter|openai/o4-mini" ${"openrouter|openai/o4-mini"===currentAIConfig.model?"selected":""}>OpenAI: o4 Mini</option><option value="openrouter|openai/gpt-5.2-pro" ${"openrouter|openai/gpt-5.2-pro"===currentAIConfig.model?"selected":""}>OpenAI: GPT-5.2 Pro</option><option value="openrouter|openai/o3" ${"openrouter|openai/o3"===currentAIConfig.model?"selected":""}>OpenAI: o3</option><option value="openrouter|openai/gpt-3.5-turbo" ${"openrouter|openai/gpt-3.5-turbo"===currentAIConfig.model?"selected":""}>OpenAI: GPT-3.5 Turbo</option><option value="openrouter|openai/o4-mini-high" ${"openrouter|openai/o4-mini-high"===currentAIConfig.model?"selected":""}>OpenAI: o4 Mini High</option><option value="openrouter|openai/gpt-4o-mini-search-preview" ${"openrouter|openai/gpt-4o-mini-search-preview"===currentAIConfig.model?"selected":""}>OpenAI: GPT-4o-mini Search Preview</option><option value="openrouter|openai/gpt-4-turbo" ${"openrouter|openai/gpt-4-turbo"===currentAIConfig.model?"selected":""}>OpenAI: GPT-4 Turbo</option><option value="openrouter|openai/o3-mini-high" ${"openrouter|openai/o3-mini-high"===currentAIConfig.model?"selected":""}>OpenAI: o3 Mini High</option><option value="openrouter|openai/o4-mini-deep-research" ${"openrouter|openai/o4-mini-deep-research"===currentAIConfig.model?"selected":""}>OpenAI: o4 Mini Deep Research</option><option value="openrouter|openai/gpt-3.5-turbo-16k" ${"openrouter|openai/gpt-3.5-turbo-16k"===currentAIConfig.model?"selected":""}>OpenAI: GPT-3.5 Turbo 16k</option><option value="openrouter|openai/gpt-4" ${"openrouter|openai/gpt-4"===currentAIConfig.model?"selected":""}>OpenAI: GPT-4</option><option value="openrouter|openai/o3-deep-research" ${"openrouter|openai/o3-deep-research"===currentAIConfig.model?"selected":""}>OpenAI: o3 Deep Research</option><option value="openrouter|openai/gpt-5-pro" ${"openrouter|openai/gpt-5-pro"===currentAIConfig.model?"selected":""}>OpenAI: GPT-5 Pro</option><option value="openrouter|openai/gpt-4o-search-preview" ${"openrouter|openai/gpt-4o-search-preview"===currentAIConfig.model?"selected":""}>OpenAI: GPT-4o Search Preview</option><option value="openrouter|openai/gpt-4-turbo-preview" ${"openrouter|openai/gpt-4-turbo-preview"===currentAIConfig.model?"selected":""}>OpenAI: GPT-4 Turbo Preview</option><option value="openrouter|openai/gpt-3.5-turbo-0613" ${"openrouter|openai/gpt-3.5-turbo-0613"===currentAIConfig.model?"selected":""}>OpenAI: GPT-3.5 Turbo (older v0613)</option><option value="openrouter|openai/gpt-audio-mini" ${"openrouter|openai/gpt-audio-mini"===currentAIConfig.model?"selected":""}>OpenAI: GPT Audio Mini</option><option value="openrouter|openai/o1" ${"openrouter|openai/o1"===currentAIConfig.model?"selected":""}>OpenAI: o1</option><option value="openrouter|openai/gpt-4-1106-preview" ${"openrouter|openai/gpt-4-1106-preview"===currentAIConfig.model?"selected":""}>OpenAI: GPT-4 Turbo (older v1106)</option><option value="openrouter|openai/gpt-4o-2024-05-13" ${"openrouter|openai/gpt-4o-2024-05-13"===currentAIConfig.model?"selected":""}>OpenAI: GPT-4o (2024-05-13)</option><option value="openrouter|openai/o3-pro" ${"openrouter|openai/o3-pro"===currentAIConfig.model?"selected":""}>OpenAI: o3 Pro</option><option value="openrouter|openai/gpt-4o:extended" ${"openrouter|openai/gpt-4o:extended"===currentAIConfig.model?"selected":""}>OpenAI: GPT-4o (extended)</option><option value="openrouter|openai/gpt-4o-audio-preview" ${"openrouter|openai/gpt-4o-audio-preview"===currentAIConfig.model?"selected":""}>OpenAI: GPT-4o Audio</option><option value="openrouter|openai/gpt-3.5-turbo-instruct" ${"openrouter|openai/gpt-3.5-turbo-instruct"===currentAIConfig.model?"selected":""}>OpenAI: GPT-3.5 Turbo Instruct</option><option value="openrouter|openai/gpt-audio" ${"openrouter|openai/gpt-audio"===currentAIConfig.model?"selected":""}>OpenAI: GPT Audio</option><option value="openrouter|openai/o1-pro" ${"openrouter|openai/o1-pro"===currentAIConfig.model?"selected":""}>OpenAI: o1-pro</option><option value="openrouter|openai/gpt-4-0314" ${"openrouter|openai/gpt-4-0314"===currentAIConfig.model?"selected":""}>OpenAI: GPT-4 (older v0314)</option><option value="openrouter|anthropic/claude-opus-4.6" ${"openrouter|anthropic/claude-opus-4.6"===currentAIConfig.model?"selected":""}>Anthropic: Claude Opus 4.6</option><option value="openrouter|anthropic/claude-sonnet-4.6" ${"openrouter|anthropic/claude-sonnet-4.6"===currentAIConfig.model?"selected":""}>Anthropic: Claude Sonnet 4.6</option><option value="openrouter|anthropic/claude-sonnet-4.5" ${"openrouter|anthropic/claude-sonnet-4.5"===currentAIConfig.model?"selected":""}>Anthropic: Claude Sonnet 4.5</option><option value="openrouter|anthropic/claude-haiku-4.5" ${"openrouter|anthropic/claude-haiku-4.5"===currentAIConfig.model?"selected":""}>Anthropic: Claude Haiku 4.5</option><option value="openrouter|anthropic/claude-opus-4.5" ${"openrouter|anthropic/claude-opus-4.5"===currentAIConfig.model?"selected":""}>Anthropic: Claude Opus 4.5</option><option value="openrouter|anthropic/claude-sonnet-4" ${"openrouter|anthropic/claude-sonnet-4"===currentAIConfig.model?"selected":""}>Anthropic: Claude Sonnet 4</option><option value="openrouter|anthropic/claude-3.5-haiku" ${"openrouter|anthropic/claude-3.5-haiku"===currentAIConfig.model?"selected":""}>Anthropic: Claude 3.5 Haiku</option><option value="openrouter|anthropic/claude-3.5-sonnet" ${"openrouter|anthropic/claude-3.5-sonnet"===currentAIConfig.model?"selected":""}>Anthropic: Claude 3.5 Sonnet</option><option value="openrouter|anthropic/claude-3-haiku" ${"openrouter|anthropic/claude-3-haiku"===currentAIConfig.model?"selected":""}>Anthropic: Claude 3 Haiku</option><option value="openrouter|anthropic/claude-opus-4.1" ${"openrouter|anthropic/claude-opus-4.1"===currentAIConfig.model?"selected":""}>Anthropic: Claude Opus 4.1</option><option value="openrouter|anthropic/claude-opus-4" ${"openrouter|anthropic/claude-opus-4"===currentAIConfig.model?"selected":""}>Anthropic: Claude Opus 4</option><option value="openrouter|x-ai/grok-4.1-fast" ${"openrouter|x-ai/grok-4.1-fast"===currentAIConfig.model?"selected":""}>xAI: Grok 4.1 Fast</option><option value="openrouter|x-ai/grok-4-fast" ${"openrouter|x-ai/grok-4-fast"===currentAIConfig.model?"selected":""}>xAI: Grok 4 Fast</option><option value="openrouter|x-ai/grok-4" ${"openrouter|x-ai/grok-4"===currentAIConfig.model?"selected":""}>xAI: Grok 4</option><option value="openrouter|x-ai/grok-3-mini" ${"openrouter|x-ai/grok-3-mini"===currentAIConfig.model?"selected":""}>xAI: Grok 3 Mini</option><option value="openrouter|x-ai/grok-3" ${"openrouter|x-ai/grok-3"===currentAIConfig.model?"selected":""}>xAI: Grok 3</option><option value="openrouter|x-ai/grok-3-mini-beta" ${"openrouter|x-ai/grok-3-mini-beta"===currentAIConfig.model?"selected":""}>xAI: Grok 3 Mini Beta</option><option value="openrouter|x-ai/grok-3-beta" ${"openrouter|x-ai/grok-3-beta"===currentAIConfig.model?"selected":""}>xAI: Grok 3 Beta</option><option value="openrouter|google/gemini-3-flash-preview" ${"openrouter|google/gemini-3-flash-preview"===currentAIConfig.model?"selected":""}>Google: Gemini 3 Flash Preview</option><option value="openrouter|google/gemini-2.5-flash" ${"openrouter|google/gemini-2.5-flash"===currentAIConfig.model?"selected":""}>Google: Gemini 2.5 Flash</option><option value="openrouter|google/gemini-2.5-flash-lite" ${"openrouter|google/gemini-2.5-flash-lite"===currentAIConfig.model?"selected":""}>Google: Gemini 2.5 Flash Lite</option><option value="openrouter|google/gemini-3.1-pro-preview" ${"openrouter|google/gemini-3.1-pro-preview"===currentAIConfig.model?"selected":""}>Google: Gemini 3.1 Pro Preview</option><option value="openrouter|google/gemini-3.1-flash-lite-preview" ${"openrouter|google/gemini-3.1-flash-lite-preview"===currentAIConfig.model?"selected":""}>Google: Gemini 3.1 Flash Lite Preview</option><option value="openrouter|google/gemini-2.5-pro" ${"openrouter|google/gemini-2.5-pro"===currentAIConfig.model?"selected":""}>Google: Gemini 2.5 Pro</option><option value="openrouter|google/gemini-2.5-flash-lite-preview-09-2025" ${"openrouter|google/gemini-2.5-flash-lite-preview-09-2025"===currentAIConfig.model?"selected":""}>Google: Gemini 2.5 Flash Lite Preview 09-2025</option><option value="openrouter|google/gemini-3.1-pro-preview-customtools" ${"openrouter|google/gemini-3.1-pro-preview-customtools"===currentAIConfig.model?"selected":""}>Google: Gemini 3.1 Pro Preview Custom Tools</option><option value="openrouter|google/gemma-2-27b-it" ${"openrouter|google/gemma-2-27b-it"===currentAIConfig.model?"selected":""}>Google: Gemma 2 27B</option><option value="openrouter|google/gemini-2.5-pro-preview" ${"openrouter|google/gemini-2.5-pro-preview"===currentAIConfig.model?"selected":""}>Google: Gemini 2.5 Pro Preview 06-05</option><option value="openrouter|google/gemini-2.5-pro-preview-05-06" ${"openrouter|google/gemini-2.5-pro-preview-05-06"===currentAIConfig.model?"selected":""}>Google: Gemini 2.5 Pro Preview 05-06</option><option value="openrouter|deepseek/deepseek-v3.2" ${"openrouter|deepseek/deepseek-v3.2"===currentAIConfig.model?"selected":""}>DeepSeek: DeepSeek V3.2</option><option value="openrouter|deepseek/deepseek-chat-v3-0324" ${"openrouter|deepseek/deepseek-chat-v3-0324"===currentAIConfig.model?"selected":""}>DeepSeek: DeepSeek V3 0324</option><option value="openrouter|deepseek/deepseek-chat-v3.1" ${"openrouter|deepseek/deepseek-chat-v3.1"===currentAIConfig.model?"selected":""}>DeepSeek: DeepSeek V3.1</option><option value="openrouter|deepseek/deepseek-v3.2-exp" ${"openrouter|deepseek/deepseek-v3.2-exp"===currentAIConfig.model?"selected":""}>DeepSeek: DeepSeek V3.2 Exp</option><option value="openrouter|deepseek/deepseek-chat" ${"openrouter|deepseek/deepseek-chat"===currentAIConfig.model?"selected":""}>DeepSeek: DeepSeek V3</option><option value="openrouter|deepseek/deepseek-v3.1-terminus" ${"openrouter|deepseek/deepseek-v3.1-terminus"===currentAIConfig.model?"selected":""}>DeepSeek: DeepSeek V3.1 Terminus</option><option value="openrouter|deepseek/deepseek-r1-0528" ${"openrouter|deepseek/deepseek-r1-0528"===currentAIConfig.model?"selected":""}>DeepSeek: R1 0528</option><option value="openrouter|deepseek/deepseek-r1" ${"openrouter|deepseek/deepseek-r1"===currentAIConfig.model?"selected":""}>DeepSeek: R1</option><option value="openrouter|deepseek/deepseek-v3.1-terminus:exacto" ${"openrouter|deepseek/deepseek-v3.1-terminus:exacto"===currentAIConfig.model?"selected":""}>DeepSeek: DeepSeek V3.1 Terminus (exacto)</option><option value="openrouter|tngtech/deepseek-r1t2-chimera" ${"openrouter|tngtech/deepseek-r1t2-chimera"===currentAIConfig.model?"selected":""}>TNG: DeepSeek R1T2 Chimera</option><option value="openrouter|nex-agi/deepseek-v3.1-nex-n1" ${"openrouter|nex-agi/deepseek-v3.1-nex-n1"===currentAIConfig.model?"selected":""}>Nex AGI: DeepSeek V3.1 Nex N1</option><option value="openrouter|deepseek/deepseek-v3.2-speciale" ${"openrouter|deepseek/deepseek-v3.2-speciale"===currentAIConfig.model?"selected":""}>DeepSeek: DeepSeek V3.2 Speciale</option><option value="openrouter|mistralai/mistral-small-creative" ${"openrouter|mistralai/mistral-small-creative"===currentAIConfig.model?"selected":""}>Mistral: Mistral Small Creative</option><option value="openrouter|mistralai/ministral-14b-2512" ${"openrouter|mistralai/ministral-14b-2512"===currentAIConfig.model?"selected":""}>Mistral: Ministral 3 14B 2512</option><option value="openrouter|mistralai/mistral-large-2512" ${"openrouter|mistralai/mistral-large-2512"===currentAIConfig.model?"selected":""}>Mistral: Mistral Large 3 2512</option><option value="openrouter|mistralai/ministral-3b-2512" ${"openrouter|mistralai/ministral-3b-2512"===currentAIConfig.model?"selected":""}>Mistral: Ministral 3 3B 2512</option><option value="openrouter|mistralai/codestral-2508" ${"openrouter|mistralai/codestral-2508"===currentAIConfig.model?"selected":""}>Mistral: Codestral 2508</option><option value="openrouter|mistralai/ministral-8b-2512" ${"openrouter|mistralai/ministral-8b-2512"===currentAIConfig.model?"selected":""}>Mistral: Ministral 3 8B 2512</option><option value="openrouter|mistralai/devstral-2512" ${"openrouter|mistralai/devstral-2512"===currentAIConfig.model?"selected":""}>Mistral: Devstral 2 2512</option><option value="openrouter|mistralai/mistral-medium-3.1" ${"openrouter|mistralai/mistral-medium-3.1"===currentAIConfig.model?"selected":""}>Mistral: Mistral Medium 3.1</option><option value="openrouter|mistralai/mistral-small-3.1-24b-instruct" ${"openrouter|mistralai/mistral-small-3.1-24b-instruct"===currentAIConfig.model?"selected":""}>Mistral: Mistral Small 3.1 24B</option><option value="openrouter|mistralai/devstral-small" ${"openrouter|mistralai/devstral-small"===currentAIConfig.model?"selected":""}>Mistral: Devstral Small 1.1</option><option value="openrouter|mistralai/mixtral-8x7b-instruct" ${"openrouter|mistralai/mixtral-8x7b-instruct"===currentAIConfig.model?"selected":""}>Mistral: Mixtral 8x7B Instruct</option><option value="openrouter|thedrummer/unslopnemo-12b" ${"openrouter|thedrummer/unslopnemo-12b"===currentAIConfig.model?"selected":""}>TheDrummer: UnslopNemo 12B</option><option value="openrouter|microsoft/wizardlm-2-8x22b" ${"openrouter|microsoft/wizardlm-2-8x22b"===currentAIConfig.model?"selected":""}>WizardLM-2 8x22B</option><option value="openrouter|mistralai/mistral-large-2411" ${"openrouter|mistralai/mistral-large-2411"===currentAIConfig.model?"selected":""}>Mistral Large 2411</option><option value="openrouter|mistralai/mistral-medium-3" ${"openrouter|mistralai/mistral-medium-3"===currentAIConfig.model?"selected":""}>Mistral: Mistral Medium 3</option><option value="openrouter|mistralai/mistral-large" ${"openrouter|mistralai/mistral-large"===currentAIConfig.model?"selected":""}>Mistral Large</option><option value="openrouter|mistralai/devstral-medium" ${"openrouter|mistralai/devstral-medium"===currentAIConfig.model?"selected":""}>Mistral: Devstral Medium</option><option value="openrouter|mistralai/voxtral-small-24b-2507" ${"openrouter|mistralai/voxtral-small-24b-2507"===currentAIConfig.model?"selected":""}>Mistral: Voxtral Small 24B 2507</option><option value="openrouter|mistralai/pixtral-large-2411" ${"openrouter|mistralai/pixtral-large-2411"===currentAIConfig.model?"selected":""}>Mistral: Pixtral Large 2411</option><option value="openrouter|mistralai/mixtral-8x22b-instruct" ${"openrouter|mistralai/mixtral-8x22b-instruct"===currentAIConfig.model?"selected":""}>Mistral: Mixtral 8x22B Instruct</option><option value="openrouter|mistralai/mistral-7b-instruct-v0.1" ${"openrouter|mistralai/mistral-7b-instruct-v0.1"===currentAIConfig.model?"selected":""}>Mistral: Mistral 7B Instruct v0.1</option><option value="openrouter|mistralai/mistral-large-2407" ${"openrouter|mistralai/mistral-large-2407"===currentAIConfig.model?"selected":""}>Mistral Large 2407</option><option value="openrouter|mistralai/mistral-saba" ${"openrouter|mistralai/mistral-saba"===currentAIConfig.model?"selected":""}>Mistral: Saba</option><option value="openrouter|raifle/sorcererlm-8x22b" ${"openrouter|raifle/sorcererlm-8x22b"===currentAIConfig.model?"selected":""}>SorcererLM 8x22B</option></optgroup></select><textarea id="mp_ai_sys_prompt_input" class="form-input" placeholder="${getTranslation("aiSysPromptInput")}"></textarea></div><div class="mp-form-group" style="margin-bottom: 0px;"><label class="mp-label">${getTranslation("shortcutsSettings")}</label><div class="mp-shortcut-scroll-container" id="mp-shortcuts-list-container"></div></div></div></div></div><div class="mp-settings-footer"><button class="save-button" id="mp-settings-save">${getTranslation("save")}</button></div></div>`;setSafeInnerHTML(n,o),t.appendChild(n);const a=n.querySelector("#mp-theme-list-container"),r=document.createElement("input");r.type="file",r.accept=".mp.theme.json",r.multiple=!0,r.style.display="none",n.appendChild(r),r.onchange=e=>{const t=e.target.files;t&&t.length>0&&Array.from(t).forEach(((e,n)=>{importThemesFromFile(e,(()=>{n===t.length-1&&(i(),r.value="")}))}))};const i=()=>{setSafeInnerHTML(a,"");const t=document.createElement("div");t.className="mp-theme-action-row";const n=document.createElement("div");n.className="mp-theme-split-btn",setSafeInnerHTML(n,ICONS.cart),n.onclick=()=>window.open("https://ko-fi.com/ohas/shop/theme","_blank"),createCustomTooltip(n,getTranslation("getMoreThemes"),"bottom");const o=document.createElement("div");o.className="mp-theme-split-btn",setSafeInnerHTML(o,ICONS.plus),o.onclick=()=>r.click(),createCustomTooltip(o,getTranslation("addTheme"),"bottom"),t.appendChild(n),t.appendChild(o),a.appendChild(t);const s=(t,n,o)=>{const r=document.createElement("div");r.className="mp-theme-option",t===e.themeId&&r.classList.add("selected");const s=o?`${n.name}`:"default"===n.name?getTranslation("default"):n.name;r.textContent=s,r.onclick=()=>{e.themeId=t,i(),applyTheme(e)},o&&createCustomTooltip(r,{layout:"column",actions:[{label:getTranslation("delete"),action:()=>{deleteImportedTheme(t,(()=>{e.themeId===t&&(e.themeId="default"),i()}))}},{label:getTranslation("backupRestore"),action:()=>((e,t)=>{const n={[e]:t},o=JSON.stringify(n),a=new Blob([o],{type:"application/json"}),r=URL.createObjectURL(a),i=document.createElement("a");i.setAttribute("href",r);const s=t.name||"theme";i.setAttribute("download",s+".mp.theme.json"),document.body.appendChild(i),i.click(),i.remove(),URL.revokeObjectURL(r)})(t,n)}]},"right"),a.appendChild(r)};Object.keys(themeDefinitions).forEach((e=>s(e,themeDefinitions[e],!1))),Object.keys(importedThemes).forEach((e=>s(e,importedThemes[e],!0)))};i();const s=setupEnhancedScroll(a,"var(--mp-bg-secondary)","var(--mp-border-radius-md)");s&&s.classList.add("mp-theme-wrapper-fixed");const l=n.querySelector("#mp-shortcuts-list-container"),c=l.parentElement.querySelector(".mp-label");c&&(c.textContent=getTranslation("shortcutsSettings"));const p=()=>{setSafeInnerHTML(l,"");const e=document.createElement("div");e.className="mp-shortcut-option",setSafeInnerHTML(e,ICONS.restore),e.style.border="1px dashed var(--mp-border-primary)",e.style.color="var(--mp-accent-close)",e.style.backgroundColor="transparent";const t=e.querySelector("svg");t&&(t.style.width="20px",t.style.height="20px",t.style.display="block"),e.onmouseenter=()=>e.style.borderColor="var(--mp-accent-close)",e.onmouseleave=()=>e.style.borderColor="var(--mp-border-primary)",e.onclick=()=>{confirm(getTranslation("restoreShortcuts")+"?")&&(currentShortcuts=JSON.parse(JSON.stringify(DEFAULT_SHORTCUTS)),p())},createCustomTooltip(e,getTranslation("restoreShortcuts"),"right"),l.appendChild(e),Object.keys(currentShortcuts).forEach((e=>{const t=currentShortcuts[e],n=document.createElement("div");n.className="mp-shortcut-option",n.textContent=t.keys,createCustomTooltip(n,{text:getTranslation(t.descKey),actions:[{label:getTranslation("restoreShortcuts"),icon:ICONS.restore,action:()=>{currentShortcuts[e].keys=DEFAULT_SHORTCUTS[e].keys,p()}}]},"right"),n.onclick=t=>{t.stopPropagation();const o=n.textContent;n.textContent=getTranslation("pressKeyToRecord"),n.classList.add("recording"),l.querySelectorAll(".recording").forEach((e=>{e!==n&&e.classList.remove("recording")}));const a=t=>{if(t.preventDefault(),t.stopPropagation(),["Control","Alt","Shift","Meta"].includes(t.key))return;const n=[];t.ctrlKey&&n.push("Ctrl"),t.altKey&&n.push("Alt"),t.shiftKey&&n.push("Shift");let o=t.key.toUpperCase();"Space"===t.code&&(o="Space")," "===o&&(o="Space"),n.push(o);const a=n.join("+");currentShortcuts[e].keys=a,r(),p()},r=()=>{document.removeEventListener("keydown",a,!0),document.removeEventListener("mousedown",i,!0),n.classList.remove("recording")},i=e=>{e.target!==n&&(r(),n.textContent=o)};document.addEventListener("keydown",a,!0),document.addEventListener("mousedown",i,!0)},l.appendChild(n)}))};if(p(),l&&!l.parentElement.classList.contains("mp-shortcut-wrapper-fixed")){const e=setupEnhancedScroll(l,"var(--mp-bg-secondary)","var(--mp-border-radius-md)");e&&(e.classList.add("mp-shortcut-wrapper-fixed"),l.style.border="none",l.style.background="transparent",l.style.boxShadow="none",l.style.width="100%")}const d=n.querySelectorAll(".mp-tab-btn");d.forEach((e=>{e.onclick=()=>{d.forEach((e=>e.classList.remove("active"))),n.querySelectorAll(".mp-tab-content").forEach((e=>e.classList.remove("active"))),e.classList.add("active");const t=`tab-${e.getAttribute("data-tab")}`;n.querySelector(`#${t}`)&&n.querySelector(`#${t}`).classList.add("active")}}));const m=n.querySelectorAll(".mp-segment-opt"),u=()=>{m.forEach((t=>t.classList.toggle("selected",t.getAttribute("data-val")===e.mode)))};u(),m.forEach((t=>{t.onclick=()=>{e.mode=t.getAttribute("data-val"),u(),applyTheme(e)}})),n.querySelector("#mp-btn-open-lang").onclick=()=>{languageModal||(languageModal=createLanguageModal(),document.body.appendChild(languageModal)),showModal(languageModal)},n.querySelector("#mp-btn-open-backup").onclick=openBackupManager;const g=n.querySelector("#mp-smart-predict-lbl");g&&createCustomTooltip(g,getTranslation("smartPredictDesc"),"left");const f=n.querySelector("#mp-syntax-lbl");f&&createCustomTooltip(f,getTranslation("syntaxHighlightDesc"),"left");const v=n.querySelector("#mp-syntax-info-icon");v&&createCustomTooltip(v,getTranslation("syntaxHighlightWarning"),"right");const h=n.querySelector("#mp-nav-lbl");h&&createCustomTooltip(h,getTranslation("navConfigDesc"),"left");const y=n.querySelector("#mp_setting_syntax");y&&(y.checked=currentSyntaxConfig.enabled,y.onchange=()=>{currentSyntaxConfig.enabled=y.checked,y.checked||SyntaxHighlighter.detach()});const b=n.querySelector("#mp_setting_prediction");b&&(b.checked=currentPredictionConfig.enabled,b.onchange=()=>{currentPredictionConfig.enabled=b.checked});const x=n.querySelector("#mp_ai_api_key_input"),_=n.querySelector("#mp_ai_model_select"),C=n.querySelector("#mp_ai_sys_prompt_input"),T=()=>{const e=getProvider(_.value);x.value="openrouter"===e?currentAIConfig.apiKeyOpenRouter||"":"longcat"===e?currentAIConfig.apiKeyLongcat||"":"groq"===e?currentAIConfig.apiKeyGroq||"":currentAIConfig.apiKeyGemini||""};return _.addEventListener("change",T),x&&_&&(C.value=currentAIConfig.systemPrompt||"",T()),n.querySelector("#mp-settings-save").onclick=async()=>{await saveThemeConfig(e),y&&saveSyntaxConfig({enabled:y.checked}),b&&savePredictionConfig({enabled:b.checked}),saveShortcutsConfig();const o=n.querySelector("#mp_setting_nav");if(o){const e=o.checked;saveNavConfig({enabled:e}),createNavInterface(),document.getElementById("mp-nav-container")&&(document.getElementById("mp-nav-container").style.display=e?"flex":"none")}if(x&&_&&C){const e=_.value,t=getProvider(e),n={model:e,systemPrompt:C.value,keyIndexGemini:currentAIConfig.keyIndexGemini,keyIndexLongcat:currentAIConfig.keyIndexLongcat,keyIndexGroq:currentAIConfig.keyIndexGroq,keyIndexOpenRouter:currentAIConfig.keyIndexOpenRouter};"openrouter"===t?(n.apiKeyOpenRouter=x.value.trim(),n.apiKeyLongcat=currentAIConfig.apiKeyLongcat||"",n.apiKeyGroq=currentAIConfig.apiKeyGroq||"",n.apiKeyGemini=currentAIConfig.apiKeyGemini||""):"longcat"===t?(n.apiKeyLongcat=x.value.trim(),n.apiKeyOpenRouter=currentAIConfig.apiKeyOpenRouter||"",n.apiKeyGroq=currentAIConfig.apiKeyGroq||"",n.apiKeyGemini=currentAIConfig.apiKeyGemini||""):"groq"===t?(n.apiKeyGroq=x.value.trim(),n.apiKeyOpenRouter=currentAIConfig.apiKeyOpenRouter||"",n.apiKeyLongcat=currentAIConfig.apiKeyLongcat||"",n.apiKeyGemini=currentAIConfig.apiKeyGemini||""):(n.apiKeyGemini=x.value.trim(),n.apiKeyOpenRouter=currentAIConfig.apiKeyOpenRouter||"",n.apiKeyLongcat=currentAIConfig.apiKeyLongcat||"",n.apiKeyGroq=currentAIConfig.apiKeyGroq||""),await saveAIConfig(n)}hideModal(t)},setupEnhancedScroll(n.querySelector("#mp-settings-scroll-area")),t.resetToCurrent=()=>{e={...currentThemeConfig},i(),p(),u();const t=n.querySelector("#mp-current-lang-display");t&&(t.textContent=translations[currentLang]?.langName||currentLang),d[0].click()},t}function parsePromptInternal(e){if(!e)return{processedText:"",ignoreMap:new Map,selectMap:new Map,inputMap:new Map,fileMap:new Map};let t=e;const n=new Map,o=new Map,a=new Map,r=new Map;let i=0,s=0,l=0,c=0;const p=e=>{if(!e)return"";let t=e.replace(/^[ \t]*\r?\n/,"");return t=t.replace(/\r?\n[ \t]*$/,""),t},d=e=>{if("string"!=typeof e)return e;let t=e;return n.forEach(((e,n)=>{n.startsWith("__ESC_CHAR_")&&(t=t.split(n).join(e))})),t},m=e=>{if("string"!=typeof e)return e;let t=e;return n.forEach(((e,n)=>{n.startsWith("__ESC_CHAR_")&&(t=t.split(n).join("\\"+e))})),t};t=t.replace(/([ \t]*)(#+)ignore[ \t]*(?:\r?\n)?([\s\S]*?)(?:\r?\n)?[ \t]*\2end/g,((e,t,o,a)=>{const r=`__IGNORE_BLK_${i++}__`;return n.set(r,a),r})),t=t.replace(/\\([#\[\]{}])/g,((e,t)=>{const o=`__ESC_CHAR_${i++}__`;return n.set(o,t),o}));t=t.replace(/('{2,})((?:(?!\1)[\s\S])*)\1/g,((e,t,o)=>{const a=`__QUOTE_${i++}__`;return n.set(a,o),a})),t=t.replace(/#(date|time)((?:-[YMDHS]{2})*)(?:\+(date|time)((?:-[YMDHS]{2})*))?/gi,((e,t,n,o,a)=>{const r=new Date,i=String(r.getDate()).padStart(2,"0"),s=String(r.getMonth()+1).padStart(2,"0"),l=String(r.getFullYear()).slice(-2),c=String(r.getHours()).padStart(2,"0"),p=String(r.getMinutes()).padStart(2,"0"),d=String(r.getSeconds()).padStart(2,"0");function m(e,t){if(!e)return"";const n=(t||"").toUpperCase();let o=[];return"date"===e.toLowerCase()?(n.includes("-DD")||o.push(i),n.includes("-MM")||o.push(s),n.includes("-YY")||o.push(l),o.join("/")):"time"===e.toLowerCase()?(n.includes("-HH")||o.push(c),n.includes("-MM")||o.push(p),n.includes("-SS")||o.push(d),o.join(":")):""}let u=m(t,n),g=m(o,a);return u&&g?`${u} - ${g}`:u||g||e})),t=t.replace(/#file(?:\(([^)]+)\))?/gi,((e,t)=>{const n=t?t.trim():void 0!==getTranslation&&getTranslation("addCardTitle")||"";let o=null;for(const[e,t]of r.entries())if(t.title===n){o=e;break}if(o)return o;const a=`__FILE_${c++}__`;return r.set(a,{title:n}),a}));return t=t.replace(/([ \t]*)(#+)start[ \t]*(?:\r?\n)?([\s\S]*?)(?:\r?\n)?[ \t]*\2end/g,((e,t,a,r)=>{const i=`__SELECT_${s++}__`,l=[];let c=null;const u=!r.includes("\n"),g=/(?:#\s*(?!start|end)(.*?)(?=\/\/|\r?\n|$))|(?:([+\-]|\d+)\s*\[([^\]]*)\])|(?:(__QUOTE_\d+__)|'([^'\\]*(?:\\.[^'\\]*)*)')/g;let f;for(;null!==(f=g.exec(r));)if(void 0!==f[1]){const e=d(f[1].trim());e&&(l.push({type:"header",label:e}),c=null)}else if(f[2]){const e=f[2],t=d(f[3]);let n="+"===e?"multi":"-"===e?"sovereign":"id";c={label:t,value:t,type:n,id:"id"===n?e:null},l.push(c)}else if(c)if(f[4]){const e=f[4];n.has(e)&&(c.value=m(p(n.get(e))))}else if(void 0!==f[5]){let e=f[5];e=p(e),e=e.replace(/\\'/g,"'"),c.value=m(e)}return o.set(i,{title:void 0!==getTranslation?getTranslation("select"):"Select",options:l,isInline:u,indent:t}),i})),t=t.replace(/\[([^\]=]+?)\s*=\s*(\$[a-zA-Z0-9_]+)\](?:\(([^)]*)\))?/g,((e,t,n,o,r,i)=>{if(t.startsWith("__")&&t.endsWith("__"))return e;const s=`__INPUT_${l++}__`;let c=o||"";return a.set(s,{label:d(t.trim()),varName:n.trim(),context:d(c),silent:!1}),s})),t=t.replace(/\{([^}=]+?)\s*=\s*(\$[a-zA-Z0-9_]+)\}(?:\(([^)]*)\))?/g,((e,t,n,o,r,i)=>{if(t.startsWith("__")&&t.endsWith("__"))return e;const s=`__INPUT_${l++}__`;let c=o||"";return a.set(s,{label:d(t.trim()),varName:n.trim(),context:d(c),silent:!0}),s})),t=t.replace(/\[([^\]]+?)\](?:\(([^)]*)\))?/g,((e,t,n,o,r)=>{if(t.startsWith("__")&&t.endsWith("__"))return e;if(a.has(e))return e;const i=`__INPUT_${l++}__`;let s=n||"";return a.set(i,{label:d(t.trim()),varName:null,context:d(s),silent:!1}),i})),{processedText:t,ignoreMap:n,selectMap:o,inputMap:a,fileMap:r}}function createPlaceholderModal(){const e=document.createElement("div");e.className="mp-overlay mp-hidden",e.id="__ap_placeholder_modal_overlay";const t=document.createElement("div");t.className="mp-modal-box",t.onclick=e=>e.stopPropagation();const n=`\n            <button id="__ap_ph_expand_btn" class="mp-modal-expand-btn" title="${getTranslation("expand")}">${ICONS.expand}</button>\n            <button id="__ap_close_placeholder" class="mp-modal-close-btn" aria-label="${getTranslation("close")}">${ICONS.close}</button>\n            <h2 class="modal-title">${getTranslation("fillPlaceholders")}</h2>\n            <div id="__ap_placeholders_container"></div>\n            <div class="modal-footer"><button id="__ap_insert_prompt" class="save-button">${getTranslation("insert")}</button></div>\n        `;setSafeInnerHTML(t,n),e.appendChild(t);const o=t.querySelector("#__ap_placeholders_container");o.style.maxHeight="450px",setupEnhancedScroll(o);const a=t.querySelector("#__ap_ph_expand_btn");let r=!1;return a.onclick=e=>{e.stopPropagation(),r=!r,r?(t.classList.add("mp-expanded"),setSafeInnerHTML(a,`${ICONS.collapse}`),a.title=getTranslation("collapse")):(t.classList.remove("mp-expanded"),setSafeInnerHTML(a,`${ICONS.expand}`),a.title=getTranslation("expand")),setTimeout((()=>{o.updateScrollArrows&&o.updateScrollArrows()}),350)},e}function createPromptMenu(){const e=document.createElement("div");return e.className="prompt-menu",e.id="prompt-menu-container",e}function createPromptModal(){const e=document.createElement("div");e.className="mp-overlay mp-hidden",e.id="__ap_modal_overlay";const t=document.createElement("div");t.className="mp-modal-box",t.id="__ap_modal_box_el",t.style.cssText="overflow: hidden; display: flex; flex-direction: column; position: relative;",t.onclick=e=>e.stopPropagation(),setSafeInnerHTML(t,`<button id="__ap_expand_btn" class="mp-modal-expand-btn">${ICONS.expand}</button> <button id="__ap_shop_btn" class="mp-modal-shop-btn">${ICONS.shop}</button> <button id="__ap_info_btn" class="mp-modal-info-btn">${ICONS.info}</button> <button id="__ap_close_prompt" class="mp-modal-close-btn">${ICONS.close}</button>`);const n=document.createElement("div");n.id="__ap_inner_content_scroll",n.style.cssText="height: 100%; width: 100%; display: flex; flex-direction: column;",setSafeInnerHTML(n,`<h2 class="modal-title" style="flex-shrink:0; margin-top: 10px;">${getTranslation("newPrompt")}</h2><div class="form-group" style="flex-shrink:0;"><label for="__ap_title" class="form-label">${getTranslation("title")}</label><input id="__ap_title" class="form-input" /></div><div class="form-group" style="height: 300px; flex-shrink: 0; display: flex; flex-direction: column;"><div class="mp-label-wrapper"><label for="__ap_text" class="form-label" style="margin-bottom:0;">${getTranslation("prompt")}</label><div class="mp-modal-right-controls"><button id="__ap_enhance_btn" class="mp-enhance-ai-btn"><span class="icon">${ICONS.magic}</span></button><button id="__ap_paste_btn_modal" class="mp-paste-btn">${ICONS.paste}</button></div></div><textarea id="__ap_text" class="form-textarea" spellcheck="false" style="height:100% !important; resize:none;"></textarea></div><div class="mp-accordions-row"><div class="mp-files-accordion" id="__ap_files_accordion"><div class="mp-accordion-header" id="__ap_files_header"><div style="display:flex;align-items:center;gap:8px;">${ICONS.folder}<span id="__ap_files_label">${getTranslation("filesLabel")}</span></div> ${ICONS.chevron} </div><div class="mp-accordion-content" id="__ap_files_content"><div id="__ap_file_scroll_wrapper" class="mp-file-scroll-wrapper"><div id="__ap_file_grid" class="mp-file-grid"></div></div><input type="file" id="__ap_file_input" multiple style="display:none"></div></div><div class="mp-tags-accordion" id="__ap_tags_accordion"><div class="mp-accordion-header" id="__ap_tags_header"><div style="display:flex;align-items:center;gap:8px;">${ICONS.tag}<span id="__ap_tags_label">${getTranslation("tags")}</span></div> ${ICONS.chevron} </div><div class="mp-accordion-content" id="__ap_tags_content"><div id="__ap_tags_scroll_wrapper" class="mp-tags-scroll-wrapper"><div id="__ap_tags_grid" class="mp-tags-grid"></div></div><div class="mp-tags-accordion-footer"><button id="__ap_tags_manage" class="mp-tags-manage-btn">${ICONS.edit}<span>${getTranslation("manageTags")}</span></button></div></div></div></div><div class="mp-switch-container" style="flex-shrink:0;"><div class="mp-switch"><input type="checkbox" id="__ap_use_placeholders" /><label for="__ap_use_placeholders">Toggle</label><span class="switch-text" onclick="document.getElementById('__ap_use_placeholders').click()">${getTranslation("enablePlaceholders")}</span></div><div class="mp-switch"><input type="checkbox" id="__ap_auto_execute" /><label for="__ap_auto_execute">Toggle</label><span class="switch-text" onclick="document.getElementById('__ap_auto_execute').click()">${getTranslation("autoExecute")}</span></div></div><div class="modal-footer" style="flex-shrink:0; margin-top: auto;"><button id="__ap_save" class="save-button">${getTranslation("save")}</button></div> `),t.appendChild(n),e.appendChild(t);const o=t.querySelector("#__ap_files_accordion"),a=t.querySelector("#__ap_files_header"),r=t.querySelector("#__ap_file_scroll_wrapper"),i=t.querySelector("#__ap_file_input"),s=t.querySelector("#__ap_file_grid"),l=t.querySelector("#__ap_files_label"),c=t.querySelector("#__ap_tags_accordion"),p=t.querySelector("#__ap_tags_header"),d=t.querySelector("#__ap_tags_scroll_wrapper"),m=t.querySelector("#__ap_tags_grid"),u=t.querySelector("#__ap_tags_label"),g=t.querySelector("#__ap_tags_manage"),f=t.querySelector("#__ap_enhance_btn"),v=t.querySelector("#__ap_text"),h=t.querySelector("#__ap_paste_btn_modal");a.addEventListener("click",(e=>{e.stopPropagation(),o.classList.toggle("open"),o.classList.contains("open")&&r.updateScrollArrows&&setTimeout((()=>r.updateScrollArrows()),50)})),p.addEventListener("click",(e=>{e.stopPropagation(),c.classList.toggle("open"),c.classList.contains("open")&&d.updateScrollArrows&&setTimeout((()=>d.updateScrollArrows()),50)})),g.addEventListener("click",(e=>{e.stopPropagation(),openTagsManager()})),t.renderTagsSelector=()=>{const e=getAllTags(),n=currentPromptTags.size,o=e.length;if(u.textContent=0===o?getTranslation("tags"):getTranslation("tagsLabel").replace("{active}",n).replace("{total}",o),setSafeInnerHTML(m,""),0===e.length){d.classList.add("empty-state"),m.classList.add("empty-state");const e=document.createElement("div");e.className="mp-tags-empty-icon",setSafeInnerHTML(e,ICONS.tag);const t=document.createElement("div");return t.className="mp-tags-empty-text",t.textContent=getTranslation("noTags"),m.appendChild(e),m.appendChild(t),void(d.onclick=e=>{e.stopPropagation(),openTagsManager()})}d.classList.remove("empty-state"),m.classList.remove("empty-state"),d.onclick=null,e.forEach((e=>{const n=e.name.toLowerCase(),o=currentPromptTags.has(n),a=document.createElement("div");if(a.className="mp-tag-select-item "+(o?"active":""),o){const t=getTagStyle(e);a.style.backgroundColor=t.backgroundColor,a.style.color=t.color}else a.style.backgroundColor="",a.style.color="";a.textContent=e.name,e.comment&&createCustomTooltip(a,e.comment,"top"),a.addEventListener("click",(e=>{e.stopPropagation(),currentPromptTags.has(n)?currentPromptTags.delete(n):currentPromptTags.add(n),t.renderTagsSelector()})),m.appendChild(a)}))},v.addEventListener("keydown",(e=>{isShortcutPressed(e,"enhancePrompt")&&(e.preventDefault(),e.stopPropagation(),f.click())})),createCustomTooltip(f,getTranslation("enhanceTooltip"),"top"),f.onclick=async()=>{const e=v.value.trim();if(!e)return void alert(getTranslation("noTextToEnhance"));if(!getRotatingApiKey(getProvider(currentAIConfig.model)))return void showAPIKeyRequiredModal();f.classList.add("loading");const t=f.innerHTML;setSafeInnerHTML(f,ICONS.loading);try{showAIDiffModal(e,await callAI_API(e),v)}catch(e){console.error(e),alert(getTranslation("aiErrorPrefix")+e.message)}finally{f.classList.remove("loading"),setSafeInnerHTML(f,t)}},createCustomTooltip(h,getTranslation("paste"),"top"),h.addEventListener("click",(async e=>{e.preventDefault(),e.stopPropagation();try{const e=await navigator.clipboard.readText();if(e){const t=v.selectionStart,n=v.selectionEnd,o=v.value;v.value=o.substring(0,t)+e+o.substring(n),v.selectionStart=v.selectionEnd=t+e.length,v.dispatchEvent(new Event("input",{bubbles:!0})),v.focus()}}catch(e){}}));const y=t.querySelector("#__ap_shop_btn");createCustomTooltip(y,getTranslation("getMorePrompts"),"bottom"),y.onclick=e=>{e.stopPropagation(),window.open("https://ko-fi.com/ohas/shop/prompt","_blank")};createCustomTooltip(t.querySelector("#__ap_info_btn"),getTranslation("infoTitle"),"bottom");const b=t.querySelector("#__ap_close_prompt");async function x(e){for(const n of e){if(n.size>5242880){const e=(n.size/1024/1024).toFixed(1);if(!confirm(getTranslation("confirmLargeFile").replace("{fileSizeMB}",e)))continue}const e=new FileReader;e.onload=async e=>{const a={id:Date.now()+Math.random().toString(36).substr(2,9),name:n.name,type:n.type,size:n.size,data:e.target.result};await saveGlobalFile(a),currentActiveFileIds.add(a.id),t.renderGlobalFiles&&(o.classList.contains("open")||o.classList.add("open"),t.renderGlobalFiles())},e.readAsDataURL(n)}}createCustomTooltip(b,getTranslation("close"),"bottom"),b.onclick=()=>{SyntaxHighlighter.detach(),e.classList.add("mp-hidden"),setTimeout((()=>e.remove()),200)},attachSmartEditorLogic(v),setTimeout((()=>{const e=setupEnhancedScroll(v,null,"var(--mp-border-radius-md)");e&&e.classList.add("prompt-editor-scroll-wrapper"),setTimeout((()=>SyntaxHighlighter.attach(v)),10),setupEnhancedScroll(r,null,"0"),setupEnhancedScroll(d,null,"0");const t=setupEnhancedScroll(n);t&&(t.style.height="100%",t.style.width="100%",t.style.borderRadius="inherit")}),0),t.renderGlobalFiles=async()=>{const e=await getGlobalFiles();setSafeInnerHTML(s,"");let n=0;if(e.forEach((e=>{currentActiveFileIds.has(e.id)&&n++})),l.textContent=getTranslation("filesCounter").replace("{active}",n).replace("{total}",e.length),0===e.length){r.classList.add("empty-state"),s.classList.add("empty-state");const e=document.createElement("div");e.className="mp-file-empty-icon",setSafeInnerHTML(e,`${ICONS.cloudFile}`);const t=document.createElement("div");t.className="mp-file-empty-text",t.textContent=getTranslation("addCardTitle");const n=document.createElement("div");return n.className="mp-file-empty-subtext",n.textContent=getTranslation("addCards"),s.appendChild(e),s.appendChild(t),s.appendChild(n),void(r.onclick=e=>{e.stopPropagation(),i.click()})}r.classList.remove("empty-state"),s.classList.remove("empty-state"),r.onclick=null;const o=document.createElement("div");o.className="mp-add-file-card",o.title=getTranslation("addCardTitle"),setSafeInnerHTML(o,`${ICONS.plus}`),o.addEventListener("click",(e=>{e.stopPropagation(),i.click()})),s.appendChild(o),e.forEach((e=>{const n=currentActiveFileIds.has(e.id),o=document.createElement("div");o.className="mp-file-card "+(n?"active":"inactive"),o.title=e.name,o.addEventListener("click",(n=>{n.stopPropagation(),currentActiveFileIds.has(e.id)?currentActiveFileIds.delete(e.id):currentActiveFileIds.add(e.id),t.renderGlobalFiles()}));const a=document.createElement("div");a.className="mp-file-delete-perm",setSafeInnerHTML(a,`${ICONS.close}`),a.addEventListener("click",(async n=>{n.stopPropagation(),confirm(getTranslation("confirmDeleteFile"))&&(await deleteGlobalFile(e.id),currentActiveFileIds.delete(e.id),t.renderGlobalFiles())}));let r="";r=e.type.startsWith("image/")?`<img src="${e.data}" class="mp-file-thumb">`:`${ICONS.file}`,setSafeInnerHTML(o,r),o.appendChild(a),s.appendChild(o)})),r.updateScrollArrows&&setTimeout((()=>r.updateScrollArrows()),50)},r.addEventListener("dragover",(e=>{e.preventDefault(),e.stopPropagation()})),r.addEventListener("drop",(async e=>{e.preventDefault(),e.stopPropagation(),x(e.dataTransfer.files)})),i.addEventListener("change",(e=>{x(e.target.files),i.value=""}));const _=t.querySelector("#__ap_expand_btn");let C=!1;return createCustomTooltip(_,getTranslation("expand"),"bottom"),_.onclick=e=>{e.stopPropagation(),C=!C,C?(t.classList.add("mp-expanded"),setSafeInnerHTML(_,`${ICONS.collapse}`),createCustomTooltip(_,getTranslation("collapse"),"bottom")):(t.classList.remove("mp-expanded"),setSafeInnerHTML(_,`${ICONS.expand}`),createCustomTooltip(_,getTranslation("expand"),"bottom")),setTimeout((()=>{v.updateScrollArrows&&v.updateScrollArrows()}),350)},t.loadPromptTags=e=>{currentPromptTags=new Set(e||[]),t.renderTagsSelector()},t.getCurrentTags=()=>Array.from(currentPromptTags),e}function showAIDiffModal(e,t,n){const o=document.createElement("div");o.className="mp-overlay mp-diff-modal-overlay",o.id="__ap_diff_overlay";const a=document.createElement("div");a.className="mp-modal-box",setSafeInnerHTML(a,` <button id="__ap_diff_close" class="mp-modal-close-btn" title="${getTranslation("close")}">${ICONS.close}</button><h2 class="modal-title">${getTranslation("compareTitle")}</h2><div class="mp-diff-container"><div class="mp-diff-column"><div class="mp-diff-label">${getTranslation("originalLabel")}</div><textarea id="__ap_diff_original" class="mp-diff-textarea" readonly>${e}</textarea></div><div class="mp-diff-column"><div class="mp-diff-label enhanced">${getTranslation("enhancedLabel")}</div><textarea id="__ap_diff_enhanced" class="mp-diff-textarea">${t}</textarea></div></div><div class="mp-diff-actions"><button id="__ap_diff_cancel" class="mp-button-secondary">${getTranslation("keepOriginal")}</button><button id="__ap_diff_accept" class="save-button">${getTranslation("useEnhanced")}</button></div> `),o.appendChild(a),document.body.appendChild(o);const r=()=>{o.classList.remove("visible"),setTimeout((()=>o.remove()),200)};a.querySelector("#__ap_diff_close").onclick=r,a.querySelector("#__ap_diff_cancel").onclick=r,a.querySelector("#__ap_diff_accept").onclick=()=>{n.value=a.querySelector("#__ap_diff_enhanced").value,n.syntaxClear&&n.syntaxClear(),n.syntaxUpdate&&n.syntaxUpdate(),r()},requestAnimationFrame((()=>o.classList.add("visible")))}function showAPIKeyRequiredModal(){const e=document.createElement("div");e.className="mp-overlay";const t=document.createElement("div");t.className="mp-modal-box",t.style.cssText="max-width: 450px;",setSafeInnerHTML(t,`\n            <button id="__ap_key_close" class="mp-modal-close-btn">${ICONS.close}</button>\n            <h2 class="modal-title">${getTranslation("apiKeyTitle")}</h2>\n            <div class="mp-apikey-info-box">\n                <p>${getTranslation("apiKeyDesc")}</p>\n            </div>\n            <div class="modal-footer">\n                <button id="__ap_open_settings" class="save-button">${getTranslation("openConfig")}</button>\n            </div>\n        `),e.appendChild(t),document.body.appendChild(e);const n=()=>{e.classList.remove("visible"),setTimeout((()=>e.remove()),200)};t.querySelector("#__ap_key_close").onclick=n,t.querySelector("#__ap_open_settings").onclick=()=>{n(),settingsModal||(settingsModal=createSettingsModal(),document.body.appendChild(settingsModal)),settingsModal.resetToCurrent&&settingsModal.resetToCurrent(),showModal(settingsModal),setTimeout((()=>{const e=settingsModal.querySelector('.mp-tab-btn[data-tab="advanced"]');e&&e.click()}),50)},requestAnimationFrame((()=>{e.classList.add("visible")}))}function createInfoModal(){const e=document.createElement("div");e.className="mp-overlay mp-hidden",e.id="__ap_info_modal_overlay";const t=document.createElement("div");t.className="mp-modal-box",t.onclick=e=>e.stopPropagation();return setSafeInnerHTML(t,` <button id="__ap_close_info" class="mp-modal-close-btn" aria-label="${getTranslation("close")}">${ICONS.close}</button><h2 class="modal-title">${getTranslation("infoTitle")}</h2><div class="mp-info-table"><div class="mp-info-row"><div class="mp-info-col"><h3>${getTranslation("enablePlaceholders")}</h3></div><div class="mp-info-col"><h3>${getTranslation("autoExecute")}</h3></div></div><div class="mp-info-row"><div class="mp-info-col"><p>${getTranslation("infoDPDesc")}</p></div><div class="mp-info-col"><p>${getTranslation("infoASDesc")}</p></div></div></div> `),e.appendChild(t),e}function openPromptModal(e=null){if(!currentModal)return;const t=!!e;currentModal.dataset.promptId=e?.id||"",currentModal.querySelector(".modal-title").textContent=getTranslation(t?"edit":"newPrompt"),document.getElementById("__ap_title").value=e?.title||"";const n=document.getElementById("__ap_text");n.value=e?.text||"",n.syntaxClear&&n.syntaxClear(),n.syntaxUpdate&&n.syntaxUpdate(),document.getElementById("__ap_use_placeholders").checked=e?.usePlaceholders||!1,document.getElementById("__ap_auto_execute").checked=e?.autoExecute||!1,currentActiveFileIds=new Set(e?.activeFileIds||[]);const o=currentModal.querySelector(".mp-modal-box"),a=o.querySelector("#__ap_accordion"),r=o.querySelector("#__ap_tags_accordion");a&&a.classList.remove("open"),r&&r.classList.remove("open"),o&&o.renderGlobalFiles&&o.renderGlobalFiles(),o&&o.loadPromptTags&&o.loadPromptTags(e?.tags||[]),showModal(currentModal),setTimeout((()=>document.getElementById("__ap_title").focus()),100)}function createLanguageModal(){const e=document.createElement("div");e.className="mp-overlay mp-hidden lang-overlay",e.id="__ap_lang_modal_overlay",e.onclick=()=>hideModal(e);const t=document.createElement("div");t.className="mp-modal-box lang-box",t.onclick=e=>e.stopPropagation();const n=document.createElement("input");n.className="lang-search-input",n.placeholder="function"==typeof getTranslation&&translations[currentLang]?.search?getTranslation("search"):"Search language...",n.type="prompt",n.autocomplete="off";const o=document.createElement("div");function a(e=""){setSafeInnerHTML(o,"");const t=e.toLowerCase();Object.keys(translations).forEach(((e,n)=>{const a=translations[e].langName;if(t&&!a.toLowerCase().includes(t))return;const r=document.createElement("button");r.className="lang-button",r.textContent=a,e===currentLang&&r.classList.add("selected"),r.style.animation="mp-fade-in-up .3s ease forwards",r.style.animationDelay=`${Math.min(30*n,200)}ms`,r.style.opacity="0",r.onclick=async()=>{await GM_setValue(LANG_STORAGE_KEY,e),window.location.reload()},o.appendChild(r)}))}o.style.display="flex",o.style.flexDirection="column",o.style.gap="8px",o.style.maxHeight="400px",a(),n.oninput=e=>a(e.target.value),t.appendChild(n),t.appendChild(o),setupEnhancedScroll(o),e.appendChild(t);return new MutationObserver((()=>{e.classList.contains("visible")&&setTimeout((()=>n.focus()),50)})).observe(e,{attributes:!0,attributeFilter:["class"]}),e}function showModal(e){e&&(e.classList.remove("mp-hidden"),setTimeout((()=>e.classList.add("visible")),10))}function hideModal(e){e&&(e.classList.remove("visible"),setTimeout((()=>e.classList.add("mp-hidden")),200))}async function openBackupManager(){closeMenu();const e=document.createElement("div");e.className="mp-overlay",e.id="__ap_backup_overlay";const t=document.createElement("div");t.className="mp-modal-box",t.style.width="450px !important",t.onclick=e=>e.stopPropagation();const n=[{key:"aiSettings",label:getTranslation("aiSettings"),desc:getTranslation("aiSettingsDesc"),storageKey:AI_SETTINGS_KEY,defaultVal:DEFAULT_AI_CONFIG},{key:"prompts",label:getTranslation("prompts"),desc:getTranslation("promptBdesc"),storageKey:PROMPT_STORAGE_KEY,defaultVal:[]},{key:"globalFiles",label:getTranslation("globalFiles"),desc:getTranslation("globalFilesDesc"),storageKey:GLOBAL_FILES_KEY,defaultVal:{}},{key:"tags",label:getTranslation("tagsManager"),desc:getTranslation("tagsInUse"),storageKey:TAGS_STORAGE_KEY,defaultVal:DEFAULT_TAGS_CONFIG},{key:"theme",label:getTranslation("theme"),desc:getTranslation("themeBackupDesc"),storageKey:THEME_STORAGE_KEY,defaultVal:DEFAULT_THEME_CONFIG},{key:"importedThemes",label:getTranslation("customThemes"),desc:getTranslation("customThemesDesc"),storageKey:IMPORTED_THEMES_KEY,defaultVal:{}},{key:"shortcuts",label:getTranslation("shortcuts"),desc:getTranslation("shortcutsDesc"),storageKey:SHORTCUTS_STORAGE_KEY,defaultVal:DEFAULT_SHORTCUTS},{key:"navConfig",label:getTranslation("navConfig"),desc:getTranslation("navConfigDesc"),storageKey:NAV_STORAGE_KEY,defaultVal:DEFAULT_NAV_CONFIG},{key:"prediction",label:getTranslation("prediction"),desc:getTranslation("predictionDesc"),storageKey:PREDICTION_STORAGE_KEY,defaultVal:DEFAULT_PREDICTION_CONFIG},{key:"syntaxHighlight",label:getTranslation("syntaxHighlight"),desc:getTranslation("syntaxBackupDesc"),storageKey:SYNTAX_STORAGE_KEY,defaultVal:DEFAULT_SYNTAX_CONFIG},{key:"lang",label:getTranslation("language"),desc:getTranslation("languageDesc"),storageKey:LANG_STORAGE_KEY,defaultVal:"en"}];setSafeInnerHTML(t,` <button id="__ap_close_backup" class="mp-modal-close-btn">${ICONS.close}</button><h2 class="modal-title">${getTranslation("backupRestoreT")}</h2><div class="mp-backup-section"><div class="mp-backup-subtitle"> ${ICONS.export} <span>${getTranslation("exportData")}</span></div><div class="mp-export-actions" style="border:none; margin-top:0; padding-bottom:0; margin-bottom: 8px;"><label class="mp-checkbox-wrapper" style="cursor:pointer; user-select:none;"><input type="checkbox" id="__ap_backup_select_all" class="mp-checkbox" checked><span style="margin-left:8px;">${getTranslation("selectAll")}</span></label></div><div class="mp-backup-list mp-scroll-wrapper" id="__ap_backup_list"></div><div class="mp-backup-actions"><button id="__ap_do_export_backup" class="save-button">${getTranslation("exportFile")}</button></div></div><div class="mp-backup-divider"></div><div class="mp-backup-section"><div class="mp-backup-subtitle"> ${ICONS.import} <span>${getTranslation("importData")}</span></div><div class="mp-backup-warning">${getTranslation("importWarning")}</div><div class="mp-backup-actions" style="justify-content: center;"><button id="__ap_do_import_backup" class="save-button mp-btn-secondary">${getTranslation("selectFile")}</button></div></div> `),e.appendChild(t),document.body.appendChild(e);const o=t.querySelector("#__ap_backup_list");o.style.maxHeight="220px !important",setupEnhancedScroll(o),n.forEach((e=>{const t=document.createElement("div");t.className="mp-backup-item";const n=document.createElement("div");n.className="mp-checkbox-wrapper";const a=document.createElement("input");a.type="checkbox",a.className="mp-checkbox backup-selector",a.dataset.key=e.key,a.dataset.storageKey=e.storageKey,a.checked=!0,n.appendChild(a);const i=document.createElement("div");i.className="mp-backup-item-content";const s=document.createElement("div");s.className="mp-backup-item-title",s.textContent=e.label;const l=document.createElement("div");l.className="mp-backup-item-desc",l.textContent=e.desc,i.appendChild(s),i.appendChild(l),t.onclick=e=>{"checkbox"!==e.target.type&&(a.checked=!a.checked,r())},a.onchange=r,t.appendChild(n),t.appendChild(i),o.appendChild(t)}));const a=t.querySelector("#__ap_backup_select_all");function r(){const e=o.querySelectorAll(".backup-selector"),t=Array.from(e).every((e=>e.checked)),n=Array.from(e).some((e=>e.checked));a.checked=t,a.indeterminate=n&&!t}a.onchange=e=>{o.querySelectorAll(".backup-selector").forEach((t=>t.checked=e.target.checked))},t.querySelector("#__ap_do_export_backup").onclick=async()=>{const t=Array.from(o.querySelectorAll(".backup-selector:checked"));if(0===t.length)return void alert(getTranslation("nothingSelected"));const n={meta:{scriptName:"My Prompt",version:"5.9",exportDate:(new Date).toISOString()},data:{}};for(const e of t){const t=e.dataset.storageKey,o=await GM_getValue(t);null!=o&&(n.data[t]=o)}const a=new Blob([JSON.stringify(n,null,2)],{type:"application/json"}),r=document.createElement("a");r.href=URL.createObjectURL(a);const i=new Date,s=i.toLocaleDateString(navigator.language).replace(/\//g,"-"),l=i.toLocaleTimeString(navigator.language,{hour:"2-digit",minute:"2-digit",second:"2-digit"}).replace(/:/g,"-");r.download=`Backup_MyPrompt_${s}_${l}.mp.backup.json`,r.click(),URL.revokeObjectURL(r.href),closeModal(e)},t.querySelector("#__ap_do_import_backup").onclick=()=>{const t=document.createElement("input");t.type="file",t.accept=".mp.backup.json",t.onchange=t=>{const n=t.target.files[0];if(!n)return;const o=new FileReader;o.onload=async t=>{try{const n=JSON.parse(t.target.result);if(!n.data)throw new Error("Invalid format");const o=Object.keys(n.data);if(0===o.length)throw new Error("Empty file");if(!confirm(getTranslation("confirmImportB",{count:o.length})))return;for(const e of o)await GM_setValue(e,n.data[e]);alert(getTranslation("importSuccess")),closeModal(e),location.reload()}catch(e){alert(getTranslation("errorImporting",{error:e.message}))}},o.readAsText(n)},t.click()},t.querySelector("#__ap_close_backup").onclick=()=>closeModal(e),e.onclick=t=>{t.target===e&&closeModal(e)},setTimeout((()=>e.classList.add("visible")),10)}function closeModal(e){e.classList.remove("visible"),setTimeout((()=>e.remove()),200)}function createTagsManagerModal(){const e=document.createElement("div");e.className="mp-overlay mp-hidden",e.id="__mp_tags_overlay";const t=document.createElement("div");t.className="mp-modal-box",t.id="__mp_tags_box",t.style.cssText="max-width: 500px;",t.onclick=e=>e.stopPropagation();let n=null;const o=()=>{const r=null!==n,i=r?getTag(n):null;setSafeInnerHTML(t,` <button id="__mp_tags_close" class="mp-modal-close-btn">${ICONS.close}</button><h2 class="modal-title">${getTranslation("tagsManager")}</h2><div class="mp-tags-modal-content" id="__mp_tags_content_scroll"><div class="mp-tag-form"><div class="form-group"><label for="__mp_tag_name" class="form-label">${getTranslation("tagName")}</label><input id="__mp_tag_name" class="form-input" placeholder="${getTranslation("exTag")}" value="${r?i.name:""}" ${r?'readonly style="opacity:0.6;cursor:not-allowed;"':""} /></div><div class="form-group" style="margin-bottom: 0px !important;"><label for="__mp_tag_comment" class="form-label">${getTranslation("tagComment")}</label><input id="__mp_tag_comment" class="form-input" placeholder="${getTranslation("exCommTag")}" value="${r&&i.comment||""}" /></div><div class="mp-tag-form-row"><div class="mp-tag-color-group"><label class="mp-tag-color-label">${getTranslation("tagBgColor")}</label><input id="__mp_tag_bg_color" type="color" class="mp-tag-color-input" value="${r&&i.bgColor||"#7071fc"}" /></div><div class="mp-tag-color-group"><label class="mp-tag-color-label">${getTranslation("tagTextColor")}</label><input id="__mp_tag_text_color" type="color" class="mp-tag-color-input" value="${r&&i.textColor||"#ffffff"}" /></div></div><button id="__mp_create_tag" class="save-button">${getTranslation(r?"saveTag":"createTag")}</button></div><div id="__mp_tags_list" class="mp-tags-list"></div></div> `);const s=t.querySelector("#__mp_tags_close");createCustomTooltip(s,getTranslation("close"),"bottom"),s.onclick=()=>{n=null,hideModal(e)};t.querySelector("#__mp_create_tag").onclick=async()=>{const e=t.querySelector("#__mp_tag_name"),a=t.querySelector("#__mp_tag_bg_color"),r=t.querySelector("#__mp_tag_text_color"),i=t.querySelector("#__mp_tag_comment"),s=e.value.trim();if(!s)return void alert(getTranslation("requiredFields"));const l=s.toLowerCase();if(!n&&currentTagsConfig.tags[l])return void alert(getTranslation("tagExists"));if(await createOrUpdateTag({name:s,bgColor:a.value,textColor:r.value,comment:i.value.trim()}),n=null,o(),currentModal){const e=currentModal.querySelector(".mp-modal-box");e&&e.renderTagsSelector&&e.renderTagsSelector()}const c=t.querySelector("#__mp_tag_name");c&&c.focus()},a(),setTimeout((()=>{const e=t.querySelector("#__mp_tags_content_scroll");e&&setupEnhancedScroll(e,null,"var(--mp-border-radius-md)")}),0)},a=()=>{const e=t.querySelector("#__mp_tags_list");if(!e)return;const r=getAllTags();0!==r.length?(setSafeInnerHTML(e,""),r.forEach((t=>{const r=document.createElement("div");r.className="mp-tag-item";const i=document.createElement("div");i.className="mp-tag-item-info";const s=document.createElement("div");s.className="mp-tag-item-preview";const l=createTagBadge(t);s.appendChild(l);const c=document.createElement("div");if(c.className="mp-tag-item-details",t.comment){const e=document.createElement("div");e.className="mp-tag-item-comment",e.textContent=t.comment,c.appendChild(e)}i.appendChild(s),i.appendChild(c);const p=document.createElement("div");p.className="mp-tag-item-actions";const d=document.createElement("button");d.className="mp-tag-action-btn edit",setSafeInnerHTML(d,ICONS.edit),createCustomTooltip(d,getTranslation("edit"),"top"),d.onclick=()=>{n=t.name.toLowerCase(),o()},p.appendChild(d);const m=document.createElement("button");m.className="mp-tag-action-btn delete",setSafeInnerHTML(m,ICONS.delete),createCustomTooltip(m,getTranslation("delete"),"top"),m.onclick=async()=>{if(confirm(getTranslation("confirmDeleteTag").replace("{name}",t.name))&&(await deleteTag(t.name),a(),currentMenu&&currentMenu.classList.contains("visible")&&refreshMenu(),currentModal)){const e=currentModal.querySelector(".mp-modal-box");e&&e.renderTagsSelector&&e.renderTagsSelector()}},p.appendChild(m),r.appendChild(i),r.appendChild(p),e.appendChild(r)}))):setSafeInnerHTML(e,`<div class="mp-tags-empty">${getTranslation("noTags")}</div>`)};return t.renderContent=o,e.appendChild(t),e}function createTagBadge(e){const t=document.createElement("div");t.className="mp-tag-badge";const n=getTagStyle(e);t.style.backgroundColor=n.backgroundColor,t.style.color=n.color;const o=document.createElement("span");return o.textContent=e.name,t.appendChild(o),e.comment&&createCustomTooltip(t,e.comment,"left"),t}function openTagsManager(){tagsModal||(tagsModal=createTagsManagerModal(),document.body.appendChild(tagsModal));const e=tagsModal.querySelector("#__mp_tags_box");e.renderContent&&e.renderContent(),showModal(tagsModal),setTimeout((()=>{const e=tagsModal.querySelector("#__mp_tag_name");e&&e.focus()}),100)}function setupEnhancedScroll(e,t=null,n=null){if(!e)return;const o=window.getComputedStyle(e),a=o.marginBottom,r=o.marginTop;e.classList.add("mp-scroll-invisible");const i=document.createElement("div");i.className="mp-scroll-wrapper",t&&i.style.setProperty("--mp-scroll-bg",t),n&&(i.style.borderRadius=n),i.style.marginBottom=a,i.style.marginTop=r,e.style.marginBottom="0",e.style.marginTop="0",e.parentNode.insertBefore(i,e),i.appendChild(e);const s=e=>{const t=document.createElement("div");return t.className=`mp-scroll-arrow ${e}`,setSafeInnerHTML(t,"up"===e?`${ICONS.navUp}`:`${ICONS.navDown}`),t},l=s("up"),c=s("down");i.appendChild(l),i.appendChild(c);const p=()=>{const{scrollTop:t,scrollHeight:n,clientHeight:o}=e;t>1?l.classList.add("visible"):l.classList.remove("visible"),n-t-o>1?c.classList.add("visible"):c.classList.remove("visible")};l.onclick=t=>{t.stopPropagation(),e.scrollBy({top:-100,behavior:"smooth"})},c.onclick=t=>{t.stopPropagation(),e.scrollBy({top:100,behavior:"smooth"})},e.addEventListener("scroll",p);new MutationObserver(p).observe(e,{childList:!0,subtree:!0});return new ResizeObserver(p).observe(e),e.updateScrollArrows=p,setTimeout(p,0),i}function moveCursorToEnd(e){setTimeout((()=>{try{if(e.focus(),"gemini"===currentPlatform){const t=window.getSelection(),n=document.createRange();n.selectNodeContents(e),n.collapse(!1),t.removeAllRanges(),t.addRange(n),e.scrollTop=e.scrollHeight}else if("mistral"===currentPlatform){const t=window.getSelection(),n=document.createRange();n.selectNodeContents(e),n.collapse(!1),t.removeAllRanges(),t.addRange(n);let o=e.parentElement,a=0;for(;o&&a<10;)o.scrollHeight>o.clientHeight&&(o.scrollTop=o.scrollHeight),o=o.parentElement,a++}else if("chatgpt"===currentPlatform||"claude"===currentPlatform||"grok"===currentPlatform){const t=window.getSelection(),n=document.createRange();if(n.selectNodeContents(e),n.collapse(!1),t.removeAllRanges(),t.addRange(n),"grok"===currentPlatform)e.scrollTop=e.scrollHeight;else{const t=e.parentElement;t&&(t.scrollTop=t.scrollHeight)}}else if("googleaistudio"===currentPlatform||"googleModoIA"===currentPlatform){const t=e.value.length;e.setSelectionRange(t,t),e.scrollTop=e.scrollHeight,e.blur(),e.focus(),e.setSelectionRange(t,t)}else{const t=e.value.length;e.setSelectionRange?e.setSelectionRange(t,t):e.selectionStart=e.selectionEnd=t,e.scrollTop=e.scrollHeight}}catch(e){}}),10)}function positionMenu(e,t){const n=t.getBoundingClientRect(),o=e.offsetHeight,a=e.offsetWidth,r=window.innerHeight,i=window.innerWidth;let s,l;const c=r-n.bottom-8,p=n.top-8;s=c>=o?n.bottom+8:p>=o?n.top-o-8:Math.max(8,r-o-8);const d=i-n.left-8,m=n.right-8;l=d>=a?n.left:m>=a?n.right-a:(i-a)/2,e.style.top=`${Math.max(8,Math.min(s,r-o-8))}px`,e.style.left=`${Math.max(8,Math.min(l,i-a-8))}px`}async function refreshMenu(e=null){if(!currentMenu)return;const t=currentMenu.querySelector("#prompt-menu-list-el"),n=t?t.scrollTop:0;setSafeInnerHTML(currentMenu,"");let o=-1;document.querySelectorAll(".mp-filter-dropdown").forEach((e=>e.remove()));const a=await getAll(),r=document.createElement("div");r.className="menu-search-container",r.style.position="relative";const i=document.createElement("input");i.className="menu-search-input",i.placeholder=getTranslation("search"),i.type="text",i.autocomplete="off",i.style.paddingRight="40px",i.onclick=e=>e.stopPropagation();const s=document.createElement("button");s.className="mp-filter-btn";const l=()=>{currentTagsConfig.activeFilters.length>0?(s.classList.add("active"),setSafeInnerHTML(s,ICONS.filterAct)):(s.classList.remove("active"),setSafeInnerHTML(s,ICONS.filter))};l(),createCustomTooltip(s,getTranslation("filterByTags"),"top");const c=document.createElement("div");c.className="mp-filter-dropdown",c.id="__mp_filter_dropdown";const p=document.createElement("div");p.className="mp-filter-header";const d=document.createElement("button");d.className="mp-filter-clear-btn",setSafeInnerHTML(d,ICONS.delete),createCustomTooltip(d,getTranslation("clearFilters"),"top"),d.onclick=async e=>{e.stopPropagation(),await clearTagFilters(),l(),u(),T()},p.appendChild(d);const m=document.createElement("div");m.className="mp-filter-list";const u=()=>{m.querySelectorAll(".mp-filter-item").forEach((e=>{isTagFilterActive(e.dataset.tagName)?e.classList.add("selected"):e.classList.remove("selected")}))},g=getAllTags();if(0===g.length){const e=document.createElement("div");e.className="mp-filter-empty",e.textContent=getTranslation("noTags"),m.appendChild(e)}else g.forEach((e=>{const t=e.name.toLowerCase(),n=isTagFilterActive(t),o=document.createElement("div");o.className="mp-filter-item "+(n?"selected":""),o.dataset.tagName=t;const a=document.createElement("div");a.className="mp-filter-checkbox";const r=document.createElement("div");r.className="mp-filter-tag-preview";const i=createTagBadge(e);r.appendChild(i),o.appendChild(a),o.appendChild(r),o.addEventListener("click",(async e=>{e.stopPropagation(),await toggleTagFilter(t),o.classList.toggle("selected"),l(),T()})),m.appendChild(o)}));c.appendChild(p),c.appendChild(m),setupEnhancedScroll(m);let f=!1;s.addEventListener("click",(e=>{e.stopPropagation(),f=!f,f?((()=>{const e=s.getBoundingClientRect(),t=currentMenu.getBoundingClientRect(),n=220,o=Math.min(280,m.scrollHeight+50);let a,r;a=t.right+8+n<=window.innerWidth?t.right+8:t.left-8-n>=0?t.left-n-8:Math.max(8,Math.min(e.left,window.innerWidth-n-8)),r=e.top,r+o>window.innerHeight-8&&(r=Math.max(8,window.innerHeight-o-8)),r<8&&(r=8),c.style.top=`${r}px`,c.style.left=`${a}px`,c.style.maxHeight=`${Math.min(280,window.innerHeight-r-8)}px`})(),c.classList.add("visible")):c.classList.remove("visible")}));const v=e=>{c.contains(e.target)||e.target===s||s.contains(e.target)||(c.classList.remove("visible"),f=!1)};setTimeout((()=>{document.addEventListener("click",v)}),0),r.appendChild(i),r.appendChild(s),currentMenu.appendChild(r),document.body.appendChild(c);const h=document.createElement("div");h.className="prompt-menu-list",h.id="prompt-menu-list-el";const y=document.createElement("div");y.className="empty-state",h.appendChild(y);const b=()=>{const e=Array.from(h.querySelectorAll(".prompt-item-row")).filter((e=>"none"!==e.style.display));if(h.querySelectorAll(".prompt-item-row.nav-selected").forEach((e=>e.classList.remove("nav-selected"))),o>=0&&o<e.length){const t=e[o];t.classList.add("nav-selected"),t.scrollIntoView({block:"nearest",behavior:"smooth"})}},x=(e,t,n,o)=>{const a=document.createElement("button");return a.className=`action-btn ${e}`,setSafeInnerHTML(a,t),"function"==typeof createCustomTooltip&&createCustomTooltip(a,n,"top"),a.onclick=e=>{e.stopPropagation(),o(e)},a},_=(e,t,n)=>{let o=e.querySelector(".prompt-actions");if(o||(o=document.createElement("div"),o.className="prompt-actions",e.appendChild(o)),setSafeInnerHTML(o,""),n){e.classList.add("drag-mode"),e.draggable=!0;const n=t.isFixed?getTranslation("unpin"):getTranslation("pin"),a=t.isFixed?"unpin":"pin";o.appendChild(x(a,ICONS.pin,n,(async()=>{t.isFixed=!t.isFixed,await updateById(t.id,{isFixed:t.isFixed}),_(e,t,!0)}))),o.appendChild(x("restore",ICONS.save,getTranslation("save"),(()=>{_(e,t,!1)})))}else e.classList.remove("drag-mode"),e.draggable=!1,o.appendChild(x("edit",ICONS.edit,getTranslation("edit"),(()=>openPromptModal(t)))),o.appendChild(x("delete",ICONS.delete,getTranslation("delete"),(()=>{confirm(getTranslation("confirmDelete",{title:t.title}))&&removeById(t.id).then((()=>{e.remove();0===h.querySelectorAll(".prompt-item-row").length&&(y.textContent=getTranslation("noSavedPrompts"),y.style.display="block")}))}))),o.appendChild(x("drag",ICONS.drag,getTranslation("move"),(()=>{_(e,t,!0)}))),t.isFixed&&o.appendChild(x("unpin",ICONS.pin,getTranslation("unpin"),(async()=>{t.isFixed=!1,await updateById(t.id,{isFixed:!1}),_(e,t,!1)})))},C=async(e,t)=>{if(e===t)return;const n=h.querySelector(`[data-prompt-id="${e}"]`),o=h.querySelector(`[data-prompt-id="${t}"]`);if(!n||!o)return;const a=Array.from(h.querySelectorAll(".prompt-item-row"));a.indexOf(n)<a.indexOf(o)?o.after(n):o.before(n),await(async()=>{const e=h.querySelectorAll(".prompt-item-row"),t=await getRawPrompts();let n=1;e.forEach((e=>{const o=e.dataset.promptId;t[o]&&(t[o].position=n++)})),await saveRawPrompts(t)})()},T=()=>{h.querySelectorAll(".prompt-item-row").forEach((e=>e.remove()));const t=a.filter((e=>promptMatchesFilter(e))),n=i.value.toLowerCase();if(0===t.length)return y.textContent=currentTagsConfig.activeFilters.length>0?getTranslation("noSearchResults"):getTranslation("noSavedPrompts"),void(y.style.display="block");y.style.display="none",y.textContent=getTranslation("noSearchResults");let r=0;t.forEach((t=>{const a=document.createElement("div");a.className="prompt-item-row",a.dataset.searchText=(t.title+" "+t.text).toLowerCase(),a.dataset.promptId=t.id,n&&!a.dataset.searchText.includes(n)?a.style.display="none":(a.style.display="flex",r++),a.addEventListener("dragstart",(e=>{e.stopPropagation(),e.dataTransfer.effectAllowed="move",e.dataTransfer.setData("text/plain",t.id),a.style.opacity="0.5"})),a.addEventListener("dragover",(e=>{e.preventDefault(),e.stopPropagation(),e.dataTransfer.dropEffect="move",a.classList.add("nav-selected");const t=h.getBoundingClientRect(),n=e.clientY-t.top;n<40?h.scrollTop-=10:n>t.height-40&&(h.scrollTop+=10)})),a.addEventListener("dragleave",(e=>{e.stopPropagation(),a.classList.remove("nav-selected")})),a.addEventListener("dragend",(e=>{e.stopPropagation(),a.style.opacity="1",h.querySelectorAll(".prompt-item-row").forEach((e=>e.classList.remove("nav-selected")))})),a.addEventListener("drop",(e=>{e.stopPropagation(),e.preventDefault(),a.classList.remove("nav-selected");const n=e.dataTransfer.getData("text/plain");n&&C(n,t.id)})),a.onmouseenter=()=>{h.querySelector(".drag-mode")||(o=-1,b())};const i=document.createElement("div");i.style.cssText="flex: 1; display: flex; flex-direction: column; overflow: hidden;";const s=document.createElement("div");s.className="prompt-title",s.textContent=t.title;const l=()=>{a.classList.contains("drag-mode")||(currentPlaceholderModal&&(currentPlaceholderModal.dataset.fromInline="false"),t.usePlaceholders?openPlaceholderModal(t):insertPrompt(t),closeMenu())};if(s.onclick=e=>{e.stopPropagation(),l()},a.executeItem=l,i.appendChild(s),t.tags&&t.tags.length>0){const e=document.createElement("div");e.className="prompt-tags-container",t.tags.forEach((t=>{const n=getTag(t);if(n){const t=createTagBadge(n);e.appendChild(t)}})),i.appendChild(e)}a.appendChild(i);const c=t.id===e;_(a,t,c),h.appendChild(a)})),0===r&&n&&(y.style.display="block")};T(),currentMenu.appendChild(h),setupEnhancedScroll(h),e?n>0?h.scrollTop=n:setTimeout((()=>{const t=h.querySelector(`[data-prompt-id="${e}"]`);t&&t.scrollIntoView({block:"nearest"})}),50):(n>0&&(h.scrollTop=n),setTimeout((()=>i.focus()),50)),i.oninput=e=>{const t=e.target.value.toLowerCase(),n=h.querySelectorAll(".prompt-item-row");let a=0;o=-1,n.forEach((e=>{e.dataset.searchText&&e.dataset.searchText.includes(t)?(e.style.display="flex",a++):e.style.display="none"})),b(),y.style.display=0===a?"block":"none"},i.onkeydown=e=>{if("Escape"===e.key)return void closeMenu();const t=Array.from(h.querySelectorAll(".prompt-item-row")).filter((e=>"none"!==e.style.display));0!==t.length&&("ArrowDown"===e.key?(o++,o>=t.length&&(o=0),b()):"ArrowUp"===e.key?(o--,o<0&&(o=t.length-1),b()):"Enter"===e.key&&o>=0&&t[o].executeItem&&t[o].executeItem())};const w=document.createElement("div");w.className="menu-footer-grid";const S=(e,t,n,o)=>{const a=document.createElement("button");return a.className=`menu-footer-btn ${e}`,setSafeInnerHTML(a,t),"function"==typeof createCustomTooltip&&createCustomTooltip(a,n,"bottom"),a.onclick=o,a};w.appendChild(S("btn-export",ICONS.export,getTranslation("export"),(e=>{e.stopPropagation(),exportPrompts()}))),w.appendChild(S("btn-add",ICONS.add,getTranslation("newPrompt"),(e=>{e.stopPropagation(),openPromptModal()}))),w.appendChild(S("btn-import",ICONS.import,getTranslation("import"),(e=>{e.stopPropagation(),importPrompts()}))),currentMenu.appendChild(w),currentMenu._filterCleanup=()=>{document.removeEventListener("click",v),c.parentNode&&c.remove()}}function closeMenu(){currentMenu&&(currentMenu._filterCleanup&&currentMenu._filterCleanup(),currentMenu.classList.contains("visible")&&currentMenu.classList.remove("visible")),document.querySelectorAll(".mp-filter-dropdown").forEach((e=>e.remove()))}function closeMenu(){currentMenu&&(currentMenu._filterCleanup&&currentMenu._filterCleanup(),currentMenu.classList.contains("visible")&&currentMenu.classList.remove("visible")),document.querySelectorAll(".mp-filter-dropdown").forEach((e=>e.remove()))}function closeMenu(){currentMenu&&currentMenu.classList.contains("visible")&&currentMenu.classList.remove("visible"),document.querySelectorAll(".mp-filter-dropdown").forEach((e=>e.remove()))}function closeMenu(){currentMenu&&currentMenu.classList.contains("visible")&&currentMenu.classList.remove("visible")}function openPlaceholderModal(e){const{processedText:t,ignoreMap:n,selectMap:o,inputMap:a,fileMap:r}=parsePromptInternal(e.text);if(0===o.size&&0===a.size&&0===r.size){let o=t;n.forEach(((e,t)=>{o=o.replace(t,e)}));return void insertPrompt({...e,text:o})}if(!currentPlaceholderModal)return;const i=document.getElementById("__ap_placeholders_container");setSafeInnerHTML(i,""),currentPlaceholderModal.dataset.parseData=JSON.stringify({processedText:t,ignoreMap:Array.from(n.entries()),selectMap:Array.from(o.entries()),inputMap:Array.from(a.entries()),fileMap:Array.from(r.entries())}),currentPlaceholderModal.dataset.promptId=e.id||"",currentPlaceholderModal.dataset.originalItem=JSON.stringify(e),currentPlaceholderModal._tempFiles||(currentPlaceholderModal._tempFiles=new Map),currentPlaceholderModal._tempFiles.clear(),r.forEach(((e,t)=>{const n=document.createElement("div");n.className="form-group",n.dataset.fileKey=t;const o=document.createElement("label");o.className="form-label",o.textContent=e.title,n.appendChild(o);const a=document.createElement("div");a.className="mp-file-scroll-wrapper mp-dynamic-dropzone";const r=document.createElement("div");r.className="mp-file-grid mp-dynamic-grid-w100",a.appendChild(r);const s=document.createElement("input");s.type="file",s.multiple=!0,s.className="mp-hidden-file-input",n.appendChild(a),n.appendChild(s);const l=()=>{const e=currentPlaceholderModal._tempFiles.get(t)||[];if(setSafeInnerHTML(r,""),0===e.length){r.classList.add("empty-state"),a.classList.add("empty-state");const e=document.createElement("div");e.className="mp-empty-state-container";const t=document.createElement("div");t.className="mp-file-empty-icon",setSafeInnerHTML(t,void 0!==ICONS?ICONS.cloudFile:"");const n=document.createElement("div");n.className="mp-file-empty-subtext",n.textContent=void 0!==getTranslation&&getTranslation("addCards")||"",e.appendChild(t),e.appendChild(n),r.appendChild(e)}else{r.classList.remove("empty-state"),a.classList.remove("empty-state");const t=document.createElement("div");t.className="mp-add-file-card",setSafeInnerHTML(t,void 0!==ICONS?ICONS.plus:""),t.onclick=e=>{e.stopPropagation(),s.click()},r.appendChild(t),e.forEach(((t,n)=>{const o=document.createElement("div");o.className="mp-file-card active",o.title=t.name;const a=document.createElement("div");if(a.className="mp-file-delete-perm",setSafeInnerHTML(a,void 0!==ICONS?ICONS.close:""),a.onclick=t=>{t.stopPropagation(),t.preventDefault(),e.splice(n,1),l()},t.type.startsWith("image/")){const e=document.createElement("img");e.className="mp-file-thumb",e.src=URL.createObjectURL(t),o.appendChild(e)}else setSafeInnerHTML(o,void 0!==ICONS?ICONS.file:"");o.appendChild(a),r.appendChild(o)}))}};currentPlaceholderModal._tempFiles.set(t,[]),l(),a.onclick=e=>{e.target.closest(".mp-file-delete-perm")||s.click()},a.ondragover=e=>{e.preventDefault(),a.classList.add("drag-over")},a.ondragleave=e=>{e.preventDefault(),a.classList.remove("drag-over")},a.ondrop=e=>{if(e.preventDefault(),a.classList.remove("drag-over"),e.dataTransfer.files&&e.dataTransfer.files.length>0){const n=Array.from(e.dataTransfer.files);(currentPlaceholderModal._tempFiles.get(t)||[]).push(...n),l()}},s.onchange=e=>{if(e.target.files&&e.target.files.length>0){const n=Array.from(e.target.files);(currentPlaceholderModal._tempFiles.get(t)||[]).push(...n),l(),s.value=""}},i.appendChild(n)})),a.forEach(((e,t)=>{const r="string"==typeof e?e:e.label;let s="object"==typeof e&&e.context?e.context:null;s&&(a.forEach(((e,t)=>{if(s.includes(t)){const n="string"==typeof e?e:e.label;s=s.split(t).join(`[${n}]`)}})),o.forEach(((e,t)=>{s.includes(t)&&(s=s.split(t).join(`[List: ${e.title}]`))})),n.forEach(((e,t)=>{s.includes(t)&&(s=s.split(t).join("[...Code/Block...]"))})));const l=document.createElement("div");l.className="form-group",l.style.marginBottom="12px";const c=document.createElement("textarea");c.className="form-input dynamic-input",c.dataset.key=t,c.rows=1,c.style.resize="vertical",c.style.height="auto",c.placeholder=e.varName?e.varName:"";const p=document.createElement("div");p.className="mp-label-wrapper";const d=document.createElement("div");d.className="mp-label-left";const m=document.createElement("label");m.className="form-label",m.textContent=r,m.style.marginBottom="0",d.appendChild(m),p.appendChild(d);const u=document.createElement("div");if(u.className="mp-label-right",s){const e=document.createElement("button");e.className="mp-help-icon",e.type="button",setSafeInnerHTML(e,`${ICONS.info}`),createCustomTooltip(e,getTranslation("comment"),"top"),e.onclick=e=>{e.stopPropagation(),l.querySelector(".mp-context-bubble").classList.toggle("visible")},u.appendChild(e)}const g=document.createElement("button");g.className="mp-enhance-ai-btn",g.type="button",setSafeInnerHTML(g,`${ICONS.magic}`),createCustomTooltip(g,getTranslation("enhanceTooltip"),"top"),g.addEventListener("click",(async e=>{e.preventDefault(),e.stopPropagation(),await handleTextareaEnhancement(c,g)})),u.appendChild(g);const f=document.createElement("button");if(f.className="mp-paste-btn",f.type="button",setSafeInnerHTML(f,`${ICONS.paste}`),createCustomTooltip(f,getTranslation("paste"),"top"),f.addEventListener("click",(async e=>{e.preventDefault(),e.stopPropagation();try{const e=await navigator.clipboard.readText();if(e){const t=c.selectionStart,n=c.selectionEnd,o=c.value;c.value=o.substring(0,t)+e+o.substring(n),c.selectionStart=c.selectionEnd=t+e.length,c.dispatchEvent(new Event("input",{bubbles:!0})),c.focus()}}catch(e){}})),u.appendChild(f),p.appendChild(u),l.appendChild(p),s){const e=document.createElement("div");e.className="mp-context-bubble",e.textContent=s,l.appendChild(e)}c.addEventListener("keydown",(e=>{if(!e.isComposing&&229!==e.keyCode){if(isShortcutPressed(e,"lineBreak")){e.preventDefault(),e.stopPropagation();const t=c.selectionStart,n=c.selectionEnd,o=c.value;return c.value=o.substring(0,t)+"\n"+o.substring(n),c.selectionStart=c.selectionEnd=t+1,void c.dispatchEvent(new Event("input",{bubbles:!0}))}if(isShortcutPressed(e,"saveSend"))return e.preventDefault(),e.stopPropagation(),void document.getElementById("__ap_insert_prompt").click();if(isShortcutPressed(e,"enhancePrompt"))return e.preventDefault(),e.stopPropagation(),void(document.activeElement===c&&handleTextareaEnhancement(c));if("Enter"===e.key){if(e.ctrlKey||e.altKey||e.shiftKey||e.metaKey)return;e.preventDefault(),e.stopPropagation(),document.getElementById("__ap_insert_prompt").click()}}})),l.appendChild(c),i.appendChild(l)})),o.forEach(((e,t)=>{const n=document.createElement("div");n.dataset.selectKey=t,n.style.marginBottom="16px";let o=null;if(e.options.length>0&&"header"!==e.options[0].type){const t=document.createElement("label");t.className="form-label",t.textContent=e.title,t.style.marginBottom="6px",n.appendChild(t),o=document.createElement("div"),o.className="mp-option-group",n.appendChild(o)}e.options.forEach((e=>{if("header"===e.type){if(n.children.length>0){const e=document.createElement("div");e.style.height="8px",n.appendChild(e)}const t=document.createElement("label");t.className="form-label",t.textContent=e.label,t.style.color="var(--mp-accent-secondary)",n.appendChild(t),o=document.createElement("div"),o.className="mp-option-group",n.appendChild(o)}else{o||(o=document.createElement("div"),o.className="mp-option-group",n.appendChild(o));const t=document.createElement("label");if(t.className="mp-option-item","id"===e.type&&e.id){const n=getColorForId(e.id);t.style.cssText=`border-left: 5px solid ${n} !important; padding-left: 8px;`;const o="function"==typeof getTranslation?getTranslation("idGroup"):"ID Group";t.title=`${o}: ${e.id}`}else"sovereign"===e.type?(t.style.cssText="border-left: 5px solid #FF4444 !important; padding-left: 8px;",t.title="function"==typeof getTranslation?getTranslation("uniqueSelection"):"Unique Selection"):t.style.borderLeft="5px solid transparent";const a=document.createElement("input");a.type="checkbox",a.className="mp-checkbox",a.dataset.type=e.type,e.id&&(a.dataset.id=e.id),a.value=e.value,a.onchange=function(){if(!this.checked)return;const e=this.closest(".mp-option-group"),t=Array.from(e.querySelectorAll('input[type="checkbox"]')),n=this.dataset.type,o=this.dataset.id;t.forEach((e=>{e!==this&&("sovereign"!==n?("sovereign"===e.dataset.type&&(e.checked=!1),"id"===n&&"id"===e.dataset.type&&e.dataset.id===o&&(e.checked=!1)):e.checked=!1)}))};const r=document.createElement("span");r.textContent=e.label,"sovereign"===e.type&&(r.style.fontWeight="600",r.style.color="var(--mp-text-primary)"),t.appendChild(a),t.appendChild(r),o.appendChild(t)}})),i.appendChild(n)})),showModal(currentPlaceholderModal),setTimeout((()=>i.querySelector('textarea, input:not([type="file"])')?.focus()),100)}const mpColorPalette=["#4ECDC4","#45B7D1","#98D8C8","#F7DC6F","#BB8FCE","#82E0AA","#85C1E9","#DAF7A6","#FFC300","#3498DB","#2ECC71","#9B59B6","#F4D03F","#1ABC9C","#27AE60","#F39C12","#16A085","#34495E","#F5B041","#5499C7"];function getColorForId(e){if(!e)return"transparent";let t=String(e),n=0;for(let e=0;e<t.length;e++)n=t.charCodeAt(e)+((n<<5)-n);const o=Math.abs(n)%mpColorPalette.length;return mpColorPalette[o]}function applyChatGLMCustomStyles(){const e="mp-chatglm-left-align";if(document.getElementById(e))return;const t=document.createElement("style");t.id=e;setSafeInnerHTML(t,"body {text-align: left !important;}"),document.head.appendChild(t)}function applyGrokCustomStyles(){const e="my-prompt-grok-padding";if(document.getElementById(e))return;const t=document.createElement("style");t.id=e;setSafeInnerHTML(t,".tiptap.ProseMirror { padding-right: 70px !important; }"),document.head.appendChild(t)}function createInlineMenu(){if(inlineMenu)return inlineMenu;const e=document.createElement("div");return e.className="mp-inline-menu",document.body.appendChild(e),inlineMenu=e,e}function closeInlineMenu(){inlineMenu&&(inlineMenu.classList.remove("visible"),inlineMenuCurrentItems=[],inlineMenuIndex=0)}function renderInlineList(e,t){if(inlineMenu||createInlineMenu(),setSafeInnerHTML(inlineMenu,""),0===e.length)return void closeInlineMenu();const n=document.createElement("div");n.className="mp-inline-list",e.forEach(((e,o)=>{const a=document.createElement("div");a.className="mp-inline-item "+(o===inlineMenuIndex?"selected":""),a.onmousedown=n=>{n.preventDefault(),n.stopPropagation(),completeInlinePrompt(e,t)};const r=document.createElement("span");r.className="mp-inline-title",r.textContent=e.title,a.appendChild(r),n.appendChild(a)})),inlineMenu.appendChild(n),setupEnhancedScroll(n);const o=n.children[inlineMenuIndex];o&&o.scrollIntoView({block:"nearest"})}function updateInlineVisuals(){if(!inlineMenu)return;const e=inlineMenu.querySelector(".mp-inline-list"),t=inlineMenu.querySelectorAll(".mp-inline-item");e&&t.forEach(((n,o)=>{o===inlineMenuIndex?(n.classList.add("selected"),0===o?e.scrollTop=0:o===t.length-1?e.scrollTop=e.scrollHeight:n.scrollIntoView({block:"nearest",behavior:"auto"})):n.classList.remove("selected")}))}function positionInlineMenu(e){if(!inlineMenu)return;const t=e.getBoundingClientRect(),n=window.innerHeight-t.top+8,o=t.left;inlineMenu.style.bottom=`${n}px`,inlineMenu.style.left=`${o}px`,o+300>window.innerWidth&&(inlineMenu.style.left="auto",inlineMenu.style.right="20px")}function getTextBeforeCaret(e){if("TEXTAREA"===e.tagName||"INPUT"===e.tagName)return e.value.substring(0,e.selectionEnd);const t=window.getSelection();if(t.rangeCount>0){const e=t.getRangeAt(0);return 3===e.startContainer.nodeType?e.startContainer.textContent.substring(0,e.startOffset):""}return""}async function completeInlinePrompt(e,t){const n=document.querySelector(platformSelectors[currentPlatform]);if(!n)return;n.focus();const o=getTextBeforeCaret(n).match(/(?:^|\s)(#[^\s]*)$/);let a=o&&o[1]?o[1].length:(t?t.length:0)+1,r=null;if("TEXTAREA"===n.tagName||"INPUT"===n.tagName){if("number"==typeof n.selectionEnd){const e=Math.max(0,n.selectionEnd-a),t=n.selectionEnd;n.setRangeText?n.setRangeText("",e,t,"end"):(n.value=n.value.slice(0,e)+n.value.slice(t),n.selectionEnd=e),r={type:"input",start:n.selectionEnd,end:n.selectionEnd}}}else{const e=window.getSelection();if(e.rangeCount>0){const t=e.getRangeAt(0);if(3===t.startContainer.nodeType){const e=t.startOffset,n=Math.max(0,e-a);t.setStart(t.startContainer,n),t.setEnd(t.startContainer,e),t.deleteContents(),r={type:"contenteditable",node:t.startContainer,offset:t.startOffset}}else{for(let e=0;e<a;e++)document.execCommand("delete",!1,null);try{const t=e.getRangeAt(0);r={type:"contenteditable",node:t.startContainer,offset:t.startOffset}}catch(e){}}}}closeInlineMenu(),e.usePlaceholders?(currentPlaceholderModal&&(currentPlaceholderModal.dataset.fromInline="true",currentPlaceholderModal._savedCursor=r),openPlaceholderModal(e,-1)):await insertPrompt(e,-1,!0,!0)}function setupInlineSuggestion(e){if(e.dataset.mpInlineActive)return;e.dataset.mpInlineActive="true";let t=!1;e.addEventListener("keydown",(n=>{if(inlineMenu&&inlineMenu.classList.contains("visible"))if("ArrowDown"===n.key)n.preventDefault(),n.stopPropagation(),inlineMenuIndex=(inlineMenuIndex+1)%inlineMenuCurrentItems.length,updateInlineVisuals();else if("ArrowUp"===n.key)n.preventDefault(),n.stopPropagation(),inlineMenuIndex=(inlineMenuIndex-1+inlineMenuCurrentItems.length)%inlineMenuCurrentItems.length,updateInlineVisuals();else if("Enter"===n.key||"Tab"===n.key){if(inlineMenuCurrentItems[inlineMenuIndex]){n.preventDefault(),n.stopPropagation(),n.stopImmediatePropagation(),t=!0;const o=getTextBeforeCaret(e).match(/(?:^|\s)(#[^\s]*)$/),a=o?o[1]:"";completeInlinePrompt(inlineMenuCurrentItems[inlineMenuIndex],a)}}else"Escape"===n.key&&(n.preventDefault(),closeInlineMenu())}),!0),e.addEventListener("keypress",(e=>{!t||"Enter"!==e.key&&"Tab"!==e.key||(e.preventDefault(),e.stopPropagation(),e.stopImmediatePropagation())}),!0),e.addEventListener("keyup",(e=>{!t||"Enter"!==e.key&&"Tab"!==e.key||(e.preventDefault(),e.stopPropagation(),e.stopImmediatePropagation(),t=!1)}),!0),e.addEventListener("input",debounce((async t=>{const n=getTextBeforeCaret(e).match(/(?:^|\s)#([^\s]*)$/);if(n){const t=n[1],o=t.toLowerCase().replace(/-/g," "),a=await getAll();inlineMenuCurrentItems=a.filter((e=>e.title.toLowerCase().includes(o))).slice(0,8),inlineMenuCurrentItems.length>0?(inlineMenuIndex=0,renderInlineList(inlineMenuCurrentItems,t),positionInlineMenu(e),inlineMenu&&inlineMenu.classList.add("visible")):closeInlineMenu()}else closeInlineMenu()}),100)),document.addEventListener("click",(t=>{inlineMenu&&inlineMenu.classList.contains("visible")&&!inlineMenu.contains(t.target)&&t.target!==e&&closeInlineMenu()}))}function loadPredictionConfig(){currentPredictionConfig=GM_getValue(PREDICTION_STORAGE_KEY,DEFAULT_PREDICTION_CONFIG)}async function savePredictionConfig(e){currentPredictionConfig=e,await GM_setValue(PREDICTION_STORAGE_KEY,e)}function attachSmartEditorLogic(e){if(!e)return;const t={"(":")","[":"]","{":"}",'"':'"',"'":"'","`":"`","<":">"},n=new Set(Object.values(t)),o=()=>{varMemory.active=!1,varMemory.list=[],varMemory.typed=""},a=()=>{TAG_MEMORY.active=!1,TAG_MEMORY.list=[],TAG_MEMORY.typed=""};e.addEventListener("keydown",(function(e){if(!currentPredictionConfig.enabled)return;if(e.isComposing||229===e.keyCode)return;const r=this.selectionStart,i=this.selectionEnd,s=this.value,l=e.key,c=r!==i;if("Backquote"===e.key&&e.shiftKey){if(e.preventDefault(),c){const e=s.substring(r,i);this.setRangeText("`"+e+"`",r,i,"select"),this.selectionStart=r+1,this.selectionEnd=r+1+e.length}else this.setRangeText("``",r,i,"end"),this.selectionStart=r+1,this.selectionEnd=r+1;return}const p=varMemory.active?varMemory:TAG_MEMORY.active?TAG_MEMORY:null;if(p)if(r<p.startPos)varMemory.active&&o(),TAG_MEMORY.active&&a();else{if("ArrowUp"===e.key||"ArrowDown"===e.key){if(e.preventDefault(),p.list.length<=1)return;"ArrowUp"===e.key?p.index=(p.index+1)%p.list.length:p.index=(p.index-1+p.list.length)%p.list.length;const t=p.list[p.index],n=("string"==typeof t?t:t.label).substring(p.typed.length);return void this.setRangeText(n,p.startPos+p.typed.length,i,"select")}if(["Enter","Tab","ArrowRight"].includes(e.key)){if(e.preventDefault(),TAG_MEMORY.active){const e=TAG_MEMORY.list[TAG_MEMORY.index],t="string"==typeof e?e:e.label;this.setRangeText("",p.startPos,i,"select");let n=t,o=0,a=0;"file"===e.type?(n="#file(Title)",o=6,a=5):"start-block"===e.type?(n="#start\n# Title\n- [Option 1]\n'hidden value'\n+ [Option 2]\n1 [Option 3]\n#end",o=9,a=5):"start-inline"===e.type&&(n="#start # Title // - [Option 1]'hidden value' // + [Option 2] // 1 [Option 3] #end",o=9,a=5),this.setRangeText(n,p.startPos,p.startPos,"end"),a>0?(this.selectionStart=p.startPos+o,this.selectionEnd=p.startPos+o+a):o>0?(this.selectionStart=p.startPos+o,this.selectionEnd=p.startPos+o):(this.selectionStart=p.startPos+n.length,this.selectionEnd=p.startPos+n.length)}else this.selectionStart=i,this.selectionEnd=i;return varMemory.active&&o(),void(TAG_MEMORY.active&&a())}if("Escape"===e.key)return e.preventDefault(),this.setRangeText("",p.startPos+p.typed.length,i,"end"),varMemory.active&&o(),void(TAG_MEMORY.active&&a())}if("#"===l&&c)return macroMemory.text=s.substring(r,i),macroMemory.startIndex=r,macroMemory.active=!0,void(macroMemory.hashCount=1);if(macroMemory.active)if(r!==macroMemory.startIndex+macroMemory.hashCount)macroMemory.active=!1,macroMemory.text="";else{if("#"===l)return void macroMemory.hashCount++;const t=l?l.toLowerCase():"";if(["s","i"].includes(t)){e.preventDefault();const n="#".repeat(macroMemory.hashCount);let o="";return"s"===t?o=`${n}start\n${macroMemory.text}\n${n}end`:"i"===t&&(o=`${n}ignore\n${macroMemory.text}\n${n}end`),this.setRangeText(o,macroMemory.startIndex,r,"select"),macroMemory.active=!1,void(macroMemory.text="")}["Shift","Control","Alt","CapsLock","Meta"].includes(e.key)||(macroMemory.active=!1,macroMemory.text="")}if(c&&t[l]){e.preventDefault();const n=s.substring(r,i),o=l+n+t[l];return this.setRangeText(o,r,i,"select"),this.selectionStart=r+1,void(this.selectionEnd=r+1+n.length)}if(!c&&n.has(l)&&s[r]===l)return e.preventDefault(),this.selectionStart=r+1,void(this.selectionEnd=r+1);if("Backspace"===e.key&&!c&&r>0)if(p);else{const n=s[r-1],o=s[r];t[n]===o&&(e.preventDefault(),this.setRangeText("",r-1,r+1,"end"))}else if(!c&&t[l]){if(p)return;if("`"===l&&!e.shiftKey)return e.preventDefault(),this.setRangeText("``",r,i,"end"),this.selectionStart=r+1,void(this.selectionEnd=r+1);if("`"!==l)return e.preventDefault(),this.setRangeText(l+t[l],r,i,"end"),this.selectionStart=r+1,void(this.selectionEnd=r+1)}})),e.addEventListener("input",(function(e){if(!currentPredictionConfig.enabled)return;if(e.isComposing||e.inputType&&e.inputType.startsWith("insertComposition"))return;if(macroMemory.active)return;const t=this.selectionStart,n=this.value,r=e.data;if("$"===r){const e=n.substring(0,t),o=/(?:\[[^\]]*?=\s*|\{[^\}]*?=\s*)(\$[\w]+)(?:\]|\})/g;let a;const r=[];for(;null!==(a=o.exec(e));)r.push(a[1]);if(r.length>0){const e=[...new Set(r.reverse())];varMemory.active=!0,varMemory.list=e,varMemory.index=0,varMemory.startPos=t-1,varMemory.typed="$";const n=e[0];this.setRangeText(n.substring(1),t,t,"select")}return}if("#"===r){const e=n.substring(0,t-1);if(""===e||/[\s\n]$/.test(e))return TAG_MEMORY.active=!0,TAG_MEMORY.startPos=t-1,TAG_MEMORY.typed="#",void(TAG_MEMORY.list=[])}if(varMemory.active||TAG_MEMORY.active){const i=varMemory.active?varMemory:TAG_MEMORY;if("deleteContentBackward"===e.inputType){if(t<=i.startPos)return varMemory.active&&o(),void(TAG_MEMORY.active&&a());i.typed=n.substring(i.startPos,t)}else{if(!r)return;i.typed+=r}if(TAG_MEMORY.active){const e=i.typed.substring(1).toLowerCase();let t=[];e.startsWith("d")?t=[{label:"#date",type:"simple"},{label:"#date-DD",type:"simple"},{label:"#date-MM",type:"simple"},{label:"#date-YY",type:"simple"},{label:"#date+time",type:"simple"}]:e.startsWith("t")?t=[{label:"#time",type:"simple"},{label:"#time-HH",type:"simple"},{label:"#time-MM",type:"simple"},{label:"#time-SS",type:"simple"},{label:"#time+date",type:"simple"}]:e.startsWith("f")?t=[{label:"#file",type:"file"}]:e.startsWith("s")&&(t=[{label:"#start (Block)",type:"start-block"},{label:"#start (Inline)",type:"start-inline"}]),i.list=t.filter((e=>e.label.toLowerCase().startsWith(i.typed.toLowerCase())))}else if(varMemory.active){const e=i.list.filter((e=>e.startsWith(i.typed)));i.list=e}if(i.list.length>0){i.index=0;const e=i.list[0],n=("string"==typeof e?e:e.label).substring(i.typed.length);return void this.setRangeText(n,t,t,"select")}TAG_MEMORY.active&&a(),varMemory.active&&o()}const i=r?r.toLowerCase():"";if(["e","i","s"].includes(i)){const e=n.substring(0,t).match(/(^|[\s\n])(#+)([eiEIsS])$/);if(e){const n=e[2],o=e[3].toLowerCase();let a="",r=t;const i=t-(n.length+1);"i"===o?(a=`${n}ignore\n\n${n}end`,r=i+n.length+7):"s"===o?(a=`${n}start\n\n${n}end`,r=i+n.length+6):"e"===o&&(a=`${n}end`,r=i+a.length),this.setRangeText(a,i,t,"select"),this.selectionStart=r,this.selectionEnd=r}}}));const r=e.setRangeText.bind(e);e.setRangeText=function(...e){r(...e),this.syntaxUpdate&&this.syntaxUpdate()}}function loadShortcuts(){const e=GM_getValue(SHORTCUTS_STORAGE_KEY);if(e)try{const t=JSON.parse(e);currentShortcuts={...DEFAULT_SHORTCUTS,...t},Object.keys(DEFAULT_SHORTCUTS).forEach((e=>{currentShortcuts[e]&&(currentShortcuts[e].descKey=DEFAULT_SHORTCUTS[e].descKey)}))}catch(e){console.error(e)}}function saveShortcutsConfig(){GM_setValue(SHORTCUTS_STORAGE_KEY,JSON.stringify(currentShortcuts))}function isShortcutPressed(e,t){if(!currentShortcuts[t])return!1;const n=currentShortcuts[t].keys.toUpperCase().split("+"),o=n[n.length-1],a=n.includes("CTRL"),r=n.includes("ALT"),i=n.includes("SHIFT");if(e.ctrlKey!==a)return!1;if(e.altKey!==r)return!1;if(e.shiftKey!==i)return!1;const s=e.code?e.code.toUpperCase():"",l=e.key?e.key.toUpperCase():"";return 1===o.length?l===o||s===`KEY${o}`||s===`DIGIT${o}`:l===o||s===o}function getProvider(e){return e.startsWith("openrouter|")?"openrouter":e.startsWith("LongCat")?"longcat":e.startsWith("gemini")?"gemini":"groq"}function getOpenAIEndpoint(e){switch(e){case"openrouter":return"https://openrouter.ai/api/v1/chat/completions";case"longcat":return"https://api.longcat.chat/openai/v1/chat/completions";case"groq":return"https://api.groq.com/openai/v1/chat/completions";default:throw new Error(`Unknown provider: ${e}`)}}function getRotatingApiKey(e){let t,n;"openrouter"===e?(t=currentAIConfig.apiKeyOpenRouter,n="keyIndexOpenRouter"):"longcat"===e?(t=currentAIConfig.apiKeyLongcat,n="keyIndexLongcat"):"groq"===e?(t=currentAIConfig.apiKeyGroq,n="keyIndexGroq"):(t=currentAIConfig.apiKeyGemini,n="keyIndexGemini");const o=t.split(/[,\s]+/).filter((e=>""!==e.trim()));if(0===o.length)return null;let a=currentAIConfig[n]||0;a>=o.length&&(a=0);const r=o[a],i=(a+1)%o.length;return currentAIConfig[n]=i,saveAIConfig({[n]:i}),r}async function loadAIConfig(){const e=await GM_getValue(AI_SETTINGS_KEY,DEFAULT_AI_CONFIG);currentAIConfig={...DEFAULT_AI_CONFIG,...e}}async function saveAIConfig(e){currentAIConfig={...currentAIConfig,...e},await GM_setValue(AI_SETTINGS_KEY,currentAIConfig)}async function callAI_API(e){const t=currentAIConfig.model,n=getProvider(t),o=getRotatingApiKey(n),a=""!==currentAIConfig.systemPrompt.trim()?currentAIConfig.systemPrompt:DEFAULT_AI_CONFIG.systemPrompt;if(!o)throw new Error(getTranslation("missingKeyError"));return new Promise("gemini"===n?(n,r)=>{GM_xmlhttpRequest({method:"POST",url:`https://generativelanguage.googleapis.com/v1beta/models/${t}:generateContent?key=${o}`,headers:{"Content-Type":"application/json"},data:JSON.stringify({contents:[{parts:[{text:e}]}],systemInstruction:{parts:[{text:a}]}}),onload:e=>{try{const t=JSON.parse(e.responseText);t.candidates&&t.candidates[0]&&t.candidates[0].content?n(t.candidates[0].content.parts[0].text.trim()):r(new Error(t.error?.message||getTranslation("invalidResponse")))}catch(e){r(new Error(getTranslation("processError")))}},onerror:()=>r(new Error(getTranslation("connectionError")))})}:(r,i)=>{const s=getOpenAIEndpoint(n),l="openrouter"===n?t.replace("openrouter|",""):t,c={"Content-Type":"application/json",Authorization:`Bearer ${o}`};"openrouter"===n&&(c["HTTP-Referer"]=window.location.origin),GM_xmlhttpRequest({method:"POST",url:s,headers:c,data:JSON.stringify({model:l,messages:[{role:"system",content:a},{role:"user",content:e}],temperature:.7}),onload:e=>{if(200===e.status)try{const t=JSON.parse(e.responseText);t.choices&&t.choices.length>0&&t.choices[0].message?r(t.choices[0].message.content.trim()):i(new Error(getTranslation("invalidResponse")))}catch(e){console.error(e),i(new Error(getTranslation("processError")))}else try{const t=JSON.parse(e.responseText);i(new Error(`Error ${n} (${e.status}): ${t.error?.message||e.statusText}`))}catch(t){i(new Error(`Error ${n} (${e.status})`))}},onerror:e=>{console.error(e),i(new Error(getTranslation("connectionError")))}})})}function showEnhanceLoadingOverlay(){if(document.getElementById("__ap_enhance_loading"))return;const e=document.createElement("div");e.id="__ap_enhance_loading",e.className="mp-overlay",e.style.zIndex="100000";const t=document.createElement("div");t.style.display="flex",t.style.flexDirection="column",t.style.alignItems="center",t.style.gap="15px",t.style.color="#ffffff";const n=document.createElement("div");n.style.width="50px",n.style.height="50px",setSafeInnerHTML(n,ICONS.loading);const o=document.createElement("div");o.style.fontSize="16px",o.style.fontWeight="500",o.textContent=getTranslation("enhancingPrompt"),t.appendChild(n),t.appendChild(o),e.appendChild(t),document.body.appendChild(e),requestAnimationFrame((()=>{e.classList.add("visible")}))}function hideEnhanceLoadingOverlay(){const e=document.getElementById("__ap_enhance_loading");e&&(e.classList.remove("visible"),setTimeout((()=>e.remove()),300))}async function robustClearEditor(e){if(void 0!==currentPlatform&&"flow"===currentPlatform){let t=null,n=e.parentElement;for(;n&&n!==document.body;){const e=n.querySelectorAll("button");for(let n of e){const e=n.querySelector("i.google-symbols");if(e&&"close"===e.textContent.trim()){t=n;break}}if(t)break;n=n.parentElement}return t&&(t.click(),await new Promise((e=>setTimeout(e,150)))),void e.focus()}e.focus();try{document.execCommand("selectAll",!1,null),await new Promise((e=>setTimeout(e,10))),document.execCommand("delete",!1,null)}catch(t){if("true"===e.contentEditable){const t=document.createRange();t.selectNodeContents(e);const n=window.getSelection();n&&(n.removeAllRanges(),n.addRange(t),document.execCommand("delete",!1,null))}}await new Promise((e=>setTimeout(e,50)));const t=void 0!==e.value?e.value:e.textContent||"",n=e.matches(".ql-editor");if(!(0===t.trim().length||n&&""===t.trim())){if("TEXTAREA"===e.tagName||"INPUT"===e.tagName){const t="TEXTAREA"===e.tagName?window.HTMLTextAreaElement.prototype:window.HTMLInputElement.prototype,n=Object.getOwnPropertyDescriptor(t,"value").set;n?n.call(e,""):e.value=""}else e.innerHTML=n?"<p><br></p>":"";e.dispatchEvent(new Event("input",{bubbles:!0,composed:!0})),e.dispatchEvent(new Event("change",{bubbles:!0}))}if("true"===e.contentEditable){e.focus();const t=document.createRange(),n=window.getSelection();e.firstChild?(t.selectNode(e.firstChild),t.collapse(!0)):(t.selectNodeContents(e),t.collapse(!0)),n&&(n.removeAllRanges(),n.addRange(t))}else e.focus()}async function handleInstantPageEnhancement(){if(!currentPlatform||!platformSelectors[currentPlatform])return;const e=document.querySelector(platformSelectors[currentPlatform]);if(!e)return;let t="";if(t="TEXTAREA"===e.tagName||"INPUT"===e.tagName?e.value:e.innerText||e.textContent||"",!t||0===t.trim().length)return void alert(getTranslation("noTextToEnhance"));if(getRotatingApiKey(getProvider(currentAIConfig.model))){showEnhanceLoadingOverlay();try{const n=await callAI_API(t);hideEnhanceLoadingOverlay();showAIDiffModal(t,n,{get value(){return""},set value(t){(async()=>{await robustClearEditor(e),setTimeout((()=>{e.focus(),insertPrompt({text:t},-1,!0,!1)}),200)})()}})}catch(e){hideEnhanceLoadingOverlay(),e.message&&(e.message.includes("API Key")||e.message.includes("Missing"))?showAPIKeyRequiredModal():alert(getTranslation("aiErrorPrefix")+e.message)}}else showAPIKeyRequiredModal()}async function handleTextareaEnhancement(e,t){let n=e.value;if(!n||0===n.trim().length)return void alert(getTranslation("noTextToEnhance"));if(!getRotatingApiKey(getProvider(currentAIConfig.model)))return void showAPIKeyRequiredModal();const o=t.innerHTML;t.classList.add("loading"),setSafeInnerHTML(t,ICONS.loading);try{const a=await callAI_API(n);t.classList.remove("loading"),setSafeInnerHTML(t,o);showAIDiffModal(n,a,{get value(){return e.value},set value(t){(async()=>{await robustClearEditor(e),setTimeout((()=>{e.value=t,e.dispatchEvent(new Event("input",{bubbles:!0,composed:!0})),e.dispatchEvent(new Event("change",{bubbles:!0})),e.focus()}),200)})()}})}catch(e){t.classList.remove("loading"),setSafeInnerHTML(t,o),e.message&&(e.message.includes("API Key")||e.message.includes("Missing"))?showAPIKeyRequiredModal():alert(getTranslation("aiErrorPrefix")+e.message)}}function loadNavConfig(){const e=GM_getValue(NAV_STORAGE_KEY);if(e)try{currentNavConfig={...DEFAULT_NAV_CONFIG,...JSON.parse(e)}}catch(e){console.error(e)}currentNavConfig.filterMode&&(navFilterMode=currentNavConfig.filterMode),setTimeout(restoreNavState,1500)}function saveNavConfig(e){currentNavConfig=e,GM_setValue(NAV_STORAGE_KEY,JSON.stringify(e))}function saveNavState(e,t){if(e<0)return;let n={};const o=sessionStorage.getItem(NAV_SESSION_KEY);if(o)try{n=JSON.parse(o),n.textPreview&&!n[e]&&(n={})}catch(e){n={}}n[e]={index:e,textPreview:t?t.substring(0,50):"",timestamp:Date.now()},sessionStorage.setItem(NAV_SESSION_KEY,JSON.stringify(n)),currentNavIndex=e}function restoreNavState(){const e=sessionStorage.getItem(NAV_SESSION_KEY);if(e)try{const t=JSON.parse(e);if(scanMessages(),!cachedMessages||0===cachedMessages.length)return;let n=null,o=0;if(Object.values(t).forEach((e=>{e.timestamp>o&&(o=e.timestamp,n=e)})),n){let e=cachedMessages.findIndex((e=>e.fullText.includes(n.textPreview)||n.textPreview.includes(e.preview)));-1===e&&cachedMessages[n.index]&&(e=n.index),-1!==e&&(currentNavIndex=e)}}catch(e){}}function getMessageSelectors(){switch(currentPlatform){case"googleaistudio":return{user:{item:'div[data-turn-role="User"]',text:".user-chunk"},ai:{item:'div[data-turn-role="Model"]',text:"ms-prompt-chunk > ms-text-chunk"}};case"chatgpt":return{user:{item:'div[class*="user-message-bubble"]',text:'div[data-message-author-role="user"] .whitespace-pre-wrap'},ai:{item:'div[data-message-author-role="assistant"]',text:".markdown"}};case"gemini":return{user:{item:'span[class^="user-query-bubble"]',text:".horizontal-container .query-text p"},ai:{item:'div[class^="markdown markdown-main-panel"]',text:"p"}};case"grok":return{user:{item:".message-bubble.bg-surface-l1",text:".break-words"},ai:{item:".items-start .response-content-markdown",text:"p.break-words"}};case"qwen":return{user:{item:"div.chat-user-message",text:"p.user-message-content"},ai:{item:".response-message-content.t2t",text:".qwen-markdown-text"}};case"zai":return{user:{item:".user-message .rounded-xl.whitespace-pre-wrap",text:".user-message .rounded-xl.whitespace-pre-wrap"},ai:{item:".chat-assistant",text:".markdown-prose > p"}};case"deepseek":return{user:{item:".ds-message:not(:has(.ds-markdown)) > div:first-child",text:".ds-message:not(:has(.ds-markdown)) > div:first-child"},ai:{item:".ds-message:has(.ds-markdown)",text:".ds-markdown"}};case"kimi":return{user:{item:".chat-content-item-user .segment-content",text:".user-content"},ai:{item:".segment-assistant .segment-content-box",text:".markdown"}};case"claude":return{user:{item:'div.inline-flex:has([data-testid="user-message"])',text:'[data-testid="user-message"] p'},ai:{item:".font-claude-response:has(.standard-markdown)",text:".standard-markdown"}};case"perplexity":return{user:{item:"div.group\\/title",text:"span.select-text"},ai:{item:'[id^="markdown-content-"]',text:".prose"}};case"copilot":return{user:{item:'div:has(> div[data-content="user-message"])',text:'div[data-content="user-message"]'},ai:{item:'div[data-testid="ai-message"]',text:'div[id*="-content-"]'}};case"mistral":return{user:{item:'div[data-message-author-role="user"] .rounded-3xl',text:".select-text span"},ai:{item:'div:has(>[data-testid="text-message-part"])',text:'[data-testid="text-message-part"]'}};case"googleModoIA":return{user:{item:".tbIZh.wQN2Jd",text:'span[role="heading"]'},ai:{item:'div[data-subtree="aimc"]',text:'div[data-subtree="aimfl"]'}};case"yuanbao":return{user:{item:".agent-chat__bubble--human .agent-chat__bubble__content",text:".hyc-content-text"},ai:{item:".agent-chat__bubble--ai .agent-chat__bubble__content",text:".hyc-common-markdown"}};case"poe":return{user:{item:".Message_rightSideMessageBubble__ioa_i",text:".Message_selectableText__SQ8WH p"},ai:{item:".Message_leftSideMessageBubble__VPdk6",text:".Message_selectableText__SQ8WH p"}};case"chatglm":return{user:{item:".question .question-txt",text:".question-txt span"},ai:{item:".panel .answer-content",text:".markdown-body"}};case"notebooklm":return{user:{item:".from-user-container",text:".message-text-content p"},ai:{item:".to-user-container",text:".message-text-content"}};case"doubao":return{user:{item:'div.justify-end > div[data-testid="message_text_content"]',text:'div.justify-end > div[data-testid="message_text_content"]'},ai:{item:'[data-testid="receive_message"]',text:'[data-testid="message_text_content"]'}};case"arena":return{user:{item:".bg-surface-raised",text:".prose p"},ai:{item:"div.no-scrollbar.flex-1",text:".prose p"}};case"ernie":return{user:{item:"#question_text_id",text:"#question_text_id span"},ai:{item:"#answer_text_id",text:".custom-html p"}};case"indicArena":return{user:{item:"div.bg-orange-500.text-white.rounded-lg",text:"p.whitespace-pre-wrap"},ai:{item:"div.rounded-lg.bg-white.w-full.flex.flex-col.border",text:"div.prose"}};case"qianwen":return{user:{item:'div[class*="bubble"]',text:'div[class*="bubble"]'},ai:{item:".markdown-pc-special-class",text:".qk-markdown"}};case"nvidiaNim":return{user:{item:'[data-testid="chat-bubble-prompt"]',text:".prose p"},ai:null};default:return{user:{item:'[data-message-author-role="user"], [data-role="user"], [data-author="user"], .user-message, .user-query, .human-message, .prompt',text:[".prose p",".whitespace-pre-wrap",".message-content p",".text-content","p"]},ai:null,reverse:!1}}}function getSafeText(e,t){if(!e)return"";try{let n=null;if(Array.isArray(t)){for(const o of t)if(n=e.querySelector(o),n)break}else n=e.querySelector(t);return n?n.innerText||n.textContent||"":e.innerText||e.textContent||""}catch(e){return""}}function scanMessages(){if(NO_NAV_PLATFORMS.includes(currentPlatform))return[];const e=getMessageSelectors(),t=[...cachedMessages||[]];let n=[];e.user&&document.querySelectorAll(e.user.item).forEach((t=>{n.push({element:t,type:"user",textSel:e.user.text,topPos:t.getBoundingClientRect().top+window.scrollY})})),e.ai&&document.querySelectorAll(e.ai.item).forEach((t=>{n.push({element:t,type:"ai",textSel:e.ai.text,topPos:t.getBoundingClientRect().top+window.scrollY})})),n.sort(((e,t)=>e.topPos-t.topPos)),e.reverse&&n.reverse();const o=n.filter((e=>"all"===navFilterMode||e.type===navFilterMode));return cachedMessages=o.map(((e,n)=>{let o=getSafeText(e.element,e.textSel).replace(/\s+/g," ").trim();const a=t[n];o&&0!==o.length||!a||!a.fullText||a.type!==e.type||(o=a.fullText);const r=o.length>35?o.substring(0,35)+"...":o;return{element:e.element,index:n,preview:r,fullText:o,type:e.type}})),cachedMessages}function getVisualIndex(){if(!cachedMessages||0===cachedMessages.length)return-1;const e=window.scrollY+window.innerHeight/2;let t=0,n=1/0;return cachedMessages.forEach(((o,a)=>{const r=o.element.getBoundingClientRect();if(0===r.height&&0===r.width)return;const i=window.scrollY+r.top+r.height/2,s=Math.abs(e-i);s<n&&(n=s,t=a)})),t}function getScrollParent(e){if(!e)return document.documentElement;let t=e.parentElement;for(;t;){const e=window.getComputedStyle(t);if(t.scrollHeight>t.clientHeight&&("auto"===e.overflowY||"scroll"===e.overflowY))return t;t=t.parentElement}return document.documentElement}function scrollToMessage(e,t=null){if(!cachedMessages||0===cachedMessages.length)return;e<0&&(e=0),e>=cachedMessages.length&&(e=cachedMessages.length-1);const n=cachedMessages[e];if(n&&n.element){if(!document.body.contains(n.element)){scanMessages();const e=cachedMessages.findIndex((e=>e.fullText===n.fullText));if(-1!==e)return void scrollToMessage(e,t)}const o=t||n.element;try{if("kimi"===currentPlatform)return o.style.scrollMarginTop=t?"15vh":"30vh",o.scrollIntoView({behavior:"auto",block:"start",inline:"nearest"}),setTimeout((()=>{highlightElement(o)}),50),saveNavState(e,n.fullText),void(navListPopup&&navListPopup.classList.contains("active")&&updateMenuHighlight(e));const a=getScrollParent(o),r=o.getBoundingClientRect(),i=a.getBoundingClientRect(),s=a===document.documentElement?window.scrollY:a.scrollTop,l=r.top-i.top,c=s+l-a.clientHeight*(t?.15:.3);a===document.documentElement?window.scrollTo({top:c,behavior:"smooth"}):a.scrollTo({top:c,behavior:"smooth"}),highlightElement(o),saveNavState(e,n.fullText),navListPopup&&navListPopup.classList.contains("active")&&updateMenuHighlight(e)}catch(e){o.scrollIntoView({behavior:"smooth",block:"center"}),highlightElement(o)}}}function navigateToMessage(e){scanMessages();const t=getVisualIndex();let n=currentNavIndex;(-1===n||-1!==t&&Math.abs(t-n)>2)&&(n=t),-1===n&&(n=0);let o=n;"prev"===e&&(o=n-1),"next"===e&&(o=n+1),scrollToMessage(o)}function updateMenuHighlight(e){const t=navListPopup?navListPopup.querySelector(".mp-nav-scroll-area"):null;if(!t)return;const n=t.querySelectorAll(".mp-nav-list-item.main-msg-item");n.forEach((e=>e.classList.remove("current-item"))),n[e]&&(n[e].classList.add("current-item"),n[e].scrollIntoView({behavior:"smooth",block:"nearest"}))}function highlightElement(e){e&&(e.classList.remove("mp-highlight-anim"),e.offsetWidth,e.classList.add("mp-highlight-anim"))}function createNavInterface(){if(NO_NAV_PLATFORMS.includes(currentPlatform)){const e=document.getElementById("mp-nav-container");return void(e&&e.remove())}const e=document.getElementById("mp-nav-container");if(e)return void(e.style.display=currentNavConfig.enabled?"flex":"none");if(!currentNavConfig.enabled)return;navContainer=document.createElement("div"),navContainer.id="mp-nav-container",navContainer.className="mp-nav-switch";const t=createNavBtn(ICONS.navUp,(()=>navigateToMessage("prev")),"prev"),n=createNavBtn(ICONS.navMenu,(()=>toggleNavList()),"list"),o=createNavBtn(ICONS.navDown,(()=>navigateToMessage("next")),"next");navContainer.appendChild(t),navContainer.appendChild(n),navContainer.appendChild(o),navListPopup=document.createElement("div"),navListPopup.className="mp-nav-list-popup";const a=document.createElement("div");a.className="mp-nav-header",a.appendChild(createTab("all",ICONS.all,getTranslation("all"))),a.appendChild(createTab("user",ICONS.user,getTranslation("user"))),a.appendChild(createTab("ai",ICONS.bot,getTranslation("ai"))),navListPopup.appendChild(a);const r=document.createElement("div");r.className="mp-nav-scroll-area",navListPopup.appendChild(r),navContainer.appendChild(navListPopup),document.body.appendChild(navContainer),document.addEventListener("click",(e=>{navListPopup&&navListPopup.classList.contains("active")&&navContainer&&!navContainer.contains(e.target)&&closeNavList()}))}function createNavBtn(e,t,n){const o=document.createElement("div");return o.className="mp-nav-btn",setSafeInnerHTML(o,e),o.onclick=e=>{e.stopPropagation(),t(e)},createCustomTooltip(o,getTranslation(n),"left"),o}function createTab(e,t,n){const o=document.createElement("div");return o.className="mp-nav-tab "+(navFilterMode===e?"active":""),setSafeInnerHTML(o,t),o.onclick=t=>{t.stopPropagation(),setNavFilter(e)},createCustomTooltip(o,n,"top"),o}function setNavFilter(e){navFilterMode=e,currentNavConfig.filterMode=e,saveNavConfig(currentNavConfig);const t=navListPopup.querySelectorAll(".mp-nav-tab");t.forEach((e=>e.classList.remove("active"))),"all"===e&&t[0].classList.add("active"),"user"===e&&t[1].classList.add("active"),"ai"===e&&t[2].classList.add("active"),renderNavListItems()}function toggleNavList(){navListPopup&&(navListPopup.classList.contains("active")?closeNavList():openNavList())}function openNavList(){if(navListPopup.classList.add("active"),renderNavListItems(),-1!==currentNavIndex)updateMenuHighlight(currentNavIndex);else{const e=getVisualIndex();-1!==e&&updateMenuHighlight(e)}navLiveInterval&&clearInterval(navLiveInterval),navLiveInterval=setInterval(checkUpdatesAndRender,1500)}function closeNavList(){navListPopup.classList.remove("active"),navLiveInterval&&clearInterval(navLiveInterval),navLiveInterval=null}function checkUpdatesAndRender(){const e=getMessageSelectors();let t=0;e.user&&(t+=document.querySelectorAll(e.user.item).length),e.ai&&(t+=document.querySelectorAll(e.ai.item).length),t!==navLastDomCount&&renderNavListItems()}function escapeHtml(e){if(!e)return e;const t=document.createElement("div");return t.textContent=e,t.innerHTML}function renderNavListItems(){scanMessages();const e=navListPopup.querySelector(".mp-nav-scroll-area");if(setSafeInnerHTML(e,""),0===cachedMessages.length){const t=document.createElement("div");return t.className="mp-nav-list-item",t.textContent=getTranslation("noConversations"),t.style.justifyContent="center",t.style.opacity="0.5",void e.appendChild(t)}let t=currentNavIndex;-1===t&&(t=getVisualIndex());const n=document.createDocumentFragment();cachedMessages.forEach(((e,o)=>{const a=document.createElement("div");a.className="mp-nav-item-wrapper";const r=document.createElement("div");r.className="mp-nav-list-item main-msg-item",o===t&&r.classList.add("current-item");const i="all"===navFilterMode&&"ai"===e.type?`<div class="mp-nav-type-icon">${ICONS.ai}</div>`:"",s=escapeHtml(e.preview||"..."),l=Array.from(e.element.querySelectorAll("h1, h2, h3, h4, h5, h6")),c=l.length>0;let p="";p=c?`<div class="mp-nav-idx-badge has-topics"><span class="mp-nav-idx-number">${o+1}</span><div class="mp-nav-expand-icon">${ICONS.chevronR}</div></div>`:`<div class="mp-nav-idx-badge"><span class="mp-nav-idx-number">${o+1}</span></div>`;if(setSafeInnerHTML(r,`${p}<span class="mp-nav-preview-text">${s}</span>${i}`),c){const e=r.querySelector(".mp-nav-idx-badge.has-topics");e&&createCustomTooltip(e,getTranslation("topicos"),"left")}if(r.onclick=e=>{e.stopPropagation(),e.target.closest(".mp-nav-idx-badge.has-topics")?toggleSubMenu(a):scrollToMessage(o)},a.appendChild(r),c){const e=document.createElement("div");e.className="mp-nav-submenu",l.forEach((t=>{const n=parseInt(t.tagName.substring(1)),a=document.createElement("div");a.className=`mp-nav-sub-item level-${n}`;setSafeInnerHTML(a,`<span class="mp-nav-sub-text">${escapeHtml(getSafeText(t,null)||"...")}</span>`),a.onclick=e=>{e.stopPropagation(),scrollToMessage(o,t)},e.appendChild(a)})),a.appendChild(e)}n.appendChild(a)})),e.appendChild(n);const o=e.querySelector(".current-item");o&&setTimeout((()=>o.scrollIntoView({block:"nearest"})),50);const a=getMessageSelectors();navLastDomCount=0,a.user&&(navLastDomCount+=document.querySelectorAll(a.user.item).length),a.ai&&(navLastDomCount+=document.querySelectorAll(a.ai.item).length)}function toggleSubMenu(e){e.classList.toggle("expanded")}function loadSyntaxConfig(){try{const e=GM_getValue(SYNTAX_STORAGE_KEY);currentSyntaxConfig=e?JSON.parse(e):{...DEFAULT_SYNTAX_CONFIG}}catch(e){currentSyntaxConfig={...DEFAULT_SYNTAX_CONFIG}}}async function saveSyntaxConfig(e){currentSyntaxConfig=e,await GM_setValue(SYNTAX_STORAGE_KEY,JSON.stringify(e))}const SyntaxHighlighter=function(){"use strict";let e=null,t=null,n=null,o="",a=null,r=null;const i=()=>{e&&t&&(t.scrollTop=e.scrollTop,t.scrollLeft=e.scrollLeft)},s=()=>{if(!e||!t)return;const n=e.value;n!==o&&(o=n,setSafeInnerHTML(t,(e=>{if(!e)return"\n";let t=(e=>{const t={"&":"&amp;","<":"&lt;",">":"&gt;"};return e.replace(/[&<>]/g,(e=>t[e]))})(e);const n=[],o=e=>{const t=n.length;return n.push(e),`\0${t}\0`};return t=t.replace(/([ \t]*)(#+)(ignore)([ \t]*(?:\r?\n)?)([\s\S]*?)((?:\r?\n)?[ \t]*)(\2)(end)/gi,((e,t,n,a,r,i,s,l,c)=>o(`<span class="mp-syn-ign-f">${t}${n}${a}</span>${r}<span class="mp-syn-ign-c">${i}</span>${s}<span class="mp-syn-ign-f">${l}${c}</span>`))),t=t.replace(/\\([#\[\]{}'])/g,(e=>o(`<span class="mp-syn-esc">${e}</span>`))),t=t.replace(/('{2,})([\s\S]*?)\1/g,((e,t,n)=>o(`<span class="mp-syn-qt-f">${t}</span><span class="mp-syn-qt-c">${n}</span><span class="mp-syn-qt-f">${t}</span>`))),t=t.replace(/#(date|time)((?:-[YMDHS]{2})*)(?:\+(date|time)((?:-[YMDHS]{2})*))?/gi,((e,t,n,a,r)=>{let i=`<span class="mp-syn-dt-k">#${t}</span>`;return n&&(i+=`<span class="mp-syn-dt-f">${n}</span>`),a&&(i+=`<span class="mp-syn-dt-k">+${a}</span>`,r&&(i+=`<span class="mp-syn-dt-f">${r}</span>`)),o(i)})),t=t.replace(/#file(?:\(([^)]*)\))?/gi,((e,t)=>{let n='<span class="mp-syn-fl-k">#file</span>';return void 0!==t&&(n+='<span class="mp-syn-fl-p">(</span>',n+=`<span class="mp-syn-fl-t">${t}</span>`,n+='<span class="mp-syn-fl-p">)</span>'),o(n)})),t=t.replace(/([ \t]*)(#+)(start)([ \t]*(?:\r?\n)?)([\s\S]*?)((?:\r?\n)?[ \t]*)(\2)(end)/gi,((e,t,n,a,r,i,s,l,c)=>{let p=i;return p=p.replace(/^([ \t]*)(#)(\s*)([^#\n][^\n]*?)(?=\/\/|\r?\n|$)/gm,((e,t,n,o,a)=>`${t}<span class="mp-syn-sl-hh">${n}</span>${o}<span class="mp-syn-sl-h">${a}</span>`)),p=p.replace(/(\/\/)/g,'<span class="mp-syn-sl-sep">$1</span>'),p=p.replace(/([+\-]|\d+)(\s*)(\[)([^\]]*)(\])/g,((e,t,n,o,a,r)=>{let i="mp-syn-sl-p-id";return"+"===t?i="mp-syn-sl-p-multi":"-"===t&&(i="mp-syn-sl-p-single"),`<span class="${i}">${t}</span>${n}<span class="${i}">${o}</span><span class="${i}">${a}</span><span class="${i}">${r}</span>`})),p=p.replace(/'([^'\\]*(?:\\.[^'\\]*)*)'/g,((e,t)=>`<span class="mp-syn-qt-f">'</span><span class="mp-syn-qt-c">${t}</span><span class="mp-syn-qt-f">'</span>`)),o(`<span class="mp-syn-sl-f">${t}${n}${a}</span>${r}`+p+`${s}<span class="mp-syn-sl-f">${l}${c}</span>`)})),t=t.replace(/(\{)([^}=]+?)(\s*=\s*)(\$[a-zA-Z0-9_]+)(\})(?:\(([^)]*)\))?/g,((e,t,n,a,r,i,s)=>{let l=`<span class="mp-syn-sil-b">${t}</span><span class="mp-syn-sil-l">${n}</span><span class="mp-syn-sil-e">${a}</span><span class="mp-syn-sil-v">${r}</span><span class="mp-syn-sil-b">${i}</span>`;return void 0!==s&&(l+=`<span class="mp-syn-in-c">(${s})</span>`),o(l)})),t=t.replace(/(\[)([^\]=]+?)(\s*=\s*)(\$[a-zA-Z0-9_]+)(\])(?:\(([^)]*)\))?/g,((e,t,n,a,r,i,s)=>{let l=`<span class="mp-syn-in-b">${t}</span><span class="mp-syn-in-l">${n}</span><span class="mp-syn-in-e">${a}</span><span class="mp-syn-in-v">${r}</span><span class="mp-syn-in-b">${i}</span>`;return void 0!==s&&(l+=`<span class="mp-syn-in-c">(${s})</span>`),o(l)})),t=t.replace(/(\[)([^\]]+?)(\])(?:\(([^)]*)\))?/g,((e,t,n,a,r)=>{if(n.includes("\0"))return e;let i=`<span class="mp-syn-free-b">${t}</span><span class="mp-syn-free-l">${n}</span><span class="mp-syn-free-b">${a}</span>`;return void 0!==r&&(i+=`<span class="mp-syn-in-c">(${r})</span>`),o(i)})),t=t.replace(/(\$[a-zA-Z0-9_]+)/g,((e,t)=>o(`<span class="mp-syn-var">${t}</span>`))),(e=>{for(let t=n.length-1;t>=0;t--)e=e.split(`\0${t}\0`).join(n[t]);return e})(t)+"\n"})(n)),i())},l=()=>{a&&cancelAnimationFrame(a),a=requestAnimationFrame(s)},c=()=>l(),p=()=>i(),d=()=>{a&&(cancelAnimationFrame(a),a=null),r&&(r.disconnect(),r=null),e&&(e.classList.remove("mp-syntax-enabled"),e.removeEventListener("input",c),e.removeEventListener("scroll",p),e.removeEventListener("keydown",c),delete e.syntaxUpdate,delete e.syntaxClear,n&&n.parentElement&&(n.parentElement.insertBefore(e,n),n.remove())),e=null,t=null,n=null,o=""};return{attach:a=>{if(!currentSyntaxConfig.enabled)return void d();if(!(a&&a instanceof HTMLTextAreaElement))return;if(e===a&&t)return o="",void s();d(),e=a,o="";const i=a.closest(".mp-scroll-content")||a.parentElement;if(!i)return;n=document.createElement("div"),n.className="mp-syntax-container",t=document.createElement("div"),t.className="mp-syntax-backdrop",t.setAttribute("aria-hidden","true");const m=getComputedStyle(a);t.style.fontSize=m.fontSize,t.style.lineHeight=m.lineHeight,t.style.fontFamily=m.fontFamily,t.style.padding=m.padding,i.insertBefore(n,a),n.appendChild(t),n.appendChild(a),a.classList.add("mp-syntax-enabled"),a.addEventListener("input",c),a.addEventListener("scroll",p),a.addEventListener("keydown",c),r=new MutationObserver((()=>{l()})),r.observe(a,{attributes:!0,attributeFilter:["value"]}),a.syntaxUpdate=()=>{o="",s()},a.syntaxClear=()=>{o="",t&&setSafeInnerHTML(t,"\n")},s()},detach:d,refresh:()=>{o="",s()}}}();function detectPlatform(){const e=window.location.hostname;return e.includes("chatgpt.com")?"chatgpt":e.includes("deepseek.com")?"deepseek":e.includes("aistudio.google.com")?"googleaistudio":e.includes("chat.qwen.ai")?"qwen":e.includes("chat.z.ai")?"zai":e.includes("gemini.google.com")?"gemini":e.includes("arena.ai4bharat.org")?"indicArena":e.includes("arena.ai")?"arena":e.includes("kimi.com")?"kimi":e.includes("claude.ai")?"claude":e.includes("grok.com")?"grok":e.includes("www.perplexity.ai")?"perplexity":e.includes("longcat.chat")?"longcat":e.includes("mistral.ai")?"mistral":e.includes("yuanbao.tencent.com")?"yuanbao":e.includes("chatglm.cn")?"chatglm":e.includes("poe.com")?"poe":e.includes("notebooklm.google.com")?"notebooklm":e.includes("doubao.com")?"doubao":e.includes("copilot.microsoft.com")?"copilot":e.includes("image.z.ai")?"glmimage":e.includes("ernie.baidu.com")?"ernie":e.includes("dreamina.capcut.com")?"dreamina":e.includes("jimeng.jianying.com")?"jimengJianying":e.includes("build.nvidia.com")?"nvidiaNim":e.includes("qianwen")?"qianwen":e.includes("geminigen.ai")?"geminigen":e.includes("hunyuan.tencent.com")?"hunyuan":e.includes("bing.com")?"bing":e.includes("labs.google")&&window.location.pathname.includes("/tools/flow")?"flow":e.includes("google.com")&&window.location.pathname.includes("/search")&&window.location.search.includes("udm=50")?"googleModoIA":null}function getSendButton(){switch(currentPlatform){case"chatgpt":return document.querySelector('[data-testid="send-button"]')||document.querySelector("#composer-submit-button");case"deepseek":return document.querySelector('div[role="button"]:has(svg path[d^="M8.3125"])');case"googleaistudio":return document.querySelector("button.run-button");case"qwen":return document.querySelector("button.send-button")||document.querySelector('button:has(use[xlink:href="#icon-line-arrow-up"])');case"zai":return document.querySelector("#send-message-button");case"gemini":return document.querySelector('button:has(mat-icon[data-mat-icon-name="send"])')||document.querySelector('button:has(mat-icon[fonticon="send"])');case"arena":return document.querySelector('button[type="submit"]');case"kimi":return document.querySelector('div:has(> svg[name="Send"])');case"claude":return document.querySelector('button:has(svg path[d^="M208.49,120.49"])');case"grok":return document.querySelector('button:has(svg path[d^="M5 11L12 4"])');case"perplexity":return document.querySelector('button:has(svg use[xlink:href*="arrow-up"]), button:has(svg use[xlink:href*="arrow-right"])');case"longcat":return document.querySelector(".send-btn")||document.querySelector('div:has(svg use[href="#icon-send"])');case"mistral":return document.querySelector('button[type="submit"]:has(svg path[d^="M12 18v4"])');case"yuanbao":return document.querySelector('a[class*="style__send-btn"]');case"poe":return document.querySelector('button[data-button-send="true"]');case"googleModoIA":return document.querySelector('button[data-xid="input-plate-send-button"]');case"notebooklm":return document.querySelector("button.submit-button");case"doubao":return document.querySelector('button[data-testid="chat_input_send_button"], button#flow-end-msg-send');case"copilot":return document.querySelector('[data-testid="submit-button"]');case"glmimage":return document.querySelector('button:has(img[src*="generate-icon"])');case"ernie":return document.querySelector('span:has(path[d^="M43,-63.4379997253418 C43,-63.4379997253418 31,-59.6879997253418"])');case"dreamina":return document.querySelector("button.lv-btn.lv-btn-primary.lv-btn-size-default.lv-btn-shape-circle.lv-btn-icon-only.button-oBBmQ2.submit-button-_3B9GU.submit-button-FEaBl7");case"jimengJianying":return document.querySelector('button[class*="submit-button"]:not([disabled])');case"nvidiaNim":return document.querySelector('button:has(svg path[d^="M0.747,1.623l14.495,6.377"])');case"indicArena":return document.querySelector('button[type="submit"]:has(svg path[d^="M14.536 21.686"])');case"qianwen":return document.querySelector('div:has([data-icon-type="qwpcicon-sendChat"])');case"geminigen":return document.querySelector("div.flex.justify-end.gap-2.items-center button:not([disabled])");case"hunyuan":return document.querySelector('.ma-model-run-body__params-button[type="submit"], button.ma-model-run-body__params-button');case"bing":return document.querySelector("#create_btn_c");case"flow":return Array.from(document.querySelectorAll("button")).find((e=>"arrow_forward"===e.querySelector("i.google-symbols")?.textContent.trim()));default:return null}}function showToast(e,t=8e3){const n=document.createElement("div");n.textContent=e,n.style.cssText="position:fixed; top:20px; left:50%; transform:translateX(-50%); background:rgba(0,0,0,0.8); color:white; padding:8px 16px; border-radius:30px; z-index:99999; font-size:13px; pointer-events:none; font-family: var(--mp-font-family-base) !important;",document.body.appendChild(n),setTimeout((()=>n.remove()),t)}function isEditorEmpty(e){if(!e)return!0;if(!e.isConnected)return!0;let t="";return t="textarea"===e.tagName.toLowerCase()?e.value:e.textContent||e.innerText||"",0===t.replace(/[\s\u200B\u00A0\r\n]/g,"").length}function waitForUploadAndClick(e,t=12e4){const n=Date.now(),o=setInterval((()=>{if(Date.now()-n>t)return void clearInterval(o);if(isEditorEmpty(e))return void clearInterval(o);const a=getSendButton();if(!a)return;const r=a.disabled||"true"===a.getAttribute("aria-disabled"),i=window.getComputedStyle(a),s="not-allowed"===i.cursor||parseFloat(i.opacity)<.5,l="none"===i.display||"hidden"===i.visibility;r||s||l||a.click()}),800)}function handleChatGLM(e,t=12e4){const n=Date.now(),o=setInterval((()=>{if(Date.now()-n>t||isEditorEmpty(e))clearInterval(o);else try{e.isConnected&&e.focus();const t=new KeyboardEvent("keydown",{key:"Enter",code:"Enter",which:13,keyCode:13,bubbles:!0,cancelable:!0});e.dispatchEvent(t)}catch(e){}}),800)}async function insertPrompt(e,t=!1,n=!1){let o=document.querySelector(platformSelectors[currentPlatform]);if(!o)return;o.focus();const a=navigator.userAgent.toLowerCase().includes("firefox");let r=!1,i=0,s=0;const l=[];if(e.activeFileIds&&e.activeFileIds.length>0){(await getGlobalFiles()).forEach((t=>{e.activeFileIds.includes(t.id)&&(s++,i+=t.size,l.push(dataURLtoFile(t.data,t.name)))}))}if(e.dynamicFiles&&e.dynamicFiles.length>0&&e.dynamicFiles.forEach((e=>{s++,i+=e.size,l.push(e)})),l.length>0){r=!0,i=1500+i/1024/100*100;const e=new DataTransfer;if(l.forEach((t=>e.items.add(t))),"gemini"===currentPlatform)if(a){let t=document.querySelector("[data-filedrop-id]")||document.querySelector(".chat-window-input-container")||o;["dragenter","dragover","drop"].forEach((n=>{const o=new DragEvent(n,{bubbles:!0,cancelable:!0,dataTransfer:e});t.dispatchEvent(o)}))}else{const t=new ClipboardEvent("paste",{bubbles:!0,cancelable:!0,clipboardData:e});o.dispatchEvent(t)}else{let t=!1;if(["qwen","longcat","grok","mistral","googleaistudio","yuanbao","ernie"].includes(currentPlatform)){let n=document.querySelector(".chat-input-container")||document.querySelector("form")||o;["dragenter","dragover","drop"].forEach((t=>{const o=new DragEvent(t,{bubbles:!0,cancelable:!0,dataTransfer:e});n.dispatchEvent(o)})),t=!0}if(!t){let t=document.querySelector('input[type="file"]');if("perplexity"===currentPlatform&&(t=document.querySelector('input[data-testid="file-upload-input"]')),t)try{t.value="",t.files=e.files,t.dispatchEvent(new Event("change",{bubbles:!0})),t.dispatchEvent(new Event("input",{bubbles:!0}))}catch(e){}else["dragenter","dragover","drop"].forEach((t=>{const n=new DragEvent(t,{bubbles:!0,cancelable:!0,dataTransfer:e});o.dispatchEvent(n)}))}}showToast(getTranslation("sendingFiles").replace("{fileCount}",s),i)}if(setTimeout((()=>{if(!a||"kimi"!==currentPlatform&&"perplexity"!==currentPlatform&&"qwen"!==currentPlatform)if(!a||"chatgpt"!==currentPlatform&&"claude"!==currentPlatform&&"grok"!==currentPlatform&&"longcat"!==currentPlatform&&"mistral"!==currentPlatform&&"yuanbao"!==currentPlatform)if("gemini"===currentPlatform)if(o.focus(),a){let t=o.querySelector("p")||document.createElement("p");t.textContent+=e.text,o.contains(t)||o.appendChild(t),o.dispatchEvent(new Event("input",{bubbles:!0,composed:!0}))}else{if(!document.execCommand("insertText",!1,e.text)){const t=document.createTextNode(e.text);o.appendChild(t)}o.dispatchEvent(new Event("input",{bubbles:!0,composed:!0}))}else if("flow"===currentPlatform||"qianwen"===currentPlatform){o.focus();const t=window.getSelection(),n=document.createRange();n.selectNodeContents(o),n.collapse(!1),t.removeAllRanges(),t.addRange(n);const a=new InputEvent("beforeinput",{bubbles:!0,cancelable:!0,inputType:"insertText",data:e.text});o.dispatchEvent(a);const r=new DataTransfer;r.setData("text/plain",e.text);const i=new ClipboardEvent("paste",{clipboardData:r,bubbles:!0,cancelable:!0});o.dispatchEvent(i),o.dispatchEvent(new Event("input",{bubbles:!0}))}else{const t=new DataTransfer;if(t.setData("text/plain",e.text),o.dispatchEvent(new ClipboardEvent("paste",{clipboardData:t,bubbles:!0,cancelable:!0})),void 0!==o.value&&!o.value.includes(e.text)){let t=o.value+e.text;if(n&&"number"==typeof o.selectionStart){const n=o.selectionStart;t=o.value.substring(0,n)+e.text+o.value.substring(o.selectionEnd),setTimeout((()=>{o.selectionStart=o.selectionEnd=n+e.text.length}),0)}const a=Object.getOwnPropertyDescriptor(window.HTMLTextAreaElement.prototype,"value").set;a?a.call(o,t):o.value=t,o.dispatchEvent(new Event("input",{bubbles:!0}))}}else{e.text.split("\n").forEach((e=>{const t=document.createElement("p");""===e.trim()?t.appendChild(document.createElement("br")):t.textContent=e,o.appendChild(t)})),o.dispatchEvent(new Event("input",{bubbles:!0,composed:!0})),o.focus();const t=document.createRange();t.selectNodeContents(o),t.collapse(!1);const n=window.getSelection();n.removeAllRanges(),n.addRange(t)}else o.focus(),document.execCommand("insertText",!1,e.text);n||moveCursorToEnd(o),e.autoExecute&&!t&&("chatglm"===currentPlatform?handleChatGLM(o):r?waitForUploadAndClick(o):setTimeout((()=>{let e=!1;if("qwen"===currentPlatform)try{const t=document.querySelector("button.send-button")||document.querySelector('button:has(use[xlink:href="#icon-line-arrow-up"])');t&&!t.disabled&&(t.click(),e=!0)}catch(e){}if("googleaistudio"===currentPlatform)try{const t=document.querySelector("button.run-button");t&&(t.click(),e=!0)}catch(e){}if("glmimage"===currentPlatform)try{const t=document.querySelector('button img[src*="generate-icon"]')||document.querySelector('button img[alt="generate"]');if(t){const n=t.closest("button");n&&!n.disabled&&(n.click(),e=!0)}}catch(e){}if(!e)try{const e=new KeyboardEvent("keydown",{key:"Enter",code:"Enter",which:13,keyCode:13,bubbles:!0,cancelable:!0});o.dispatchEvent(e)}catch(e){}}),150))}),100),e.id){let t=await getAll();const n=t.findIndex((t=>t.id===e.id));if(-1!==n&&!t[n].isFixed){const[e]=t.splice(n,1);let o=t.findIndex((e=>!e.isFixed));-1===o&&(o=t.length),t.splice(o,0,e),normalizePositions(t),await saveRawPrompts(promptsToStorage(t))}}}async function openExportMenu(){closeMenu();const e=document.createElement("div");e.className="mp-overlay",e.id="__ap_export_overlay";const t=document.createElement("div");t.className="mp-modal-box",t.onclick=e=>e.stopPropagation();const n=await getAll();setSafeInnerHTML(t,` <button id="__ap_close_export" class="mp-modal-close-btn">${ICONS.close}</button><h2 class="modal-title">${getTranslation("export")}</h2><div class="mp-search-container"><input type="text" id="__ap_export_search" class="mp-search-input" placeholder="${getTranslation("search")}" autocomplete="off"><div class="mp-export-actions"><label class="mp-checkbox-wrapper" style="cursor:pointer; user-select:none;"><input type="checkbox" id="__ap_select_all" class="mp-checkbox" checked><span style="margin-left:8px;">${getTranslation("selectAll")}</span></label><span id="__ap_count_label">${getTranslation("countPrompts",{count:n.length})}</span></div></div><div class="mp-export-list" id="__ap_export_list"></div><div class="mp-export-buttons"><button id="__ap_do_export_txt" class="save-button mp-btn-secondary" style="margin-right:auto">TXT</button><button id="__ap_do_export_json" class="save-button">JSON</button></div> `),e.appendChild(t),document.body.appendChild(e),requestAnimationFrame((()=>e.classList.add("visible")));const o=t.querySelector("#__ap_export_list");function a(e=""){o.textContent="";const t=e.toLowerCase();let a=0;if(0===n.length){const e=document.createElement("div");return e.className="empty-state",e.textContent=getTranslation("noSavedPrompts"),void o.appendChild(e)}n.forEach((e=>{if(!(e.title.toLowerCase().includes(t)||e.text.toLowerCase().includes(t)))return;a++;const n=document.createElement("div");n.className="mp-export-item",n.onclick=e=>{if("checkbox"!==e.target.type){const e=n.querySelector("input");e.checked=!e.checked,s()}};const r=document.createElement("input");r.type="checkbox",r.className="mp-checkbox prompt-selector",r.checked=!0,r.dataset.promptId=e.id,r.onclick=e=>{e.stopPropagation(),s()};const i=document.createElement("div");i.className="mp-item-content";const l=document.createElement("div");l.className="mp-item-title",l.textContent=e.title;const c=document.createElement("div");c.className="mp-item-preview",c.textContent=e.text.substring(0,150).replace(/\n/g," ")+"...";const p=document.createElement("div");p.className="mp-checkbox-wrapper",p.appendChild(r),i.appendChild(l),i.appendChild(c),n.appendChild(p),n.appendChild(i),o.appendChild(n)})),document.getElementById("__ap_count_label").textContent=getTranslation("countPrompts",{count:a})}o.style.maxHeight="300px",setupEnhancedScroll(o),a();const r=document.getElementById("__ap_export_search"),i=document.getElementById("__ap_select_all");function s(){const e=Array.from(o.querySelectorAll(".prompt-selector"));if(0===e.length)return;const t=e.every((e=>e.checked)),n=e.some((e=>e.checked));i.checked=t,i.indeterminate=n&&!t}r.oninput=e=>{a(e.target.value),s()},i.onchange=e=>{o.querySelectorAll(".prompt-selector").forEach((t=>t.checked=e.target.checked))};const l=()=>Array.from(o.querySelectorAll(".prompt-selector:checked")).map((e=>{const t=n.find((t=>t.id===e.dataset.promptId));if(!t)return null;const{id:o,position:a,...r}=t;return r})).filter(Boolean),c=()=>{e.classList.remove("visible"),setTimeout((()=>e.remove()),200)};t.querySelector("#__ap_close_export").onclick=c,e.onclick=t=>{t.target===e&&c()},document.getElementById("__ap_do_export_json").onclick=()=>{const e=l();if(0===e.length)return void alert(getTranslation("noPromptsToExport"));const t=e.map((e=>({title:e.title,text:e.text,usePlaceholders:e.usePlaceholders,autoExecute:e.autoExecute})));let n="";if(1===e.length){n=`${(e[0].title||"Prompt").replace(/[<>:"/\\|?*]/g,"").trim()}.mp.prompt.json`}else{const e=new Date;n=`Prompts_MyPrompt_${e.toLocaleDateString(navigator.language).replace(/\//g,"-")}_${e.toLocaleTimeString(navigator.language,{hour:"2-digit",minute:"2-digit",second:"2-digit"}).replace(/:/g,"-")}.mp.prompt.json`}const o=document.createElement("a");o.href=URL.createObjectURL(new Blob([JSON.stringify(t,null,2)],{type:"application/json"})),o.download=n,o.click(),URL.revokeObjectURL(o.href),c()},document.getElementById("__ap_do_export_txt").onclick=async()=>{const e=l();if(0!==e.length){if(!(e.length>10)||confirm(getTranslation("confirmDownloads",{count:e.length}))){for(const t of e){const e=document.createElement("a");e.href=URL.createObjectURL(new Blob([t.text],{type:"text/plain"}));const n=(t.title||"prompt").replace(/[<>:"/\\|?*]/g,"").trim();e.download=`${n||"prompt"}.txt`,e.style.display="none",document.body.appendChild(e),e.click(),document.body.removeChild(e),await new Promise((e=>setTimeout(e,200)))}c()}}else alert(getTranslation("noPromptsToExport"))},setTimeout((()=>r.focus()),100)}function exportPrompts(){openExportMenu()}function importPrompts(){const e=document.createElement("input");e.type="file",e.accept=".mp.prompt.json",e.onchange=e=>{const t=e.target.files[0];if(!t)return;const n=new FileReader;n.onload=async e=>{try{const t=JSON.parse(e.target.result);if(!Array.isArray(t))throw new Error("Not an array.");const n=await getAll(),o=t.map(((e,t)=>({id:generatePromptId()+String(t).padStart(3,"0"),title:e.title||"No Title",text:e.text||"",usePlaceholders:e.usePlaceholders||!1,autoExecute:e.autoExecute||!1,isFixed:!1,activeFileIds:[],tags:[]})));let a=n.findIndex((e=>!e.isFixed));-1===a&&(a=n.length),n.splice(a,0,...o),normalizePositions(n),await saveRawPrompts(promptsToStorage(n)),await refreshMenu(),alert(getTranslation("promptsImported",{count:o.length}))}catch(e){alert(getTranslation("errorImporting",{error:e.message}))}},n.readAsText(t)},e.click(),closeMenu()}function cleanup(){SyntaxHighlighter.detach(),currentButton&&(currentButton.remove(),currentButton=null),currentMenu&&(currentMenu.remove(),currentMenu=null),currentModal&&(currentModal.remove(),currentModal=null),languageModal&&(languageModal.remove(),languageModal=null),currentPlaceholderModal&&(currentPlaceholderModal.remove(),currentPlaceholderModal=null),isInitialized=!1}
    async function initUI() {
        if (pageObserver) pageObserver.disconnect();
        cleanup();
        currentPlatform = detectPlatform();
        if (!currentPlatform) return;
        createNavInterface();
        try {
            let btn, elementToInsert, insertionPoint, insertionMethod = 'before';
            if (currentPlatform === 'chatgpt') {
                const findAnchor = () => {
                    const anchor = document.getElementById('composer-plus-btn') || document.querySelector('[data-testid="composer-plus-btn"]');
                    if (anchor) {
                        const hasIcon = anchor.querySelector('use[href*="6be74c"]');
                        if (hasIcon || anchor.querySelector('svg')) {
                            return { element: anchor, type: 'fingerprint-id' };
                        }
                    }
                    return null;
                };
                let anchorData = findAnchor();
                if (!anchorData) {
                    await new Promise(r => setTimeout(r, 1000));
                    anchorData = findAnchor();
                }
                if (!anchorData) return;
                const anchorBtn = anchorData.element;
                const container = anchorBtn.parentElement;
                if (!container) return;
                let existingBtn = container.querySelector('[data-testid="composer-button-prompts"]');
                if (existingBtn) {
                    btn = existingBtn;
                } else {
                    btn = createPromptButton('right');
                    container.insertBefore(btn, anchorBtn);
                }
                elementToInsert = btn;
                insertionPoint = container;
                insertionMethod = 'handled_manually';
            }
            else if (currentPlatform === 'deepseek') {
                const findAnchor = () => {
                    const SEND_ICON_PATH = "M8.3125 0.981587C8.66767"; const STOP_ICON_PATH = "M2 4.88C2 3.68009";
                    const candidates = Array.from(document.querySelectorAll('div[role="button"]'));
                    const target = candidates.find(btn => {
                        const path = btn.querySelector('path');
                        const d = path?.getAttribute('d') || "";
                        return d.startsWith(SEND_ICON_PATH) || d.startsWith(STOP_ICON_PATH);
                    });
                    if (target && target.parentElement) {
                        return { element: target.parentElement, type: 'icon-fingerprint' };
                    }
                    return null;
                };
                let anchorData = findAnchor();
                if (!anchorData) {
                    await new Promise(r => setTimeout(r, 1500));
                    anchorData = findAnchor();
                }
                if (!anchorData) return;
                let container = anchorData.element.parentElement;
                if (!container) return;
                let existingBtn = container.querySelector('[data-testid="composer-button-prompts"]');
                if (existingBtn) {
                    btn = existingBtn;
                } else {
                    btn = createPromptButton('left');
                    btn.style.marginRight = "15px";
                    btn.style.display = "inline-flex";
                    btn.style.alignItems = "center";
                    container.insertBefore(btn, anchorData.element);
                }
                elementToInsert = btn;
                insertionPoint = container;
                insertionMethod = 'handled_manually';
            }
            else if (currentPlatform === 'googleaistudio') {
                const findAnchor = () => {
                    const mediaBtn = document.querySelector('button[iconname="add_circle"]');
                    if (mediaBtn) {
                        const wrapper = mediaBtn.closest('.button-wrapper');
                        if (wrapper) return { element: wrapper, type: 'attribute-fingerprint' };
                    }
                    const wrapper = document.querySelector('.button-wrapper');
                    if (wrapper) return { element: wrapper, type: 'class-fallback' };
                    return null;
                };
                let anchorData = findAnchor();
                if (!anchorData) {
                    await new Promise(r => setTimeout(r, 1000));
                    anchorData = findAnchor();
                }
                if (!anchorData) return;
                let container = anchorData.element.parentElement;
                if (!container) return;
                let existingBtn = container.querySelector('[data-testid="composer-button-prompts"]');
                if (existingBtn) {
                    btn = existingBtn;
                } else {
                    btn = createPromptButton();
                    btn.style.marginRight = '8px';
                    container.insertBefore(btn, anchorData.element);
                }
                elementToInsert = btn;
                insertionPoint = container;
                insertionMethod = 'handled_manually';
            }
            else if (currentPlatform === 'qwen') {
                const findAnchor = () => {
                    const ANCHOR_IDS = ['#icon-line-waveform', '#icon-line-arrow-up', '#icon-fill-stop-011'];
                    const containerCandidate = document.querySelector('.message-input-right-button-send');
                    if (!containerCandidate) return null;
                    const hasValidIcon = containerCandidate.querySelector('use');
                    const iconHref = hasValidIcon?.getAttribute('xlink:href') || hasValidIcon?.getAttribute('href');
                    if (iconHref && ANCHOR_IDS.includes(iconHref)) {
                        return { element: containerCandidate, type: 'svg-use-fingerprint' };
                    }
                    return null;
                };
                let anchorData = findAnchor();
                if (!anchorData) {
                    await new Promise(r => setTimeout(r, 1500));
                    anchorData = findAnchor();
                }
                if (!anchorData) return;
                const parentContainer = anchorData.element.parentElement;
                if (!parentContainer) return;
                let existingBtn = parentContainer.querySelector('[data-testid="composer-button-prompts"]');
                if (existingBtn) {
                    btn = existingBtn;
                } else {
                    btn = createPromptButton('left');
                    parentContainer.insertBefore(btn, anchorData.element);
                }
                elementToInsert = btn;
                insertionPoint = parentContainer;
                insertionMethod = 'handled_manually';
            }
            else if (currentPlatform === 'zai') {
                const findAnchor = () => {
                    const SEND_ICON = "M7.99946 1.50005L2.29635 13.5283"; const STOP_SELECTOR = "button span.block.bg-white.size-3";
                    const sendBtn = document.getElementById('send-message-button');
                    if (sendBtn) return { element: sendBtn, type: 'id' };
                    const pathTarget = Array.from(document.querySelectorAll('button svg path'))
                        .find(p => p.getAttribute('d')?.startsWith(SEND_ICON));
                    if (pathTarget) return { element: pathTarget.closest('button'), type: 'fingerprint-send' };
                    const stopBtn = document.querySelector(STOP_SELECTOR)?.closest('button');
                    if (stopBtn) return { element: stopBtn, type: 'fingerprint-stop' };
                    return null;
                };
                let anchorData = findAnchor();
                if (!anchorData) {
                    await new Promise(r => setTimeout(r, 1500));
                    anchorData = findAnchor();
                }
                if (!anchorData) return;
                const container = anchorData.element.closest('div.flex.self-end');
                if (!container) return;
                let existingBtn = container.querySelector('[data-testid="composer-button-prompts"]');
                if (existingBtn) {
                    btn = existingBtn;
                } else {
                    btn = createPromptButton();
                    btn.style.marginRight = '10px';
                    container.insertBefore(btn, container.firstChild);
                }
                elementToInsert = btn;
                insertionPoint = container;
                insertionMethod = 'handled_manually';
            }
            else if (currentPlatform === 'gemini') {
                const findAnchor = () => {
                    const micIcon = document.querySelector('mat-icon[data-mat-icon-name="mic"]');
                    if (micIcon) {
                        return { element: micIcon.closest('.input-buttons-wrapper-bottom'), type: 'mic-wrapper' };
                    }
                    const sendIcon = document.querySelector('mat-icon[data-mat-icon-name="send"]');
                    if (sendIcon) {
                        return { element: sendIcon.closest('.input-buttons-wrapper-bottom'), type: 'send-wrapper' };
                    }
                    return null;
                };
                let anchorData = findAnchor();
                if (!anchorData) {
                    await new Promise(r => setTimeout(r, 1500));
                    anchorData = findAnchor();
                }
                if (!anchorData) return;
                const bottomWrapper = anchorData.element;
                const container = bottomWrapper.parentElement;
                if (!container) return;
                let existingBtn = container.querySelector('[data-testid="composer-button-prompts"]');
                if (existingBtn) {
                    btn = existingBtn;
                } else {
                    btn = createPromptButton();
                    container.insertBefore(btn, bottomWrapper);
                    container.insertBefore(document.createComment(''), bottomWrapper);
                    container.insertBefore(document.createComment(''), bottomWrapper);
                    container.insertBefore(document.createComment(''), bottomWrapper);
                }
                elementToInsert = btn;
                insertionPoint = container;
                insertionMethod = 'handled_manually';
            }
            else if (currentPlatform === 'arena') {
                const findAnchor = () => {
                    const ANCHOR_FINGERPRINT = "M3 12L21 12M21 12L12.5 3.5";
                    const candidates = Array.from(document.querySelectorAll('button[type="submit"], div[role="button"], button'));
                    const target = candidates.find(btn => {
                        const path = btn.querySelector('path');
                        const hasFingerprint = path && path.getAttribute('d')?.includes(ANCHOR_FINGERPRINT);
                        if (!hasFingerprint) return false;
                        const safeContainer = btn.closest('div.flex.items-center.gap-2');
                        return !!safeContainer;
                    });
                    if (target) return { element: target, type: 'svg-fingerprint' };
                    return null;
                };
                let anchorData = findAnchor();
                if (!anchorData) {
                    await new Promise(r => setTimeout(r, 1500));
                    anchorData = findAnchor();
                }
                if (!anchorData) return;
                const anchorElement = anchorData.element;
                const container = anchorElement.parentElement;
                if (!container) return;
                let existingBtn = container.querySelector('.custom-prompt-btn-class') || container.querySelector('[data-testid="composer-button-prompts"]');
                if (existingBtn) {
                    btn = existingBtn;
                } else {
                    btn = createPromptButton();
                    container.insertBefore(btn, anchorElement);
                }
                elementToInsert = btn;
                insertionPoint = container;
                insertionMethod = 'handled_manually';
            }
            else if (currentPlatform === 'kimi') {
                const findAnchor = () => {
                    const SEND_ICON_PATH = "M705.536 433.664a38.4 38.4 0 1 1-54.272 54.272L550.4"; const STOP_ICON_PATH = "M331.946667 379.904";
                    const candidates = Array.from(document.querySelectorAll('.send-button-container, .send-icon, svg'));
                    const targetIcon = candidates.find(el => {
                        const path = el.querySelector('path');
                        const d = path?.getAttribute('d');
                        return d && (d.startsWith(SEND_ICON_PATH) || d.startsWith(STOP_ICON_PATH));
                    });
                    const sendContainer = targetIcon?.closest('.send-button-container');
                    if (sendContainer) {
                        return { element: sendContainer, type: 'icon-fingerprint' };
                    }
                    return null;
                };
                let anchorData = findAnchor();
                if (!anchorData) {
                    await new Promise(r => setTimeout(r, 2000));
                    anchorData = findAnchor();
                }
                if (!anchorData) return;
                const container = anchorData.element.closest('.right-area') || anchorData.element.parentElement;
                if (!container) return;
                let existingBtn = container.querySelector('[data-testid="composer-button-prompts"]');
                if (existingBtn) {
                    btn = existingBtn;
                } else {
                    btn = createPromptButton();
                    container.insertBefore(btn, anchorData.element);
                }
                elementToInsert = btn;
                insertionPoint = container;
                insertionMethod = 'handled_manually';
            }
            else if (currentPlatform === 'claude') {
                const findAnchor = () => {
                    const ANCHOR_SEND_PATH = "M208.49,120.49a12,12,0,0,1-17,0L140,69V216a12,12,0,0,1-24,0V69L64.49,120.49a12,12,0,0,1-17-17l72-72a12,12,0,0,1,17,0l72,72A12,12,0,0,1,208.49,120.49Z"; const ANCHOR_STOP_PATH = "M128,20A108,108,0,1,0,236,128,108.12,108.12,0,0,0,128,20Zm0,192a84,84,0,1,1,84-84A84.09,84.09,0,0,1,128,212Zm40-112v56a12,12,0,0,1-12,12H100a12,12,0,0,1-12-12V100a12,12,0,0,1,12-12h56A12,12,0,0,1,168,100Z";
                    const candidates = Array.from(document.querySelectorAll('button'));
                    const target = candidates.find(btn => {
                        const svg = btn.querySelector('svg');
                        if (!svg) return false;
                        const path = svg.querySelector('path');
                        if (path) {
                            const d = path.getAttribute('d');
                            if (d === ANCHOR_SEND_PATH || d === ANCHOR_STOP_PATH) return true;
                        }
                        const rects = svg.querySelectorAll('rect');
                        if (rects.length > 0) {
                            const hasVoiceBars = Array.from(rects).some(r =>
                                r.getAttribute('width') === '1px' &&
                                (r.getAttribute('height') === '6px' || r.getAttribute('height') === '10px' || r.getAttribute('height') === '16px')
                            );
                            if (hasVoiceBars) return true;
                        }
                        return false;
                    });
                    if (target) return { element: target, type: 'icon-fingerprint' };
                    return null;
                };
                let anchorData = findAnchor();
                if (!anchorData) {
                    await new Promise(r => setTimeout(r, 1000));
                    anchorData = findAnchor();
                }
                if (!anchorData) return;
                let wrapperDiv = anchorData.element;
                while (wrapperDiv && wrapperDiv !== document.body) {
                    wrapperDiv = wrapperDiv.parentElement;
                    if (wrapperDiv && wrapperDiv.classList.contains('shrink-0')) {
                        if (wrapperDiv.classList.contains('gap-1')) {
                            continue;
                        }
                        break;
                    }
                }
                if (!wrapperDiv || wrapperDiv === document.body) return;
                const insertionContainer = wrapperDiv.parentElement;
                if (!insertionContainer) return;
                let existingBtn = insertionContainer.querySelector('[data-testid="composer-button-prompts"]');
                if (existingBtn) {
                    btn = existingBtn;
                } else {
                    btn = createPromptButton();
                    btn.style.setProperty('margin', '0', 'important');
                    insertionContainer.insertBefore(btn, wrapperDiv);
                }
                elementToInsert = btn;
                insertionPoint = insertionContainer;
                insertionMethod = 'handled_manually';
            }
            else if (currentPlatform === 'grok') {
                const findAnchor = () => {
                    const idCandidate = document.getElementById('model-select-trigger');
                    if (idCandidate) {
                        return { element: idCandidate.parentElement, type: 'model-id' };
                    }
                    const MODEL_SVG_PATH = "M6.5 12.5L11.5 17.5M6.5 12.5";
                    const candidates = Array.from(document.querySelectorAll('button'));
                    const svgCandidate = candidates.find(btn => {
                        const path = btn.querySelector('path');
                        return path && path.getAttribute('d')?.startsWith(MODEL_SVG_PATH);
                    });
                    if (svgCandidate) {
                        return { element: svgCandidate.parentElement, type: 'model-svg' };
                    }
                    return null;
                };
                let anchorData = findAnchor();
                if (!anchorData) {
                    await new Promise(r => setTimeout(r, 1000));
                    anchorData = findAnchor();
                }
                if (!anchorData) return;
                const leftAnchor = anchorData.element;
                const container = leftAnchor.parentElement;
                if (!container) return;
                let existingBtn = container.querySelector('[data-testid="composer-button-prompts"]');
                if (existingBtn) {
                    btn = existingBtn;
                    if (btn.previousElementSibling !== leftAnchor) {
                        container.insertBefore(btn, leftAnchor.nextElementSibling);
                    }
                } else {
                    btn = createPromptButton('left');
                    btn.style.marginBottom = '2px';
                    container.insertBefore(btn, leftAnchor.nextElementSibling);
                }
                elementToInsert = btn;
                insertionPoint = container;
                insertionMethod = 'handled_manually';
            }
            else if (currentPlatform === 'perplexity') {
                const findAnchor = () => {
                    const PPLX_FINGERPRINTS = ['#pplx-icon-custom-perplexity-v2v', '#pplx-icon-player-stop-filled', '#pplx-icon-arrow-up', '#pplx-icon-arrow-right'];
                    const buttons = document.querySelectorAll('button[type="button"]');
                    for (const btnEl of buttons) {
                        const useTag = btnEl.querySelector('use');
                        if (useTag) {
                            const href = useTag.getAttribute('xlink:href') || useTag.getAttribute('href');
                            if (PPLX_FINGERPRINTS.includes(href)) {
                                const anchorWrapper = btnEl.closest('.ml-2') || btnEl;
                                return { element: anchorWrapper, type: 'svg-use-fingerprint' };
                            }
                        }
                    }
                    return null;
                };
                let anchorData = findAnchor();
                if (!anchorData) {
                    for (let i = 0; i < 3; i++) {
                        await new Promise(r => setTimeout(r, 800));
                        anchorData = findAnchor();
                        if (anchorData) break;
                    }
                }
                if (!anchorData) return;
                const container = anchorData.element.parentElement;
                if (!container) return;
                let existingBtn = container.querySelector('[data-testid="composer-button-prompts"]');
                if (!existingBtn) {
                    btn = createPromptButton('left');
                    container.insertBefore(btn, anchorData.element);
                } else {
                    btn = existingBtn;
                }
                elementToInsert = btn;
                insertionPoint = container;
                insertionMethod = 'handled_manually';
            }
            else if (currentPlatform === 'longcat') {
                const findAnchor = () => {
                    const ICON_HREFS = ["#icon-sikao", "#icon-lianwang", "#icon-upload"];
                    const candidates = Array.from(document.querySelectorAll('use'));
                    const targetIcon = ICON_HREFS.map(href =>
                        candidates.find(use => use.getAttribute('href') === href)
                    ).find(el => el !== undefined);
                    if (targetIcon) {
                        const footer = targetIcon.closest('.chat-input-footer');
                        if (footer) {
                            const leftBox = footer.closest('.left-box');
                            if (leftBox) return { element: leftBox, type: 'structure-fingerprint' };
                        }
                    }
                    const leftBoxEl = document.querySelector('.left-box');
                    if (leftBoxEl) return { element: leftBoxEl, type: 'class-selector' };
                    return null;
                };
                let anchorData = findAnchor();
                if (!anchorData) {
                    await new Promise(r => setTimeout(r, 1000));
                    anchorData = findAnchor();
                }
                if (!anchorData) return;
                let container = anchorData.element;
                let existingBtn = container.querySelector('[data-testid="composer-button-prompts"]');
                if (existingBtn) {
                    btn = existingBtn;
                } else {
                    btn = createPromptButton();
                    btn.style.marginRight = '8px';
                    container.prepend(btn);
                }
                elementToInsert = btn;
                insertionPoint = container;
                insertionMethod = 'handled_manually';
            }
            else if (currentPlatform === 'mistral') {
                const findAnchor = () => {
                    const ANCHORICONPATH = "M12 19v3";
                    const candidates = Array.from(document.querySelectorAll('button, [role="button"]'));
                    const target = candidates.find(btn => {
                        const path = btn.querySelector('path');
                        return path && path.getAttribute('d')?.startsWith(ANCHORICONPATH);
                    });
                    if (target) return { element: target, type: 'icon-fingerprint' };
                    return null;
                };
                let anchorData = findAnchor();
                if (!anchorData) {
                    await new Promise(r => setTimeout(r, 1000));
                    anchorData = findAnchor();
                }
                if (!anchorData) return;
                const micButton = anchorData.element;
                const wrapperDiv = micButton.parentElement;
                const outerContainer = wrapperDiv.parentElement;
                if (!outerContainer) return;
                let existingBtn = outerContainer.querySelector('[data-testid="composer-button-prompts"]');
                if (existingBtn) {
                    btn = existingBtn;
                } else {
                    btn = createPromptButton('left');
                    outerContainer.insertBefore(btn, wrapperDiv);
                }
                elementToInsert = btn;
                insertionPoint = outerContainer;
                insertionMethod = 'handled_manually';
            }
            else if (currentPlatform === 'yuanbao') {
                const findAnchor = () => {
                    let target = document.querySelector('a[class*="style__send-btn"]');
                    if (target) return { element: target, type: 'class-prefix' };
                    const iconSpan = document.querySelector('span.iconfont.icon-send');
                    if (iconSpan && iconSpan.closest('a')) {
                        return { element: iconSpan.closest('a'), type: 'child-icon' };
                    }
                    const ANCHOR_RECT_X = "7.71448";
                    const candidates = Array.from(document.querySelectorAll('a, button'));
                    const svgTarget = candidates.find(btn => {
                        const rect = btn.querySelector('rect[x="' + ANCHOR_RECT_X + '"]');
                        return rect;
                    });
                    if (svgTarget) return { element: svgTarget, type: 'icon-fingerprint' };
                    return null;
                };
                let anchorData = findAnchor();
                if (!anchorData) {
                    await new Promise(r => setTimeout(r, 1000));
                    anchorData = findAnchor();
                }
                if (!anchorData) return;
                let container = anchorData.element.parentElement;
                if (!container) return;
                let existingBtn = container.querySelector('[data-testid="composer-button-prompts"]');
                if (existingBtn) {
                    btn = existingBtn;
                } else {
                    btn = createPromptButton('left');
                    container.insertBefore(btn, anchorData.element);
                }
                elementToInsert = btn;
                insertionPoint = container;
                insertionMethod = 'handled_manually';
            }
            else if (currentPlatform === 'chatglm') {
                let container = document.querySelector('div.options-container.flex.flex-y-center');
                let anchor = null;
                if (container) {
                    anchor = container.querySelector('.upload-image-wrap');
                }
                if (!container || !anchor) {
                    container = document.querySelector('div.options[data-v-7dc2591c]');
                    if (container) {
                        targetType = 'element1';
                        anchor = container.lastElementChild;
                    }
                }
                if (!container || !anchor) {
                    container = document.querySelector('div.options[data-v-7a34b085]');
                    if (container) {
                        targetType = 'element2';
                        anchor = container.lastElementChild;
                    }
                }
                if (!container || !anchor) {
                    container = await waitFor('.options, .options-container', 5000);
                    if (!container) return;
                    if (container.matches('[data-v-7dc2591c]')) {
                         targetType = 'element1';
                         anchor = container.lastElementChild;
                    } else if (container.matches('[data-v-7a34b085]')) {
                         targetType = 'element2';
                         anchor = container.lastElementChild;
                    } else {
                         targetType = 'original';
                         anchor = container.querySelector('.upload-image-wrap');
                    }
                }
                if (!container || !anchor) return;
                btn = container.querySelector('[data-testid="composer-button-prompts"]');
                if (!btn) {
                    btn = createPromptButton();
                }
                elementToInsert = btn;
                insertionPoint = anchor;
                insertionMethod = 'after';
            }
            else if (currentPlatform === 'poe') {
                const findAnchor = () => {
                    const ANCHOR_ICON_SIG = "M13 4.5a1 1 0 1 0-2 0V11";
                    const candidates = Array.from(document.querySelectorAll('button[data-button-file-input="true"], button'));
                    const target = candidates.find(btn => {
                        const path = btn.querySelector('path');
                        return path && path.getAttribute('d')?.startsWith(ANCHOR_ICON_SIG);
                    });
                    if (target) {
                        const actionContainer = target.closest('[class*="actionContainerLeft"]');
                        return {
                            element: actionContainer || target.parentElement,
                            type: 'icon-fingerprint'
                        };
                    }
                    return null;
                };
                let anchorData = findAnchor();
                if (!anchorData) {
                    await new Promise(r => setTimeout(r, 1500));
                    anchorData = findAnchor();
                }
                if (!anchorData || !anchorData.element) return;
                let container = anchorData.element;
                let existingBtn = container.querySelector('[data-testid="composer-button-prompts"]');
                if (existingBtn) {
                    btn = existingBtn;
                } else {
                    btn = createPromptButton();
                    if (container.firstChild) {
                        container.insertBefore(btn, container.firstChild);
                    } else {
                        container.appendChild(btn);
                    }
                }
                elementToInsert = btn;
                insertionPoint = container;
                insertionMethod = 'handled_manually';
            }
            else if (currentPlatform === 'googleModoIA') {
                const findAnchor = () => {
                    const ANCHOR_SVG_PATH = "M440-440H200v-80H440V-760h80v240H760v80H520v240H440V-440Z";
                    const candidates = Array.from(document.querySelectorAll('button.uMMzHc, button[jsuid]'));
                    const target = candidates.find(btn => {
                        const path = btn.querySelector('path');
                        return path && path.getAttribute('d') === ANCHOR_SVG_PATH;
                    });
                    if (target) return { element: target, type: 'icon-fingerprint' };
                    return null;
                };
                let anchorData = findAnchor();
                if (!anchorData) {
                    await new Promise(r => setTimeout(r, 1500));
                    anchorData = findAnchor();
                }
                if (!anchorData) return;
                let container = anchorData.element.parentElement;
                if (!container) return;
                let existingBtn = container.querySelector('[data-testid="composer-button-prompts"]');
                if (existingBtn) {
                    btn = existingBtn;
                } else {
                    btn = createPromptButton();
                    btn.style.marginTop = "6px";
                    container.insertBefore(btn, anchorData.element);
                }
                elementToInsert = btn;
                insertionPoint = container;
                insertionMethod = 'handled_manually';
            }
            else if (currentPlatform === 'notebooklm') {
                const findAnchor = () => {
                    const ANCHORICONPATH = "M6.4 19L5 17.6l5.6-5.6L5 6.4L6.4 5l7 7Z";
                    const candidates = Array.from(document.querySelectorAll('button.submit-button, button[aria-label]'));
                    const target = candidates.find(btn => {
                        const svgPath = btn.querySelector('path');
                        const dAttribute = svgPath?.getAttribute('d');
                        const isArrow = dAttribute && dAttribute.includes(ANCHORICONPATH.substring(0, 4));
                        const isNamed = btn.querySelector('mat-icon')?.textContent.trim() === 'arrow_forward';
                        return isArrow || isNamed;
                    });
                    if (target) return { element: target, type: 'icon-fingerprint' };
                    const fallback = document.querySelector('button.submit-button');
                    if (fallback) return { element: fallback, type: 'class-selector' };
                    return null;
                };
                let anchorData = findAnchor();
                if (!anchorData) {
                    await new Promise(r => setTimeout(r, 2000));
                    anchorData = findAnchor();
                }
                if (!anchorData) return;
                let container = anchorData.element.parentElement;
                if (!container) return;
                let existingBtn = container.querySelector('[data-testid="composer-button-prompts"]');
                if (existingBtn) {
                    btn = existingBtn;
                } else {
                    btn = createPromptButton();
                    container.insertBefore(btn, anchorData.element);
                }
                elementToInsert = btn;
                insertionPoint = container;
                insertionMethod = 'handled_manually';
            }
            else if (currentPlatform === 'doubao') {
                const findAnchor = () => {
                    const ANCHOR_ICON_PATH = "M17.3977 3.9588C15.8361 2.39727";
                    const candidates = Array.from(document.querySelectorAll('button'));
                    const target = candidates.find(btn => {
                        const path = btn.querySelector('path');
                        return path && path.getAttribute('d')?.startsWith(ANCHOR_ICON_PATH);
                    });
                    if (target) return { element: target, type: 'icon-fingerprint' };
                    return null;
                };
                let anchorData = findAnchor();
                if (!anchorData) {
                    await new Promise(r => setTimeout(r, 1500));
                    anchorData = findAnchor();
                }
                if (!anchorData) return;
                let anchorWrapper = anchorData.element.parentElement;
                if (anchorWrapper && !anchorWrapper.classList.contains('flex')) {
                    anchorWrapper = anchorData.element;
                }
                let container = anchorWrapper.parentElement;
                if (!container) return;
                let existingBtn = container.querySelector('[data-testid="composer-button-prompts"]');
                if (existingBtn) {
                    btn = existingBtn;
                } else {
                    btn = createPromptButton();
                    if (anchorWrapper.nextSibling) {
                        container.insertBefore(btn, anchorWrapper.nextSibling);
                    } else {
                        container.appendChild(btn);
                    }
                }
                elementToInsert = btn;
                insertionPoint = container;
                insertionMethod = 'handled_manually';
            }
            else if (currentPlatform === 'copilot') {
                const findAnchor = () => {
                    const testIdEl = document.querySelector('button[data-testid="composer-create-button"]');
                    if (testIdEl) {
                        const wrapper = testIdEl.parentElement;
                        return { element: testIdEl, wrapper: wrapper, type: 'testid' };
                    }
                    return null;
                };
                let anchorData = findAnchor();
                if (!anchorData) {
                    await new Promise(r => setTimeout(r, 2000));
                    anchorData = findAnchor();
                }
                if (!anchorData) return;
                const mainContainer = anchorData.wrapper.parentElement;
                if (!mainContainer) return;
                const trueContainer = mainContainer.parentElement;
                if (!trueContainer) return;
                let existingBtn = trueContainer.querySelector('[data-testid="composer-button-prompts"]');
                if (existingBtn) {
                    btn = existingBtn;
                } else {
                    btn = createPromptButton();
                    trueContainer.insertBefore(btn, mainContainer);
                }
                if (btn) {
                    btn.style.setProperty('margin', '0', 'important');
                }
                elementToInsert = btn;
                insertionPoint = trueContainer;
                insertionMethod = 'handled_manually';
            }
            else if (currentPlatform === 'glmimage') {
                const findAnchor = () => {
                    const ANCHORICONPATH = "m6 9 6 6 6-6";
                    const candidates = Array.from(document.querySelectorAll('button, [role="combobox"]'));
                    const target = candidates.find(btn => {
                        const path = btn.querySelector('path');
                        return path && path.getAttribute('d')?.startsWith(ANCHORICONPATH);
                    });
                    if (target) return { element: target, type: 'icon-fingerprint' };
                    return null;
                };
                let anchorData = findAnchor();
                if (!anchorData) {
                    await new Promise(r => setTimeout(r, 1000));
                    anchorData = findAnchor();
                }
                if (!anchorData) return;
                let container = anchorData.element.parentElement;
                if (container && !container.classList.contains('flex')) {
                    container = container.closest('.flex.items-center.gap-4');
                }
                if (!container) return;
                let existingBtn = container.querySelector('[data-testid="composer-button-prompts"]');
                if (existingBtn) {
                    btn = existingBtn;
                } else {
                    btn = createPromptButton();
                    container.prepend(btn);
                }
                elementToInsert = btn;
                insertionPoint = container;
                insertionMethod = 'handled_manually';
            }
            else if (currentPlatform === 'flow') {
                const findAnchor = () => {
                    const candidates = Array.from(document.querySelectorAll('button'));
                    const target = candidates.find(btn => {
                        const icon = btn.querySelector('i.google-symbols');
                        return icon && icon.textContent.trim() === 'arrow_forward';
                    });
                    if (target) return { element: target, type: 'symbol-fingerprint' };
                    return null;
                };
                let anchorData = findAnchor();
                if (!anchorData) {
                    await new Promise(r => setTimeout(r, 1500));
                    anchorData = findAnchor();
                }
                if (!anchorData) return;
                let container = anchorData.element.parentElement;
                if (!container) return;
                let existingBtn = container.querySelector('[data-testid="composer-button-prompts"]');
                if (existingBtn) {
                    btn = existingBtn;
                } else {
                    btn = createPromptButton();
                    container.insertBefore(btn, anchorData.element);
                }
                elementToInsert = btn;
                insertionPoint = container;
                insertionMethod = 'handled_manually';
            }
            else if (currentPlatform === 'ernie') {
                const findAnchor = () => {
                    const ANCHORICONPATH = " M43,-63.4379997253418 C43,-63.4379997253418 31,-59.6879997253418 31,-59.6879997253418";
                    const path = Array.from(document.querySelectorAll('path')).find(p => {
                        const d = p.getAttribute('d');
                        return d && d.startsWith(ANCHORICONPATH);
                    });
                    if (path) {
                        const anchor = path.closest('.send__slzHSuja');
                        if (anchor) return { element: anchor, type: 'icon-fingerprint' };
                    }
                    const fallbackAnchor = document.querySelector('.send__slzHSuja');
                    if (fallbackAnchor) return { element: fallbackAnchor, type: 'class-fallback' };
                    return null;
                };
                let anchorData = findAnchor();
                if (!anchorData) {
                    await new Promise(r => setTimeout(r, 1500));
                    anchorData = findAnchor();
                }
                if (!anchorData) return;
                const anchor = anchorData.element;
                const container = anchor.parentElement;
                if (!container) return;
                let existingBtn = container.querySelector('[data-testid="composer-button-prompts"]');
                if (existingBtn) {
                    btn = existingBtn;
                } else {
                    btn = createPromptButton();
                    btn.style.marginRight = '15px';
                    container.insertBefore(btn, anchor);
                }
                elementToInsert = btn;
                insertionPoint = container;
                insertionMethod = 'handled_manually';
            }
            else if (currentPlatform === 'dreamina' || currentPlatform === 'jimengJianying') {
                const findAnchor = () => {
                    const container = document.querySelector('div[class*="toolbar-actions"]');
                    if (container) return { element: container, type: 'container' };
                    return null;
                };
                let anchorData = findAnchor();
                if (!anchorData) {
                    await new Promise(r => setTimeout(r, 1500));
                    anchorData = findAnchor();
                }
                if (!anchorData) return;
                let container = anchorData.element;
                if (!container) return;
                let existingBtn = container.querySelector('[data-testid="composer-button-prompts"]');
                if (existingBtn) {
                    btn = existingBtn;
                } else {
                    btn = createPromptButton();
                    if (container.firstChild) {
                        container.insertBefore(btn, container.firstChild);
                    } else {
                        container.appendChild(btn);
                    }
                }
                elementToInsert = btn;
                insertionPoint = container;
                insertionMethod = 'handled_manually';
            }
            else if (currentPlatform === 'nvidiaNim') {
                const findAnchor = () => {
                    const ANCHORICONPATH = "M0.747,1.623l14.495,6.377";
                    const candidates = Array.from(document.querySelectorAll('button, [role="button"]'));
                    const target = candidates.find(btn => {
                        const path = btn.querySelector('path');
                        return path && path.getAttribute('d')?.startsWith(ANCHORICONPATH);
                    });
                    if (target) return { element: target, type: 'icon-fingerprint' };
                    const textArea = document.querySelector('textarea[data-testid="nv-text-area-element"]');
                    if (textArea && textArea.parentElement) return { element: textArea.parentElement, type: 'fallback-parent' };
                    return null;
                };
                let anchorData = findAnchor();
                if (!anchorData) {
                    await new Promise(r => setTimeout(r, 1500));
                    anchorData = findAnchor();
                }
                if (!anchorData) return;
                let container = anchorData.element;
                if (anchorData.type === 'icon-fingerprint') {
                    container = anchorData.element.parentElement;
                }
                if (!container) return;
                let existingBtn = container.querySelector('[data-testid="composer-button-prompts"]');
                if (existingBtn) {
                    btn = existingBtn;
                } else {
                    btn = createPromptButton();
                    btn.style.marginBottom = "2px";
                    btn.style.marginRight = "5px";
                    btn.style.setProperty('padding', 'revert', 'important');
                    if (anchorData.type === 'icon-fingerprint') {
                        container.insertBefore(btn, anchorData.element);
                    } else {
                        container.appendChild(btn);
                    }
                }
                elementToInsert = btn;
                insertionPoint = container;
                insertionMethod = 'handled_manually';
            }
            else if (currentPlatform === 'indicArena') {
                const findAnchor = () => {
                    const ANCHOR_ICON_PATH = "M14.536 21.686a.5.5";
                    const candidates = Array.from(document.querySelectorAll('button[type="submit"]'));
                    const target = candidates.find(btn => {
                        const path = btn.querySelector('svg path');
                        return path && path.getAttribute('d')?.startsWith(ANCHOR_ICON_PATH);
                    });
                    if (target) return { element: target, type: 'svg-fingerprint' };
                    return null;
                };
                let anchorData = findAnchor();
                if (!anchorData) {
                    await new Promise(r => setTimeout(r, 1500));
                    anchorData = findAnchor();
                }
                if (!anchorData) return;
                let container = anchorData.element.parentElement;
                if (!container) return;
                let existingBtn = container.querySelector('[data-testid="composer-button-prompts"]');
                if (existingBtn) {
                    btn = existingBtn;
                } else {
                    btn = createPromptButton();
                    container.insertBefore(btn, anchorData.element);
                }
                elementToInsert = btn;
                insertionPoint = container;
                insertionMethod = 'handled_manually';
            }
            else if (currentPlatform === 'qianwen') {
                const findAnchor = () => {
                    const iconWrapper = document.querySelector('[data-icon-type="qwpcicon-sendChat"]');
                    if (iconWrapper) {
                        const buttonContainer = iconWrapper.closest('div');
                        if (buttonContainer) return { element: buttonContainer, type: 'data-icon-fingerprint' };
                    }
                    return null;
                };
                let anchorData = findAnchor();
                if (!anchorData) {
                    await new Promise(r => setTimeout(r, 1500));
                    anchorData = findAnchor();
                }
                if (!anchorData) return;
                let container = anchorData.element.parentElement;
                if (!container) return;
                let existingBtn = container.querySelector('[data-testid="composer-button-prompts"]');
                if (existingBtn) {
                    btn = existingBtn;
                } else {
                    btn = createPromptButton();
                    btn.style.marginRight = '8px';
                    container.insertBefore(btn, anchorData.element);
                }
                elementToInsert = btn;
                insertionPoint = container;
                insertionMethod = 'handled_manually';
            }
            else if (currentPlatform === 'geminigen') {
                const findAnchor = () => {
                    const candidates = Array.from(document.querySelectorAll('div.flex.justify-end.gap-2.items-center'));
                    const target = candidates.find(div => {
                        const hasButton = div.querySelector('button');
                        const isVisible = div.offsetParent !== null;
                        return hasButton && isVisible;
                    });
                    if (target) return { element: target, type: 'action-container' };
                    return null;
                };
                let anchorData = findAnchor();
                if (!anchorData) {
                    await new Promise(r => setTimeout(r, 1500));
                    anchorData = findAnchor();
                }
                if (!anchorData) return;
                let container = anchorData.element;
                let existingBtn = container.querySelector('[data-testid="composer-button-prompts"]');
                if (existingBtn) {
                    btn = existingBtn;
                } else {
                    btn = createPromptButton();
                    const nativeButton = container.querySelector('button');
                    if (nativeButton) {
                        container.insertBefore(btn, nativeButton);
                    } else {
                        container.appendChild(btn);
                    }
                }
                elementToInsert = btn;
                insertionPoint = container;
                insertionMethod = 'handled_manually';
            }
            else if (currentPlatform === 'hunyuan') {
                const findAnchor = () => {
                    const target = document.querySelector('div.ma-model-run-body__params-button, button.ma-model-run-body__params-button');
                    if (target) return { element: target, type: 'class-fingerprint' };
                    const actionContainer = document.querySelector('.ma-schema-form__action');
                    if (actionContainer) {
                        const btn = actionContainer.querySelector('[type="submit"]');
                        if (btn) return { element: btn, type: 'container-child' };
                    }
                    return null;
                };
                let anchorData = findAnchor();
                if (!anchorData) {
                    await new Promise(r => setTimeout(r, 1500));
                    anchorData = findAnchor();
                }
                if (!anchorData) return;
                let container = anchorData.element.closest('.t-form__controls-content') || anchorData.element.parentElement;
                if (!container) return;
                let existingBtn = container.querySelector('[data-testid="composer-button-prompts"]');
                if (existingBtn) {
                    btn = existingBtn;
                } else {
                    btn = createPromptButton();
                    container.insertBefore(btn, anchorData.element);
                    btn.style.marginRight = '8px';
                }
                elementToInsert = btn;
                insertionPoint = container;
                insertionMethod = 'handled_manually';
            }
            else if (currentPlatform === 'bing') {
                const findAnchor = () => {
                    const anchorWrapper = document.getElementById('create_btn_wrapper');
                    if (anchorWrapper) {
                        return { element: anchorWrapper, type: 'static-id' };
                    }
                    const classEl = document.querySelector('div.create_btn_wrapper');
                    if (classEl) return { element: classEl, type: 'class-name' };
                    return null;
                };
                let anchorData = findAnchor();
                if (!anchorData) {
                    await new Promise(r => setTimeout(r, 1500));
                    anchorData = findAnchor();
                }
                if (!anchorData) return;
                let container = anchorData.element.parentElement;
                if (!container) return;
                let existingBtn = container.querySelector('[data-testid="composer-button-prompts"]');
                if (existingBtn) {
                    btn = existingBtn;
                } else {
                    btn = createPromptButton();
                    container.insertBefore(btn, anchorData.element);
                }
                elementToInsert = btn;
                insertionPoint = container;
                insertionMethod = 'handled_manually';
            }
            if (!btn || !insertionPoint) return;
            const editorEl = document.querySelector(platformSelectors[currentPlatform]);
            if (editorEl) {
                setupInlineSuggestion(editorEl);
            } else {
                setTimeout(() => {
                    const retryEditor = document.querySelector(platformSelectors[currentPlatform]);
                    if (retryEditor) setupInlineSuggestion(retryEditor);
                }, 1000);
            }
            currentButton   = elementToInsert;
            const clickable = btn;
            if      (insertionMethod === 'append'){insertionPoint.appendChild(elementToInsert);}
            else if (insertionMethod === 'before'){insertionPoint.parentNode.insertBefore(elementToInsert, insertionPoint);}
            else if (insertionMethod === 'after' ){insertionPoint.parentNode.insertBefore(elementToInsert, insertionPoint.nextSibling);}
            else if (currentPlatform === 'chatglm'){applyChatGLMCustomStyles();}
            else if (currentPlatform === 'grok'){applyGrokCustomStyles();}
            currentMenu = createPromptMenu();
            currentModal = createPromptModal();
            languageModal = createLanguageModal();
            currentPlaceholderModal = createPlaceholderModal();
            infoModal = createInfoModal();
            document.body.appendChild(currentMenu);
            document.body.appendChild(currentModal);
            document.body.appendChild(languageModal);
            document.body.appendChild(currentPlaceholderModal);
            document.body.appendChild(infoModal);
            clickable.addEventListener('click', e => {
                e.stopPropagation();
                e.preventDefault();
                const menu = currentMenu;
                if (menu.classList.contains('visible')) {
                    closeMenu();
                    return;
                }
                refreshMenu().then(() => {
                    positionMenu(menu, clickable);
                    menu.classList.add('visible');
                    setTimeout(() => {
                        const list = menu.querySelector('#prompt-menu-list-el');
                        if (list && list.updateScrollArrows) {
                            list.updateScrollArrows();
                        }
                    }, 250);
                });
            });
            currentModal.querySelector('#__ap_save').onclick = async (e) => {
                e.stopPropagation();
                const promptId = currentModal.dataset.promptId;
                const title = document.getElementById('__ap_title').value.trim();
                const text = document.getElementById('__ap_text').value.trim();
                const usePlaceholders = document.getElementById('__ap_use_placeholders').checked;
                const autoExecute = document.getElementById('__ap_auto_execute').checked;
                if (!title || !text) { alert(getTranslation('requiredFields')); return; }
                const box = currentModal.querySelector('.mp-modal-box');
                const tags = box && box.getCurrentTags ? box.getCurrentTags() : [];
                const fields = {
                    title,
                    text,
                    usePlaceholders,
                    autoExecute,
                    activeFileIds: Array.from(currentActiveFileIds),
                    tags: tags
                };
                if (promptId) {
                    const success = await updateById(promptId, fields);
                    if (!success) await addItem({ ...fields, isFixed: false });
                } else {
                    await addItem({ ...fields, isFixed: false });
                }
                hideModal(currentModal);
                currentActiveFileIds.clear();
                await refreshMenu();
                if (currentMenu) currentMenu.classList.add('visible');
            };
            const handleSaveAndExecute = async (e) => {
                if (!isShortcutPressed(e, 'saveSend')) return;
                e.preventDefault();
                e.stopPropagation();
                const promptId = currentModal.dataset.promptId;
                const title = document.getElementById('__ap_title').value.trim();
                const text = document.getElementById('__ap_text').value.trim();
                const usePlaceholders = document.getElementById('__ap_use_placeholders').checked;
                const autoExecute = document.getElementById('__ap_auto_execute').checked;
                if (!title || !text) {
                    alert(getTranslation('requiredFields'));
                    return;
                }
                const box = currentModal.querySelector('.mp-modal-box');
                const tags = box && box.getCurrentTags ? box.getCurrentTags() : [];
                const fields = {
                    title,
                    text,
                    usePlaceholders,
                    autoExecute,
                    activeFileIds: Array.from(currentActiveFileIds),
                    tags: tags
                };
                let savedItem;
                if (promptId) {
                    const success = await updateById(promptId, fields);
                    if (success) {
                        const allPrompts = await getAll();
                        savedItem = findById(allPrompts, promptId);
                    } else {
                        savedItem = { ...fields, isFixed: false };
                        await addItem(savedItem);
                    }
                } else {
                    savedItem = { ...fields, isFixed: false };
                    await addItem(savedItem);
                }
                hideModal(currentModal);
                currentActiveFileIds.clear();
                refreshMenu();
                if (savedItem.usePlaceholders) { openPlaceholderModal(savedItem); }
                else { insertPrompt(savedItem); }
            };
            document.getElementById('__ap_title').addEventListener('keydown', handleSaveAndExecute);
            document.getElementById('__ap_text').addEventListener('keydown', handleSaveAndExecute);
            currentModal.querySelector('#__ap_close_prompt').onclick = (e) => {
                e.stopPropagation();
                hideModal(currentModal);
            };
            currentPlaceholderModal.querySelector('#__ap_insert_prompt').onclick = async (e) => {
                e.stopPropagation();
                const isFromInline = currentPlaceholderModal.dataset.fromInline === "true";
                const parseData = JSON.parse(currentPlaceholderModal.dataset.parseData);
                const originalItem = JSON.parse(currentPlaceholderModal.dataset.originalItem);
                let finalText = parseData.processedText;
                const ignoreMap = new Map(parseData.ignoreMap);
                const selectMap = new Map(parseData.selectMap);
                const inputMap = new Map(parseData.inputMap);
                const fileMap = new Map(parseData.fileMap ||[]);
                const variablesToApply =[];
                const container = document.getElementById('__ap_placeholders_container');
                let dynamicFilesToAttach =[];
                fileMap.forEach((_data, key) => {
                    const regex = new RegExp(`[ \\t]*${key}[ \\t]*\\r?\\n?`, 'g');
                    finalText = finalText.replace(regex, '');
                    const files = currentPlaceholderModal._tempFiles.get(key) ||[];
                    dynamicFilesToAttach.push(...files);
                });
                inputMap.forEach((data, key) => {
                    const inputEl = container.querySelector(`textarea[data-key="${key}"]`);
                    const val = inputEl ? inputEl.value : '';
                    if (typeof data === 'object' && data.silent) {
                        const lineRegex = new RegExp(`^[ \\t]*${key}[ \\t]*\\r?\\n?`, 'm');
                        if (lineRegex.test(finalText)) {
                            finalText = finalText.replace(lineRegex, '');
                        } else {
                            finalText = finalText.replace(key, '');
                        }
                    } else {
                        finalText = finalText.replace(key, val);
                    }
                    if (typeof data === 'object' && data.varName) {
                        variablesToApply.push({ name: data.varName, value: val });
                    }
                });
                selectMap.forEach((data, key) => {
                    const group = container.querySelector(`div[data-select-key="${key}"]`);
                    const checked = Array.from(group.querySelectorAll('input:checked'));
                    const joinChar = data.isInline ? ' ' : '\n';
                    const selectedText = checked.map(cb => cb.value).join(joinChar);
                    if (selectedText === '') {
                        finalText = finalText.replace(key, '');
                    } else {
                        finalText = finalText.replace(key, (data.indent || '') + selectedText);
                    }
                });
                const applyVariables = (text) => {
                    if (!text) return text;
                    let t = text;
                    variablesToApply.forEach(v => {
                        const escapedVar = v.name.replace(/\$/g, '\\$');
                        const varRegex = new RegExp(escapedVar, 'g');
                        t = t.replace(varRegex, v.value);
                    });
                    return t;
                };
                finalText = applyVariables(finalText);
                const reversedIgnoreEntries = Array.from(ignoreMap.entries()).reverse();
                for (const [key, content] of reversedIgnoreEntries) {
                    if (key.startsWith('__QUOTE_')) {
                        const contentWithVars = applyVariables(content);
                        finalText = finalText.split(key).join(contentWithVars);
                    }
                    else {
                        finalText = finalText.split(key).join(content);
                    }
                }
                if (isFromInline && currentPlaceholderModal._savedCursor) {
                    const saved = currentPlaceholderModal._savedCursor;
                    const editor = document.querySelector(platformSelectors[currentPlatform]);
                    if (editor) {
                        editor.focus();
                        try {
                            if (saved.type === 'input') {
                                if (typeof editor.setSelectionRange === 'function') {
                                    editor.setSelectionRange(saved.start, saved.end);
                                }
                            } else if (saved.type === 'contenteditable' && saved.node) {
                                const sel = window.getSelection();
                                const range = document.createRange();
                                range.setStart(saved.node, saved.offset);
                                range.setEnd(saved.node, saved.offset);
                                sel.removeAllRanges();
                                sel.addRange(range);
                            }
                        } catch(err) {}
                    }
                }
                const finalPrompt = { ...originalItem, text: finalText, dynamicFiles: dynamicFilesToAttach };
                await insertPrompt(finalPrompt, isFromInline, isFromInline);
                currentPlaceholderModal.dataset.fromInline = "false";
                currentPlaceholderModal._savedCursor = null;
                hideModal(currentPlaceholderModal);
            };
            currentPlaceholderModal.querySelector('#__ap_close_placeholder').onclick = (e) => {
                e.stopPropagation();
                hideModal(currentPlaceholderModal);
            };
            currentModal.querySelector('#__ap_info_btn').onclick = (e) => {
                e.stopPropagation();
                showModal(infoModal);
            };
            infoModal.querySelector('#__ap_close_info').onclick = (e) => {
                e.stopPropagation();
                hideModal(infoModal);
            };
            isInitialized = true;
        }
        catch (error) {cleanup();}
        finally {setupPageObserver();}
    }
    const debouncedTryInit = debounce(tryInit, 500);
    function setupPageObserver() {
        if (pageObserver) pageObserver.disconnect();
        pageObserver = new MutationObserver(() => {
            if (!document.body.contains(currentButton)) {
                debouncedTryInit();
            }
        });
        pageObserver.observe(document.body, { childList: true, subtree: true });
    }
    function setupGlobalEventListeners() {
        document.addEventListener('click', ev => {
            if (!currentMenu || !currentButton) return;
            if (ev.target.closest('#prompt-menu-container, [data-testid="composer-button-prompts"]')) return;
            closeMenu();
        });
        document.addEventListener('keydown', ev => {
            if (ev.key === 'Escape') {
                if (currentMenu && currentMenu.classList.contains('visible')) {
                    closeMenu();
                }
                if (currentModal && currentModal.classList.contains('visible')) hideModal(currentModal);
                if (languageModal && languageModal.classList.contains('visible')) hideModal(languageModal);
                if (currentPlaceholderModal && currentPlaceholderModal.classList.contains('visible')) hideModal(currentPlaceholderModal);
            }
            if (isShortcutPressed(ev, 'newPrompt')) {
                ev.preventDefault();
                ev.stopPropagation();
                closeMenu();
                openPromptModal();
            }
            if (isShortcutPressed(ev, 'listPrompts')) {
                ev.preventDefault();
                ev.stopPropagation();
                if (currentMenu && currentMenu.classList.contains('visible')) {
                    closeMenu();
                } else {
                    if (currentButton) currentButton.click();
                }
            }
            if (isShortcutPressed(ev, 'enhancePrompt')) {
                ev.preventDefault();
                ev.stopPropagation();
                handleInstantPageEnhancement();
            }
        });
        window.addEventListener('resize', debounce(() => {
            if (currentMenu && currentMenu.classList.contains('visible')) {
                positionMenu(currentMenu, currentButton);
            }
        }, 100));
    }
    function tryInit() {
        if (isInitializing) return;
        if (isInitialized && currentButton && document.body.contains(currentButton) && currentPlatform === detectPlatform()) {
            return;
        }
        isInitializing = true;
        initUI().finally(() => { isInitializing = false; });
    }
    async function start() {
        await determineLanguage();
        loadSyntaxConfig();
        loadShortcuts();
        loadPredictionConfig();
        loadNavConfig();
        await loadTagsConfig();
        GM_registerMenuCommand(`⚙️ ${getTranslation('settings')}`, () => {
            if (!settingsModal) {
                settingsModal = createSettingsModal();
                document.body.appendChild(settingsModal);
            }
            if (settingsModal.resetToCurrent) settingsModal.resetToCurrent();
            showModal(settingsModal);
        });
        await loadAIConfig();
        await loadImportedThemes();
        await loadThemeConfig();
        injectGlobalStyles();
        setupGlobalEventListeners();
        tryInit();
    }
    start();
})();