Twitter 顯示正常的日期和時間

看起來是這樣的。 70/12/31(Th) 23:59:59.

目前為 2025-06-04 提交的版本,檢視 最新版本

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

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

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

// ==UserScript==
// @name                   Show date normally on Twitter
// @name:aa                Tiwiteril qaadik tan ayro kee wakti yaybulle
// @name:ab                Твиттер иаанарԥшуеит иаабац арыцхәи аамҭеи
// @name:af                Twitter vertoon normale datum en tyd
// @name:ak                Twitter kyerɛ da ne bere a ɛfata .
// @name:am                ትዊተር የተለመደው ቀን እና ሰዓት ያሳያል
// @name:ar                يعرض Twitter التاريخ والوقت العاديين
// @name:as                টুইটাৰে সাধাৰণ তাৰিখ আৰু সময় প্ৰদৰ্শন কৰে
// @name:av                Твиттералда бихьулеб букӀуна гӀадатияб тарих ва заман
// @name:ay                Twitter ukax normal uru ukat pacha uñacht’ayi .
// @name:az                Twitter normal tarix və vaxt göstərir
// @name:ba                Twitter ғәҙәти дата һәм ваҡыт күрһәтә
// @name:be                Twitter адлюстроўвае звычайную дату і час
// @name:bg                Twitter показва нормална дата и час
// @name:bh                ट्विटर सामान्य तारीख आ समय के देखावेला
// @name:bm                Twitter bɛ don ni waati nɔrɔlen jira .
// @name:bn                টুইটার স্বাভাবিক তারিখ এবং সময় প্রদর্শন করে
// @name:bo                ཊུ་ཊར་གྱིས་ཚེས་གྲངས་དང་དུས་ཚོད་སྟོན་གྱི་ཡོད།
// @name:br                Diskouez a ra Twitter deiziad ha eur normal
// @name:bs                Twitter prikazuje normalan datum i vrijeme
// @name:ca                Twitter mostra la data i l’hora normals
// @name:ce                Твиттерехь гойту нийса хан а, хан а .
// @name:ceb               Ang Twitter nagpakita sa normal nga petsa ug oras
// @name:ch                I Twitter ha dispåtta i fechan-ña yan .
// @name:ckb               تویتەر بەروار و کاتی ئاسایی پیشان دەدات
// @name:co                Twitter mostra a data è u tempu nurmale
// @name:cs                Twitter zobrazuje normální datum a čas
// @name:cv                Твиттер йĕркеллĕ кунпа вăхăта кăтартать
// @name:cy                Mae Twitter yn arddangos dyddiad ac amser arferol
// @name:da                Twitter viser normal dato og tid
// @name:de                Twitter zeigt das normale Datum und die normale Uhrzeit an
// @name:dv                ޓްވިޓަރ އިން އާދައިގެ ތާރީޚާއި ގަޑި ދައްކާ
// @name:dz                ཊུ་ཊར་གྱིས་ སྤྱིར་བཏང་ཚེས་གྲངས་དང་དུས་ཚོད་བཀྲམ་སྟོན་འབདཝ་ཨིན།
// @name:ee                Twitter ɖea ŋkeke kple gaƒoƒo si sɔ fiana .
// @name:el                Το Twitter εμφανίζει κανονική ημερομηνία και ώρα
// @name:en                Twitter displays normal date and time
// @name:en-GB             Twitter displays normal date and time
// @name:eo                Twitter montras normalan daton kaj horon
// @name:es                Twitter muestra fecha y hora normales
// @name:et                Twitter kuvab tavalise kuupäeva ja kellaaja
// @name:eu                Twitterrek data eta ordu normala erakusten du
// @name:fa                توییتر تاریخ و زمان عادی را نشان می دهد
// @name:ff                Twitter ina hollira ñalngu e waktu no woorunoo
// @name:fi                Twitter näyttää normaalin päivämäärän ja ajan
// @name:fil               Ipinapakita ng Twitter ang normal na petsa at oras
// @name:fj                Tuvanaka na tiki ni siga kei na gauna .
// @name:fo                Twitter vísir vanliga dagfesting og tíð
// @name:fr                Twitter affiche la date et l’heure normales
// @name:fr-CA             Twitter affiche la date et l’heure normales
// @name:fy                Twitter Toant normale datum en tiid
// @name:ga                Taispeánann Twitter gnáth -dháta agus am
// @name:gd                Bidh Twitter a ’taisbeanadh ceann-latha agus àm àbhaisteach
// @name:gl                Twitter mostra a data e hora normais
// @name:gn                Twitter ohechauka ára ha aravo normal .
// @name:gsw-berne         Twitter displays normal date and time
// @name:gu                ટ્વિટર સામાન્ય તારીખ અને સમય દર્શાવે છે
// @name:gv                Twitter t’eh soilshaghey date as traa arryltagh
// @name:ha                Twitter nuni na al’ada da lokaci
// @name:he                טוויטר מציג תאריך ושעה רגילים
// @name:hi                ट्विटर सामान्य तारीख और समय प्रदर्शित करता है
// @name:hmn               TWITTER qhia txog hnub qub thiab sijhawm
// @name:hr                Twitter prikazuje normalan datum i vrijeme
// @name:ht                Twitter montre dat ak lè nòmal
// @name:hu                A Twitter megjeleníti a normál dátumot és időt
// @name:hy                Twitter- ը ցուցադրում է նորմալ ամսաթիվը եւ ժամանակը
// @name:id                Twitter menampilkan tanggal dan waktu normal
// @name:ig                Twitter na-egosiputa ụbọchị na oge
// @name:is                Twitter sýnir venjulegan dag og tíma
// @name:it                Twitter visualizza la data e l’ora normali
// @name:iu                Twitter ᑕᑯᒃᓴᐅᑎᑦᑎᕗᖅ ᐅᓪᓗᕆᔭᐅᔪᒥᒃ ᐊᒻᒪ ᐱᕕᒃᓴᒥᒃ
// @name:ja                Twitterには通常の日付と時刻が表示されます
// @name:jv                Twitter nampilake tanggal lan wektu normal
// @name:ka                Twitter აჩვენებს ნორმალურ თარიღს და დროს
// @name:kg                Twitter ke monisa kilumbu mpi ntangu ya mbote
// @name:kk                Twitter қалыпты күн мен уақытты көрсетеді
// @name:kl                Twitterip ulloq piffissarlu nalinginnaasoq takutinneqartarpoq
// @name:km                Twitter បង្ហាញកាលបរិច្ឆេទនិងពេលវេលាធម្មតា
// @name:kn                ಟ್ವಿಟರ್ ಸಾಮಾನ್ಯ ದಿನಾಂಕ ಮತ್ತು ಸಮಯವನ್ನು ಪ್ರದರ್ಶಿಸುತ್ತದೆ
// @name:ko                트위터에는 일반 날짜와 시간이 표시됩니다
// @name:kr                Twitter lan loktu-a yim-a kalkal fəlejin
// @name:ku                Twitter tarîx û wextê normal nîşan dide
// @name:kv                Твиттерын петкӧдлӧма нормальнӧй кад да кад .
// @name:ky                Twitter кадимки күндү жана убакытты көрсөтөт
// @name:la                Twitter Displays Normal Date et Tempus
// @name:lb                Twitter weist normal Datum an Zäit
// @name:lg                Twitter eraga olunaku n’essaawa ebya bulijjo .
// @name:ln                Twitter elakisaka mokolo mpe ngonga ya momesano .
// @name:lo                Twitter ສະແດງວັນທີແລະເວລາທໍາມະດາ
// @name:lt                „Twitter“ rodo įprastą datą ir laiką
// @name:lv                Twitter parāda normālu datumu un laiku
// @name:mg                Ny Twitter dia mampiseho daty sy fotoana mahazatra
// @name:mh                Twitter ej kwaļo̧k raan im iien .
// @name:mi                Ka whakaatu a Twitter i te waa me te waa
// @name:mk                Твитер прикажува нормален датум и време
// @name:ml                ട്വിറ്റർ സാധാരണ തീയതിയും സമയവും പ്രദർശിപ്പിക്കുന്നു
// @name:mn                Твиттер нь хэвийн огноо, цагийг харуулдаг
// @name:mo                Twitter afișează data și ora normale
// @name:mr                ट्विटर सामान्य तारीख आणि वेळ प्रदर्शित करते
// @name:ms                Twitter memaparkan tarikh dan masa biasa
// @name:mt                Twitter juri data u ħin normali
// @name:my                Twitter သည်ပုံမှန်နေ့စွဲနှင့်အချိန်ကိုပြသသည်
// @name:nb                Twitter viser normal dato og tid
// @name:ne                ट्विटरले सामान्य मिति र समय प्रदर्शन गर्दछ
// @name:nl                Twitter toont normale datum en tijd
// @name:nr                Fala i-orasssssss.
// @name:ny                Twitter ikuwonetsa tsiku labwinobwino komanso nthawi
// @name:oc                Twitter aficha la data e l’ora normalas
// @name:om                Twitter guyyaa fi sa’aatii idilee agarsiisa .
// @name:or                ଟ୍ୱିଟର ସାଧାରଣ ତାରିଖ ଏବଂ ସମୟ ପ୍ରଦର୍ଶନ କରେ |
// @name:os                Твиттер æвдисы нормалон датæ æмæ рæстæг
// @name:pa                ਟਵਿੱਟਰ ਆਮ ਮਿਤੀ ਅਤੇ ਸਮਾਂ ਦਰਸਾਉਂਦਾ ਹੈ
// @name:pl                Twitter wyświetla normalną datę i godzinę
// @name:ps                ټویټر نورمال نیټه او وخت ښیې
// @name:pt                Twitter exibe data e hora normais
// @name:pt-BR             Twitter exibe data e hora normais
// @name:pt-PT             Twitter exibe data e hora normais
// @name:qu                Twitter normal p’unchawta, pachata rikuchin .
// @name:rn                Twitter yerekana itariki n’isaha isanzwe
// @name:ro                Twitter afișează data și ora normale
// @name:ru                Твиттер отображает обычную дату и время
// @name:rw                Twitter yerekana itariki nigihe gisanzwe
// @name:sa                ट्विटर सामान्य तिथि एवं समय प्रदर्शित करता है।
// @name:sd                Twitter عام تاريخ ۽ وقت ڏيکاري ٿو
// @name:se                Twitter čájeha dábálaš beaivvi ja áiggi
// @name:sg                Twitter afa lango na l’heure .
// @name:sh                Твиттер приказује нормалан датум и време
// @name:si                ට්විටර් සාමාන්ය දිනය සහ වේලාව පෙන්වයි
// @name:sk                Twitter zobrazuje normálny dátum a čas
// @name:sl                Twitter prikazuje normalen datum in čas
// @name:sm                Twitter faʻaalia le taimi masani aso ma le taimi
// @name:sn                Twitter inoratidza yakajairika zuva uye nguva
// @name:so                Twitter wuxuu soo bandhigayaa taariikhda iyo waqtiga caadiga ah
// @name:sq                Twitter shfaq datën dhe kohën normale
// @name:sr                Твиттер приказује нормалан датум и време
// @name:ss                I-Twitter ikhombisa lusuku nesikhatsi lesivamile
// @name:st                Twitter e bontša letsatsi le tloaelehileng le nako
// @name:su                Twitter ningalikeun tanggal sareng waktos anu normal
// @name:sv                Twitter visar normalt datum och tid
// @name:sw                Twitter inaonyesha tarehe ya kawaida na wakati
// @name:ta                ட்விட்டர் சாதாரண தேதி மற்றும் நேரத்தைக் காட்டுகிறது
// @name:te                ట్విట్టర్ సాధారణ తేదీ మరియు సమయాన్ని ప్రదర్శిస్తుంది
// @name:tg                Twitter санаи муқаррарӣ ва вақтро нишон медиҳад
// @name:th                Twitter แสดงวันที่และเวลาปกติ
// @name:ti                ትዊተር ንቡር ዕለትን ሰዓትን
// @name:tk                Twitter adaty senesini we wagty görkezýär
// @name:tl                Ipinapakita ng Twitter ang normal na petsa at oras
// @name:tn                Twitter e bontsha letlha le nako e e tlwaelegileng
// @name:to                ’Oku fakahaa’i ’e he Twitter ’a e ’aho mo e taimi angamaheni .
// @name:tr                Twitter normal tarih ve saati görüntüler
// @name:ts                Twitter yi kombisa siku na nkarhi lowu tolovelekeke .
// @name:tt                Твиттер гадәти датаны һәм вакытны күрсәтә
// @name:tw                Twitter kyerɛ da ne bere a ɛfata .
// @name:ty                E faaite te Twitter i te mahana e te taime matauhia
// @name:ug                Twitter نورمال ۋاقىت ۋە ۋاقىتنى كۆرسىتىدۇ
// @name:uk                Twitter відображає звичайну дату та час
// @name:ur                ٹویٹر عام تاریخ اور وقت دکھاتا ہے
// @name:uz                Twitter normal sana va vaqtni namoyish etadi
// @name:ve                Twitter i sumbedza ḓuvha na tshifhinga tsho ḓoweleaho
// @name:vi                Twitter hiển thị ngày và giờ bình thường
// @name:wo                Twitter dafay wane bis ak waxtu
// @name:xh                I-Twitter ibonisa umhla oqhelekileyo kunye nexesha
// @name:yi                טוויטטער דיספּלייז נאָרמאַל דאַטע און צייט
// @name:yo                Twitter ṣafihan ọjọ deede ati akoko
// @name:zh                Twitter 显示正常的日期和时间
// @name:zh-CN             Twitter 显示正常的日期和时间
// @name:zh-HK             Twitter 顯示正常的日期和時間
// @name:zh-MO             Twitter 顯示正常的日期和時間
// @name:zh-MY             Twitter 显示正常的日期和时间
// @name:zh-SG             Twitter 显示正常的日期和时间
// @name:zh-TW             Twitter 顯示正常的日期和時間
// @name:zu                I-Twitter ibonisa usuku olujwayelekile nesikhathi
// @name:es-419            Twitter muestra fecha y hora normales
// @description            Like this, 70/12/31(Th) 23:59:59.
// @description:aa         Tah celta. 70/12/31(Th) 23:59:59.
// @description:ab         Абри еиԥш ауп ишыҟоу. 70/12/31(Th) 23:59:59.
// @description:af         Dit lyk so. 70/12/31 (Th) 23:59:59.
// @description:ak         Ɛte sɛ eyi. 70/12/31(th) 23:59:59.
// @description:am         ይህ ይመስላል. 70/12/31 (te) 23:59:59.
// @description:ar         يبدو هكذا. 70/12/31 (TH) 23:59:59.
// @description:as         দেখাত এনেকুৱাই। ৭০/১২/৩১(তম) ২৩:৫৯:৫৯।
// @description:av         Гьеб гьадинаб буго. 70/12/31(Тх) 23:59:59.
// @description:ay         Ukhamaw ukham uñtasi. 70/12/31(th) 23:59:59.
// @description:az         Bu kimi görünür. 70/12/31 (TH) 23:59:59.
// @description:ba         Ул былай күренә. 70/12/31(Th) 23:59:59.
// @description:be         Падобна так. 70/12/31 (TH) 23:59:59.
// @description:bg         Изглежда така. 70/12/31 (TH) 23:59:59.
// @description:bh         अईसन लागता। 70/12/31(वें) 23:59:59 के बा।
// @description:bm         A bɛ iko nin. 70/12/31(nan) 23:59:59.
// @description:bn         দেখে মনে হচ্ছে এটি। 70/12/31 (TH) 23:59:59।
// @description:bo         འདི་འདྲ་འདུག ༧༠/༡༢/༣༡(Th) ༢༣:༥༩:༥༩།
// @description:br         Seblantout a ra evel-se. 70/12/31(Th) 23:59:59.
// @description:bs         Izgleda ovako. 70/12/31 (th) 23:59:59.
// @description:ca         Sembla així. 70/12/31 (Th) 23:59:59.
// @description:ce         Иштта хетало. 70/12/31(Th) 23:59:59.
// @description:ceb        Ingon kini. 70/12/31 (Th) 23:59:59.
// @description:ch         Parehu este yan este. 70/12/1211 (Th) 23:59:59.
// @description:ckb        بەم شێوەیە دەردەکەوێت. 70/12/31(th) 23:59:59.
// @description:co         Sembra cusì. 70/12/31 (u) 23:59:59.
// @description:cs         Vypadá to takto. 70/12/31 (th) 23:59:59.
// @description:cv         Кун пек курăнать. 70/12/31 (Тх) 23:59:59.
// @description:cy         Mae’n edrych fel hyn. 70/12/31 (TH) 23:59:59.
// @description:da         Det ser ud som dette. 70/12/31 (th) 23:59:59.
// @description:de         Es sieht so aus. 70/12/31 (Th) 23:59:59.
// @description:dv         މިހެން ހީވަނީ. 70/12/31(th) 23:59:59.
// @description:dz         འདི་བཟུམ་མཐོངམ་ཨིན། ༧༠/༡༢/༣༡(ཐ) ༢༣:༥༩:༥༩.
// @description:ee         Edze abe esia ene. 70/12/31 (th) 23:59:59.
// @description:el         Μοιάζει με αυτό. 70/12/31 (Th) 23:59:59.
// @description:en         It looks like this. 70/12/31(Th) 23:59:59.
// @description:en-GB      It looks like this. 70/12/31(Th) 23:59:59.
// @description:eo         Ĝi aspektas tiel. 70/12/31 (TH) 23:59:59.
// @description:es         Se parece a esto. 70/12/31 (Th) 23:59:59.
// @description:es-419     Se parece a esto. 70/12/31 (Th) 23:59:59.
// @description:et         See näeb välja selline. 70/12/31 (Th) 23:59:59.
// @description:eu         Horren antza du. 70/12/31 (th) 23:59:59.
// @description:fa         به نظر می رسد مانند این 70/12/31 (TH) 23:59:59.
// @description:ff         Ina wayi no nii. 70/12/31(Th) 23:59:59.
// @description:fi         Se näyttää tältä. 70/12/31 (Th) 23:59:59.
// @description:fil        Mukhang ganito. 70/12/31 (TH) 23:59:59.
// @description:fj         E vaka oqo na ka oqo. 70/12/31(The The) 23:59:59.
// @description:fo         Tað sær soleiðis út. 70/12/31(H) 23:59:59.
// @description:fr         Cela ressemble à ça. 70/12/31 (TH) 23:59:59.
// @description:fr-CA      Cela ressemble à ça. 70/12/31 (TH) 23:59:59.
// @description:fy         It liket derop. 70/12/31 (TH) 23:59:59.
// @description:ga         Tá an chuma air seo. 70/12/31 (TH) 23:59:59.
// @description:gd         Tha e coltach ri seo. 70/12/31 (th) 23:59:59.
// @description:gl         Parece así. 70/12/31 (TH) 23:59:59.
// @description:gn         Péicha ojehecha. 70/12/31(TH) 23:59:59.
// @description:gsw-berne  It looks like this. 70/12/31(Th) 23:59:59.
// @description:gu         તે આના જેવું લાગે છે. 70/12/31 (મી) 23:59:59.
// @description:gv         Ta’n red shoh myr shoh. 70/12/31(Th) 23:59:59.
// @description:ha         Yayi kama da wannan. 70/12/31 (th) 23:59:59.
// @description:he         זה נראה כך. 70/12/31 (TH) 23:59:59.
// @description:hi         यह इस तरह दिख रहा है। 70/12/31 (Th) 23:59:59।
// @description:hmn        Nws zoo li no. 70/12/31 (th) 23:59:59.
// @description:hr         Izgleda ovako. 70/12/31 (TH) 23:59:59.
// @description:ht         Li sanble tankou sa a. 70/12/31 (th) 23:59:59.
// @description:hu         Így néz ki. 70/12/31 (TH) 23:59:59.
// @description:hy         Կարծես սա է: 70/12/31 (րդ) 23:59:59:
// @description:id         Sepertinya ini. 70/12/31 (TH) 23:59:59.
// @description:ig         Ọ dị ka nke a. 70/12/31 (TH) 23:59:59.
// @description:is         Það lítur svona út. 70/12/31 (TH) 23:59:59.
// @description:it         Sembra questo. 70/12/31 (Th) 23:59:59.
// @description:iu         ᐃᒪᐃᑦᑐᔭᕐᒪᑦ. 70/12/31(Th) 23:59:59.
// @description:ja         このように見えます。 70/12/31(th)23:59:59。
// @description:jv         Katon kaya ngono. 70/12/31 (th) 23:59:59.
// @description:ka         ასე გამოიყურება. 70/12/31 (TH) 23:59:59.
// @description:kg         Yo ke monana mutindu yai. 70/12/31(Th) 23:59:59.
// @description:kk         Бұл сияқты. 70/12/31 (мың) 23:59:59.
// @description:kl         Taamatut isikkoqarpoq. 70/12/31(Th) 23:59:59.
// @description:km         វាមើលទៅដូចនេះ។ 70/12/31 (ទី) 23:59:59 ។
// @description:kn         ಇದು ಈ ರೀತಿ ಕಾಣುತ್ತದೆ. 70/12/31 (ನೇ) 23:59:59.
// @description:ko         이렇게 보인다. 70/12/31 (th) 23:59:59.
// @description:kr         Alama adəgai. 70/12/31(Th) 23:59:59.
// @description:ku         Wusa dixuye. 70/12/31 (th) 23:59:59.
// @description:kv         Сійӧ татшӧм. 70/12/31(Тх) 23:59:59.
// @description:ky         Бул окшойт. 70/12/31 (th) 23:59:59.
// @description:la         Is vultus amo is. 70/12/31 (Th) 23:59:59.
// @description:lb         IT gesäit esou aus. 70/12/31 (Th) 23:59:59.
// @description:lg         Kirabika bwe kiti. 70/12/31(th) 23:59:59.
// @description:ln         Ezali komonana lokola oyo. 70/12/31(th) 23:59:59.
// @description:lo         ມັນເບິ່ງຄືວ່ານີ້. 70/12/31 (ທ) ເວລາ 23:59:59.
// @description:lt         Panašu, kad taip. 70/12/31 (Th) 23:59:59.
// @description:lv         Tas izskatās šādi. 70/12/31 (Th) 23:59:59.
// @description:mg         Toa izany. 70/12/31 (th) 23:59:59.
// @description:mh         Ej āinwōt in. 70/12/31( Tht) 23:59:59.
// @description:mi         Te ahua nei. 70/12/31 (TH) 23:59:59.
// @description:mk         Изгледа вака. 70/12/31 (TH) 23:59:59.
// @description:ml         ഇത് ഇതുപോലെ തോന്നുന്നു. 70/12/31 (TH) 23:59:59.
// @description:mn         Энэ нь иймэрхүү харагдаж байна. 70/12/31 (th) 23:59:59.
// @description:mo         Pare așa. 70/12/31 (TH) 23:59:59.
// @description:mr         हे असे दिसते. 70/12/31 (व्या) 23:59:59.
// @description:ms         Nampaknya ini. 70/12/31 (Th) 23:59:59.
// @description:mt         Jidher bħal dan. 70/12/31 (Th) 23:59:59.
// @description:my         ဒါနဲ့တူတယ် 70/12/31 (ကြိမ်မြောက်) 23:59:59 ။
// @description:nb         Det ser slik ut. 70/12/31 (TH) 23:59:59.
// @description:ne         यो यस्तो देखिन्छ। 70/12/31 (th) 23 :: 59:59।
// @description:nl         Het ziet er zo uit. 70/12/31 (TH) 23:59:59.
// @description:nr         Bazama ukududuza. ( 1 10:10 ) U-Israyeli u-10:1.
// @description:ny         Zikuwoneka ngati izi. 70/12/31 (th) 23:59:59.
// @description:oc         Sembla aquò. 70/12/31(La) 23:59:59.
// @description:om         Akkas fakkaata. 70/12/31(th) 23:59:59.
// @description:or         ଏହା ଏହିପରି ଦେଖାଯାଏ | 70/12/31 (ଥ) 23:59।
// @description:os         Афтæ зыны ахæм. 70/12/31(Th) 23:59:59.
// @description:pa         ਇਹ ਇਸ ਤਰ੍ਹਾਂ ਲੱਗਦਾ ਹੈ. 70/12/31 (ਧੂਹ) 23:59:59.
// @description:pl         Wygląda na to. 70/12/31 (th) 23:59:59.
// @description:ps         دا ورته ښکاري. 70/12/31 (TH) 23:59:59.
// @description:pt         Parece isso. 70/12/31 (TH) 23:59:59.
// @description:pt-BR      Parece isso. 70/12/31 (TH) 23:59:59.
// @description:pt-PT      Parece isso. 70/12/31 (TH) 23:59:59.
// @description:qu         Kaymanmi rikchakun. 70/12/31(H) 23:59:59.
// @description:rn         Bimeze gutya. 70/12/31(Th) 23:59:59.
// @description:ro         Pare așa. 70/12/31 (TH) 23:59:59.
// @description:ru         Похоже, это. 70/12/31 (TH) 23:59:59.
// @description:rw         Birasa nkibi. 70/12/31 (TH) 23:59:59.
// @description:sa         एवं दृश्यते। 70/12/31(थ) 23:59:59।
// @description:sd         اهو ڏسجي ٿو. 70/12/31 (ٿ) 23:59:59.
// @description:se         Dat lea ná. 70/12/31(Th) 23:59:59.
// @description:sg         A yeke mo bâ mo tene a yeke tongaso. 70/12/12 (Th) 23:59:59.
// @description:sh         Изгледа овако. 70/12/31 (ТХ) 23:59:59.
// @description:si         ඒක මේ වගේ. 70/12/31 (TH) 23:59:59.
// @description:sk         Vyzerá to takto. 70/12/31 (Th) 23:59:59.
// @description:sl         Videti je tako. 70/12/31 (TH) 23:59:59.
// @description:sm         E pei o lenei. 70/12/31 (th) 23:59:59.
// @description:sn         Zvinotaridzika seizvi. 70/12/31 (th) 23:59:59.
// @description:so         Waxay u egtahay sidan oo kale. 70/12/31 (th) 23:59:59.
// @description:sq         Duket kështu. 70/12/31 (TH) 23:59:59.
// @description:sr         Изгледа овако. 70/12/31 (ТХ) 23:59:59.
// @description:ss         Kubukeka kanje. 70/12/31(Th) 23:59:59.
// @description:st         E shebahala tjena. 70/12/31 (th) 23:59:59.
// @description:su         Sigana mah ieu. 70/12/31 (th) 23:59:59.
// @description:sv         Det ser ut så här. 70/12/31 (Th) 23:59:59.
// @description:sw         Inaonekana kama hii. 70/12/31 (TH) 23:59:59.
// @description:ta         இது போல் தெரிகிறது. 70/12/31 (வது) 23:59:59.
// @description:te         ఇది ఇలా ఉంది. 70/12/31 (వ) 23:59:59.
// @description:tg         Чунин ба назар мерасад. 70/12/31 (TH) 23:59:59.
// @description:th         ดูเหมือนว่า 70/12/31 (Th) 23:59:59
// @description:ti         ከምዚ ይመስል። 70/12/31(th) 23:59:59።
// @description:tk         Şuňa meňzeýär. 70/12/3/31 (tra) 23:59:59.
// @description:tl         Mukhang ganito. 70/12/31 (TH) 23:59:59.
// @description:tn         Go lebega jaana. 70/12/31(Th) 23:59:59.
// @description:to         ʻOku hangē ʻení. 70/12/31(T) 23:59:59.
// @description:tr         Öyle görünüyor. 70/12/31 (TH) 23:59:59.
// @description:ts         Swi languteka hi ndlela leyi. 70/12/31(TH) 23:59:59.
// @description:tt         Бу шундый. 70/12/31 (th) 23:59:59.
// @description:tw         Ɛte sɛ eyi. 70/12/31(th) 23:59:59.
// @description:ty         E au te reira i te reira. 70/12/31(Th) 23:59:59.
// @description:ug         ئۇ ئوخشايدۇ. 70/12/31 (th) 23:59:59.
// @description:uk         Це виглядає так. 70/12/31 (Th) 23:59:59.
// @description:ur         ایسا لگتا ہے۔ 70/12/31 (ویں) 23:59:59۔
// @description:uz         Bu shunday ko’rinadi. 70/12/31 (Th) 23:59:59.
// @description:ve         Zwi vhonala zwo ralo. 70/12/31(Th) 23:59:59.
// @description:vi         Nó trông như thế này. 70/12/31 (th) 23:59:59.
// @description:wo         Dafa mel nii. 70/12/31(Th) 23:59:59.
// @description:xh         Ijongeka ngoluhlobo. 70/12/31 (th) 23:59:59.
// @description:yi         עס קוקט ווי דאָס. 70/12/31 (טה) 23:59:59.
// @description:yo         O dabi eyi. 70/12/31 (TH) 23:59:59.
// @description:zh         看起来是这样的。70/12/31(Th) 23:59:59.
// @description:zh-CN      看起来是这样的。70/12/31(Th) 23:59:59.
// @description:zh-HK      看起來是這樣的。 70/12/31(Th) 23:59:59.
// @description:zh-MO      看起來是這樣的。 70/12/31(Th) 23:59:59.
// @description:zh-MY      看起来是这样的。70/12/31(Th) 23:59:59.
// @description:zh-SG      看起来是这样的。70/12/31(Th) 23:59:59.
// @description:zh-TW      看起來是這樣的。 70/12/31(Th) 23:59:59.
// @description:zu         Kubukeka kanjena. 70/12/31 (th) 23:59:59.
// @author                 AeamaN
// @namespace              https://github.com/ChinaGodMan/UserScripts
// @supportURL             https://github.com/ChinaGodMan/UserScripts/issues
// @homepageURL            https://github.com/ChinaGodMan/UserScripts
// @homepage               https://github.com/ChinaGodMan/UserScripts
// @license                MIT
// @match                  https://twitter.com/*
// @match                  https://mobile.twitter.com/*
// @match                  https://mobile.twitter3e4tixl4xyajtrzo62zg5vztmjuricljdp2c5kshju4avyoid.onion/*
// @match                  https://x.com/*
// @match                  https://mobile.x.com/*
// @require                https://update.greasyfork.org/scripts/538254/1601105/PNG.js
// @grant                  GM_getValue
// @grant                  GM_registerMenuCommand
// @grant                  GM_setValue
// @run-at                 document-body
// @icon                   https://raw.githubusercontent.com/ChinaGodMan/UserScriptsHistory/main/scriptsIcon/x.svg
// @compatible             chrome
// @compatible             firefox
// @compatible             edge
// @compatible             opera
// @compatible             safari
// @compatible             kiwi
// @compatible             qq
// @compatible             via
// @compatible             brave
// @version                2025.6.4.1
// ==/UserScript==

// And more. See Default valuse below.
// It's based on "https://qiita.com/libraplanet/items/0bdd7ef1a13e7af8f48f".
//
// 他にも機能があります。以下の Default valuse を確認して下さい。
// "https://qiita.com/libraplanet/items/0bdd7ef1a13e7af8f48f" を参考にしています。
(function () { /* START */

    'use strict'

    // //////////// Settings //////////// //
    // No GUI Settings
    // Default values are used
    const NOGUI = false
    // ////////////////////////////////// //

    // ///////// Default valuse ///////// //
    // Blue bird returns
    const BBR = false

    // Replace with orig images(wasted traffic occurs)
    const ORIGI = false

    // Slightly wider TL
    const WTL = false

    // Eye Care Mode at default background
    const ECMODE = true

    // Hide promotions
    const HPP = true

    // Hide Who to follow
    const HWTF = true

    // Hide DM drawer
    const HDMD = true

    // Hide Get Verified
    const HGV = true

    // Fine engagement
    // 1. Live
    // 2. Normal
    // 0. Do nothing
    const FEGM = 0

    // Fix videos quality
    // 1. Maximum
    // 2. Minimum
    // 0. Do nothing
    const FVQ = 1

    // Date formats
    //  1. 31.12.70 23:59
    //  2. 31.12.70 23:59:59
    //  3. 31.12.70(Th) 23:59
    //  4. 31.12.70(Th) 23:59:59
    //
    //  5. 70/12/31 23:59
    //  6. 70/12/31 23:59:59
    //  7. 70/12/31(Th) 23:59
    //  8. 70/12/31(Th) 23:59:59 [ye/mo/da(we) ho:mi:se]
    //
    //  9. 70-12/31 23:59
    // 10. 70-12/31 23:59'59
    // 11. 70-12/31(Th) 23:59
    // 12. 70-12/31(Th) 23:59'59
    //
    // 13. M59-12-31 23:59
    // 14. M59-12-31 23:59:59
    // 15. M59-12-31(Th) 23:59
    // 16. M59-12-31(Th) 23:59:59
    //
    //  0. Do nothing
    const FMT = 7

    // Loop interval(ms)
    const INTL = 800
    // ////////////////////////////////// //

    const MYNAME = 'sdnt1200'
    const LANG = document.documentElement.getAttribute('lang')

    let time_r = Date.now()
    let s_mutations = true
    let observer = new MutationObserver(function (mutations) {
        s_mutations = mutations
    })
    let originalXHROPEN
    let bbr, origi, wtl, ecmode, hpp, hwtf, hdmd, hgv, fegm, fvq, fmt, intl

    function makeDialog() {
        let dalg = document.createElement('div')

        dalg.className = 'us-' + MYNAME

        dalg.style.all = 'initial'
        dalg.style.backgroundColor = 'rgb(235, 235, 235)'
        dalg.style.border = '3px outset'
        dalg.style.borderRadius = '1%'
        dalg.style.display = 'none'
        dalg.style.fontFamily = 'monospace'
        dalg.style.fontSize = '12px'
        dalg.style.height = '440px'
        dalg.style.width = '480px'
        dalg.style.paddingLeft = '2px'
        dalg.style.paddingRight = '2px'
        dalg.style.position = 'fixed'
        dalg.style.right = '8px'
        dalg.style.top = '8px'
        dalg.style.zIndex = '2147483647'
        dalg.style.overflow = 'auto'

        let html =
            '<span style="all: initial; font-size: 120%; line-height: 210%">' +
            GM_info.script.name + ' ' + GM_info.script.version + ' ' + 'Settings' +
            '</span><br />\n' +

            '<input type="radio" name="fmt" value="1" class="top_r" />31.12.70 23:59' +
            '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' +
            '&nbsp;' +
            '<input type="radio" name="fmt" value="2" class="top_r" />31.12.70 23:59:59<br />\n' +
            '<input type="radio" name="fmt" value="3" class="mid_r" />31.12.70(Th) 23:59' +
            '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' +
            '<input type="radio" name="fmt" value="4" class="mid_r" />31.12.70(Th) 23:59:59<br />\n' +
            '<input type="radio" name="fmt" value="5" class="mid_r" />70/12/31 23:59' +
            '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' +
            '<input type="radio" name="fmt" value="6" class="mid_r" />70/12/31 23:59:59<br />\n' +
            '<input type="radio" name="fmt" value="7" class="mid_r" />70/12/31(Th) 23:59' +
            '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' +
            '<input type="radio" name="fmt" value="8" class="mid_r" />70/12/31(Th) 23:59:59<br />\n' +
            '<input type="radio" name="fmt" value="9" class="mid_r" />70-12/31 23:59' +
            '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' +
            '<input type="radio" name="fmt" value="10" class="mid_r" />70-12/31 23:59\'59<br />\n' +
            '<input type="radio" name="fmt" value="11" class="mid_r" />70-12/31(Th) 23:59' +
            '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' +
            '<input type="radio" name="fmt" value="12" class="mid_r" />70-12/31(Th) 23:59\'59<br />\n' +
            '<input type="radio" name="fmt" value="13" class="mid_r" />M59-12-31 23:59' +
            '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' +
            '<input type="radio" name="fmt" value="14" class="mid_r" />M59-12-31 23:59:59<br />\n' +
            '<input type="radio" name="fmt" value="15" class="mid_r" />M59-12-31(Th) 23:59' +
            '&nbsp;&nbsp;&nbsp;&nbsp;' +
            '<input type="radio" name="fmt" value="16" class="mid_r" />M59-12-31(Th) 23:59:59<br />\n' +
            '<input type="radio" name="fmt" value="0" class="btm_r" />Do nothing<br />\n' +

            '<input type="checkbox" name="bbr" class="top_c" />BB returns' +
            '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' +
            '<input type="checkbox" name="origi" class="mid_c" />Replace with orig images*<br />\n' +
            '<input type="checkbox" name="wtl" class="mid_c" />Widen slightly TL' +
            '&nbsp;&nbsp;&nbsp;&nbsp;' +
            '<input type="checkbox" name="ecmode" class="btm_c" />Eye Care Mode at default BG<br />\n' +
            '<input type="checkbox" name="hpp" class="top_c" />Hide promotions' +
            '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' +
            '<input type="checkbox" name="hwtf" class="mid_c" />Hide Who to follow<br />\n' +
            '<input type="checkbox" name="hdmd" class="mid_c" />Hide DM drawer' +
            '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' +
            '<input type="checkbox" name="hgv" class="btm_c" />Hide Get Verified<br />\n' +

            '<input type="radio" name="fegm" value="1" class="top_r" />Fine engagement(live)' +
            '&nbsp;&nbsp;&nbsp;&nbsp;' +
            '<input type="radio" name="fegm" value="2" class="top_r" />Fine engagement(normal)<br />\n' +
            '<input type="radio" name="fegm" value="0" class="btm_r" />Do nothing<br />\n' +

            '<input type="radio" name="fvq" value="1" class="top_r" />at maximum video quality**' +
            '&nbsp;&nbsp;&nbsp;&nbsp;' +
            '<input type="radio" name="fvq" value="2" class="top_r" />at minimum video quality<br />\n' +
            '<input type="radio" name="fvq" value="0" class="btm_r" />Do nothing<br />\n' +

            '<span style="all: initial; font-size: 100%">' +
            'Loop interval(ms)**&nbsp;' +
            '</span><input type="text" name="intl" size="10" class="top_t" /><br />\n' +

            '<span style="all: initial; font-size: 100%; line-height: 200%">' +
            '*wasted traffic occurs&nbsp;&nbsp;&nbsp;&nbsp;**Restart required' +
            '</span><br />\n' +

            '<input type="button" class="top_b" value="Cancel" />\n' +
            '<input type="button" class="top_b" value="Set default" />\n' +
            '<input type="button" class="top_b" value="Save & Close" /><br /><br />\n'

        dalg.innerHTML = html

        for (let e of dalg.querySelectorAll('input.top_r, input.mid_r, input.btm_r')) {
            e.style.all = 'initial'
            e.style.appearance = 'auto'
            e.style.marginRight = '1px'
            e.style.marginTop = '1px'
        }
        for (let e of dalg.querySelectorAll('input.top_c, input.mid_c, input.btm_c')) {
            e.style.all = 'initial'
            e.style.appearance = 'auto'
            e.style.marginRight = '1px'
            e.style.marginTop = '1px'
        }
        for (let e of dalg.querySelectorAll('input.top_t')) {
            e.style.all = 'initial'
            e.style.backgroundColor = 'rgb(255, 255, 255)'
            e.style.fontFamily = 'monospace'
            e.style.fontSize = '100%'
            e.style.marginLeft = '1px'
            e.style.marginRight = '1px'
            e.style.marginTop = '8px'
            e.style.marginBottom = '0px'
            e.style.paddingLeft = '1px'
            e.style.paddingRight = '1px'
            e.style.paddingTop = '1px'
            e.style.paddingBottom = '1px'
        }
        for (let e of dalg.querySelectorAll('input.top_b')) {
            e.style.all = 'initial'
            e.style.backgroundColor = 'rgb(190, 190, 190)'
            e.style.borderRadius = '10%'
            e.style.cursor = 'default'
            e.style.fontSize = '110%'
            e.style.marginTop = '10px'
            e.style.marginBottom = '0px'
            e.style.paddingTop = '6px'
            e.style.paddingBottom = '6px'
            e.style.textAlign = 'center'
            e.style.width = '90px'
        }

        return dalg
    }

    function makeFunc(dalg) {
        dalg.addEventListener(
            'click',
            function (event) { event.stopPropagation() },
            false
        )

        dalg.querySelector('input[value="Cancel"]').addEventListener(
            'click',
            function () { dalg.style.display = 'none' },
            false
        )
        dalg.querySelector('input[value="Cancel"]').addEventListener(
            'mouseenter',
            function (event) { event.target.style.backgroundColor = 'rgb(170, 170, 170)' },
            false
        )
        dalg.querySelector('input[value="Cancel"]').addEventListener(
            'mouseleave',
            function (event) { event.target.style.backgroundColor = 'rgb(190, 190, 190)' },
            false
        )

        dalg.querySelector('input[value="Set default"]').addEventListener(
            'click',
            function () {
                dalg.querySelector('input[name="bbr"]').checked = BBR
                dalg.querySelector('input[name="origi"]').checked = ORIGI
                dalg.querySelector('input[name="fmt"][value="' + FMT + '"]').checked = true
                dalg.querySelector('input[name="wtl"]').checked = WTL
                dalg.querySelector('input[name="ecmode"]').checked = ECMODE
                dalg.querySelector('input[name="hpp"]').checked = HPP
                dalg.querySelector('input[name="hwtf"]').checked = HWTF
                dalg.querySelector('input[name="hdmd"]').checked = HDMD
                dalg.querySelector('input[name="hgv"]').checked = HGV
                dalg.querySelector('input[name="fegm"][value="' + FEGM + '"]').checked = true
                dalg.querySelector('input[name="fvq"][value="' + FVQ + '"]').checked = true
                dalg.querySelector('input[name="intl"]').value = INTL
            },
            false
        )
        dalg.querySelector('input[value="Set default"]').addEventListener(
            'mouseenter',
            function (event) { event.target.style.backgroundColor = 'rgb(170, 170, 170)' },
            false
        )
        dalg.querySelector('input[value="Set default"]').addEventListener(
            'mouseleave',
            function (event) { event.target.style.backgroundColor = 'rgb(190, 190, 190)' },
            false
        )

        dalg.querySelector('input[value="Save & Close"]').addEventListener(
            'click',
            function () {
                bbr = dalg.querySelector('input[name="bbr"]').checked
                origi = dalg.querySelector('input[name="origi"]').checked
                for (let e of dalg.querySelectorAll('input[name="fmt"]')) {
                    if (e.checked) {
                        fmt = +e.value
                        break
                    }
                }
                wtl = dalg.querySelector('input[name="wtl"]').checked
                ecmode = dalg.querySelector('input[name="ecmode"]').checked
                hpp = dalg.querySelector('input[name="hpp"]').checked
                hwtf = dalg.querySelector('input[name="hwtf"]').checked
                hdmd = dalg.querySelector('input[name="hdmd"]').checked
                hgv = dalg.querySelector('input[name="hgv"]').checked
                for (let e of dalg.querySelectorAll('input[name="fegm"]')) {
                    if (e.checked) {
                        fegm = +e.value
                        break
                    }
                }
                for (let e of dalg.querySelectorAll('input[name="fvq"]')) {
                    if (e.checked) {
                        fvq = +e.value
                        break
                    }
                }
                intl = +dalg.querySelector('input[name="intl"]').value

                GM_setValue('bbr', bbr)
                GM_setValue('origi', origi)
                GM_setValue('fmt', fmt)
                GM_setValue('wtl', wtl)
                GM_setValue('ecmode', ecmode)
                GM_setValue('hpp', hpp)
                GM_setValue('hwtf', hwtf)
                GM_setValue('hdmd', hdmd)
                GM_setValue('hgv', hgv)
                GM_setValue('fegm', fegm)
                GM_setValue('fvq', fvq)
                GM_setValue('intl', intl)

                dalg.style.display = 'none'
            },
            false
        )
        dalg.querySelector('input[value="Save & Close"]').addEventListener(
            'mouseenter',
            function (event) { event.target.style.backgroundColor = 'rgb(170, 170, 170)' },
            false
        )
        dalg.querySelector('input[value="Save & Close"]').addEventListener(
            'mouseleave',
            function (event) { event.target.style.backgroundColor = 'rgb(190, 190, 190)' },
            false
        )
    }

    function initgui() {
        if (GM_getValue('bbr') === undefined) {
            GM_setValue('bbr', BBR)
        } else {
            bbr = GM_getValue('bbr')
        }
        if (GM_getValue('origi') === undefined) {
            GM_setValue('origi', ORIGI)
        } else {
            origi = GM_getValue('origi')
        }
        if (GM_getValue('fmt') === undefined) {
            GM_setValue('fmt', FMT)
        } else {
            fmt = GM_getValue('fmt')
        }
        if (GM_getValue('wtl') === undefined) {
            GM_setValue('wtl', WTL)
        } else {
            wtl = GM_getValue('wtl')
        }
        if (GM_getValue('ecmode') === undefined) {
            GM_setValue('ecmode', ECMODE)
        } else {
            ecmode = GM_getValue('ecmode')
        }
        if (GM_getValue('hpp') === undefined) {
            GM_setValue('hpp', HPP)
        } else {
            hpp = GM_getValue('hpp')
        }
        if (GM_getValue('hwtf') === undefined) {
            GM_setValue('hwtf', HWTF)
        } else {
            hwtf = GM_getValue('hwtf')
        }
        if (GM_getValue('hdmd') === undefined) {
            GM_setValue('hdmd', HDMD)
        } else {
            hdmd = GM_getValue('hdmd')
        }
        if (GM_getValue('hgv') === undefined) {
            GM_setValue('hgv', HGV)
        } else {
            hgv = GM_getValue('hgv')
        }
        if (GM_getValue('fegm') === undefined) {
            GM_setValue('fegm', FEGM)
        } else {
            fegm = GM_getValue('fegm')
        }
        if (GM_getValue('fvq') === undefined) {
            GM_setValue('fvq', FVQ)
        } else {
            fvq = GM_getValue('fvq')
        }
        if (GM_getValue('intl') === undefined) {
            GM_setValue('intl', INTL)
        } else {
            intl = GM_getValue('intl')
        }

        let dalg = makeDialog()
        makeFunc(dalg)
        document.body.appendChild(dalg)

        GM_registerMenuCommand('Settings', function () {
            if (dalg.style.display == 'none') {
                dalg.querySelector('input[name="bbr"]').checked = bbr
                dalg.querySelector('input[name="origi"]').checked = origi
                dalg.querySelector('input[name="fmt"][value="' + fmt + '"]').checked = true
                dalg.querySelector('input[name="wtl"]').checked = wtl
                dalg.querySelector('input[name="ecmode"]').checked = ecmode
                dalg.querySelector('input[name="hpp"]').checked = hpp
                dalg.querySelector('input[name="hwtf"]').checked = hwtf
                dalg.querySelector('input[name="hdmd"]').checked = hdmd
                dalg.querySelector('input[name="hgv"]').checked = hgv
                dalg.querySelector('input[name="fegm"][value="' + fegm + '"]').checked = true
                dalg.querySelector('input[name="fvq"][value="' + fvq + '"]').checked = true
                dalg.querySelector('input[name="intl"]').value = intl

                dalg.style.display = 'block'
            }
        })
    }

    function datef(date, f) {
        const WEEK = {
            'ja': ['日', '月', '火', '水', '木', '金', '土'],
            'ko': ['일', '월', '화', '수', '목', '금', '토'],
            'zh-Hant': ['日', '一', '二', '三', '四', '五', '六'],
            'zh': ['日', '一', '二', '三', '四', '五', '六'],
            'ru': ['ВС', 'ПН', 'ВТ', 'СР', 'ЧТ', 'ПТ', 'СБ'],
            'de': ['Son', 'Mon', 'Die', 'Mit', 'Don', 'Fre', 'Sam'],
            'it': ['Dom', 'Lun', 'Mar', 'Mer', 'Gio', 'Ven', 'Sab'],
            'fr': ['Dim', 'Lun', 'Mar', 'Mer', 'Jeu', 'Ven', 'Sam'],
            'pt': ['Dom', 'Seg', 'Ter', 'Qua', 'Qui', 'Sex', 'Sáb'],
            'en': ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] // Add your language
        }
        const WEEK_L = WEEK[LANG] ?? WEEK['en']

        const YE = date.getFullYear().toString().slice(-2)
        const YM = date.getFullYear() - 1911
        const MO = ('0' + (date.getMonth() + 1)).slice(-2)
        const DA = ('0' + date.getDate()).slice(-2)
        const WE = WEEK_L[date.getDay()]
        const HO = ('0' + date.getHours()).slice(-2)
        const MI = ('0' + date.getMinutes()).slice(-2)
        const SE = ('0' + date.getSeconds()).slice(-2)

        const F = [
            DA + '.' + MO + '.' + YE + ' ' + HO + ':' + MI, // 0=1
            DA + '.' + MO + '.' + YE + ' ' + HO + ':' + MI + ':' + SE,
            DA + '.' + MO + '.' + YE + '(' + WE + ') ' + HO + ':' + MI,
            DA + '.' + MO + '.' + YE + '(' + WE + ') ' + HO + ':' + MI + ':' + SE,
            YE + '/' + MO + '/' + DA + ' ' + HO + ':' + MI,
            YE + '/' + MO + '/' + DA + ' ' + HO + ':' + MI + ':' + SE,
            YE + '/' + MO + '/' + DA + '(' + WE + ') ' + HO + ':' + MI,
            YE + '/' + MO + '/' + DA + '(' + WE + ') ' + HO + ':' + MI + ':' + SE,
            YE + '-' + MO + '/' + DA + ' ' + HO + ':' + MI,
            YE + '-' + MO + '/' + DA + ' ' + HO + ':' + MI + '\'' + SE,
            YE + '-' + MO + '/' + DA + '(' + WE + ') ' + HO + ':' + MI,
            YE + '-' + MO + '/' + DA + '(' + WE + ') ' + HO + ':' + MI + '\'' + SE,
            'M' + YM + '-' + MO + '-' + DA + ' ' + HO + ':' + MI,
            'M' + YM + '-' + MO + '-' + DA + ' ' + HO + ':' + MI + ':' + SE,
            'M' + YM + '-' + MO + '-' + DA + '(' + WE + ') ' + HO + ':' + MI,
            'M' + YM + '-' + MO + '-' + DA + '(' + WE + ') ' + HO + ':' + MI + ':' + SE,
            YE + '/' + MO + '/' + DA + '(' + WE + ') ' + HO + ':' + MI + ':' + SE
        ]

        return F[f - 1] ?? F[16]
    }

    function bbreturn() {
        const SEL_ID =
            'div#placeholder[aria-label="Loading…"] g path, ' +
            'svg#loading-x-anim-0 g path, svg#loading-x-anim-1 g path, ' +
            'svg#loading-x-anim-2 g path, svg#loading-x-anim-3 g path'
        const SEL_H = 'header[role="banner"] h1[role="heading"] g path' // ホーム
        const SEL_M = 'div[data-testid="Dropdown"] a[href="/i/premium_sign_up"] g path' // もっと見る
        const SEL_V = 'header[role="banner"] nav g path' // 認証済み
        const SEL_L = 'div[role="dialog"] div[aria-labelledby="modal-header"] svg.r-lrvibr path' // ログイン
        const SEL_T = 'div#react-root main svg.r-lrvibr path' // トップ

        let elms = document.querySelectorAll(
            SEL_ID + ', ' + SEL_H + ', ' + SEL_M + ', ' + SEL_V + ', ' + SEL_L + ', ' + SEL_T
        )
        let ss // Temp.

        for (let e of elms) {
            const D_X = 'M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99'
            const D_BB =
                'M23.643 4.937c-.835.37-1.732.62-2.675.733.962-.576 1.7-1.49 2.048-2.578-.9.534-1' +
                '.897.922-2.958 1.13-.85-.904-2.06-1.47-3.4-1.47-2.572 0-4.658 2.086-4.658 4.66 0' +
                ' .364.042.718.12 1.06-3.873-.195-7.304-2.05-9.602-4.868-.4.69-.63 1.49-.63 2.342' +
                ' 0 1.616.823 3.043 2.072 3.878-.764-.025-1.482-.234-2.11-.583v.06c0 2.257 1.605 ' +
                '4.14 3.737 4.568-.392.106-.803.162-1.227.162-.3 0-.593-.028-.877-.082.593 1.85 2' +
                '.313 3.198 4.352 3.234-1.595 1.25-3.604 1.995-5.786 1.995-.376 0-.747-.022-1.112' +
                '-.065 2.062 1.323 4.51 2.093 7.14 2.093 8.57 0 13.255-7.098 13.255-13.254 0-.2-.' +
                '005-.402-.014-.602.91-.658 1.7-1.477 2.323-2.41z'
            const D_FILL_N = 'none'
            const D_FILL_LB = '#1da1f2ff'
            const D_FILL_DB = '#1d9bf0ff'
            const D_S = 'currentColor'
            const D_SW = '2'

            if (e.getAttribute('d').startsWith(D_X)) {
                if (e.closest('header[role="banner"] nav, div[data-testid="Dropdown"] a[href="/i/premium_sign_up"]')) {
                    ss = s_mutations

                    e.setAttribute('d', D_BB)
                    e.setAttribute('fill', D_FILL_N)
                    e.setAttribute('stroke', D_S)
                    e.setAttribute('stroke-width', D_SW)

                    s_mutations = ss
                } else if (e.closest('div#placeholder[aria-label="Loading…"]') ||
                    e.closest('svg[id^="loading-x-anim-"]')) {
                    ss = s_mutations

                    e.setAttribute('d', D_BB)
                    e.setAttribute('fill', D_FILL_LB)

                    s_mutations = ss
                } else {
                    ss = s_mutations

                    e.setAttribute('d', D_BB)
                    e.setAttribute('fill', D_FILL_DB)

                    s_mutations = ss
                }
            }
        }

        const TITLE = document.title
        let elm = document.querySelector('head link[rel="shortcut icon"]')
        let elm_2 = document.querySelector('head link[rel="apple-touch-icon"]')

        ss = s_mutations

        if (
            elm &&
            !/favicons\/twitter\.2\.ico$/.test(elm.getAttribute('href')) &&
            !/^\(\d+\) /.test(document.title)
        ) {
            elm.setAttribute('href', '//abs.twimg.com/favicons/twitter.2.ico')
        } else if (
            elm &&
            !/favicons\/twitter-pip\.2\.ico$/.test(elm.getAttribute('href')) &&
            /^\(\d+\) /.test(document.title)
        ) {
            elm.setAttribute('href', '//abs.twimg.com/favicons/twitter-pip.2.ico')
        }
        if (
            elm_2 &&
            /responsive-web\/client-web[-a-z]*\/icon-ios\.77d25eba\.png$/.test(elm_2.getAttribute('href'))
        ) {
            elm_2.setAttribute('href', 'data:image/png;base64,' + PNG_BB)
            alert('afaf')
        }
        let rt = TITLE.replace(/ \/ X$/, ' / Twitter')
        if (TITLE != rt) document.title = rt

        s_mutations = ss
    }

    function origimg() {
        const SEL_D = 'div[style*="background-image:"]'
        const SEL_I = 'img'

        let elms = document.querySelectorAll(SEL_D + ', ' + SEL_I)

        for (let e of elms) {
            let regex = /^(.+pbs\.twimg\.com\/[^?]+\?format=\w+)(&|&amp;)(name=)(\w+)([")]*)$/
            let ss // Temp.

            if (/div/i.test(e.tagName)) {
                let r = regex.exec(e.style.backgroundImage)
                if (r && r[4] != 'orig') {
                    ss = s_mutations
                    e.style.backgroundImage = r[1] + r[2] + r[3] + 'orig' + r[5]
                    s_mutations = ss
                    continue
                }

                continue
            }

            let r = regex.exec(e.getAttribute('src'))
            if (r && r[4] != 'orig') {
                ss = s_mutations
                e.setAttribute('src', r[1] + r[2] + r[3] + 'orig' + r[5])
                s_mutations = ss
                continue
            }
        }
    }

    function widetl() {
        let elms = document.querySelectorAll('div.css-175oi2r.r-aqfbo4[data-testid="sidebarColumn"]')
        let ss // Temp.

        if (!document.querySelector('head style.' + 'us-' + MYNAME + '-' + 'c')) {
            let style_a = document.createElement('style')
            style_a.className = 'us-' + MYNAME + '-' + 'a'
            style_a.textContent =
                'div.css-175oi2r.r-f8sm7e.r-13qz1uu.r-1ye8kvj' +
                '{max-width: 660px;}'

            let style_b = document.createElement('style')
            style_b.className = 'us-' + MYNAME + '-' + 'b'
            style_b.textContent =
                'div[role="dialog"] div.css-175oi2r.r-f8sm7e.r-13qz1uu.r-1ye8kvj' +
                '{max-width: 600px;}'

            let style_c = document.createElement('style')
            style_c.className = 'us-' + MYNAME + '-' + 'c'
            style_c.textContent =
                'section div.css-175oi2r.r-f8sm7e.r-13qz1uu.r-1ye8kvj' +
                '{max-width: 600px;}'

            ss = s_mutations

            document.head.appendChild(style_a)
            document.head.appendChild(style_b)
            document.head.appendChild(style_c)

            s_mutations = ss
        }

        for (let e of elms) {
            let d, dd, dg, dgi, spdgi, da, ds

            d = e.querySelector(':scope>div>div.r-1hycxz', ':scope>div>div.r-1jocfgc')
            if (d != null) {
                dd = d.querySelector('div.r-aqfbo4.r-6gpygo.r-15ysp7h') // null対策
                dg = d.querySelector('div[data-testid="google_sign_in_container"]')
                dgi = d.querySelector('div[data-testid="google_sign_in_container"] iframe[id^="gsi"]')
                da = d.querySelector('button[data-testid="apple_sign_in_button"]')
                ds = d.querySelector('a[href="/i/flow/signup"]')
            }
            if (dgi) spdgi = dgi.parentNode.parentNode

            ss = s_mutations

            if (dd) dd.style.width = '290px'
            if (dg) dg.style.width = '260px'
            if (dgi) dgi.style.left = '-20px'
            if (spdgi) spdgi.style.setProperty('clip-path', 'inset(0 round 20px)')
            if (da) da.style.width = '260px'
            if (ds) ds.style.width = '260px'
            if (d != null) d.style.width = '290px'
            e.style.width = '290px' // 350px

            s_mutations = ss
        }
    }

    function chgbgc() {
        let body = document.getElementsByTagName('body')[0]

        if (/\(2\d{2},\s*2\d{2},\s*2\d{2}/i.test(body.style.backgroundColor)) {
            let tl, fb, sb
            tl = document.querySelector('main div.r-f8sm7e.r-1ye8kvj')
            fb = document.querySelector('main div.r-1e5uvyk.r-6026j')
            sb = document.querySelector('main div.r-aqfbo4.r-15ysp7h.r-1xcajam')

            let ss = s_mutations

            body.style.backgroundColor = 'rgb(253, 253, 245)'
            if (tl != null) tl.style.backgroundColor = 'rgb(253, 253, 245)'
            if (fb != null) fb.style.backgroundColor = 'rgba(253, 253, 245, 0.85)'
            if (sb != null) sb.style.backgroundColor = 'rgb(253, 253, 245)'

            s_mutations = ss
        }
    }

    function hidepromo() {
        const SEL = 'path[d^="M19.498 3h-15c-1.381 0-2.5 1.12-2.5 2.5v13c0 1.38 1.119 2.5"]'
        const SEL_2 = 'main div[data-testid="sidebarColumn"] section div[data-testid="trend"] div.r-14gqq1x ' +
            'span.css-1qaijid.r-bcqeeo.r-qvutc0' // def-ja, def-en, ble-ja, ble-en
        const SEL_3 = 'main div[data-testid="primaryColumn"] section article ' +
            'span.css-1jxf684.r-bcqeeo.r-qvutc0.r-poiln3'
        const SEL_4 =
            'main div[data-testid="primaryColumn"] section ' +
            'span.css-901oao.css-16my406.r-bcqeeo.r-qvutc0'
        // Lone label def-ja, def-en, ble-ja, ble-en
        let elms = document.querySelectorAll(SEL)
        let elms_2 = document.querySelectorAll(SEL_2)
        let elms_3 = document.querySelectorAll(SEL_3)
        let elms_4 = document.querySelectorAll(SEL_4)

        const PROMO = {
            'ja': 'によるプロモーション$',
            'ko': ' 님이 프로모션함$',
            'zh-Hant': '^由 .+ 推廣$',
            'zh': '^由 .+ 推广$',
            'ru': '^Реклама от ',
            'de': '^Gesponsert von ',
            'it': '^Sponsorizzato da ',
            'fr': '^Sponsorisé par ',
            'pt': '^Promovido por ',
            'en': '^Promoted by ' // Add your language
        }
        const PROMO_L = PROMO[LANG] ?? PROMO['en']

        const PROMO_2 = {
            'ja': 'プロモポスト',
            'ko': 'Promoted Post',
            'zh-Hant': '推廣貼文',
            'zh': 'Promoted Post',
            'ru': 'Promoted Post',
            'de': 'Gesponserter Post',
            'it': 'Promoted Post',
            'fr': 'Promoted Post',
            'pt': 'Post promovido',
            'en': 'Promoted Post' // Add your language
        }
        const PROMO_L_2 = PROMO_2[LANG] ?? PROMO_2['en']

        let ss // Temp.

        for (let e of elms) {
            let xpe = e.closest('div[data-testid="cellInnerDiv"]')
            if (!xpe) xpe = e.closest('div.css-175oi2r.r-1adg3ll.r-1ny4l3l') // def-ja, def-en, ble-ja, ble-en
            if (!xpe) xpe = e.closest('div.css-175oi2r.r-1ny4l3l[data-testid="UserCell"]') // def-ja, def-en, ?, ble-en

            ss = s_mutations

            if (xpe) xpe.style.setProperty('display', 'none') // Right column のおすすめユーザー'

            s_mutations = ss
        }

        for (let e of elms_2) {
            const REGEX = new RegExp(PROMO_L, 'i')

            if (!REGEX.test(e.textContent)) continue

            let xpe = e.closest('div.css-175oi2r.r-1adg3ll.r-1ny4l3l')

            ss = s_mutations

            xpe.style.setProperty('display', 'none')

            s_mutations = ss
        }

        for (let e of elms_3) {
            if (e.textContent != 'Ad') continue

            let xpe = e.closest('div[data-testid="cellInnerDiv"]')

            ss = s_mutations

            xpe.style.setProperty('display', 'none')

            s_mutations = ss
        }

        for (let e of elms_4) {
            if (e.textContent != PROMO_2['en'] && e.textContent != PROMO_L_2) continue

            let xpe = e.closest('div[data-testid="cellInnerDiv"]')

            ss = s_mutations

            xpe.style.setProperty('display', 'none')

            s_mutations = ss
        }
    }

    function hidewtf() {
        let ss // Temp.

        let r =
            '^[^:]+://[^/]+/$|' +

            '^[^:]+://[^/]+/(' +
            'compose|' + // pop up
            'search-advanced|' + // pop up
            'home|' + // 除外?
            'search|' +

            'i/display|' + // pop up
            'i/flow|' + // pop up
            'i/keyboard_shortcuts|' + // pop up
            'i/verified-orgs-signup|' + // pop up、追加
            'i/verified-choose|' + // pop up、追加
            'i/premium_sign_up|' + // pop up、追加
            'i/connect_people|' +
            'i/topics|' +
            'i/spaces/start|' + // pop up、追加
            'i/verified-application|' + // pop up、追加
            'i/verified-get-verified|' + // pop up、追加

            '[^/]+/followers|' +
            '[^/]+/following|' +
            '[^/]+/lists|' +
            '[^/]+/status/|' + // 両方、WTFのみ除外
            '[^/]+/topics|' +
            '[^/]+/creator-subscriptions|' + // 追加
            '[^/]+/superfollows|' + // 追加
            '[^/]+/verified_followers' + // 追加
            ')'

        if (new RegExp(r, 'i').test(document.URL)) {
            for (let i = 1; i < 4; i++) {
                let e = document.querySelector('head style.' + 'us-' + MYNAME + '-' + i)
                if (e) document.head.removeChild(e)
            }

            return
        }

        if (!document.querySelector('head style.' + 'us-' + MYNAME + '-' + 1)) {
            ss = s_mutations

            let style = document.createElement('style')
            style.className = 'us-' + MYNAME + '-' + 1
            style.textContent =
                'main div[data-testid="primaryColumn"] section div[data-testid="cellInnerDiv"]' +
                ':has(button.css-175oi2r.r-1mmae3n.r-3pj75a.r-1ny4l3l.r-o7ynqc.r-6416eg[data-testid="UserCell"]) ' +
                '{display: none;}'
            // フォロー, def-ja, def-en, ble-ja, ble-en
            document.head.appendChild(style)

            s_mutations = ss
        }

        if (!document.querySelector('head style.' + 'us-' + MYNAME + '-' + 2)) {
            ss = s_mutations

            let style = document.createElement('style')
            style.className = 'us-' + MYNAME + '-' + 2
            style.textContent =
                'main div[data-testid="primaryColumn"] section div[data-testid="cellInnerDiv"]' +
                ':has(h2[aria-level="2"][role="heading"]>div>span.css-1jxf684.r-bcqeeo.r-qvutc0) {display: none;}'
            // Who to follow, def-ja, def-en, ble-ja, ble-en
            document.head.appendChild(style)

            s_mutations = ss
        }

        if (!document.querySelector('head style.' + 'us-' + MYNAME + '-' + 3)) {
            ss = s_mutations

            let style = document.createElement('style')
            style.className = 'us-' + MYNAME + '-' + 3
            style.textContent =
                'main div[data-testid="primaryColumn"] section div[data-testid="cellInnerDiv"]' +
                ':has(a[href*="/connect_people?user_id="]) {display: none;}' // さらに表示
            document.head.appendChild(style)

            s_mutations = ss
        }
    }

    function hidedmd() {
        const SEL = 'div[data-testid="DMDrawer"]'
        let elm = document.querySelector(SEL)
        let ss = s_mutations

        if (elm != null) elm.style.setProperty('display', 'none')

        s_mutations = ss
    }

    function hidegv() {
        const SEL = 'aside.css-175oi2r.r-1habvwh.r-eqz5dr.r-uaa2di.r-1mmae3n.r-3pj75a'
        const SEL_2 = 'main section div[data-testid="cellInnerDiv"] h1[role="heading"] span.css-1jxf684.r-bcqeeo.r-qvutc0'
        // def-ja, def-en, ble-ja, ble-en
        let elms = document.querySelectorAll(SEL)
        let elms_2 = document.querySelectorAll(SEL_2)

        const TC = {
            'gv': {
                'ja': '認証を受ける',
                'ko': '인증 받기',
                'zh-Hant': '獲得認證',
                'zh': '获得认证',
                'ru': 'Подтвердить подлинность',
                'de': 'Lass dich verifizieren',
                'it': 'Ottieni la verifica',
                'fr': 'Obtenez la certification',
                'pt': 'Obter verificação',
                'en': 'Get Verified' // Add your language
            },
            'sp': {
                'ja': 'プレミアムにサブスクライブ',
                'ko': 'Subscribe to Premium',
                'zh-Hant': '訂閱 Premium',
                'zh': 'Subscribe to Premium',
                'ru': 'Subscribe to Premium',
                'de': 'Premium abonnieren',
                'it': 'Subscribe to Premium',
                'fr': 'Subscribe to Premium',
                'pt': 'Assine o Premium',
                'en': 'Subscribe to Premium' // Add your language
            },
            'spylp': {
                'ja': '長いポストを作成するには、プレミアムにサブスクライブしてください',
                'ko': 'Premium을 구독하고 나만의 긴 게시물을 작성해 보세요',
                'zh-Hant': '訂閱 Premium 以撰寫你自己的更長貼文',
                'zh': '订阅 Premium,撰写自己的长帖',
                'ru': 'Подпишитесь на Premium, чтобы писать собственные длинные посты',
                'de': 'Abonniere Premium, wenn du deine eigenen längeren Posts schreiben möchtest',
                'it': 'Per scrivere post più lunghi, abbonati a Premium',
                'fr': 'Abonnez-vous à Premium pour écrire vos propres posts plus longs.',
                'pt': 'Assine o Premium para escrever posts mais longos',
                'en': 'Subscribe to Premium to write your own longer posts' // Add your language
            },
            'gafp': {
                'ja': 'プレミアムプラスで広告をなくす',
                'ko': 'Go ad-free with Premium+',
                'zh-Hant': 'Go ad-free with Premium+',
                'zh': 'Go ad-free with Premium+',
                'ru': 'Go ad-free with Premium+',
                'de': 'Go ad-free with Premium+',
                'it': 'Go ad-free with Premium+',
                'fr': 'Go ad-free with Premium+',
                'pt': 'Go ad-free with Premium+',
                'en': 'Go ad-free with Premium+' // Add your language
            },
            'gaf': {
                'ja': '広告をなくす',
                'ko': 'Go ad free',
                'zh-Hant': 'Go ad free',
                'zh': 'Go ad free',
                'ru': 'Go ad free',
                'de': 'Go ad free',
                'it': 'Go ad free',
                'fr': 'Go ad free',
                'pt': 'Go ad free',
                'en': 'Go ad free' // Add your language
            },
            'txp': {
                'ja': 'TweetDeckはX Proになりました',
                'ko': 'TweetDeck is now X Pro',
                'zh-Hant': 'TweetDeck is now X Pro',
                'zh': 'TweetDeck is now X Pro',
                'ru': 'TweetDeck is now X Pro',
                'de': 'TweetDeck is now X Pro',
                'it': 'TweetDeck is now X Pro',
                'fr': 'TweetDeck is now X Pro',
                'pt': 'TweetDeck is now X Pro',
                'en': 'TweetDeck is now X Pro' // Add your language
            }
        }
        const GV_L = TC.gv[LANG] ?? TC.gv['en']
        const SP_L = TC.sp[LANG] ?? TC.sp['en']
        const SPYLP_L = TC.spylp[LANG] ?? TC.spylp['en']
        const GAFP_L = TC.gafp[LANG] ?? TC.gafp['en']
        const GAF_L = TC.gaf[LANG] ?? TC.gaf['en']
        const TXP_L = TC.txp[LANG] ?? TC.txp['en']

        for (let e of elms) {
            if (
                e.getAttribute('aria-label') == GV_L ||
                e.getAttribute('aria-label') == SP_L ||
                e.getAttribute('aria-label') == SPYLP_L ||
                e.getAttribute('aria-label') == GAFP_L
            ) {
                let ss = s_mutations

                e.parentNode.parentNode.style.setProperty('display', 'none')

                s_mutations = ss
            }
        }

        for (let e of elms_2) {
            if (e.textContent == GAF_L || e.textContent == TXP_L) {
                let xpe = e.closest('div[data-testid="cellInnerDiv"]')

                let ss = s_mutations

                xpe.style.setProperty('display', 'none')

                s_mutations = ss
            }
        }
    }

    function fineegm() {
        const SEL_R =
            'main div[data-testid="primaryColumn"] section article ' +
            'button.css-175oi2r.r-1777fci.r-bt1l66.r-bztko3.r-lrvibr.r-1loqt21.r-1ny4l3l[data-testid*="reply"] ' +
            'div>span[data-testid="app-text-transition-container"]>span' // 一つ上
        const SEL_T =
            'main div[data-testid="primaryColumn"] section article ' +
            'button.css-175oi2r.r-1777fci.r-bt1l66.r-bztko3.r-lrvibr.r-1loqt21.r-1ny4l3l[data-testid*="retweet"] ' +
            'div>span[data-testid="app-text-transition-container"]>span'
        const SEL_L =
            'main div[data-testid="primaryColumn"] section article ' +
            'button.css-175oi2r.r-1777fci.r-bt1l66.r-bztko3.r-lrvibr.r-1loqt21.r-1ny4l3l[data-testid*="like"] ' +
            'div>span[data-testid="app-text-transition-container"]>span'
        const SEL_B =
            'main div[data-testid="primaryColumn"] section article ' +
            'button.css-175oi2r.r-1777fci.r-bt1l66.r-bztko3.r-lrvibr.r-1loqt21.r-1ny4l3l[data-testid*="bookmark"] ' +
            'div>span[data-testid="app-text-transition-container"]>span'

        document.
            querySelectorAll(SEL_R + ', ' + SEL_T + ', ' + SEL_L + ', ' + SEL_B).
            forEach(function (e) {
                const SEL_ADD = 'span.us-' + MYNAME

                let ce = e.querySelector('span:not(.us-' + MYNAME + ')')
                let xpe = e.closest('button')
                let n = +xpe.getAttribute('aria-label').split(' ')[0]
                let ls = ''
                if (n) ls = n.toLocaleString('en-US')

                let old = e.querySelector(SEL_ADD)

                let ss // Temp.

                ss = s_mutations

                if (ce && ce.style.display != 'none') { // 0の時も無い
                    ce.style.setProperty('display', 'none')
                }
                if (!old) {
                    let span = document.createElement('span')
                    span.className = 'us-' + MYNAME
                    span.textContent = ls
                    if (ce) span.style = ce.style

                    e.appendChild(span)
                } else if (old.textContent != ls) {
                    old.textContent = ls
                    if (ce) old.style = ce.style
                }

                s_mutations = ss
            })
    }

    function fineegm_v_d() {
        const SEL =
            'main div[data-testid="primaryColumn"] section article ' +
            'div.css-175oi2r.r-1d09ksm.r-1471scf.r-18u37iz.r-1wbh5a2>' +
            'div>span>div>span[data-testid="app-text-transition-container"]>span>span:not(.us-' + MYNAME + ')'
        // 表示回数は減らない、0の時は無い
        const SEL_2 =
            'button.css-175oi2r.r-1777fci.r-bt1l66.r-bztko3.r-lrvibr.r-1loqt21.r-1ny4l3l[data-testid*="retweet"] ' +
            'div>span[data-testid="app-text-transition-container"]>span' // 一つ上
        const SEL_ADD = 'span.us-' + MYNAME

        let elm = document.querySelector(SEL)
        if (!elm) return

        let elm_2 = document.querySelector(SEL_2)
        if (!elm_2) return

        let pelm = elm.parentNode
        let xpelm_2 = elm_2.closest('div.r-1kbdv8c[aria-label][role="group"]') // fineegm()のさらに上
        let n = +/(\d+)\D+$/.exec(xpelm_2.getAttribute('aria-label'))[1]
        let ls = n.toLocaleString('en-US')

        let old = pelm.querySelector(SEL_ADD)

        let ss // Temp.

        ss = s_mutations

        if (!old) {
            let span = document.createElement('span')
            span.className = 'us-' + MYNAME
            span.textContent = ls
            span.style = elm.style

            elm.style.setProperty('display', 'none')
            pelm.appendChild(span)
        } else if (old.textContent != ls) {
            old.textContent = ls
            old.style = elm.style
        }

        s_mutations = ss
    }

    function fineegm_v_t() {
        const SEL =
            'main div[data-testid="primaryColumn"] section article ' +
            'a[href$="/analytics"][aria-label][role="link"]>div>div>span[data-testid="app-text-transition-container"]>' +
            'span>span:not(.us-' + MYNAME + ')' // 二つ下から消える

        document.querySelectorAll(SEL).forEach(function (e) {
            const SEL_ADD = 'span.us-' + MYNAME

            let pe = e.parentNode
            let xpe = e.closest('a')
            let n = +xpe.getAttribute('aria-label').split(' ')[0]
            let ls = n.toLocaleString('en-US')

            let old = pe.querySelector(SEL_ADD)

            let ss // Temp.

            ss = s_mutations

            if (!old) {
                let span = document.createElement('span')
                span.className = 'us-' + MYNAME
                span.textContent = ls
                span.style = e.style

                e.style.setProperty('display', 'none')
                pe.appendChild(span)
            } else if (old.textContent != ls) {
                old.textContent = ls
                old.style = e.style
            }

            s_mutations = ss
        })
    }

    function fineegm_t() {
        const SEL =
            'main div[data-testid="primaryColumn"] div[aria-label] ' +
            'h2[role="heading"]~div.css-146c3p1.r-n6v787.r-1cwl3u0'
        const SEL_2 =
            'script[data-testid="UserProfileSchema-test"]'
        const SEL_ADD = 'div.us-' + MYNAME

        let elm = document.querySelector(SEL)
        if (!elm) return

        let elm_2 = document.querySelector(SEL_2)
        if (!elm_2) return

        let pelm = elm.parentNode
        let n = JSON.parse(elm_2.textContent).author.interactionStatistic[2].userInteractionCount
        let ls = n.toLocaleString('en-US')

        let old = pelm.querySelector(SEL_ADD)

        let ss = s_mutations // Temp.

        if (!old) {
            let div = document.createElement('div')
            div.className = 'us-' + MYNAME
            div.textContent = ls + ' ' + elm.textContent.split(' ')[1]
            div.style = elm.style

            elm.style.setProperty('display', 'none')
            pelm.appendChild(div)
        } else if (old.textContent.split(' ')[0] != ls) {
            old.textContent = ls + ' ' + elm.textContent.split(' ')[1]
            old.style = elm.style
        }

        s_mutations = ss
    }

    function isHLSURL(url) {
        return (
            /^https?:\/\/video\.twimg\.com\/[^?]+\.m3u8?/i.test(url) ||
            /^https?:\/\/[^.]+\.video\.pscp\.tv\/[^?]+\.m3u8?/i.test(url)
        )
    }

    function isHLSMaster(text) {
        return (
            text &&
            text.includes('#EXT-X-STREAM-INF') &&
            !text.includes('#EXT-X-TARGETDURATION')
        )
    }

    function pickone(reg, text) {
        let matches = []
        const HEAD = text.replace(reg, function (m, p1) {
            matches.push([m, p1])
            return ''
        })
        const L = matches.length
        if (L < 2) return text

        let select = matches[0]
        for (let i = 1; i < L; i++) { // 2番目から
            select =
                (fvq != 2 && +select[1] < +matches[i][1]) ||
                    (fvq == 2 && +select[1] > +matches[i][1]) ? matches[i] :
                    select
        }

        return (HEAD + '\n' + select[0]).trim().replace(/(\r?\n)+/g, '\n') + '\n'
    }

    function twXHRStateHandler({ target: xhr }) {
        if (xhr.readyState === 4) {
            const rawTEXT = xhr.responseText
            if (isHLSMaster(rawTEXT)) {
                // eslint-disable-next-line regexp/optimal-quantifier-concatenation
                const REG = /#EXT-X-STREAM-INF.*[^-]BANDWIDTH=(\d+).*\r?\n\/.+$/gm
                const modTEXT = pickone(REG, rawTEXT)
                Object.defineProperties(xhr, {
                    response: { writable: true },
                    responseText: { writable: true }
                })
                xhr.response = xhr.responseText = modTEXT
            }
        }
    }

    function overrideXHROpen() {
        originalXHROPEN = XMLHttpRequest.prototype.open
        XMLHttpRequest.prototype.open = function () {
            if (isHLSURL(arguments[1])) {
                this.addEventListener('readystatechange', twXHRStateHandler)
            }
            return originalXHROPEN.apply(this, arguments)
        }

        console.log(MYNAME + ': XMLHttpRequest.open overriden.')
    }

    function repldatetime() {
        const SEL =
            'main div[data-testid="primaryColumn"] section article time[datetime*=":"]'
        const SEL_2 =
            'div[aria-labelledby="modal-header"] div[data-testid^="User-Name"] time[datetime]'
        const SEL_3 =
            'div[aria-labelledby="modal-header"] div[aria-label] time[datetime]'
        const SEL_4 =
            'main section[aria-labelledby="detail-header"] article div[data-testid^="User-Name"] time[datetime]'
        const SEL_5 =
            'main section div[data-testid="conversation"] div[aria-label] time[datetime]' // DM list

        document.
            querySelectorAll(SEL + ', ' + SEL_2 + ', ' + SEL_3 + ', ' + SEL_4 + ', ' + SEL_5).
            forEach(function (e) {
                const SEL_ADD = 'span.us-' + MYNAME

                let d = e.getAttribute('datetime')
                let df = datef(new Date(d), fmt)

                let pe = e.parentNode

                let old = pe.querySelectorAll(SEL_ADD)

                let ss // Temp.

                ss = s_mutations

                if (!old.length) {
                    let span = document.createElement('span')
                    span.className = 'us-' + MYNAME
                    span.setAttribute('datetime', d)
                    span.setAttribute('local-datetime', df)
                    span.textContent = df
                    span.style = e.style

                    e.style.setProperty('display', 'none')
                    pe.appendChild(span)
                } else if (old[0].getAttribute('local-datetime') != df) { // TZ change
                    old[0].setAttribute('local-datetime', df)
                    old[0].textContent = df
                    old[0].style = e.style
                }

                s_mutations = ss
            })
    }

    function loop() {
        setTimeout(() => {
            if (s_mutations) {
                s_mutations = null // 初期値がtrue、変更もしない

                if (bbr) bbreturn()
                if (origi) origimg()
                if (wtl) widetl()
                if (ecmode) chgbgc()
                if (hpp) hidepromo()
                if (hwtf) hidewtf()
                if (hdmd) hidedmd()
                if (hgv) hidegv()
                if (fmt) repldatetime()
                if (fegm) {
                    fineegm()
                    fineegm_v_d()
                    fineegm_v_t()
                    fineegm_t()
                    time_r = Date.now()
                }
            } else if (fegm == 1 && Date.now() - time_r > 4000) {
                fineegm()
                fineegm_v_d()
                fineegm_v_t()
                fineegm_t()
                time_r = Date.now()
            }
            loop()
        }, intl)
    }

    bbr = BBR
    origi = ORIGI
    wtl = WTL
    ecmode = ECMODE
    hpp = HPP
    hwtf = HWTF
    hdmd = HDMD
    hgv = HGV
    fegm = FEGM
    fvq = FVQ
    fmt = FMT
    intl = INTL

    if (!NOGUI) initgui()
    if (fvq) overrideXHROpen()
    observer.observe(document, { childList: true, subtree: true })
    loop()

})() /*  END  */