diff --git a/README.md b/README.md index 5d4a8115..f1a0e92b 100644 --- a/README.md +++ b/README.md @@ -27,8 +27,8 @@ Easiest way to install the lastest required packages on Linux is via nvm. ``` source ~/.profile ``` (For Debian based distro)
``` source ~/.bashrc ``` (For Fedora / CentOS)
``` nvm ls-remote ``` (Fetch list of available versions)
-``` nvm install v18.16.1 ``` (LTS: Hydrogen supported by Electron)
-``` npm --location=global install npm@9.8.1 ```
+``` nvm install v18.17.1 ``` (LTS: Hydrogen supported by Electron)
+``` npm --location=global install npm@10.2.0 ```
Adding via binary package mirror will only work if you have set the package path. You can do a node or java build via ports instead by downloading ports with portsnap fetch method. diff --git a/core/language/de.json b/core/language/de.json index 18b26b20..4e051d36 100644 --- a/core/language/de.json +++ b/core/language/de.json @@ -207,7 +207,8 @@ "exp3": "Exportieren", "exp4": "Bitte wählen Sie eine Brieftasche aus, um den privaten Hauptschlüssel zu sichern.", "core": "Core-Einstellungen starten", - "qappNotification1": "Q-App Benachrichtigungen" + "qappNotification1": "Q-App Benachrichtigungen", + "selectnode": "Bitte wählen Sie eine Option" }, "appinfo": { "blockheight": "Blockhöhe", @@ -1019,12 +1020,18 @@ "rewarddialog1": "Möchten Sie eine Reward-Share-Transaktion erstellen und", "rewarddialog2": "Ihrer Prägeprämien teilen mit", "rewarddialog3": "Wenn ja, müssen Sie den Schlüssel unten speichern, um zu prägen. Es kann an jeden Knoten geliefert werden, damit es in Ihrem Namen prägen kann.", - "rewarddialog4": "Wenn Sie auf „Bestätigen“ drücken, wird der Belohnungsanteil erstellt, aber Sie müssen den oben genannten Schlüssel trotzdem an einen Knoten übermitteln, um mit dem Konto zu prägen.", + "rewarddialog4": "Wenn Sie auf Bestätigen drücken, wird der Belohnungsanteil erstellt, aber Sie müssen den oben genannten Schlüssel trotzdem an einen Knoten übermitteln, um mit dem Konto zu prägen.", "rewarddialog5": "Sie entfernen eine Prämienaktientransaktion, die mit dem Konto verknüpft ist:", - "rewarddialog6": "Wenn Sie auf „Bestätigen“ klicken, wird die Prämie entfernt und der Prägeschlüssel wird ungültig.", + "rewarddialog6": "Wenn Sie auf Bestätigen drücken, wird die Prämie entfernt und der Prägeschlüssel wird ungültig.", "deployAtdialog1": "Sie stellen das AT bereit", - "deployAtdialog2": "Wenn Sie auf 'Bestätigen' klicken, wird das AT bereitgestellt!", - "deployAtdialog3": "Anfänglicher Betragssaldo" + "deployAtdialog2": "Wenn Sie auf Bestätigen drücken, wird das AT bereitgestellt!", + "deployAtdialog3": "Anfänglicher Betragssaldo", + "votedialog1": "Sie beantragen, bei der folgenden Umfrage abzustimmen:", + "votedialog2": "Wenn Sie auf Bestätigen drücken, wird die Abstimmungsanfrage gesendet!", + "votedialog3": "Sie beantragen die Erstellung der folgenden Umfrage:", + "votedialog4": "Umfragebeschreibung", + "votedialog5": "Optionen", + "votedialog6": "Wenn Sie auf Bestätigen drücken, wird die Umfrage erstellt!" }, "sponsorshipspage": { "schange1": "Aktive Patenschaften", diff --git a/core/language/es.json b/core/language/es.json index f3fa0ab2..b9827dd7 100644 --- a/core/language/es.json +++ b/core/language/es.json @@ -207,7 +207,8 @@ "exp3": "Exportar", "exp4": "Elija una billetera para hacer una copia de seguridad de la clave maestra privada.", "core": "Iniciar configuración básica", - "qappNotification1": "Notificaciones de Q-App" + "qappNotification1": "Notificaciones de Q-App", + "selectnode": "Por favor seleccione una opción" }, "appinfo": { "blockheight": "Altura del Bloque", @@ -1024,7 +1025,13 @@ "rewarddialog6": "Al presionar confirmar, se eliminará la recompensa compartida y la clave de acuñación dejará de ser válida.", "deployAtdialog1": "Estás implementando el AT", "deployAtdialog2": "¡Al presionar confirmar, el AT será implementado!", - "deployAtdialog3": "Saldo del importe inicial" + "deployAtdialog3": "Saldo del importe inicial", + "votedialog1": "Estás solicitando votar en la siguiente encuesta:", + "votedialog2": "¡Al presionar confirmar, se enviará la solicitud de voto!", + "votedialog3": "Estás solicitando crear la encuesta a continuación:", + "votedialog4": "Descripción de la encuesta", + "votedialog5": "Opciones", + "votedialog6": "¡Al presionar confirmar, se creará la encuesta!" }, "sponsorshipspage": { "schange1": "Patrocinios Activos", diff --git a/core/language/et.json b/core/language/et.json index 9ae6e735..2d2531ef 100644 --- a/core/language/et.json +++ b/core/language/et.json @@ -2,8 +2,8 @@ "selectmenu": { "selectlanguage": "Vali keel", "languageflag": "et", - "chinese1": "Hiina (Simplified)", - "chinese2": "Hiina (Traditional)", + "chinese1": "Hiina (Lihtsustatud)", + "chinese2": "Hiina (Tradits.)", "croatian": "Horvaatia", "english": "Inglise", "estonian": "Eesti", @@ -28,7 +28,7 @@ "becomeAMinter": "HAKKA MÜNTIJAKS", "wallets": "RAHAKOTID", "tradeportal": "KAUPLEMISE PORTAAL", - "rewardshare": "REWARD SHARE", + "rewardshare": "PREEMIAJAGAMINE", "nameregistration": "NIME REGISTREERIMINE", "websites": "VEEBILEHED", "management": "HALDUS", @@ -44,48 +44,48 @@ "sm3": "NIMEDE TURG" }, "tabmenu": { - "tm1": "Mündimise üksikasjad", - "tm2": "Hakka rahapajaks", + "tm1": "Müntimise üksikasjad", + "tm2": "Hakka müntijaks", "tm3": "Sponsorite nimekiri", "tm4": "Rahakotid", - "tm5": "Kaubandusportaal", + "tm5": "Kauplemisportaal", "tm6": "Automaatne ost", "tm7": "Preemiajagamine", "tm8": "Q-Chat", "tm9": "Nime registreerimine", - "tm10": "Nimeturg", - "tm11": "Veebisaidid", - "tm12": "Q-Apps", - "tm13": "Grupihaldus", + "tm10": "Nimede turg", + "tm11": "Veebilehed", + "tm12": "Q-Rakendused", + "tm13": "Gruppide haldus", "tm14": "Andmehaldus", "tm15": "Pusled", "tm16": "Sõlmehaldus", "tm17": "Uus vaheleht", "tm18": "Lisa uus vaheleht", "tm19": "Lisa uus pistikprogramm", - "tm20": "Q-App", - "tm21": "Veebisait", + "tm20": "Q-Rakendus", + "tm21": "Veebileht", "tm22": "Eemalda pistikprogramm", - "tm23": "Kas olete kindel, et eemaldate selle pistikprogrammi?", - "tm24": "Plugina tüüp:", - "tm25": "Palun valige plugina tüüp!", + "tm23": "Kas oled kindel, et eemaldada see pistikprogramm?", + "tm24": "Pistikprogrammi tüüp:", + "tm25": "Palun vali pistikprogrammi tüüp!", "tm26": "Lisa menüüsse uus pistikprogramm", "tm27": "Eemalda pistikprogramm menüüst", "tm28": "Ülevaateleht", "tm29": "Lähtesta vahekaardi menüü", - "tm30": "Otsi kvartali nime", - "tm31": "Minu jälgitavad nimed", + "tm30": "Otsi Qortali Nime", + "tm31": "Minu jälgitavad Nimed", "tm32": "See konto ei jälgi ühtegi kasutajat", "tm33": "Impordi vahekaardi menüü", "tm34": "Ekspordi vahekaardi menüü", - "tm35": "Teie olemasolev vahekaardimenüü kustutatakse ja seatakse üleslaaditud vahekaardi menüüks.", - "tm36": "Vahekaardimenüü on edukalt taastatud", + "tm35": "Olemasolev vahekaardimenüü kustutatakse ja seatakse üleslaaditud vahekaardi menüüks.", + "tm36": "Vahekaardimenüü edukalt taastatud", "tm37": "Vahekaardimenüü edukalt salvestatud nimega", - "tm38": "DEV MODE", + "tm38": "ARENDAJA REZHIIM", "tm39": "Lisa kohandatud raamistik", "tm40": "Lisa ja ava", - "tm41": "Viga: vigased andmed, proovige uuesti!", - "tm42": "Kvartali loterii" + "tm41": "Viga: vigased andmed, proovi uuesti!", + "tm42": "Qortali loterii" }, "login": { "login": "Logi sisse", @@ -96,7 +96,7 @@ "youraccounts": "Sinu kontod", "clickto": "Klõpsa kontole sellega sisse logimiseks", "needcreate": "Pead looma või salvestama konto enne sisse logimist!", - "upload": "Laadi oma Qortal varukoopia üles", + "upload": "Laadi üles oma Qortal varukoopia", "howlogin": "Kuidas soovid sisse logida?", "seed": "Seemnefraas", "seedphrase": "seemnefraas", @@ -105,64 +105,64 @@ "backup": "Qortal rahakoti varukoopia", "decrypt": "Krüpti varukoopia lahti", "save": "Salvesta selles sirvikus.", - "prepare": "Ettevalmistan Sinu Kontot", + "prepare": "Konto ettevalmistus...", "areyousure": "Oled kindel, et soovid eemaldada seda rahakotti salvestatud rahakottide hulgast?", - "error1": "Varukoopia peab olema valiidne JSON", + "error1": "Varukoopia peab olema korrektses JSON-formaadis", "error2": "Sisse logimise viis valimata", - "createwelcome": "Tere tulemast Qortalisse, leiad, et see on sarnane RPG mänguga, sul kui Qortali võrgu kaevuril/müntijal (kui otsustad selleks saada) on võimalus oma konto taset tõsta, mis annab sulle nii rohkem QORTi plokkide tasu kui ka suurema mõju võrgu üle platvormi otsuste üle hääletamise osas..", - "createa": "A", - "click": "Klõpsa et vaadata seemnefraasi", + "createwelcome": "Tere tulemast Qortalisse! Sulle genereeritakse nüüd uus juhuslik seemnefraas, mida kasutatakse Sinu privaatvõtme ja aadressi loomiseks Qortali plokiahelasse. Lisaks, kui otsustad hakata ka Qortali platvormil nö. müntijaks, on Sul võimalus oma Qortali kontole saavutada kõrgem tase, mis toob Sulle suurema plokkide tasu QORT digimüntidena ning ka suurema hääletusmõjuvõimu Qortaliga seonduvate tulevikuotsuste osas.", + "createa": "", + "click": "Klõpsa, et vaadata seemnefraasi", "confirmpass": "Kinnita salasõna", - "willbe": "genereeritakse juhuslikult taustal. Seda kasutatakse teie privaatse võtme generaatorina teie plokiahela konto jaoks Qortalis..", - "clicknext": "Looge oma Qortal konto, klõpsates allpool oleval nupul NEXT.", - "ready": "Teie konto on nüüd valmis loomiseks. See salvestatakse sellesse brauserisse. Kui te ei soovi, et teie uus konto salvestatakse teie brauserisse, võite eemaldada allpool oleva märkeruudu. Saate ikkagi oma uue kontoga sisse logida (pärast välja logimist), kasutades oma rahakoti varukoopia faili, mille sa PEAD alla laadima, kui oled oma konto loonud..", + "willbe": "<- siit näed oma seemnefraasi.", + "clicknext": "Qortal konto loomiseks klõpsa allpool olevat nuppu EDASI.", + "ready": "Konto on peaaegu valmis ja see salvestatakse siia keskkonda (Qortal UI sirvikusse). Kui Sa mingil põhjusel seda salvestada ei soovi, võid eemaldada allpool oleva märkeruudu. Oma uue kontoga saad ikkagi sisse logida (pärast välja logimist), kasutades oma konto rahakoti varukoopia faili, mis tuleb KINDLASTI arvutis kuhugi kausta salvestada peale konto loomist.", "welmessage": "Tere tulemast Qortalisse", "pleaseenter": "Palun sisesta salasõna!", "notmatch": "Salasõnad ei kattu!", - "lessthen8": "Teie salasõna on vähem kui 8 tähemärki! See ei ole soovitatav. Te võite seda hoiatust jätkuvalt ignoreerida.", - "lessthen8-2": "Teie salasõna on vähem kui 8 tähemärki!", + "lessthen8": "Salasõna on vähem kui 8 tähemärki! See ei ole turvakaalutlustel soovitatav, kuigi saab ka nii.", + "lessthen8-2": "Salasõna on vähem kui 8 tähemärki!", "entername": "Palun sisesta Nimi!", - "downloaded": "Sinu rahakoti varukoopia laeti alla!", + "Lae allaed": "Sinu rahakoti varukoopia laeti alla.", "loading": "Laadib, palun oota...", "createdseed": "Sa lõid seemnefraasi", "saveseed": "Salvesta seemnefraas", - "savein": "Salvesta brauserisse", - "backup2": "See fail on AINUS viis pääseda oma kontole ligi süsteemis, kus see ei ole rakendusse/brauserisse salvestatud. KINDLASTI VARUNDAGE SEE FAIL MITMES KOHAS. See fail on väga turvaliselt krüpteeritud ja dekrüpteeritud teie eelmise sammu käigus loodud kohaliku parooliga. Saate seda turvaliselt kuhugi salvestada, kuid veenduge, et teete seda mitmes kohas.", + "savein": "Salvesta sirvikusse", + "backup2": "Konto varukoopia fail on turvaliselt krüpteeritud, ja dekrüpteeritav Sinu poolt sisestatud salasõnaga, ning see fail on AINUS VIIS pääseda Sinu kontole ligi, kui kontot ei ole Qortal UI sirvikusse salvestatud. TEE SELLEST FAILIST VARUKOOPIA(D), et sa ei kaotaks oma kontole ligipääsu!", "savewallet": "Salvesta rahakoti varukoopia fail", "created1": "Sinu konto on nüüd loodud", - "created2": " ja salvestatakse selles brauseris.", - "downloadbackup": "Laadi rahakoti varukoopia fail alla", + "created2": " ja salvestatakse siinse arvuti sirvikus.", + "Lae allabackup": "Laadi rahakoti varukoopia fail alla", "passwordhint": "Salasõna peab olema vähemalt 8 tähemärki.", "lp1": "Lukusta ekraan", - "lp2": "Lukustuskuva parool pole määratud!", - "lp3": "Palun määra üks", - "lp4": "Ei, aitäh", - "lp5": "Määra parool", - "lp6": "Uus ekraaniluku parool on edukalt seadistatud!", - "lp7": "UNLOCK", - "lp8": "Viga: vale parool", + "lp2": "Ekraaniluku salasõna pole seatud.", + "lp3": "Palun loo selleks salasõna", + "lp4": "Vahet pole", + "lp5": "Määra salasõna", + "lp6": "Uus ekraaniluku salasõna määratud!", + "lp7": "AVA LUKUST", + "lp8": "Viga: Vale salasõna", "lp9": "ON", - "lp10": "LUKUSTATUD", - "lp11": "UNLOCKED", - "lp12": "Salvestatud andmete dekodeerimine", - "lp13": "Dekrüpteerimisvõtme genereerimine", - "lp14": "Kontrollivõti", - "lp15": "Vale parool", - "lp16": "Dekrüptimine", - "lp17": "Ootab, kuni töötajad on valmis", - "lp18": "Võtmeosade tuletamine", - "lp19": "Viga, vale võti. ", - "lp20": "Viga, ebakorrektne", - "lp21": "Võtmeosade kombineerimine", + "lp10": "LUKUS", + "lp11": "AVATUD", + "lp12": "Võtme dekodeerimine", + "lp13": "Dekrüptimise võtme genereerimine", + "lp14": "Võtme kontroll", + "lp15": "Vale salasõna", + "lp16": "Dekrüpteerimine", + "lp17": "Ootame tööliste järgi", + "lp18": "Võtme osade kokku kogumine", + "lp19": "Vigane võti. ", + "lp20": "Vigane nonss", + "lp21": "Võtme osade kombineerimine", "lp22": "Võti on valmis" }, "logout": { "logout": "LOGI VÄLJA", - "confirmlogout": "Kas te soovite kindlasti välja logida?" + "confirmlogout": "Kas soovid kindlasti välja logida?" }, "fragfile": { "selectfile": "Vali fail", - "dragfile": "Lohistage varukoopia siia" + "dragfile": "või lohista varukoopia fail siia" }, "settings": { "generalinfo": "Üldine konto teave", @@ -172,20 +172,20 @@ "account": "Konto", "security": "Turvalisus", "qr_login_menu_item": "QR sisselogimine", - "qr_login_description_1": "Skaneeri see kood, et avada oma rahakott teises seadmes, kasutades sama salasõna, millega oled sisse loginud..", - "qr_login_description_2": "Valige salasõna, mida kasutate oma rahakoti avamiseks teises seadmes pärast QR-koodi skaneerimist..", + "qr_login_description_1": "Skaneeri see QR-kood, et avada oma rahakott teises seadmes, kasutades sama salasõna, millega oled sisse loginud.", + "qr_login_description_2": "Vali salasõna, mida kasutada oma rahakoti avamiseks teises seadmes pärast QR-koodi skaneerimist.", "qr_login_button_1": "Näita logimise QR koodi", "qr_login_button_2": "Genereeri logimise QR kood", "notifications": "Teavitused", "accountsecurity": "Konto turvalisus", "password": "Salasõna", - "download": "Laadi varukoopia fail alla", - "choose": "Palun valige salasõna, millega varukoopia krüpteerida. (See võib olla sama, millega te sisse logisite, või erinev).", + "Lae alla": "Laadi varukoopia fail alla", + "choose": "Palun vali salasõna, millega varukoopia krüpteerida. (See võib olla sama, millega sisse logisid, või erinev).", "block": "Ploki Teavitused (Tulemas varsti...)", "playsound": "Mängi heli", "shownotifications": "Näita teavitusi", "nodeurl": "Sõlme Url", - "nodehint": "Valige sõlm ülaltoodud vaikimisi sõlmede loendist või lisage ülaltoodud loendisse kohandatud sõlm, klõpsates alloleval nupul.", + "nodehint": "Vali sõlm ülaltoodud vaikimisi sõlmede loendist või lisa ülaltoodud loendisse kohandatud sõlm, klõpsates alloleval nupul.", "addcustomnode": "Lisa kohandatud sõlm", "addandsave": "Lisa ja salvesta", "protocol": "Protokoll", @@ -196,7 +196,7 @@ "deletecustomnode": "Eemalda kõik kohandatud sõlmed", "warning": "Teie olemasolevad sõlmed kustutatakse ja lähtestatakse vaikimisi.", "snack1": "Edukalt kustutatud ja lisatud vaikimisi sõlmed", - "snack2": "KL ühendatud sõlmega", + "snack2": "UI ühendatud sõlmega", "snack3": "Edukalt lisatud ja salvestatud kohandatud sõlm", "snack4": "Sõlmed edukalt salvestatud kui", "snack5": "Sõlmed edukalt imporditud", @@ -205,14 +205,15 @@ "exp1": "Ekspordi privaatne üldvõti", "exp2": "Ekspordi üldvõti", "exp3": "Ekspordi", - "exp4": "Palun valige rahakott privaatse üldvõtme varundamiseks.", - "core": "Käivita Tuuma seaded", - "qappNotification1": "Q-App märguanded" + "exp4": "Palun vali rahakott privaatse üldvõtme varundamiseks.", + "core": "Tuuma käivitamise seaded", + "qappNotification1": "Q-App märguanded", + "selectnode": "Palun tehke valik" }, "appinfo": { - "blockheight": "Ploki Kõrgus", - "uiversion": "KL Versioon", - "coreversion": "Tuuma Versioon", + "blockheight": "Ploki kõrgus", + "uiversion": "UI versioon", + "coreversion": "Tuuma versioon", "minting": "(Mündib)", "synchronizing": "Sünkroniseerib", "peers": "Ühendatud partnerid" @@ -238,44 +239,44 @@ "create": "Loo", "continue": "Jätka", "save": "Salvesta", - "balance": "Bilanss", - "balances": "Sinu rahakoti bilansid", - "update": "Uuenda rahakoti bilansse", - "view": "Vaade" + "balance": "Saldo", + "balances": "Sinu saldoseisud", + "update": "Saldoseisude uuendamine", + "view": "Vaata" }, "gifs": { "gchange1": "Gif avastaja", "gchange2": "Avasta kogumikke", "gchange3": "Minu kogumikud", "gchange4": "Tellitud kogumikud", - "gchange5": "Laadige oma gif failid üles", + "gchange5": "Laadi oma gif failid üles", "gchange6": "Fail peab olema .gif", "gchange7": "Laadi kogumik üles", - "gchange8": "Kogumiku nimi on nõutav!", + "gchange8": "Kogumiku nime on vaja.", "gchange9": "Kogumiku nimi", "gchange10": "Gif kogumik edukalt üles laaditud!", "gchange11": "Gifid laadivad üles, palun oota...", - "gchange12": "Midagi läks valesti! Palun proovige vahetada vahekaarti ja tulla tagasi.", - "gchange13": "Teil ei ole hetkel kogumikke.", - "gchange14": "Teil ei ole hetkel ühtegi tellitud kogumikku.", - "gchange15": "Viga GIF-i kättesaamisel. Uuesti proovimine...", - "gchange16": "GIF-i ei õnnestunud kätte saada! Palun külastage teist kogumikku ja proovige uuesti!", - "gchange17": "Tellige see kogumik", + "gchange12": "Midagi läks valesti! Palun proovi vahetada vahekaarti ja tulla tagasi.", + "gchange13": "Sul ei ole hetkel kogumikke.", + "gchange14": "Sul ei ole hetkel ühtegi tellitud kogumikku.", + "gchange15": "Viga GIF-i kättesaamisel. Uus katse...", + "gchange16": "GIF-i ei õnnestunud kätte saada! Palun külasta teist kogumikku ja proovi uuesti!", + "gchange17": "Telli see kogumik", "gchange18": "Kogude otsimine...", "gchange19": "Kogumikke ei leitud!", "gchange20": "Kogumik edukalt tellitud!", "gchange21": "Kogumikust edukalt loobutud!", "gchange22": "Loobu sellest kogumikust", - "gchange23": "Teie gif-kogumik ei saa sisaldada kahte sama nimega gif-i!", - "gchange24": "See kogumiku nimi on juba võetud. Proovi teist nime!", + "gchange23": "Sinu gif-kogumik ei saa sisaldada kahte sama nimega gif-i!", + "gchange24": "See kogumiku nimi on juba võetud. Proovi teist nime.", "gchange25": "GIF (klõpsa vaatamiseks)", "gchange26": "GIF-failidele juurdepääsuks ja nende saatmiseks on vaja nime.", - "gchange27": "Gif-kogumiku suurus on üle 25mb! Palun proovige uuesti!", - "gchange28": "Iga gif kogumikus ei tohi olla üle 0.7mb! Palun proovige uuesti!", + "gchange27": "Gif-kogumiku suurus on üle 25mb! Palun proovi uuesti!", + "gchange28": "Iga gif faili suurus kogumikus ei tohi olla üle 0.7 MB! Palun proovi uuesti!", "gchange29": "Failinimi" }, "startminting": { - "smchange1": "Ei saa kätte (tuua) müntimise kontosid", + "smchange1": "Ei saa müntimise konto(de)le ligi", "smchange2": "Võtme eemaldamine ebaõnnestus", "smchange3": "Ebaõnnestus müntimise võtme lisamine", "smchange4": "Ei saa luua sponsorluse võtit", @@ -284,7 +285,7 @@ "smchange7": "Suhte lõpetamine", "smchange8": "Müntimise võtme lisamine sõlme", "smchange9": "Valmis", - "smchange10": "Ühe sõlme kohta on lubatud ainult 2 müntimisvõtit, te üritate määrata 3 võtit, palun minge Haldus - sõlme haldamine ja eemaldage võti, mida te ei soovi sellele sõlmele määrata, tänan teid.!" + "smchange10": "Ühe sõlme kohta on lubatud ainult 2 müntimisvõtit, aga Sina üritad määrata 3. Palun ava Haldus - Sõlme Haldamine ja eemaldage võti, mida Sa ei soovi sellele sõlmele määrata, tänud!" }, "mintingpage": { "mchange1": "Üldised müntimise detailid", @@ -300,16 +301,16 @@ "mchange11": "Pole aktiveeritud", "mchange12": "Aktiveeri oma konto", "mchange13": "Tutvustus", - "mchange14": "Konto aktiveerimiseks peab toimuma VÄLJUV tehing. Nime registreerimine on kõige tavalisem meetod. Võite paluda kellelgi Q-Chatis saata teile väikese koguse QORTi, et saaksite oma konto aktiveerida, või osta QORTi kauplemisportaaalis, seejärel teha mis tahes liiki VÄLJUV-tehing ja kindlustada oma avalik võti plokiahelas. Kuni te seda ei tee, on teie avalik võti teada ainult teile, teie kasutajaliideses, ja keegi teine ei saa teie avalikku võtit ahelast välja tõmmata.", + "mchange14": "Konto aktiveerimiseks peab toimuma VÄLJUV tehing. Näiteks Nime registreerimine on selleks hea meetod. Võid paluda kellelgi Q-Chati kaudu saata omale väike kogus QORT krüptoraha, et saaksid oma konto aktiveerida, või osta QORTi kauplemisportaalis, seejärel teha mis tahes QORTi saatmise tehing ja nii kindlustada oma avalik võti (QORTi aadress) plokiahelas. Kuni seda ei tee, on Sinu avalik võti teada ainult Sulle, Sinu kasutajaliideses, ja keegi teine ei leia Sinu avalikku võtit plokiahelast.", "mchange15": "Hetkestaatus", "mchange16": "Hetketase", "mchange17": "Plokke järgmise tasemeni", - "mchange18": "Kui jätkate müntimist 24/7, siis saavutate taseme", + "mchange18": "Kui jätkad müntimist 24/7, siis saavutad taseme", "mchange19": "Müntimise preemiate info", - "mchange20": "Praegune tasand", - "mchange21": "Müntijaid tasandil kokku", + "mchange20": "Praegune tase", + "mchange21": "Müntijaid tasemel kokku", "mchange22": "Tasandi osa ploki kohta", - "mchange23": "Keskm. Preemia ploki kohta", + "mchange23": "Keskm. preemia ploki kohta", "mchange24": "Eeldatav preemia päeva kohta", "mchange25": "Sekundid", "mchange26": "Plokid", @@ -320,15 +321,15 @@ "mchange31": "Vajuta abiinfoks", "mchange32": "Hakka müntijaks", "mchange33": "Tutvustus", - "mchange34": "Selleks, et saada Qortalis müntijaks ja hakata teenima QORTi auhindu koos oma müntija taseme tõusuga, peate kõigepealt saama 'sponsoreerituks'. Qortalis on sponsoriks mõni teine 5. või kõrgema taseme müntija või Qortali asutaja. Saate sponsorilt müntimisvõtme ja kasutate seda võtit, et jõuda 1. tasemele. Kui olete jõudnud 1. tasemele, saate luua omaenda müntimisvõtme ja hakata teenima preemiaid Qortali plokiahela kindlustamisele kaasaaitamise eest..", + "mchange34": "Selleks, et saada Qortalis QORT krüptovaluuta müntijaks, tuleb kõigepealt saada sponsoreerituks. Qortalis on sponsoriks mõni teine 5. või kõrgema taseme müntija või Qortali asutaja. Sponsorilt saab küsida müntimisvõtme ja kasutada seda, et 1. tasemele jõuda. Kui oled jõudnud 1. tasemele, saad luua omaenda müntimisvõtme ja hakata teenima preemiana QORTi, Qortali plokiahela kindlustamisele kaasaaitamise eest.", "mchange35": "Sponsorlus", - "mchange36": "Teie sponsor väljastab teile 'Müntimise võtme', mida kasutate oma sõlme lisamiseks ja hakkate müntima (ilma preemiata, kuni jõuate tasemele 1.) Kui jõuate tasemele 1, loote/määrate oma 'Müntimise võtme' ja hakkate teenima preemiaid..", - "mchange37": "Lihtsalt pöörduge Qortali müntija poole, kes on piisavalt kõrgel tasemel, et väljastada müntimisvõti, hankige see võti, seejärel tulge tagasi siia ja sisestage võti, et alustada oma müntimisreisi!", + "mchange36": "Sinu sponsor väljastab Sulle Müntimise võtme, mida saad kasutada oma sõlme (arvuti) lisamiseks, et ka müntima hakata (ilma preemiata, kuni jõuad 1. tasemele). Kui 1. tase käes, saad määrata oma Müntimise võtme ja hakkad teenima preemiaid (QORTi).", + "mchange37": "Lihtsalt pöördu Qortali müntija poole, kes on piisavalt kõrgel tasemel, et väljastada müntimisvõti, hangi see võti, seejärel tulge tagasi siia ja sisestage võti, et alustada oma müntimisreisi!", "mchange38": "in" }, "becomeMinterPage": { "bchange7": "Sisesta Müntimise võti", - "bchange8": "Sisestage enda sponsori võti siin", + "bchange8": "Sisesta enda sponsori võti siin", "bchange10": "Praegune sponsorluse staatus ", "bchange12": "Mündib sponsori võtmega", "bchange13": "Sponsorlusperioodi jäänud plokid ", @@ -358,17 +359,17 @@ "wchange17": "Saada", "wchange18": "Aadressilt", "wchange19": "Olemasolev saldo ", - "wchange20": "To (aadress või nimi)", + "wchange20": "(aadressile või Nimele)", "wchange21": "Praegune staatiline tasu:", "wchange22": "Rahakotid", - "wchange23": "To (aadress)", + "wchange23": "(saaja aadress)", "wchange24": "Hetketasu pakkumise eest", "wchange25": "Madalad tasud võivad põhjustada aeglasi või kinnitamata tehinguid.", "wchange26": "Ebapiisavad vahendid!", - "wchange27": "Invaliidne summa!", - "wchange28": "Saaja ei saa olle tühi!", - "wchange29": "Invaliidne saaja!", - "wchange30": "Tehing edukas!", + "wchange27": "Ebakorrektne summa!", + "wchange28": "Saaja aadress ei saa olla tühi!", + "wchange29": "Ebakorrektne saaja!", + "wchange30": "Tehing sooritatud!", "wchange31": "Tehing nurjus!", "wchange32": "QORT saldo kättesaamine ebaõnnestus. Proovi uuesti!", "wchange33": "Hankimine ebaõnnestus", @@ -376,35 +377,35 @@ "wchange35": "Tüüp", "wchange36": "Tasu", "wchange37": "Summa kokku", - "wchange38": "Aadressil ei ole veel tehinguid.", + "wchange38": "Sel aadressil puuduvad tehingud.", "wchange39": "Pole võimalik aadressi kopeerida.", "wchange40": "MAKSE", "wchange41": "Staatus", "wchange42": "Kinnitused", - "wchange43": "Teie tehing ei ilmu enne kinnitamist, olge kannatlik...", + "wchange43": "Tehing ei ilmu enne kinnitamist, ole kannatlik...", "wchange44": "Palun proovi uuesti...", "wchange45": "Saada kõik", "wchange46": "Saada sellele aadressile", - "wchange47": "Aadressraamat", - "wchange48": "See aadressraamat on tühi!", - "wchange49": "Lsa aadressraamatusse", - "wchange50": "Nimi ei saa olla tühi!", - "wchange51": "Aadress ei saa olla tühi!", + "wchange47": "Aadressiraamat", + "wchange48": "See aadressiraamat on tühi!", + "wchange49": "Lisa aadressiraamatusse", + "wchange50": "Nimi lahter ei või olla tühi!", + "wchange51": "Aadressi lahter ei või olla tühi!", "wchange52": "Edukalt lisatud!", - "wchange53": "Impordi aadressraamat", - "wchange54": "Eksoprdi aadressraamat", - "wchange55": "Teie olemasolev aadressiraamat kustutatakse ja taastatakse vaikimisi.", + "wchange53": "Impordi aadressiraamat", + "wchange54": "Ekspordi aadressiraamat", + "wchange55": "Sinu olemasolev aadressiraamat kustutatakse ja taastatakse vaikimisi.", "wchange56": "HOIATUS!", "wchange57": "Memo", "wchange58": "Uus aadress", "wchange59": "Münt" }, "tradepage": { - "tchange1": "Kauplemisportaaal", + "tchange1": "Kauplemisportaal", "tchange2": "Vali kauplemispaar", - "tchange3": "AJALOOLISED TURUTEHINGUD", + "tchange3": "TURUTEHINGUTE AJALUGU", "tchange4": "MINU KAUPLEMISAJALUGU", - "tchange5": "AVATUD TURU MÜÜGITELLIMUSED", + "tchange5": "AKTIIVSED TURU MÜÜGITELLIMUSED", "tchange6": "MINU TELLIMUSED", "tchange7": "Kinnijäänud pakkumised", "tchange8": "Kogus", @@ -413,21 +414,21 @@ "tchange11": "Kuupäev", "tchange12": "Staatus", "tchange13": "Müüja", - "tchange14": "Hind igaühe kohta", + "tchange14": "Hind ühiku kohta", "tchange15": "Puhasta vorm", "tchange16": "Sul on", - "tchange17": "Action", + "tchange17": "Toimuv", "tchange18": "OSTA", "tchange19": "MÜÜ", - "tchange20": "Tehingu loomine ebaõnnstus. Proovige uuesti!", + "tchange20": "Tehingu loomine ebaõnnstus. proovi uuesti!", "tchange21": "Tehingu loomine ebaõnnstus. Veakood", "tchange22": "Ebapiisavad vahendid!", "tchange23": "Ostutaotlus edukas!", - "tchange24": "Osta taotlus eksisteerib!", - "tchange25": "Tehingu loomine ebaõnnstus. Veakood", - "tchange26": "Tehingu tühistamine toimub!", - "tchange27": "Tehngu tühistamine ebaõnnestus. Proovige uuesti!", - "tchange28": "Tehngu tühistamine ebaõnnestus. Veakood", + "tchange24": "Ostutaotlus juba olemas!", + "tchange25": "Tehingu loomine ebaõnnestus. Veakood", + "tchange26": "Toimub tehingu tühistamine.", + "tchange27": "Tehingu tühistamine ebaõnnestus. Proovi uuesti!", + "tchange28": "Tehingu tühistamine ebaõnnestus. Veakood", "tchange29": "KATKESTA", "tchange30": "Saldot ei õnnestunud kätte saada. Proovi uuesti!", "tchange31": "MÜÜDUD", @@ -446,7 +447,7 @@ "tchange44": "Automaatne ostutellimus edukalt lisatud!", "tchange45": "AUTOMAATNE OSTMINE KOOS", "tchange46": "AUTOMAATNE OSTMINE", - "tchange47": "Müüge selle hinna eest", + "tchange47": "Müü selle hinna eest", "tchange48": "EBAPIISAV", "tchange49": "Hinnagraafik" }, @@ -459,69 +460,69 @@ "rchange6": "Saaja", "rchange7": "Tegevus", "rchange8": "Tüüp", - "rchange9": "Tase 1 - 4 saab luua a Iseseiseva jagamise ja Tase 5 või kõrgem saab luua Preemiajagamise!", - "rchange10": "Saaaja avalik võti", + "rchange9": "Tase 1 - 4 saab luua iseseiseva jagamise. Tase 5 või kõrgem saab luua Preemiajagamise!", + "rchange10": "Saaja avalik võti", "rchange11": "Preemiajagamise protsent", - "rchange12": "Teeb midagi maitsevat", + "rchange12": "Teeb midagi maitsvat", "rchange13": "Lisab müntimiskontot", "rchange14": "Lisa", "rchange15": "Konto ei osale üheski preemiajagamises", - "rchange16": "Enda preemiajagamine", + "rchange16": "Oma preemiajagamine", "rchange17": "Eemalda", "rchange18": "Ei saa luua mitut preemiajagamist!", "rchange19": "Ei saa luua mitut iseseisvat jagamist!", "rchange20": "EI SAA LUUA PREEMIAJAGAMIST! tasemel", - "rchange21": "Preemiajagamine edukas!", + "rchange21": "Preemiajagamine oli edukas!", "rchange22": "Preemiajagamine edukalt eemaldatud!" }, "registernamepage": { "nchange1": "Nime registreerimine", "nchange2": "Registreeri Nimi", - "nchange3": "Registreeritud Nimed", + "nchange3": "Nimed", "nchange4": "Avatar", "nchange5": "Nimi", "nchange6": "Omanik", "nchange7": "Tegevus", - "nchange8": "Sellel kontol ei ole registreeritud nimesid!", + "nchange8": "Sellel kontol ei ole Nimesid!", "nchange9": "Registreeri Nimi!", "nchange10": "Kirjeldus (valikuline)", - "nchange11": "Tehes midagi maitsvat", - "nchange12": "Registreerib Nime", - "nchange13": "Praegune nime registreerimistasu on", + "nchange11": "Teeb miskit kasulikku", + "nchange12": "Nime registreerimine", + "nchange13": "Praegune Nime registreerimistasu on", "nchange14": "Registreeri", "nchange15": "Lisa Avatar", - "nchange16": "Vajab tuuma uuendamist", + "nchange16": "Tuum vajab uuendamist", "nchange17": "Nimi on juba olemas!", - "nchange18": "Nime registreerimine edukas!", + "nchange18": "Nime registreerimine tehtud!", "nchange19": "Müü Nimi", "nchange20": "Katkesta müük", "nchange21": "Osta Nimi", "nchange22": "Nimede Turg", "nchange23": "Müügihind", - "nchange24": "Müüdavaid nimesid pole", - "nchange25": "Müüa nimi", - "nchange26": "Kas sa oled kindel, et müüd selle nime?", - "nchange27": "Selle hinna eest QORT-is", - "nchange28": "Kui vajutate kinnita, saadetakse müüginimetaotlus!", - "nchange29": "Nimi Tühistamiseks", - "nchange30": "Kas olete kindel, et tühistate selle nime müügi?", - "nchange31": "Kui vajutate kinnita, saadetakse müüginime tühistamise taotlus.!", - "nchange32": "Nimemüügi taotlus edukas!", - "nchange33": "Tühista nimemüügi taotlus edukas!", - "nchange34": "Nimeostu taotlus edukas!", - "nchange35": "SUL ON NIMI!", - "nchange36": "Ainult kontod, millel puudub registreeritud nimi, saavad nime osta.", + "nchange24": "Müüdavaid Nimesid pole", + "nchange25": "Müüa Nimi", + "nchange26": "Kas oled kindel, et müüd selle Nime ära?", + "nchange27": "Selle hinna eest (QORTis)", + "nchange28": "Kui vajutad kinnita, saadetakse Nime müügitaotlus!", + "nchange29": "Nimi tühistamiseks", + "nchange30": "Kindel, et tühistada selle nime müük?", + "nchange31": "Kui vajutad kinnita, saadetakse Nime müügi tühistamise taotlus.", + "nchange32": "Nime müügi taotlus tehtud.", + "nchange33": "Nime müügi taotlus tühistatud.", + "nchange34": "Nimeostu taotlus tehtud!", + "nchange35": "SAID NIME!", + "nchange36": "Ainult kontod, millel veel puudub Nimi, saavad selle osta.", "nchange37": "TÄHELEPANU!", - "nchange38": "Teil ei ole piisavalt QORT-i, et osta see nimi.", - "nchange39": "Kas sa oled kindel, et ostad selle nime?", - "nchange40": "Kui vajutate kinnitust, saadetakse ostunimetaotlus!", + "nchange38": "Teil ei ole piisavalt QORT-i, et osta see Nimi.", + "nchange39": "Kas oled kindel, et ostad selle Nime?", + "nchange40": "Kui teed kinnituse, saadetakse Nime ostutaotlus.", "nchange41": "Vana Nimi", "nchange42": "Uus Nimi", - "nchange43": "Kas sa oled kindel, et muudad seda nime?", - "nchange44": "Uuele nimele", - "nchange45": "Kui vajutate kinnitust, saadetakse nime uuendamise taotlus!", + "nchange43": "Kas oled kindel, et muudad seda Nime?", + "nchange44": "Uuele Nimele", + "nchange45": "Kui teed kinnituse, edastatakse Nime uuendamise taotlus!", "nchange46": "Nimemüügi ajalugu", - "nchange47": "Nime uuendamine edukas!", + "nchange47": "Nime uuendamine tehtud!", "nchange48": "Hoiatus! Kui uuendate oma nime, siis kaotate algse nimega seotud ressursid. Teisisõnu kaotate QDN-is algse nime all oleva sisu omandiõiguse. Jätkake ettevaatlikult!" }, "websitespage": { @@ -531,25 +532,25 @@ "schange4": "Otsi Veebilehti", "schange5": "Avatar", "schange6": "Detailid", - "schange7": "Avaldatud by", + "schange7": "Avaldaja", "schange8": "Tegevused", "schange9": "Veebilehed", "schange10": "Veebilehti ei leitud", "schange11": "Sinu jälgitavad Veebilehed", "schange12": "Jälgitavad Veebilehed", - "schange13": "Sa ei jälgi ühtegi veebilehte", + "schange13": "Sa ei jälgi ühtegi Veebilehte", "schange14": "Sinu Blokeeritud Veebilehed", "schange15": "Blokeeritud Veebilehed", - "schange16": "Sa ei ole blokeerinud ühtegi veebilehte", + "schange16": "Sa ei ole blokeerinud ühtegi Veebilehte", "schange17": "Nime ei leitud!", - "schange18": "Releerežiim on lubatud. See tähendab, et teie sõlme aitab krüpteeritud andmeid võrgus transportida, kui vastasmängija seda taotleb. Saate selle seadetes välja lülitada", - "schange19": "in", - "schange20": "Releerežiim on välja lülitatud. Seda saab lubada, kui seadistada", + "schange18": "Releerežiim on lubatud. See tähendab, et Sinu sõlm (arvuti) aitab Qortali võrgus krüpteeritud andmeid transportida, juhul kui teine sõlm seda taotleb. Kui soovid selle kinni keerata, tuleb kirjutada selline rida", + "schange19": "konfiguratsioonifaili", + "schange20": "Releerežiim on välja lülitatud. Kui tahad selle sisse lülitada, tuleb kirjutada selline rida", "schange21": "Avalda Veebileht", - "schange22": "Selle registreeritud nime jälgimisel tekkis viga. Palun proovige uuesti!", - "schange23": "Selle registreeritud nime jälgimise tühistamisel tekkis viga. Palun proovige uuesti!", - "schange24": "Selle registreeritud nime blokeerimisel tekkis viga. Palun proovige uuesti!", - "schange25": "Selle registreeritud nime blokeeringu tühistamise katsel tekkis viga. Palun proovige uuesti!", + "schange22": "Selle Nime jälgimisel tekkis viga. Palun proovi uuesti!", + "schange23": "Selle Nime jälgimise tühistamisel tekkis viga. Palun proovi uuesti!", + "schange24": "Selle Nime blokeerimisel tekkis viga. Palun proovi uuesti!", + "schange25": "Selle Nime blokeeringu tühistamise katsel tekkis viga. Palun proovi uuesti!", "schange26": "Liigitamata", "schange27": "Suurus", "schange28": "Staatus", @@ -562,31 +563,31 @@ "schange35": "Otsi" }, "appspage": { - "schange1": "Sirve Q-Rakendusi", + "schange1": "Sirvi Q-Rakendusi", "schange2": "Jälgitud Q-Rakendused", "schange3": "Blokeeritud Q-Rakendused", "schange4": "Otsi Q-Rakendusi", "schange5": "Avatar", "schange6": "Detailid", - "schange7": "Avaldatud by", + "schange7": "Avaldaja", "schange8": "Tegevused", "schange9": "Q-Rakendused", "schange10": "Q-Rakendusi ei leitud", - "schange11": "Sinu Jälgitud Q-Rakendused", + "schange11": "Sinu jälgitud Q-Rakendused", "schange12": "Jälgitud Q-Rakendused", "schange13": "Sa ei jälgi ühtegi Q-Rakendust", "schange14": "Sinu blokeeritud Q-Rakendused", "schange15": "Blokeeritud Q-Rakendused", "schange16": "Sa pole blokeerinud ühtegi Q-Rakendust", "schange17": "Nime ei leitud!", - "schange18": "Releerežiim on lubatud. See tähendab, et teie sõlme aitab krüpteeritud andmeid võrgus transportida, kui vastasmängija seda taotleb. Saate selle seadetes välja lülitada,", + "schange18": "Releerežiim on lubatud. See tähendab, et Sinu sõlm (arvuti) aitab võrgus transportida krüpteeritud andmeid, juhul kui teine sõlm seda taotleb.", "schange19": "in", - "schange20": "Releerežiim on välja lülitatud. Seda saab lubada, kui seadistada", + "schange20": "Releerežiim on välja lülitatud.", "schange21": "Avalda Q-Rakendus", - "schange22": "Selle registreeritud nime jälgimisel tekkis viga. Palun proovige uuesti!", - "schange23": "Selle registreeritud nime jälgimise tühistamisel tekkis viga. Palun proovige uuesti!", - "schange24": "Selle registreeritud nime blokeerimisel tekkis viga. Palun proovige uuesti!", - "schange25": "Selle registreeritud nime blokeeringu tühistamise katsel tekkis viga. Palun proovige uuesti!", + "schange22": "Selle Nime jälgimisel tekkis viga. Palun proovi uuesti!", + "schange23": "Selle Nime jälgimise tühistamisel tekkis viga. Palun proovi uuesti!", + "schange24": "Selle Nime blokeerimisel tekkis viga. Palun proovi uuesti!", + "schange25": "Selle Nime blokeeringu tühistamise katsel tekkis viga. Palun proovi uuesti!", "schange26": "Liigitamata", "schange27": "Suurus", "schange28": "Staatus", @@ -606,31 +607,31 @@ "schange42": "Alla laetud failid" }, "tubespage": { - "schange1": "Sirvi Q-Tuube", - "schange2": "Jälgitud Q-Tuubid", - "schange3": "Blokeeritud Q-Tuubid", - "schange4": "Otsi Q-Tuube", + "schange1": "Sirvi Q-Tube", + "schange2": "Jälgitud Q-Tubed", + "schange3": "Blokeeritud Q-Tubed", + "schange4": "Otsi Q-Tube", "schange5": "Kaas", "schange6": "Detailid", - "schange7": "Avaldstud by", + "schange7": "Avaldaja", "schange8": "Tegevused", - "schange9": "Q-Tuubid", - "schange10": "Q-Tuube ei leitud", - "schange11": "Sinu Jälgitud Q-Tuubid", - "schange12": "Jälgitud Q-Tubes", - "schange13": "Sa ei jälgi ühtegi Q-Tuubi", - "schange14": "Sinu blokitud Q-Tuubid", - "schange15": "Blokeeritud Q-Tuubid", - "schange16": "Sa ei ole blokkinud ühtegi Q-Tuubi", + "schange9": "Q-Tubed", + "schange10": "Q-Tube ei leitud", + "schange11": "Sinu Jälgitud Q-Tubed", + "schange12": "Jälgitud Q-Tubed", + "schange13": "Sa ei jälgi ühtegi Q-Tube", + "schange14": "Sinu blokitud Q-Tubed", + "schange15": "Blokeeritud Q-Tubed", + "schange16": "Sa ei ole blokkinud ühtegi Q-Tube", "schange17": "Nime ei leitud!", - "schange18": "Releerežiim on lubatud. See tähendab, et teie sõlme aitab krüpteeritud andmeid võrgus transportida, kui vastasmängija seda taotleb. Saate selle välja lülitada, seadetes", + "schange18": "Releerežiim on lubatud. See tähendab, et Sinu sõlm (arvuti) aitab võrgus transportida krüpteeritud andmeid, juhul kui teine sõlm seda taotleb.", "schange19": "in", - "schange20": "Releerežiim on välja lülitatud. Seda saab lubada, kui seadistada", + "schange20": "Releerežiim on välja lülitatud.", "schange21": "Avalda Video", - "schange22": "Selle registreeritud nime jälgimisel tekkis viga. Palun proovige uuesti!", - "schange23": "Selle registreeritud nime jälgimise tühistamisel tekkis viga. Palun proovige uuesti!", - "schange24": "Selle registreeritud nime blokeerimisel tekkis viga. Palun proovige uuesti!", - "schange25": "Selle registreeritud nime blokeeringu tühistamise katsel tekkis viga. Palun proovige uuesti!", + "schange22": "Selle Nime jälgimisel tekkis viga. Palun proovi uuesti!", + "schange23": "Selle Nime jälgimise tühistamisel tekkis viga. Palun proovi uuesti!", + "schange24": "Selle Nime blokeerimisel tekkis viga. Palun proovi uuesti!", + "schange25": "Selle Nime blokeeringu tühistamise katsel tekkis viga. Palun proovi uuesti!", "schange26": "Liigitamata", "schange27": "Suurus", "schange28": "Staatus", @@ -643,12 +644,12 @@ "schange35": "Otsi", "schange36": "Lae alla", "schange37": "Alla laetud", - "schange38": "Update", - "schange39": "Open", - "schange40": "Preview", + "schange38": "Uuenda", + "schange39": "Ava", + "schange40": "Eelvaade", "schange41": "Allalaadimine, palun oota...", "schange42": "Failid alla laetud", - "schange43": "Avatud palun oodake..." + "schange43": "Avamine, palun oodake..." }, "publishpage": { "pchange1": "Avalda", @@ -657,26 +658,26 @@ "pchange4": "Vali Nimi", "pchange5": "Pealkiri", "pchange6": "Kirjeldus", - "pchange7": "Vali Kategoria", + "pchange7": "Vali kategooria", "pchange8": "Silt", "pchange9": "Teenus", "pchange10": "Identifikaator", "pchange11": "Avalda", "pchange12": "Valige staatilist sisu sisaldav zip-fail", - "pchange13": "Lokaalne tee staatiliste failide juurde", - "pchange14": "Palun valige registreeritud nimi andmete avaldamiseks", - "pchange15": "Palun valige fail, mida soovite majutada", - "pchange16": "Palun valige zip-fail, mida soovite majutada", - "pchange17": "Palun sisestage kataloogi tee, mis sisaldab staatilist sisu.", - "pchange18": "Palun sisestage teenuse nimi", - "pchange19": "Andmete töötlemine... see võib võtta aega....", + "pchange13": "Failide asukoht arvutis", + "pchange14": "Vali Nimi andmete avaldamiseks", + "pchange15": "Vali fail, mida soovid majutada", + "pchange16": "Vali zip-fail, mida soovid majutada", + "pchange17": "Vali nüüd kaust, kus Su failid on", + "pchange18": "Sisesta teenuse nimi", + "pchange19": "Andmete töötlemine... see võib aega võtta....", "pchange20": "Viga:", "pchange21": "Sisemine serveri viga andmete avaldamisel", - "pchange22": "Arvutan proof of work... see võib võtta aega...", + "pchange22": "Arvutan... see võib võtta aega...", "pchange23": "Tehing edukas!", "pchange24": "Ei saanud tehingut allkirjastada ja töödelda", - "pchange25": "Vali Fail", - "pchange26": "Andmete üleslaadimine... see võib võtta aega...." + "pchange25": "Vali fail", + "pchange26": "Andmete üleslaadimine... nüüd kulub natuke aega...." }, "browserpage": { "bchange1": "Edasi", @@ -684,56 +685,56 @@ "bchange3": "Tagasi nimekirja", "bchange4": "Kustuta", "bchange5": "sõlmest", - "bchange6": "Your browser doesn't support iframes", + "bchange6": "Sinu sirvik ei toeta iframes võimalust", "bchange7": "Jälgi", "bchange8": "Ära jälgi", "bchange9": "Blokeeri", "bchange10": "Blokk maha", - "bchange11": "Selle registreeritud nime jälgimisel tekkis viga. Palun proovige uuesti!", - "bchange12": "Selle registreeritud nime jälgimise tühistamisel tekkis viga. Palun proovige uuesti!", - "bchange13": "Selle registreeritud nime blokeerimisel tekkis viga. Palun proovige uuesti!", - "bchange14": "Selle registreeritud nime blokeeringu tühistamise katsel tekkis viga. Palun proovige uuesti!", - "bchange15": "Ei saa kustutada andmeid järgitud nimedest. Palun eemaldage esmalt jälgimine.", - "bchange16": "Selle ressursi kustutamisel tekkis viga. Palun proovige uuesti!", + "bchange11": "Selle Nime jälgimisel tekkis viga. Palun proovi uuesti!", + "bchange12": "Selle Nime jälgimise tühistamisel tekkis viga. Palun proovi uuesti!", + "bchange13": "Selle Nime blokeerimisel tekkis viga. Palun proovi uuesti!", + "bchange14": "Selle Nime blokeeringu tühistamise katsel tekkis viga. Palun proovi uuesti!", + "bchange15": "Ei saa kustutada andmeid järgitud nimedest. Palun eemalda esmalt jälgimine.", + "bchange16": "Selle ressursi kustutamisel tekkis viga. Palun proovi uuesti!", "bchange17": "Kasutaja keeldus kontoandmeid jagamast", - "bchange18": "on taotlenud autentimist. Kas soovite autentida?", - "bchange19": "Kas te annate selle taotluse avaldamiseks loa QDN-le.?", - "bchange20": "Kas te annate sellele rakendusele loa näha oma rahakoti saldot??", - "bchange21": "Too (ava) rahakott ebaõnnestus. Palun proovi uuesti!", - "bchange22": "Kas te annate sellele rakendusele loa saata vestlussõnum?", + "bchange18": "on taotlenud autentimist. Kas soovid autentida?", + "bchange19": "Kas annad selle taotluse avaldamiseks loa QDN-le?", + "bchange20": "Kas annad sellele rakendusele loa näha oma rahakoti saldot?", + "bchange21": "Rahakoti sisu avamine ebaõnnestus. Palun proovi uuesti!", + "bchange22": "Kas annad sellele rakendusele loa saata vestlussõnum?", "bchange23": "Sõnum saadetud!", - "bchange24": "See jagab teie QORT-aadressi ja võimaldab teie kontol suhelda koos", + "bchange24": "See jagab Sinu QORTi aadressi ja võimaldab suhelda", "bchange25": "Delikaatseid andmeid ei jagata.", "bchange26": "Autentida alati automaatselt", "bchange27": "Lükka tagasi", - "bchange28": "Aktsepteeri", - "bchange29": "Avalda kohe (nõutav 0.001 QORT tasu)", + "bchange28": "Nõustu", + "bchange29": "Avalda kohe (teenustasu 0.001 QORTi)", "bchange30": "Teenus", "bchange31": "Nimi", "bchange32": "Identifikaator", "bchange33": "Avalda kohe", "bchange34": "Failinimi", - "bchange35": "Kas te annate sellele rakendusele loa saata münte?", - "bchange36": "Kas soovite avaldada koheselt QDN-i ilma PoW arvutamata??", + "bchange35": "Kas annad sellele rakendusele loa saata münte?", + "bchange36": "Kas soovid avaldada selle koheselt Qortali andmevõrku?", "bchange37": "Täisekraanivaade", "bchange38": "Välju täisekraanist", - "bchange39": "Lubage alati nimekirjade automaatset kättesaamist", + "bchange39": "Luba alati nimekirjade automaatset kättesaamist", "bchange40": "Nimekiri", - "bchange41": "Kas te annate sellele rakendusele loa sellele nimekirjale juurdepääsuks??", + "bchange41": "Kas annad sellele rakendusele loa sellele nimekirjale juurdepääsuks?", "bchange42": "Kirjed", - "bchange43": "Kas te annate sellele taotlusele loa lisada sellesse nimekirja?", - "bchange44": "Kas te annate sellele rakendusele loa kustutada sellest nimekirjast?", + "bchange43": "Kas annad sellele taotlusele loa lisada sellesse nimekirja?", + "bchange44": "Kas annad sellele rakendusele loa kustutada sellest nimekirjast?", "bchange45": "Krüpteeri", - "bchange46": "Kas te annate sellele rakendusele loa salvestada järgnev fail", + "bchange46": "Kas annad sellele rakendusele loa salvestada järgnev fail", "bchange47": "Kiire avaldamine - nõuab", "bchange48": "Kas annate sellele rakendusele loa teile teateid saata" }, "datapage": { "dchange1": "Andmete haldamine", - "dchange2": "Otsi selle sõlme poolt majutatud andmetes", + "dchange2": "Otsi selle sõlme poolt majutatud andmeid", "dchange3": "Andmed mida otsida", "dchange4": "Otsi", - "dchange5": "Registreeritud Nimi", + "dchange5": "Nimi", "dchange6": "Teenus", "dchange7": "Identifikaator", "dchange8": "Tegevused", @@ -746,18 +747,18 @@ "dchange15": "Kustuta", "dchange16": "Blokeeri", "dchange17": "Blokk maha", - "dchange18": "Selle registreeritud nime blokeerimisel tekkis viga. Palun proovige uuesti!", - "dchange19": "Selle registreeritud nime jälgimise tühistamisel tekkis viga. Palun proovige uuesti!", - "dchange20": "Selle registreeritud nime blokeeringu tühistamise katsel tekkis viga. Palun proovige uuesti!", - "dchange21": "Selle ressursi kustutamisel tekkis viga. Palun proovige uuesti!" + "dchange18": "Selle Nime blokeerimisel tekkis viga. Palun proovi uuesti!", + "dchange19": "Selle Nime jälgimise tühistamisel tekkis viga. Palun proovi uuesti!", + "dchange20": "Selle Nime blokeeringu tühistamise katsel tekkis viga. Palun proovi uuesti!", + "dchange21": "Selle ressursi kustutamisel tekkis viga. Palun proovi uuesti!" }, "chatpage": { "cchange1": "Uus privaatsõnum", "cchange2": "Laadimine...", "cchange3": "Blokitud kasutajad", "cchange4": "Uus sõnum", - "cchange5": "(Klõpsake, et kerida alla)", - "cchange6": "Sisestage selle nimi või aadress, kellega soovite vestelda, et saata privaatsõnum! Te saate isiku nime kinnitada, klõpsates raamatu ikoonil..", + "cchange5": "(Klõpsa alla kerimiseks)", + "cchange6": "Sisesta selle Nimi või aadress, kellega soovid privaatselt vestelda. Isiku nime saad kinnitada klõpsates raamatu ikoonil..", "cchange7": "Kasutajanimi / Aadress", "cchange8": "Sõnum...", "cchange9": "Saada", @@ -766,56 +767,56 @@ "cchange12": "Omanik", "cchange13": "Tegevus", "cchange14": "See konto ei ole blokeerinud ühtegi kasutajat.", - "cchange15": "Registreeritud nimi puudub", + "cchange15": "Nimi puudub", "cchange16": "Selle kasutaja blokeeringu edukas vabastamine.", - "cchange17": "Selle kasutaja blokeeringu tühistamisel tekkis viga. Palun proovige uuesti!", + "cchange17": "Selle kasutaja blokeeringu tühistamisel tekkis viga. Palun proovi uuesti!", "cchange18": "blokk maha", - "cchange19": "Vale kasutajanimi / aadress, kontrollige nime / aadressi ja proovige uuesti...", - "cchange20": "Sõnum edukalt saadetud!", - "cchange21": "Saatmine ebaõnnestus, palun proovige uuesti...", + "cchange19": "Vale kasutajanimi / aadress, kontrolli Nime / aadressi ja proovi uuesti...", + "cchange20": "Sõnum saadetud!", + "cchange21": "Saatmine ebaõnnestus, palun proovi uuesti...", "cchange22": "Sõnumite laadimine...", "cchange23": "Ei saa sõnumit dekrüpteerida!", "cchange24": "Maksimaalne tähemärkide arv sõnumi kohta on 255", "cchange25": "Muuda sõnumit", - "cchange26": "Faili suurus ületab 0,5 MB", - "cchange27": "Piltide saatmiseks on vaja registreeritud nime", - "cchange28": "See fail ei ole pilt", - "cchange29": "Sõnumi maksimaalne suurus on 1000 baiti", - "cchange30": "Pildi üleslaadimine. See võib võtta kuni ühe minuti.", - "cchange31": "Pildi kustutamine. See võib võtta kuni ühe minuti.", + "cchange26": "Faili suurus ületab 0.5 MB", + "cchange27": "Piltide saatmiseks on vaja Nime", + "cchange28": "See ei ole pildifail", + "cchange29": "Sõnumi maksimaalne suurus on 1000 märki", + "cchange30": "Pildi üleslaadimine. See võib võtta kuni minuti.", + "cchange31": "Pildi kustutamine. See võib võtta kuni minuti.", "cchange33": "Tühista", "cchange34": "See jututeade kasutab vanemat sõnumi versiooni ja ei saa seda funktsiooni kasutada.", - "cchange35": "Viga kasutaja nime otsimisel. Palun proovige uuesti!", + "cchange35": "Viga kasutaja nime otsimisel. Palun proovi uuesti!", "cchange36": "Otsingutulemused", "cchange37": "Tulemusi ei leitud", "cchange38": "Kasutaja kinnitatud", - "cchange39": "Sellele kasutajale ei saa saata krüpteeritud sõnumit, kuna tema avalikku võtit ei ole ahelas.", + "cchange39": "Sellele kasutajale ei saa saata krüpteeritud sõnumit, kuna tema avalikku võtit ei ole plokiahelas.", "cchange40": "PILT (klõpsa kuvamiseks)", - "cchange41": "Teie saldo on alla 4 QORTi", - "cchange42": "Rämpsposti vastu võitlemiseks võtab alla 4 QORTi saldoga kontode sõnumite saatmine Q-Chatis kaua aega. Kui soovite kohe suurendada Q-Chati sõnumite saatmise kiirust, hankige oma aadressile üle 4 QORTi. Seda saab teha kauplemisportaalis tehingutega või siis nii, et teine Qortian annab teile QORTi. Kui teie kontol on üle 4 QORTi, on Q-Chat sõnumid kohesed ja see dialoog ei ilmu enam. Täname teid selle vajaliku rämpsposti vältimise meetodi mõistmise eest ja loodame, et teile meeldib Qortal!", - "cchange43": "Jootraha QORTi", + "cchange41": "Sinu saldo on alla 4 QORTi", + "cchange42": "Rämpsposti vastu võitlemiseks võtab sõnumite saatmine Q-Chatis kaua aega, kui Su QORTi aadressi saldo on alla 4. Kui soovid tõsta Q-Chati sõnumite saatmise kiirust, hangi omale vähemalt 4 QORTi. Seda saab teha kauplemisportaalis tehingutega või keegi saadab sulle QORTi. Kui aadressil on üle 4 QORTi, on Q-Chati sõnumid kohesed. Täname selle vajaliku rämpsposti vältimise meetodi mõistmise eest ja loodame, et naudid Qortal platvormi!", + "cchange43": "Jäta jootraha (QORT)", "cchange44": "Saada sõnum", "cchange45": "Jootraha kasutajale", "cchange46": "Jootraha summa", "cchange47": "Vaba saldo", - "cchange48": "QORT saldo kättesaamine ebaõnnestus. Proovige uuesti!", + "cchange48": "QORT saldo kättesaamine ebaõnnestus. Proovi uuesti!", "cchange49": "Praegune staatiline tasu", "cchange50": "Saada", "cchange51": "Ebapiisavad vahendid!", "cchange52": "Vale summa!", - "cchange53": "Vastuvõtja ei saa olla tühi!", - "cchange54": "Vale vastuvõtja!", + "cchange53": "Saaja lahter ei saa olla tühi!", + "cchange54": "Vigane saaja info!", "cchange55": "Tehing õnnestus!", "cchange56": "Tehing ebaõnnestus!", "cchange57": "Kasutaja info", "cchange58": "Saada sõnum", "cchange59": "Jootraha kasutajale", "cchange60": "Rühmakutsed ootel", - "cchange61": "Viga grupi kutsete kättesaamisel. Palun proovige uuesti!", - "cchange62": "Vale kasutajanimi ja aadress sisestatud! Palun proovige uuesti!", + "cchange61": "Viga grupi kutsete kättesaamisel. Palun proovi uuesti!", + "cchange62": "Vale kasutajanimi ja aadress sisestatud! Palun proovi uuesti!", "cchange63": "Sisenemine lubatud", "cchange64": "Sienemine mittelubatud", - "cchange65": "Palun sisestage vastuvõtja", + "cchange65": "Palun sisesta saaja", "cchange66": "Ei saa vastatud sõnumit kätte. Teade on liiga vana.", "cchange68": "muudetud", "cchange69": "Automaatne piltide kuvamine", @@ -823,15 +824,15 @@ "cchange71": "ja", "cchange72": "teised", "cchange73": "", - "cchange74": "reageerisid koos", - "cchange75": "Manuse üleslaadimine. See võib võtta kuni ühe minuti.", - "cchange76": "Deleting attachment. This may take up to one minute.", - "cchange77": "Manuse suurus ületab 1 MB", - "cchange78": "Kas olete kindel, et soovite selle pildi kustutada?", - "cchange79": "Kas olete kindel, et soovite selle manuse kustutada?", - "cchange80": "See pilt on kustutatud", + "cchange74": "reageerisid", + "cchange75": "Manuse üleslaadimine. See võib võtta kuni minuti.", + "cchange76": "Manuse kustutamine, võib võtta kuni minuti.", + "cchange77": "Manuse suurus ületab 1 MB mahu", + "cchange78": "Kas oled kindel, et soovid selle pildi kustutada?", + "cchange79": "Kas oled kindel, et soovid selle manuse kustutada?", + "cchange80": "Pilt kustutatud", "cchange81": "See pilditüüp ei ole toetatud", - "cchange82": "See manus on kustutatud", + "cchange82": "Manus kustutatud", "cchange90": "Sõnumeid ei ole", "cchange91": "Saadamine...", "cchange92": "Lugemata kirjad allpool", @@ -844,23 +845,23 @@ "welcomepage": { "wcchange1": "Tere tulemast Q-Chatti", "wcchange2": "Uus Privaatsõnum", - "wcchange3": "Sisestage selle nimi või aadress, kellega soovite vestelda, et saata privaatsõnum.!", - "wcchange4": "Nimi / Aadress", + "wcchange3": "Sisesta Nimi või aadress, kellega soovid vestelda, et saata talle privaatsõnum.", + "wcchange4": "Nimi / aadress", "wcchange5": "Sõnum...", "wcchange6": "Saada", - "wcchange7": "Vale nimi/aadress, Kontrollige nime/aadressi ja proovige uuesti....", - "wcchange8": "Sõnum edukalt saadetud!", - "wcchange9": "Saatmine ebaõnnestus, palun proovige uuesti..." + "wcchange7": "Vale Nimi/aadress, kontrolli Nime/aadress üle ja proovi uuesti...", + "wcchange8": "Sõnum saadetud!", + "wcchange9": "Saatmine ebaõnnestus, palun proovi uuesti..." }, "blockpage": { "bcchange1": "Blokeeri kasutaja", - "bcchange2": "See kasutaja on edukalt blokeeritud!", - "bcchange3": "Selle kasutaja blokeerimisel tekkis viga. Palun proovige uuesti!", - "bcchange4": "Registreeritud nime ei ole", + "bcchange2": "Blokeeritud!", + "bcchange3": "Selle kasutaja blokeerimisel tekkis viga. Palun proovi uuesti!", + "bcchange4": "Nime ei eksisteeri", "bcchange5": "Blokeeri kasutaja taotlus", - "bcchange6": "Kas sa oled kindel, et blokeerid selle kasutaja?", + "bcchange6": "Kas oled kindel, et blokeerid selle kasutaja?", "bcchange7": "Menüü", - "bcchange8": "Kopeeri Aadress", + "bcchange8": "Kopeeri aadress", "bcchange9": "Privaatsõnum", "bcchange10": "Rohkem", "bcchange11": "Vasta", @@ -868,7 +869,7 @@ "bcchange13": "Reaktsioon", "bcchange14": "Edasta", "bcchange15": "Sõnum edastatud", - "bcchange16": "Vali saaja või otsi üks allpoolt", + "bcchange16": "Vali saaja või otsi altpoolt", "bcchange17": "Edastatud", "bcchange18": "Jootraha kasutajale" }, @@ -880,14 +881,14 @@ "gchange5": "Kirjeldus", "gchange6": "Roll", "gchange7": "Tegevus", - "gchange8": "Ei ole ühegi grupi liige!", + "gchange8": "Ei ole ühegi Grupi liige!", "gchange9": "Avalikud Grupid", "gchange10": "Omanik", "gchange11": "Avatud avalikud grupid ei ole saadaval!", "gchange12": "Loo uus Grupp", - "gchange13": "Grupi Tüüp", + "gchange13": "Grupi tüüp", "gchange14": "See väli on nõutav", - "gchange15": "Valige variant", + "gchange15": "Vali nimekirjast", "gchange16": "Avalik", "gchange17": "Privaatne", "gchange18": "Grupi heakskiitmise künnis (tehingute heakskiitmiseks vajalike administraatorite arv/protsent):", @@ -917,9 +918,9 @@ "gchange42": "Ebakorrektne grupi nimi", "gchange43": "Ebakorrektne grupi kirjeldus", "gchange44": "Vali Grupi tüüp", - "gchange45": "Valige grupi heakskiitmise künnis", - "gchange46": " Valige grupikande kinnituste jaoks minimaalne ploki viivitus ", - "gchange47": " Valige grupitehingute kinnituste jaoks maksimaalne plokiviivitus ", + "gchange45": "Vali grupi heakskiitmise künnis", + "gchange46": "Vali grupikande kinnituste jaoks minimaalne ploki viivitusaeg ", + "gchange47": "Vali grupitehingute kinnituste jaoks maksimaalne ploki viivitusaeg ", "gchange48": "Grupiga liitumise taotlus edukalt saadetud!", "gchange49": "Grupist lahkumise taotlus edukalt saadetud!", "gchange50": "Lahku", @@ -929,9 +930,9 @@ "gchange54": "Liikmed", "gchange55": "Otsi privaatgruppi", "gchange56": "Otsi grupi nime", - "gchange57": "Privaatgrupi Nime ei leitud", - "gchange58": " Pange tähele, et rühma nimi peab olema täpne vaste.", - "gchange59": "Näita / Peida Ticker" + "gchange57": "Privaatgrupi nime ei leitud", + "gchange58": "Rühma nimi peab olema täpne vaste.", + "gchange59": "Näita / Peida saldod" }, "puzzlepage": { "pchange1": "Puzzled", @@ -942,22 +943,22 @@ "pchange6": "Vihje / Vastus", "pchange7": "Tegevus", "pchange8": "Paku", - "pchange9": "Sisestage oma pakkumine, et lahendada see mõistatus ja võita", - "pchange10": "Su pakkumine peab olema 43 või 44 tähemärki ja", + "pchange9": "Sisesta oma pakkumine, et lahendada see mõistatus ja võita", + "pchange10": "Pakkumine peab olema 43 või 44 tähemärki ja", "pchange11": "mitte", - "pchange12": "sisaldama 0 (bull), I (suur i), O (suur o) või l (väike L).", - "pchange13": "Sinu Pakkumine", - "pchange14": "Kontrollin sinu pakkumist...", + "pchange12": "sisaldama 0 (null), I (suur i), O (suur o) või l (väike L).", + "pchange13": "Sinu pakkumine", + "pchange14": "Kontrollin Sinu pakkumist...", "pchange15": "Saada", "pchange16": "Ebakorrektne pakkumine!", - "pchange17": "Preemiataotlus esitatud - kontrollige rahakotti preemia saamiseks!" + "pchange17": "Preemiataotlus esitatud - kontrolli rahakotti preemia saamiseks!" }, "nodepage": { "nchange1": "Sõlme haldamine:", - "nchange2": "Sõlm on võrgus:", + "nchange2": "Sõlm on võrgus olnud:", "nchange3": "Sõlme müntimiskontod", "nchange4": "Lisa müntimiskonto", - "nchange5": "Kui soovite omaenda kontoga müntida, peate looma endale preemiajagamise tehingu (mille preemiajagamise protsent on seatud 0) ja seejärel müntida selle preemiajagamise võtmega, mille ta teile annab..", + "nchange5": "Kui soovid oma kontoga müntida, pead looma endale preemiajagamise tehingu (mille preemiajagamise protsent on 0) ja seejärel müntida selle preemiajagamise võtmega, mille ta Sulle annab..", "nchange6": "Preemiajagamise võti", "nchange7": "Lisan müntimiskontot", "nchange8": "Lisa", @@ -965,18 +966,18 @@ "nchange10": "Saaja konto", "nchange11": "Tegevus", "nchange12": "Eemalda", - "nchange13": "Sellelt sõlmelt ei leitud müntimiskontosid", - "nchange14": "Selle sõlmega ühendatud partnerid", + "nchange13": "Sellel sõlmel puudub aktiivne müntimiskonto", + "nchange14": "Sinu sõlmega ühendatud partnerid (teised sõlmed)", "nchange15": "Lisa partner", - "nchange16": "Partneri tüüp, mille soovite lisada aadressile allpool", + "nchange16": "Partneri tüüp, mille soovid lisada aadressile allpool", "nchange17": "Partneri aadress", "nchange18": "Aadress", - "nchange19": "Viimane kõrgus", + "nchange19": "Viimane plokinumber", "nchange20": "Väljalaske versioon", "nchange21": "Ühendatud", "nchange22": "Tegevus", "nchange23": "Sünkroonimise sundimine", - "nchange24": "Sõlmel pole ühendatud partnereid", + "nchange24": "Ühendatud partnereid pole", "nchange25": "Alustan sünki partneriga: ", "nchange26": "Partner edukalt eemaldatud: ", "nchange27": "Müntimise sõlm edukalt lisatud!", @@ -992,46 +993,52 @@ "tchange1": "Tehingu taotlus", "tchange2": "Keeldu", "tchange3": "Kinnita", - "tchange4": "To", + "tchange4": "Saaja", "tchange5": "Summa" }, "apipage": { - "achange1": "Add API key", - "achange2": "API key", - "achange3": "Palun sisestage selle sõlme API võti. Selle leiate failist nimega 'apikey.txt' kataloogis, kuhu tuum on paigaldatud. Teise võimalusena klõpsake Katkesta, et kasutada tuuma vähendatud funktsionaalsusega..", + "achange1": "Lisa API võti", + "achange2": "API võti", + "achange3": "Palun sisesta selle sõlme API võti. Selle leiad failist nimega apikey.txt, mis asub arvutis Qortali kaustas. Teise võimalusena klõpsa Katkesta, et kasutada Tuuma vähendatud funktsionaalsusega..", "achange4": "Katkesta", "achange5": "Lisa", "achange6": "API võti edukalt lisatud", - "achange7": "API võti vale, API võtit ei lisatud" + "achange7": "API võti vale, võtit ei lisatud" }, "transactions": { "amount": "Summa", - "to": "To", + "to": "Saaja", "declined": "Kasutaja keeldus tehingust!", - "namedialog1": "Olete registreerimas allolevat nime:", - "namedialog2": "Vajutades kinnita, nimi registreeritakse!", - "groupdialog1": "Te taotlete liitumist alloleva Grupiga:", + "namedialog1": "Oled registreerimas allolevat Nime:", + "namedialog2": "Vajutades kinnita, Nimi registreeritakse!", + "groupdialog1": "Taotled liitumist alloleva Grupiga:", "groupdialog2": "Vajutades kinnita saadetakse grupiga liitumise taotlus!", - "groupdialog3": "Te taotlete lahkumist allolevast grupist:", + "groupdialog3": "Taotled lahkumist allolevast grupist:", "groupdialog4": "Vajutades kinnita saadetakse grupist lahkumise taotlus!", - "groupdialog5": "Te taotlete alloleva grupi loomist:", + "groupdialog5": "Taotled alloleva grupi loomist:", "groupdialog6": "Vajutade kinnita saadetakse grupi loomise taotlus!", - "rewarddialog1": "Kas soovite luua preemiate jagamise tehingu, jagades", - "rewarddialog2": "oma mündipreemiaid koos", - "rewarddialog3": "Kui jah, siis tuleb teil salvestada allpool olev võti, et saaksite müntida. Seda saab esitada mis tahes sõlmpunktile, et see saaks teie nimel vermida..", - "rewarddialog4": "Kui vajutate kinnitust, luuakse preemiajagamine, kuid te peate ikkagi andma ülaltoodud võtme sõlmele, et kontoga müntimist teha.", - "rewarddialog5": "Te eemaldate kontoga seotud preemiajagamise tehingu:", + "rewarddialog1": "Kas soovid luua preemiate jagamise tehingu, jagades", + "rewarddialog2": "oma mündipreemiaid", + "rewarddialog3": "Kui jah, siis tuleb salvestada allpool olev võti, et selle abil müntida. Seda saab sisestada ka teises arvutis (sõlmes), kui tahad ka seal oma kontoga müntida.", + "rewarddialog4": "Kui kinnitad, luuakse preemiajagamine, kuid pead ikkagi andma ülaltoodud võtme sõlmele, et müntida.", + "rewarddialog5": "Eemaldad kontoga seotud preemiajagamise tehingu:", "rewarddialog6": "Kinnitamist vajutades eemaldatakse preemiajagamine ja müntimisvõti muutub kehtetuks.", "deployAtdialog1": "Te juurutate AT", "deployAtdialog2": "Kinnita vajutamisel juurutatakse AT!", - "deployAtdialog3": "Algsumma saldo" + "deployAtdialog3": "Algsumma saldo", + "votedialog1": "Soovite hääletada allolevas küsitluses:", + "votedialog2": "Kinnita vajutamisel saadetakse hääletustaotlus!", + "votedialog3": "Te taotlete allpool oleva küsitluse loomist:", + "votedialog4": "Küsitluse kirjeldus", + "votedialog5": "Valikud", + "votedialog6": "Kinnita vajutamisel luuakse küsitlus!" }, "sponsorshipspage": { "schange1": "Aktiivsed sponsorlused", "schange2": "Konto aadress", "schange3": "Aktiivseid sponsorlusi kokku", "schange4": "Järgmine sponsorlus lõppeb....", - "schange5": "Spondeeri uut müntijat", + "schange5": "Sponsoreeri uut müntijat", "schange6": "Lõppenud sponsorlused", "schange7": "Lõpetatud", "schange8": "Aadressid", @@ -1044,17 +1051,17 @@ "schange15": "Lõpetan", "schange16": "Kopeeri allolev võti ja jaga seda oma sponsoriga.", "schange17": "Kopeeritud lõikelauale", - "schange18": "Hoiatus: ärge sulgege seda pluginat ega sulgege Qortali kasutajaliidest enne lõpetamist!", + "schange18": "Hoiatus: ära sulge seda pluginat ega ka Qortali kasutajaliidest (UI-d) enne lõpetamist!", "schange19": "Kopeeri sponsorluse võti", "schange20": "Suhte loomine", "schange21": "Eemalda sponsorluse võti" }, "explorerpage": { - "exp1": "Otsi aadressi või nime", + "exp1": "Otsi aadressi või Nime", "exp2": "Konto saldo", "exp3": "Rohkem infot", "exp4": "Aadressi või Nime ei leitud!", - "exp5": "Pange tähele, et registreeritud nimetused on tõstutundlikud.", + "exp5": "NB! Nimed on suurtähe ja väiketähe -tundlikud.", "exp6": "Asutaja", "exp7": "Info", "exp8": "Näita kõiki ostutehinguid", @@ -1069,7 +1076,7 @@ "exp17": "KÕIK MAKSED", "exp18": "Maksed", "exp19": "Saadetud", - "exp20": "Vastuvõetud", + "exp20": "Vastu võetud", "exp21": "Tehingud", "exp22": "VIIMASED 5 MAKSET", "exp23": "Näita kõiki makseid" @@ -1077,41 +1084,41 @@ "managegroup": { "mg1": "Grupi liikmed", "mg2": "Kutsu Gruppi", - "mg3": "Group Admins", + "mg3": "Grupi adminnid", "mg4": "Uuenda Gruppi", "mg5": "Sulge Grupi haldamine", - "mg6": "BAN", - "mg7": "KICK", + "mg6": "BÄNNI", + "mg7": "VISKA VÄLJA", "mg8": "Grupi ID", - "mg9": "Joined", + "mg9": "Liitunud", "mg10": "Lisa Grupi Admin", "mg11": "Oled kindel, et lisad selle kasutaja adminniks?", - "mg12": "Vajutades Kinnita saadetakse Lisa Admin taotlus!", + "mg12": "Vajutades Kinnita saadetakse Adminni lisamise taotlus.", "mg13": "Eemalda Grupi Admin", - "mg14": "Eemalda Admin Aadress", + "mg14": "Eemalda Admini Aadress", "mg15": "Oled kindel, et soovid selle liikme Adminnide hulgast eemaldada?", - "mg16": "Vajutades Kinnita saadetakse Eemalda Admin taotlus!", + "mg16": "Vajutades Kinnita saadetakse Admini eemaldamise taotlus.", "mg17": "Bänni kasutaja Grupist", "mg18": "Kasutaja Nimi", - "mg19": "Kasutaja Aadress", + "mg19": "Kasutaja aadress", "mg20": "Kui kauaks bännida", "mg21": "Bänni põhjus", - "mg22": "Oled kindel, et soovid selle liikme Grupist Bännida?", + "mg22": "Oled kindel, et soovid selle liikme Grupist bännida?", "mg23": "Vajutades Kinnita saadetakse bänni taotlus!", "mg24": "IGAVESTI", "mg25": "Bännitud liikmed", - "mg26": "Tühista Bänn", + "mg26": "Tühista bänn", "mg27": "Bänni aegumine", - "mg28": "Tühista liikme Grupist Bännimine", - "mg29": "Oled kindel, et soovid tühistada selle liikme Grupist Bännimise?", - "mg30": "Vajutades Kinnita saadetakse liikme Grupist bännimise tühistamise taotlus!", + "mg28": "Tühista liikme Grupist bännimine", + "mg29": "Oled kindel, et soovid tühistada selle liikme Grupist bännimise?", + "mg30": "Vajutades Kinnita saadetakse liikme Grupist bännimise tühistamise taotlus.", "mg31": "Viska liige Grupist välja", "mg32": "Väljaviskamise põhjus", "mg33": "Oled kindel, et viskad liikme Grupist välja?", - "mg34": "Vajutades Kinnita saadetakse väljaviskamise taotlus!", + "mg34": "Vajutades Kinnita saadetakse väljaviskamise taotlus.", "mg35": "Avalike Gruppide kutseid ei ole", "mg36": "Sinu Avalike Gruppide kutsed", - "mg37": "Kutsutava aadress või nimi", + "mg37": "Kutsutava aadress või Nimi", "mg38": "Kutse Aegumise aeg", "mg39": "Kõik väljad on nõutud", "mg40": "Oled kindel, et soovid selle liikme Gruppi kutsuda?", @@ -1125,56 +1132,56 @@ "mg48": "Oled kindel, et soovid tühistada selle liikme kutse Gruppi?", "mg49": "Vajutades Kinnita saadetakse kutse tühistamise taotlus!", "mg50": "Varsti tulemas...", - "mg51": "Miinimum 3 tähemärkit / Maksimum 32 tähemärkit", - "mg52": "Maksimum 128 tähemärkit", + "mg51": "Miinimum 3 ja maksimum 32 tähemärki", + "mg52": "Maksimum 128 tähemärki", "mg53": "Sinu avatud liitumistaotlused", - "mg54": "Avatud liitumistaotlusi ei ole", + "mg54": "Aktiivseid liitumistaotlusi ei ole", "mg55": "Oled kindel, et aktsepteerid selle liikme saadetud liitumistaotluse?", - "mg56": "Vajutades Kinnita saadetakse liitumistaotluse aktsepteering!", + "mg56": "Vajutades Kinnita saadetakse liitumistaotluse aktsepteering.", "mg57": "Liitumistaotlus edukalt aktsepteeritud", - "mg58": "Midagi Läks Valesti", - "mg59": "Tühista Liitumistaotlus edukalt aktsepteeritud", + "mg58": "Midagi läks valesti", + "mg59": "Liitumistaotluse tühistamine aktsepteeritud", "mg60": "Oled kindel, et tühistad selle liikme saadetud liitumistaotluse?", "mg61": "Vajutades Kinnita saadetakse liitumistaotluse tühistamise taotlus!" }, "info": { - "inf1": "Kaubandusportaali info", - "inf2": "Sulge Kaubandusportaali info", - "inf3": "See on turg, et osta QORT koos", + "inf1": "Kauplemisportaali info", + "inf2": "Sulge Kauplemisportaali info", + "inf3": "Siin saad osta QORTi krüptoga", "inf4": "- 'avatud turu müügid' QORT müügitellimused.", - "inf5": "Saate osta ainult ÜHE tellimuse korraga lihtsalt klõpsake tellimusele, mida soovite osta koos", - "inf6": "ja see täidab kasti 'OSTA QORTi' üksikasjadega, seejärel klõpsake nuppu OSTA..", + "inf5": "Saad osta ainult ÜHE tellimuse korraga. Lihtsalt klõpsa tellimusele, mida soovid osta antud krüpto eest:", + "inf6": "ja see täidab lahtri OSTA QORTi õige infoga. Seejärel vajuta nuppu OSTA.", "inf7": "Automaatostu info", "inf8": "Sulge Automaatostu info", - "inf9": "'Automaatne ost on funktsioon, mis võimaldab 'ostukorraldusi' esitada kaubandusportaalis. Neid ostutellimusi näeb ainult neid andev isik. Need ei ole 'avalikud' ostutellimused nagu 'avatud turu müügitellimused' ja neid EI salvestata Qortali plokiahelas. Automaatne ost on kasutajaliidese funktsioon ja eeldab seega, et kasutajaliides on käivitatud.", - "inf10": "Automaatse ostutellimuse tegemiseks klõpsake nuppu 'Lisa automaatne ostutellimus' ja täitke avanev kast. Sisestage QORTi kogus, mida soovite osta, ja hind, milleni olete valmis ostma. Kui tellimus on aktiivne, ostab Auto Buy teie eest kuni selle koguse QORTi, kuni teie poolt määratud hinnaga (alustades madalaimast tellimusest ja liikudes raamatute kaupa ülespoole).", - "inf11": "Lihtsalt JÄta oma kasutajaliides käima ja Auto Buy teeb kõik ülejäänud automaatselt!", - "inf12": "Sa võid sirvida teisi pistikprogramme UI-s (Q-Chat, rahakotid jne.), kuid sa EI SAA UI-d SULGEDA, kui tahad, et su Auto Buy lõpetaks. UI 'minimeeritud' jätmine 'tegumiribale' või 'paneelile' on täiesti okei, seni kuni UI jääb AVATUD, toimib Auto Buy.", + "inf9": "'Automaatne ost on funktsioon, mis võimaldab Kauplemisportaalis teha automaatseid ostukorraldusi. Neid ostutellimusi näeb ainult neid andev isik. Need ei ole avalikud ostutellimused, nagu avatud turu müügitellimused ja neid EI salvestata Qortali plokiahelas. Automaatne ost on Qortali kasutajaliidese (UI) funktsioon ja eeldab seega, et UI tuleb jätta käima.", + "inf10": "Automaatse ostutellimuse tegemiseks vali Lisa automaatne ostutellimus ja täida avanev lahter. Sisesta QORTi kogus, mida soovid osta, ja hind, millega oled valmis ostma. Kui tellimus on aktiivne, ostab Auto Buy rakendus ise kuni selle koguse QORTi Sinu määratud hinnaga (alustades madalaimast tellimusest ja liikudes tellimuste raamatus ülespoole).", + "inf11": "Lihtsalt jäta kasutajaliides (UI) käima ja Auto Buy teeb ülejäänu automaatselt!", + "inf12": "Võid sirvida teisi pistikprogramme UI-s (Q-Chat, rahakotid jne.), kuid sa EI TOHI UI-d SULGEDA, kui tahad, et Auto Buy automaatse ostu edukalt sooritaks. UI minimeeritud jätmine tegumiribale või paneelile on täiesti okei - peaasi, et UI ise jääb tööle.", "inf13": "Osta automaatselt", - "inf14": "koos", - "inf15": "Aktiivsed Automaatostu tellimused", + "inf14": "krüptoga", + "inf15": "Aktiivsed automaatostu tellimused", "inf16": "Automaatost", "inf17": "Lülita heledale teemale", "inf18": "Lülita tumedale teemale" }, "lotterypage": { - "lot1": "Open Qortali loteriid", + "lot1": "Avatud loteriid", "lot2": "AT-aadress", - "lot3": "Alustatud blokk", - "lot4": "Väljamaksete blokk", - "lot5": "Mängi loterii", - "lot6": "Lõpetatud Qortali loteriid", + "lot3": "Alustatud plokk", + "lot4": "Väljamaksete plokk", + "lot5": "Osale", + "lot6": "Lõppenud loteriid", "lot7": "Võidusumma", "lot8": "Võitja", - "lot9": "väljamakstud", + "lot9": "Väljamakse", "lot10": "Mängi Qortali loteriid", - "lot11": "Avatud loteriisid pole!", - "lot12": "Lõppenud loteriid pole!", - "lot13": "Mängijad" + "lot11": "Avatud loteriisid pole.", + "lot12": "Lõppenud loteriid pole.", + "lot13": "Mängijaid" }, "notifications": { "notify1": "Tehingu kinnitamine", "notify2": "Tehing kinnitatud", - "explanation": "Teie tehing kinnitatakse. Selle edenemise jälgimiseks klõpsake kellaikoonil." + "explanation": "Sinu tehing kinnitatakse. Edenemise jälgimiseks klõpsa kellaikoonil." } } \ No newline at end of file diff --git a/core/language/fr.json b/core/language/fr.json index b0a631ce..124fbbb9 100644 --- a/core/language/fr.json +++ b/core/language/fr.json @@ -207,7 +207,8 @@ "exp3": "Exporter", "exp4": "Veuillez choisir un portefeuille pour sauvegarder la clé principale privée.", "core": "Démarrer les paramètres du noyau", - "qappNotification1": "Notifications Q-App" + "qappNotification1": "Notifications Q-App", + "selectnode": "Veuillez sélectionner une option" }, "appinfo": { "blockheight": "Hauteur de bloc", @@ -1024,7 +1025,13 @@ "rewarddialog6": "En appuyant sur confirmer, le partage de récompense sera supprimé et la clé de frappe deviendra invalide.", "deployAtdialog1": "Vous déployez l'AT", "deployAtdialog2": "En appuyant sur confirmer, l'AT sera déployé !", - "deployAtdialog3": "Solde du montant initial" + "deployAtdialog3": "Solde du montant initial", + "votedialog1": "Vous demandez à voter sur le sondage ci-dessous :", + "votedialog2": "En appuyant sur confirmer, la demande de vote sera envoyée !", + "votedialog3": "Vous demandez la création du sondage ci-dessous :", + "votedialog4": "Description du sondage", + "votedialog5": "Options", + "votedialog6": "En appuyant sur confirmer, le sondage sera créé !" }, "sponsorshipspage": { "schange1": "Parrainages actifs", diff --git a/core/language/hindi.json b/core/language/hindi.json index bf1d53d4..e4db815b 100644 --- a/core/language/hindi.json +++ b/core/language/hindi.json @@ -207,7 +207,8 @@ "exp3": "निर्यात", "exp4": "निजी मास्टर कुंजी का बैकअप लेने के लिए कृपया एक वॉलेट चुनें।", "core": "कोर सेटिंग प्रारंभ करें", - "qappNotification1": "क्यू-ऐप अधिसूचनाएँ" + "qappNotification1": "क्यू-ऐप अधिसूचनाएँ", + "selectnode": "कृपया एक विकल्प चुनें" }, "appinfo": { "blockheight": "ब्लॉक ऊँचाई", @@ -1024,7 +1025,13 @@ "rewarddialog6": "कन्फर्म दबाने पर, रिवॉर्डशेयर हटा दिया जाएगा और मिंटिंग की अमान्य हो जाएगी।", "deployAtdialog1": "आप एटी तैनात कर रहे हैं", "deployAtdialog2": "पुष्टि बटन दबाने पर, AT तैनात हो जाएगा!", - "deployAtdialog3": "प्रारंभिक राशि शेष" + "deployAtdialog3": "प्रारंभिक राशि शेष", + "votedialog1": "आप नीचे दिए गए मतदान पर मतदान करने का अनुरोध कर रहे हैं:", + "votedialog2": "कन्फ़र्म बटन दबाने पर वोट अनुरोध भेज दिया जाएगा!", + "votedialog3": "आप नीचे पोल बनाने का अनुरोध कर रहे हैं:", + "votedialog4": "मतदान विवरण", + "votedialog5": "विकल्प", + "votedialog6": "कन्फर्म दबाने पर पोल क्रिएट हो जाएगा!" }, "sponsorshipspage": { "schange1": "सक्रिय प्रायोजन", diff --git a/core/language/hr.json b/core/language/hr.json index 7084b950..2c8935e0 100644 --- a/core/language/hr.json +++ b/core/language/hr.json @@ -207,7 +207,8 @@ "exp3": "Izvoz", "exp4": "Odaberite novčanik za sigurnosnu kopiju privatnog glavnog ključa.", "core": "Pokreni osnovne postavke", - "qappNotification1": "Obavijesti Q-App" + "qappNotification1": "Obavijesti Q-App", + "selectnode": "Molimo odaberite opciju" }, "appinfo": { "blockheight": "Visina bloka", @@ -1024,7 +1025,13 @@ "rewarddialog6": "Pritiskom na potvrdu, dijeljenje nagrade bit će uklonjeno, a ključ za kovanje postat će nevažeći.", "deployAtdialog1": "Uvodite AT", "deployAtdialog2": "Pritiskom na potvrdu, AT će biti postavljen!", - "deployAtdialog3": "Početni iznos stanja" + "deployAtdialog3": "Početni iznos stanja", + "votedialog1": "Tražite da glasate u anketi ispod:", + "votedialog2": "Pritiskom na potvrdu, zahtjev za glasovanje bit će poslan!", + "votedialog3": "Tražite izradu ankete ispod:", + "votedialog4": "Opis ankete", + "votedialog5": "Mogućnosti", + "votedialog6": "Pritiskom na potvrdu, anketa će biti kreirana!" }, "sponsorshipspage": { "schange1": "Aktivna sponzorstva", diff --git a/core/language/hu.json b/core/language/hu.json index 0410fd85..49020686 100644 --- a/core/language/hu.json +++ b/core/language/hu.json @@ -207,7 +207,8 @@ "exp3": "Exportálás", "exp4": "Kérjük, válasszon egy tárcát a privát főkulcs biztonsági mentéséhez.", "core": "Alapbeállítások indítása", - "qappNotification1": "Q-App értesítések" + "qappNotification1": "Q-App értesítések", + "selectnode": "Kérjük, válasszon egy lehetőséget" }, "appinfo": { "blockheight": "Blokk Magassága", @@ -1024,7 +1025,13 @@ "rewarddialog6": "A megerősítés megnyomására a jutalommegosztás törlődik, és a pénzverési kulcs érvénytelenné válik.", "deployAtdialog1": "Ön telepíti az AT-t", "deployAtdialog2": "A megerősítés megnyomására az AT telepítésre kerül!", - "deployAtdialog3": "Kezdő összeg egyenleg" + "deployAtdialog3": "Kezdő összeg egyenleg", + "votedialog1": "Az alábbi szavazásra kérsz szavazást:", + "votedialog2": "A megerősítés megnyomására a szavazás elküldésre kerül!", + "votedialog3": "Az alábbi szavazás létrehozását kéri:", + "votedialog4": "Szavazás leírása", + "votedialog5": "Lehetőségek", + "votedialog6": "A megerősítés megnyomására a szavazás létrejön!" }, "sponsorshipspage": { "schange1": "Aktív szponzorálás", diff --git a/core/language/it.json b/core/language/it.json index ab362078..8964283f 100644 --- a/core/language/it.json +++ b/core/language/it.json @@ -207,7 +207,8 @@ "exp3": "Esporta", "exp4": "Scegli un portafoglio per il backup della chiave master privata.", "core": "Avvia impostazioni principali", - "qappNotification1": "Notifiche Q-App" + "qappNotification1": "Notifiche Q-App", + "selectnode": "Seleziona un'opzione" }, "appinfo": { "blockheight": "Altezza blocco", @@ -1024,7 +1025,13 @@ "rewarddialog6": "Premendo conferma, la condivisione del premio verrà rimossa e la chiave di conio non sarà più valida.", "deployAtdialog1": "Stai distribuendo l'AT", "deployAtdialog2": "Premendo conferma, l'AT verrà schierato!", - "deployAtdialog3": "Saldo importo iniziale" + "deployAtdialog3": "Saldo importo iniziale", + "votedialog1": "Stai richiedendo di votare per il sondaggio qui sotto:", + "votedialog2": "Premendo conferma, la richiesta di voto verrà inviata!", + "votedialog3": "Stai richiedendo di creare il sondaggio qui sotto:", + "votedialog4": "Descrizione sondaggio", + "votedialog5": "Opzioni", + "votedialog6": "Premendo conferma, il sondaggio verrà creato!" }, "sponsorshipspage": { "schange1": "Sponsorizzazioni attive", diff --git a/core/language/jp.json b/core/language/jp.json index 1d8673a4..4716b271 100644 --- a/core/language/jp.json +++ b/core/language/jp.json @@ -207,7 +207,8 @@ "exp3": "エクスポート", "exp4": "秘密マスターキーをバックアップするウォレットを選択してください。", "core": "Core設定を開始", - "qappNotification1": "Q-App 通知" + "qappNotification1": "Q-App 通知", + "selectnode": "オプションを選択してください" }, "appinfo": { "blockheight": "ブロック高", @@ -1024,7 +1025,13 @@ "rewarddialog6": "確認を押すと、報酬シェアが削除され、ミントキーが無効になります。", "deployAtdialog1": "AT を展開しています", "deployAtdialog2": "確認を押すと、AT が展開されます!", - "deployAtdialog3": "初期金額残高" + "deployAtdialog3": "初期金額残高", + "votedialog1": "以下のアンケートへの投票をリクエストしています。", + "votedialog2": "確認を押すと、投票リクエストが送信されます。", + "votedialog3": "以下の投票の作成をリクエストしています:", + "votedialog4": "投票の説明", + "votedialog5": "オプション", + "votedialog6": "確認を押すと投票が作成されます。" }, "sponsorshipspage": { "schange1": "アクティブなスポンサーシップ", diff --git a/core/language/ko.json b/core/language/ko.json index 12f81f8e..6c3a9440 100644 --- a/core/language/ko.json +++ b/core/language/ko.json @@ -207,7 +207,8 @@ "exp3": "내보내기", "exp4": "개인 마스터 키를 백업할 지갑을 선택하세요.", "core": "코어 설정 시작", - "qappNotification1": "Q-App 알림" + "qappNotification1": "Q-App 알림", + "selectnode": "옵션을 선택하세요" }, "appinfo": { "blockheight": "블록 높이", @@ -1024,7 +1025,13 @@ "rewarddialog6": "확인을 누르면 보상 공유가 제거되고 조폐 키가 유효하지 않게 됩니다.", "deployAtdialog1": "AT를 배치하고 있습니다", "deployAtdialog2": "확인을 누르면 AT가 배치됩니다!", - "deployAtdialog3": "초기 잔액" + "deployAtdialog3": "초기 잔액", + "votedialog1": "아래 설문조사에 투표를 요청합니다:", + "votedialog2": "확인을 누르면 투표 요청이 전송됩니다!", + "votedialog3": "아래 설문조사 생성을 요청하고 있습니다.", + "votedialog4": "설문조사 설명", + "votedialog5": "옵션", + "votedialog6": "확인을 누르면 설문조사가 생성됩니다!" }, "sponsorshipspage": { "schange1": "적극적인 후원", diff --git a/core/language/no.json b/core/language/no.json index 2cca1f73..b661a0b4 100644 --- a/core/language/no.json +++ b/core/language/no.json @@ -207,7 +207,8 @@ "exp3": "Eksporter", "exp4": "Velg en lommebok for å sikkerhetskopiere den private hovednøkkelen.", "core": "Start kjerneinnstillinger", - "qappNotification1": "Q-App varsler" + "qappNotification1": "Q-App varsler", + "selectnode": "Vennligst velg et alternativ" }, "appinfo": { "blockheight": "Blokkhøyde", @@ -1024,7 +1025,13 @@ "rewarddialog6": "Ved å trykke på Bekreft, vil belønningsdelen bli fjernet og mintnøkkelen blir ugyldig.", "deployAtdialog1": "Du distribuerer AT", "deployAtdialog2": "Når du trykker på bekreftelse, vil AT bli distribuert!", - "deployAtdialog3": "Startbeløpssaldo" + "deployAtdialog3": "Startbeløpssaldo", + "votedialog1": "Du ber om å stemme på avstemningen nedenfor:", + "votedialog2": "Ved å trykke bekreft vil stemmeforespørselen bli sendt!", + "votedialog3": "Du ber om å lage avstemningen nedenfor:", + "votedialog4": "Avstemningsbeskrivelse", + "votedialog5": "Alternativer", + "votedialog6": "Når du trykker på bekreft, blir avstemningen opprettet!" }, "sponsorshipspage": { "schange1": "Aktive sponsorer", diff --git a/core/language/pl.json b/core/language/pl.json index ebdbe10a..671b9dcd 100644 --- a/core/language/pl.json +++ b/core/language/pl.json @@ -207,7 +207,8 @@ "exp3": "Eksportuj", "exp4": "Wybierz portfel do wykonania kopii zapasowej prywatnego klucza głównego.", "core": "Uruchom podstawowe ustawienia", - "qappNotification1": "Powiadomienia Q-App" + "qappNotification1": "Powiadomienia Q-App", + "selectnode": "Proszę wybrać opcję" }, "appinfo": { "blockheight": "Wysokość bloku", @@ -1024,7 +1025,13 @@ "rewarddialog6": "Po naciśnięciu przycisku Potwierdź udział w nagrodach zostanie usunięty, a klucz bicia stanie się nieważny.", "deployAtdialog1": "Wdrażasz terminal AT", "deployAtdialog2": "Po naciśnięciu przycisku potwierdzenia terminal AT zostanie wdrożony!", - "deployAtdialog3": "Saldo kwoty początkowej" + "deployAtdialog3": "Saldo kwoty początkowej", + "votedialog1": "Prosimy o oddanie głosu w poniższej ankiecie:", + "votedialog2": "Po naciśnięciu potwierdzenia zostanie wysłana prośba o głos!", + "votedialog3": "Prosisz o utworzenie poniższej ankiety:", + "votedialog4": "Opis ankiety", + "votedialog5": "Opcje", + "votedialog6": "Po naciśnięciu potwierdzenia ankieta zostanie utworzona!" }, "sponsorshipspage": { "schange1": "Aktywny Sponsoring", diff --git a/core/language/pt.json b/core/language/pt.json index bf0f63db..0fd85fee 100644 --- a/core/language/pt.json +++ b/core/language/pt.json @@ -207,7 +207,8 @@ "exp3": "Exportar", "exp4": "Por favor, escolha uma carteira para fazer backup da chave mestra privada.", "core": "Iniciar configurações do núcleo", - "qappNotification1": "Notificações de Q-App" + "qappNotification1": "Notificações de Q-App", + "selectnode": "Por favor selecione uma opção" }, "appinfo": { "blockheight": "Altura do Bloco", @@ -1024,7 +1025,13 @@ "rewarddialog6": "Ao pressionar confirmar, o rewardshare será removido e a chave de cunhagem se tornará inválida.", "deployAtdialog1": "Você está implantando o AT", "deployAtdialog2": "Ao pressionar confirmar, o AT será implantado!", - "deployAtdialog3": "Saldo do valor inicial" + "deployAtdialog3": "Saldo do valor inicial", + "votedialog1": "Você está solicitando votar na enquete abaixo:", + "votedialog2": "Ao pressionar confirmar, o pedido de voto será enviado!", + "votedialog3": "Você está solicitando a criação da enquete abaixo:", + "votedialog4": "Descrição da enquete", + "votedialog5": "Opções", + "votedialog6": "Ao pressionar confirmar, a enquete será criada!" }, "sponsorshipspage": { "schange1": "Patrocínios Ativos", diff --git a/core/language/ro.json b/core/language/ro.json index 23ac0703..8925f2f0 100644 --- a/core/language/ro.json +++ b/core/language/ro.json @@ -207,7 +207,8 @@ "exp3": "Export", "exp4": "Vă rugăm să alegeți un portofel pentru a face backup cheii master private.", "core": "Porniți setările de bază", - "qappNotification1": "Notificări Q-App" + "qappNotification1": "Notificări Q-App", + "selectnode": "Vă rugăm să selectați o opțiune" }, "appinfo": { "blockheight": "Dimensiunea blocului", @@ -1024,7 +1025,13 @@ "rewarddialog6": "La apasarea butonului de confirmare, recompensa va fi eliminata, iar cheia de obtinere de recompensa (minting) va deveni invalida.", "deployAtdialog1": "Implementați AT", "deployAtdialog2": "La apăsarea confirmării, AT va fi implementat!", - "deployAtdialog3": "Soldul sumei inițiale" + "deployAtdialog3": "Soldul sumei inițiale", + "votedialog1": "Soliciți să votați la sondajul de mai jos:", + "votedialog2": "La apăsarea confirmării, cererea de vot va fi trimisă!", + "votedialog3": "Soliciți să creezi sondajul de mai jos:", + "votedialog4": "Descrierea sondajului", + "votedialog5": "Opțiuni", + "votedialog6": "La apăsarea confirmării, sondajul va fi creat!" }, "sponsorshipspage": { "schange1": "Sponsorizari active", diff --git a/core/language/rs.json b/core/language/rs.json index c823b535..75378a9e 100644 --- a/core/language/rs.json +++ b/core/language/rs.json @@ -207,7 +207,8 @@ "exp3": "Izvoz", "exp4": "Molimo izaberite novčanik za rezervnu kopiju privatnog glavnog ključa.", "core": "Pokreni podešavanja jezgra", - "qappNotification1": "Obaveštenja o Q-App" + "qappNotification1": "Obaveštenja o Q-App", + "selectnode": "Izaberite opciju" }, "appinfo": { "blockheight": "Visina Bloka", @@ -1024,7 +1025,13 @@ "rewarddialog6": "Pritiskom na potvrdu, udeo nagrade će biti uklonjen i ključ za kovanje će postati nevažeći.", "deployAtdialog1": "Postavljate AT", "deployAtdialog2": "Pritiskom na potvrdi, AT će biti raspoređen!", - "deployAtdialog3": "Početni saldo iznosa" + "deployAtdialog3": "Početni saldo iznosa", + "votedialog1": "Tražite da glasate u anketi ispod:", + "votedialog2": "Pritiskom na potvrdi, zahtev za glasanje će biti poslat!", + "votedialog3": "Zahtevate da napravite anketu ispod:", + "votedialog4": "Opis ankete", + "votedialog5": "Opcije", + "votedialog6": "Pritiskom na potvrdi, anketa će biti kreirana!" }, "sponsorshipspage": { "schange1": "Aktivna sponzorstva", diff --git a/core/language/ru.json b/core/language/ru.json index 88e081f1..0e9b0089 100644 --- a/core/language/ru.json +++ b/core/language/ru.json @@ -207,7 +207,8 @@ "exp3": "Экспорт", "exp4": "Пожалуйста, выберите кошелек для резервного копирования приватного главного ключа.", "core": "Начать основные настройки", - "qappNotification1": "Уведомления Q-App" + "qappNotification1": "Уведомления Q-App", + "selectnode": "Пожалуйста, выберите вариант" }, "appinfo": { "blockheight": "Высота блока", @@ -1024,7 +1025,13 @@ "rewarddialog6": "При нажатии кнопки подтверждения доля вознаграждения будет удалена, а ключ чеканки станет недействительным.", "deployAtdialog1": "Вы развертываете AT", "deployAtdialog2": "При нажатии подтверждения AT будет развернут!", - "deployAtdialog3": "Начальный баланс суммы" + "deployAtdialog3": "Начальный баланс суммы", + "votedialog1": "Вы просите проголосовать в опросе ниже:", + "votedialog2": "При нажатии на подтверждение запрос на голосование будет отправлен!", + "votedialog3": "Вы просите создать опрос ниже:", + "votedialog4": "Описание опроса", + "votedialog5": "Параметры", + "votedialog6": "При нажатии на подтверждение опрос будет создан!" }, "sponsorshipspage": { "schange1": "Активное спонсорство", diff --git a/core/language/us.json b/core/language/us.json index 5aab4077..0c4b866d 100644 --- a/core/language/us.json +++ b/core/language/us.json @@ -207,7 +207,8 @@ "exp3": "Export", "exp4": "Please choose a wallet to backup the private master key.", "core": "Start Core Settings", - "qappNotification1": "Q-App Notifications" + "qappNotification1": "Q-App Notifications", + "selectnode": "Please select an option" }, "appinfo": { "blockheight": "Block Height", @@ -1024,7 +1025,13 @@ "rewarddialog6": "On pressing confirm, the rewardshare will be removed and the minting key will become invalid.", "deployAtdialog1": "You are deploying the AT", "deployAtdialog2": "On pressing confirm, the AT will be deployed!", - "deployAtdialog3": "Initial amount balance" + "deployAtdialog3": "Initial amount balance", + "votedialog1": "You are requesting to vote on the poll below:", + "votedialog2": "On pressing confirm, the vote request will be sent!", + "votedialog3": "You are requesting to create the poll below:", + "votedialog4": "Poll Description", + "votedialog5": "Options", + "votedialog6": "On pressing confirm, the poll will be created!" }, "sponsorshipspage": { "schange1": "Active Sponsorships", diff --git a/core/language/zhc.json b/core/language/zhc.json index 692f491d..8358c33d 100644 --- a/core/language/zhc.json +++ b/core/language/zhc.json @@ -207,7 +207,8 @@ "exp3": "导出", "exp4": "请选择一个钱包来备份私钥。", "core": "开始核心设置", - "qappNotification1": "Q-App 通知" + "qappNotification1": "Q-App 通知", + "selectnode": "请选择一个选项" }, "appinfo": { "blockheight": "区块高度", @@ -1024,7 +1025,13 @@ "rewarddialog6": "点击确认后,铸币密钥将被移除并失效。", "deployAtdialog1": "您正在部署 AT", "deployAtdialog2": "按下确认键后,AT 将被部署!", - "deployAtdialog3": "初始金额余额" + "deployAtdialog3": "初始金额余额", + "votedialog1": "您请求对以下民意调查进行投票:", + "votedialog2": "按下确认后,投票请求将被发送!", + "votedialog3": "您请求创建以下投票:", + "votedialog4": "投票说明", + "votedialog5": "选项", + "votedialog6": "按确认后,将创建投票!" }, "sponsorshipspage": { "schange1": "目前有效的赞助记录", diff --git a/core/language/zht.json b/core/language/zht.json index e605d2c2..9ef6fb99 100644 --- a/core/language/zht.json +++ b/core/language/zht.json @@ -207,7 +207,8 @@ "exp3": "導出", "exp4": "請選擇一個錢包來備份私鑰。", "core": "開始核心設置", - "qappNotification1": "Q-App 通知" + "qappNotification1": "Q-App 通知", + "selectnode": "請選擇一個選項" }, "appinfo": { "blockheight": "區塊高度", @@ -1024,7 +1025,13 @@ "rewarddialog6": "點擊確認後,鑄幣密鑰將被移除並失效。", "deployAtdialog1": "您正在部署 AT", "deployAtdialog2": "按下確認鍵後,AT 將被部署!", - "deployAtdialog3": "初始金額餘額" + "deployAtdialog3": "初始金額餘額", + "votedialog1": "您要求對以下民意調查進行投票:", + "votedialog2": "按下確認後,投票請求將被發送!", + "votedialog3": "您請求建立以下投票:", + "votedialog4": "投票說明", + "votedialog5": "選項", + "votedialog6": "按確認後,將創建投票!" }, "sponsorshipspage": { "schange1": "目前有效的贊助記錄", diff --git a/core/src/components/app-view.js b/core/src/components/app-view.js index bb103eca..b18f9b22 100644 --- a/core/src/components/app-view.js +++ b/core/src/components/app-view.js @@ -73,11 +73,23 @@ class AppView extends connect(store)(LitElement) { rvnWalletBalance: { type: Number }, arrrWalletBalance: { type: Number }, tradesOpenBtcQortal: { type: Array }, + tradesFailedBtcQortal: { type: Array }, + tradesOpenBtcQortalCleaned: { type: Array }, tradesOpenLtcQortal: { type: Array }, + tradesFailedLtcQortal: { type: Array }, + tradesOpenLtcQortalCleaned: { type: Array }, tradesOpenDogeQortal: { type: Array }, + tradesFailedDogeQortal: { type: Array }, + tradesOpenDogeQortalCleaned: { type: Array }, tradesOpenDgbQortal: { type: Array }, + tradesFailedDgbQortal: { type: Array }, + tradesOpenDgbQortalCleaned: { type: Array }, tradesOpenRvnQortal: { type: Array }, + tradesFailedRvnQortal: { type: Array }, + tradesOpenRvnQortalCleaned: { type: Array }, tradesOpenArrrQortal: { type: Array }, + tradesFailedArrrQortal: { type: Array }, + tradesOpenArrrQortalCleaned: { type: Array }, tradeBotBtcBook: { type: Array }, tradeBotLtcBook: { type: Array }, tradeBotDogeBook: { type: Array }, @@ -451,11 +463,23 @@ class AppView extends connect(store)(LitElement) { this.rvnWalletBalance = 0 this.arrrWalletBalance = 0 this.tradesOpenBtcQortal = [] + this.tradesFailedBtcQortal = [] + this.tradesOpenBtcQortalCleaned = [] this.tradesOpenLtcQortal = [] + this.tradesFailedLtcQortal = [] + this.tradesOpenLtcQortalCleaned = [] this.tradesOpenDogeQortal = [] + this.tradesFailedDogeQortal = [] + this.tradesOpenDogeQortalCleaned = [] this.tradesOpenDgbQortal = [] + this.tradesFailedDgbQortal = [] + this.tradesOpenDgbQortalCleaned = [] this.tradesOpenRvnQortal = [] + this.tradesFailedRvnQortal = [] + this.tradesOpenRvnQortalCleaned = [] this.tradesOpenArrrQortal = [] + this.tradesFailedArrrQortal = [] + this.tradesOpenArrrQortalCleaned = [] this.tradeBotBtcBook = [] this.tradeBotLtcBook = [] this.tradeBotDogeBook = [] @@ -773,11 +797,36 @@ class AppView extends connect(store)(LitElement) { price: roundedPrice, foreignAmount: item.expectedForeignAmount, qortalCreator: item.qortalCreator, - qortalAtAddress: item.qortalAtAddress + qortalAtAddress: item.qortalAtAddress, + qortalCreatorTradeAddress: item.qortalCreatorTradeAddress } } }).filter(item => !!item) + const tradesFailedBtcQortalUrl = `${nodeAppUrl}/transactions/unconfirmed?txType=MESSAGE&limit=0&reverse=true` + + const tradesFailedBtcQortal = await fetch(tradesFailedBtcQortalUrl).then(response => { + return response.json() + }) + + this.tradesFailedBtcQortal = tradesFailedBtcQortal.map(item => { + const messageTimeDiff = Date.now() - item.timestamp + const oneHour = 60 * 60 * 1000 + if (Number(messageTimeDiff) > Number(oneHour)) { + return { + timestamp: item.timestamp, + recipient: item.recipient + } + } + }).filter(item => !!item) + + this.tradesFailedBtcQortal.map(item => { + const recipientToRemove = item.recipient + this.tradesOpenBtcQortalCleaned = this.tradesOpenBtcQortal.filter(obj => { + return obj.qortalCreatorTradeAddress !== recipientToRemove + }) + }) + await appDelay(1000) filterMyBotPriceTradesBTC() setTimeout(getOpenTradesBTC, 150000) @@ -795,7 +844,7 @@ class AppView extends connect(store)(LitElement) { await appDelay(1000) - this.tradeBotAvailableBtcQortal = this.tradesOpenBtcQortal.map(item => { + this.tradeBotAvailableBtcQortal = this.tradesOpenBtcQortalCleaned.map(item => { const listprice = parseFloat(item.price) const listamount = parseFloat(item.qortAmount) const checkprice = parseFloat(this.tradeBotBtcBook[0].botBtcPrice) @@ -806,7 +855,8 @@ class AppView extends connect(store)(LitElement) { price: item.price, foreignAmount: item.foreignAmount, qortalCreator: item.qortalCreator, - qortalAtAddress: item.qortalAtAddress + qortalAtAddress: item.qortalAtAddress, + qortalCreatorTradeAddress: item.qortalCreatorTradeAddress } } }).filter(item => !!item) @@ -914,11 +964,36 @@ class AppView extends connect(store)(LitElement) { price: roundedPrice, foreignAmount: item.expectedForeignAmount, qortalCreator: item.qortalCreator, - qortalAtAddress: item.qortalAtAddress + qortalAtAddress: item.qortalAtAddress, + qortalCreatorTradeAddress: item.qortalCreatorTradeAddress } } }).filter(item => !!item) + const tradesFailedLtcQortalUrl = `${nodeAppUrl}/transactions/unconfirmed?txType=MESSAGE&limit=0&reverse=true` + + const tradesFailedLtcQortal = await fetch(tradesFailedLtcQortalUrl).then(response => { + return response.json() + }) + + this.tradesFailedLtcQortal = tradesFailedLtcQortal.map(item => { + const messageTimeDiff = Date.now() - item.timestamp + const oneHour = 60 * 60 * 1000 + if (Number(messageTimeDiff) > Number(oneHour)) { + return { + timestamp: item.timestamp, + recipient: item.recipient + } + } + }).filter(item => !!item) + + this.tradesFailedLtcQortal.map(item => { + const recipientToRemove = item.recipient + this.tradesOpenLtcQortalCleaned = this.tradesOpenLtcQortal.filter(obj => { + return obj.qortalCreatorTradeAddress !== recipientToRemove + }) + }) + await appDelay(1000) filterMyBotPriceTradesLTC() setTimeout(getOpenTradesLTC, 150000) @@ -936,7 +1011,7 @@ class AppView extends connect(store)(LitElement) { await appDelay(1000) - this.tradeBotAvailableLtcQortal = this.tradesOpenLtcQortal.map(item => { + this.tradeBotAvailableLtcQortal = this.tradesOpenLtcQortalCleaned.map(item => { const listprice = parseFloat(item.price) const listamount = parseFloat(item.qortAmount) const checkprice = parseFloat(this.tradeBotLtcBook[0].botLtcPrice) @@ -947,7 +1022,8 @@ class AppView extends connect(store)(LitElement) { price: item.price, foreignAmount: item.foreignAmount, qortalCreator: item.qortalCreator, - qortalAtAddress: item.qortalAtAddress + qortalAtAddress: item.qortalAtAddress, + qortalCreatorTradeAddress: item.qortalCreatorTradeAddress } } }).filter(item => !!item) @@ -1055,11 +1131,36 @@ class AppView extends connect(store)(LitElement) { price: roundedPrice, foreignAmount: item.expectedForeignAmount, qortalCreator: item.qortalCreator, - qortalAtAddress: item.qortalAtAddress + qortalAtAddress: item.qortalAtAddress, + qortalCreatorTradeAddress: item.qortalCreatorTradeAddress } } }).filter(item => !!item) + const tradesFailedDogeQortalUrl = `${nodeAppUrl}/transactions/unconfirmed?txType=MESSAGE&limit=0&reverse=true` + + const tradesFailedDogeQortal = await fetch(tradesFailedDogeQortalUrl).then(response => { + return response.json() + }) + + this.tradesFailedDogeQortal = tradesFailedDogeQortal.map(item => { + const messageTimeDiff = Date.now() - item.timestamp + const oneHour = 60 * 60 * 1000 + if (Number(messageTimeDiff) > Number(oneHour)) { + return { + timestamp: item.timestamp, + recipient: item.recipient + } + } + }).filter(item => !!item) + + this.tradesFailedDogeQortal.map(item => { + const recipientToRemove = item.recipient + this.tradesOpenDogeQortalCleaned = this.tradesOpenDogeQortal.filter(obj => { + return obj.qortalCreatorTradeAddress !== recipientToRemove + }) + }) + await appDelay(1000) filterMyBotPriceTradesDOGE() setTimeout(getOpenTradesDOGE, 150000) @@ -1077,7 +1178,7 @@ class AppView extends connect(store)(LitElement) { await appDelay(1000) - this.tradeBotAvailableDogeQortal = this.tradesOpenDogeQortal.map(item => { + this.tradeBotAvailableDogeQortal = this.tradesOpenDogeQortalCleaned.map(item => { const listprice = parseFloat(item.price) const listamount = parseFloat(item.qortAmount) const checkprice = parseFloat(this.tradeBotDogeBook[0].botDogePrice) @@ -1088,7 +1189,8 @@ class AppView extends connect(store)(LitElement) { price: item.price, foreignAmount: item.foreignAmount, qortalCreator: item.qortalCreator, - qortalAtAddress: item.qortalAtAddress + qortalAtAddress: item.qortalAtAddress, + qortalCreatorTradeAddress: item.qortalCreatorTradeAddress } } }).filter(item => !!item) @@ -1196,11 +1298,36 @@ class AppView extends connect(store)(LitElement) { price: roundedPrice, foreignAmount: item.expectedForeignAmount, qortalCreator: item.qortalCreator, - qortalAtAddress: item.qortalAtAddress + qortalAtAddress: item.qortalAtAddress, + qortalCreatorTradeAddress: item.qortalCreatorTradeAddress } } }).filter(item => !!item) + const tradesFailedDgbQortalUrl = `${nodeAppUrl}/transactions/unconfirmed?txType=MESSAGE&limit=0&reverse=true` + + const tradesFailedDgbQortal = await fetch(tradesFailedDgbQortalUrl).then(response => { + return response.json() + }) + + this.tradesFailedDgbQortal = tradesFailedDgbQortal.map(item => { + const messageTimeDiff = Date.now() - item.timestamp + const oneHour = 60 * 60 * 1000 + if (Number(messageTimeDiff) > Number(oneHour)) { + return { + timestamp: item.timestamp, + recipient: item.recipient + } + } + }).filter(item => !!item) + + this.tradesFailedDgbQortal.map(item => { + const recipientToRemove = item.recipient + this.tradesOpenDgbQortalCleaned = this.tradesOpenDgbQortal.filter(obj => { + return obj.qortalCreatorTradeAddress !== recipientToRemove + }) + }) + await appDelay(1000) filterMyBotPriceTradesDGB() setTimeout(getOpenTradesDGB, 150000) @@ -1218,7 +1345,7 @@ class AppView extends connect(store)(LitElement) { await appDelay(1000) - this.tradeBotAvailableDgbQortal = this.tradesOpenDgbQortal.map(item => { + this.tradeBotAvailableDgbQortal = this.tradesOpenDgbQortalCleaned.map(item => { const listprice = parseFloat(item.price) const listamount = parseFloat(item.qortAmount) const checkprice = parseFloat(this.tradeBotDgbBook[0].botDgbPrice) @@ -1229,7 +1356,8 @@ class AppView extends connect(store)(LitElement) { price: item.price, foreignAmount: item.foreignAmount, qortalCreator: item.qortalCreator, - qortalAtAddress: item.qortalAtAddress + qortalAtAddress: item.qortalAtAddress, + qortalCreatorTradeAddress: item.qortalCreatorTradeAddress } } }).filter(item => !!item) @@ -1337,11 +1465,36 @@ class AppView extends connect(store)(LitElement) { price: roundedPrice, foreignAmount: item.expectedForeignAmount, qortalCreator: item.qortalCreator, - qortalAtAddress: item.qortalAtAddress + qortalAtAddress: item.qortalAtAddress, + qortalCreatorTradeAddress: item.qortalCreatorTradeAddress } } }).filter(item => !!item) + const tradesFailedRvnQortalUrl = `${nodeAppUrl}/transactions/unconfirmed?txType=MESSAGE&limit=0&reverse=true` + + const tradesFailedRvnQortal = await fetch(tradesFailedRvnQortalUrl).then(response => { + return response.json() + }) + + this.tradesFailedRvnQortal = tradesFailedRvnQortal.map(item => { + const messageTimeDiff = Date.now() - item.timestamp + const oneHour = 60 * 60 * 1000 + if (Number(messageTimeDiff) > Number(oneHour)) { + return { + timestamp: item.timestamp, + recipient: item.recipient + } + } + }).filter(item => !!item) + + this.tradesFailedRvnQortal.map(item => { + const recipientToRemove = item.recipient + this.tradesOpenRvnQortalCleaned = this.tradesOpenRvnQortal.filter(obj => { + return obj.qortalCreatorTradeAddress !== recipientToRemove + }) + }) + await appDelay(1000) filterMyBotPriceTradesRVN() setTimeout(getOpenTradesRVN, 150000) @@ -1359,7 +1512,7 @@ class AppView extends connect(store)(LitElement) { await appDelay(1000) - this.tradeBotAvailableRvnQortal = this.tradesOpenRvnQortal.map(item => { + this.tradeBotAvailableRvnQortal = this.tradesOpenRvnQortalCleaned.map(item => { const listprice = parseFloat(item.price) const listamount = parseFloat(item.qortAmount) const checkprice = parseFloat(this.tradeBotRvnBook[0].botRvnPrice) @@ -1370,7 +1523,8 @@ class AppView extends connect(store)(LitElement) { price: item.price, foreignAmount: item.foreignAmount, qortalCreator: item.qortalCreator, - qortalAtAddress: item.qortalAtAddress + qortalAtAddress: item.qortalAtAddress, + qortalCreatorTradeAddress: item.qortalCreatorTradeAddress } } }).filter(item => !!item) @@ -1478,11 +1632,36 @@ class AppView extends connect(store)(LitElement) { price: roundedPrice, foreignAmount: item.expectedForeignAmount, qortalCreator: item.qortalCreator, - qortalAtAddress: item.qortalAtAddress + qortalAtAddress: item.qortalAtAddress, + qortalCreatorTradeAddress: item.qortalCreatorTradeAddress } } }).filter(item => !!item) + const tradesFailedArrrQortalUrl = `${nodeAppUrl}/transactions/unconfirmed?txType=MESSAGE&limit=0&reverse=true` + + const tradesFailedArrrQortal = await fetch(tradesFailedArrrQortalUrl).then(response => { + return response.json() + }) + + this.tradesFailedArrrQortal = tradesFailedArrrQortal.map(item => { + const messageTimeDiff = Date.now() - item.timestamp + const oneHour = 60 * 60 * 1000 + if (Number(messageTimeDiff) > Number(oneHour)) { + return { + timestamp: item.timestamp, + recipient: item.recipient + } + } + }).filter(item => !!item) + + this.tradesFailedArrrQortal.map(item => { + const recipientToRemove = item.recipient + this.tradesOpenArrrQortalCleaned = this.tradesOpenArrrQortal.filter(obj => { + return obj.qortalCreatorTradeAddress !== recipientToRemove + }) + }) + await appDelay(1000) filterMyBotPriceTradesARRR() setTimeout(getOpenTradesARRR, 150000) @@ -1500,7 +1679,7 @@ class AppView extends connect(store)(LitElement) { await appDelay(1000) - this.tradeBotAvailableArrrQortal = this.tradesOpenArrrQortal.map(item => { + this.tradeBotAvailableArrrQortal = this.tradesOpenArrrQortalCleaned.map(item => { const listprice = parseFloat(item.price) const listamount = parseFloat(item.qortAmount) const checkprice = parseFloat(this.tradeBotArrrBook[0].botArrrPrice) @@ -1511,7 +1690,8 @@ class AppView extends connect(store)(LitElement) { price: item.price, foreignAmount: item.foreignAmount, qortalCreator: item.qortalCreator, - qortalAtAddress: item.qortalAtAddress + qortalAtAddress: item.qortalAtAddress, + qortalCreatorTradeAddress: item.qortalCreatorTradeAddress } } }).filter(item => !!item) diff --git a/core/src/components/start-minting.js b/core/src/components/start-minting.js index e8590356..c7a21e35 100644 --- a/core/src/components/start-minting.js +++ b/core/src/components/start-minting.js @@ -179,6 +179,30 @@ class StartMinting extends connect(store)(LitElement) { this.openDialogRewardShare = false; this.status = 0; this.privateRewardShareKey = ""; + this.address = this.getAddress(); + this.nonce = this.getNonce(); + this.base58PublicKey = this.getBase58PublicKey() + } + getBase58PublicKey(){ + const appState = window.parent.reduxStore.getState().app; +const selectedAddress = appState && appState.selectedAddress; +const base58PublicKey = selectedAddress && selectedAddress.base58PublicKey; + return base58PublicKey || "" + } + + getAddress(){ + const appState = window.parent.reduxStore.getState().app; +const selectedAddress = appState && appState.selectedAddress; +const address = selectedAddress && selectedAddress.address; + return address || "" + + } + getNonce(){ + const appState = window.parent.reduxStore.getState().app; +const selectedAddress = appState && appState.selectedAddress; +const nonce = selectedAddress && selectedAddress.nonce; + return nonce || "" + } render() { @@ -223,7 +247,7 @@ class StartMinting extends connect(store)(LitElement) { const myNode = store.getState().app.nodeConfig.knownNodes[store.getState().app.nodeConfig.node]; const nodeUrl = myNode.protocol + '://' + myNode.domain + ':' + myNode.port; this.status = value - const address = window.parent.reduxStore.getState().app?.selectedAddress?.address; + const address = this.address // Check to see if a sponsorship key on a newly-level 1 minter exists. If it does, remove it. const findMintingAccountFromOtherUser = this.mintingAccountData.find((ma) => ma.recipientAccount === address && ma.mintingAccount !== address); @@ -247,12 +271,14 @@ class StartMinting extends connect(store)(LitElement) { try { if ( findMintingAccountFromOtherUser && - findMintingAccountFromOtherUser?.publicKey[0] + findMintingAccountFromOtherUser.publicKey && + findMintingAccountFromOtherUser.publicKey[0] ) { await removeMintingAccount( - findMintingAccountFromOtherUser?.publicKey[0] + findMintingAccountFromOtherUser.publicKey[0] ); } + } catch (error) { this.errorMsg = this.renderErrorMsg2(); return; @@ -292,7 +318,7 @@ class StartMinting extends connect(store)(LitElement) { if (!stop) { stop = true; try { - const address = window.parent.reduxStore.getState().app?.selectedAddress?.address; + const address = this.address const myRewardShareArray = await rewardShares(address); if (myRewardShareArray.length > 0) { clearInterval(interval) @@ -313,12 +339,12 @@ class StartMinting extends connect(store)(LitElement) { const nodeUrl = myNode.protocol + '://' + myNode.domain + ':' + myNode.port; const mintingAccountData = this.mintingAccountData; const addressInfo = window.parent.reduxStore.getState().app.accountInfo.addressInfo - const address = window.parent.reduxStore.getState().app?.selectedAddress?.address; - const nonce = window.parent.reduxStore.getState().app?.selectedAddress?.nonce; - const publicAddress = window.parent.reduxStore.getState().app?.selectedAddress ?.base58PublicKey; + const address = this.address + const nonce = this.nonce + const publicAddress = this.base58PublicKey const findMintingAccount = mintingAccountData.find((ma) => ma.mintingAccount === address); - const isMinterButKeyMintingKeyNotAssigned = addressInfo?.error !== 124 && addressInfo?.level >= 1 && !findMintingAccount; - + const isMinterButKeyMintingKeyNotAssigned = addressInfo && addressInfo.error !== 124 && addressInfo.level >= 1 && !findMintingAccount; + const makeTransactionRequest = async (lastRef) => { let mylastRef = lastRef; let rewarddialog1 = get('transactions.rewarddialog1'); @@ -347,31 +373,33 @@ class StartMinting extends connect(store)(LitElement) { const getTxnRequestResponse = (txnResponse) => { let err6string = get('rewardsharepage.rchange21'); - if (txnResponse?.extraData?.rewardSharePrivateKey && (txnResponse?.data?.message?.includes('multiple') || txnResponse?.data?.message?.includes('SELF_SHARE_EXISTS'))) { - return err6string + + if (txnResponse && txnResponse.extraData && txnResponse.extraData.rewardSharePrivateKey && + txnResponse.data && (txnResponse.data.message && (txnResponse.data.message.includes('multiple') || txnResponse.data.message.includes('SELF_SHARE_EXISTS')))) { + return err6string; } + if (txnResponse.success === false && txnResponse.message) { - throw (txnResponse); - } else if ( - txnResponse.success === true && - !txnResponse.data.error - ) { - + throw txnResponse; + } else if (txnResponse.success === true && txnResponse.data && !txnResponse.data.error) { return err6string; } else { - throw (txnResponse); + throw txnResponse; } }; + const createSponsorshipKey = async () => { - this.status = 1 + this.status = 1; let lastRef = await getLastRef(); - let myTransaction = await makeTransactionRequest(lastRef); - getTxnRequestResponse(myTransaction); - return myTransaction?.extraData?.rewardSharePrivateKey + + if (myTransaction && myTransaction.extraData) { + return myTransaction.extraData.rewardSharePrivateKey; + } }; + const getLastRef = async () => { const url = `${nodeUrl}/addresses/lastreference/${address}`; @@ -383,7 +411,7 @@ class StartMinting extends connect(store)(LitElement) { const startMinting = async () => { this.openDialogRewardShare = true this.errorMsg = ''; - const address = window.parent.reduxStore.getState().app?.selectedAddress?.address; + const address = this.address const findMintingAccountsFromUser = this.mintingAccountData.filter((ma) => ma.recipientAccount === address && ma.mintingAccount === address); @@ -397,7 +425,7 @@ class StartMinting extends connect(store)(LitElement) { this.confirmRelationship(publicAddress) } catch (error) { console.log({ error }) - this.errorMsg = error?.data?.message || this.renderErrorMsg4(); + this.errorMsg = (error && error.data && error.data.message) ? error.data.message : this.renderErrorMsg4(); return; } }; diff --git a/core/src/functional-components/settings-page.js b/core/src/functional-components/settings-page.js index 76ed6811..4323ffaa 100644 --- a/core/src/functional-components/settings-page.js +++ b/core/src/functional-components/settings-page.js @@ -1,46 +1,34 @@ -import { LitElement, html, css } from 'lit'; -import { connect } from 'pwa-helpers'; -import { store } from '../store.js'; -import { - doAddNode, - doSetNode, - doLoadNodeConfig, - doRemoveNode, - doEditNode, -} from '../redux/app/app-actions.js'; -import { - use, - get, - translate, - translateUnsafeHTML, - registerTranslateConfig, -} from 'lit-translate'; -import snackbar from './snackbar.js'; -import '../components/language-selector.js'; -import '../custom-elements/frag-file-input.js'; -import FileSaver from 'file-saver'; +import { LitElement, html, css } from 'lit' +import { connect } from 'pwa-helpers' +import { store } from '../store.js' +import { doAddNode, doSetNode, doLoadNodeConfig, doRemoveNode, doEditNode } from '../redux/app/app-actions.js' +import { use, get, translate, translateUnsafeHTML, registerTranslateConfig } from 'lit-translate' +import snackbar from './snackbar.js' +import '../components/language-selector.js' +import '../custom-elements/frag-file-input.js' +import FileSaver from 'file-saver' -import '@material/mwc-dialog'; -import '@material/mwc-button'; -import '@material/mwc-select'; -import '@material/mwc-textfield'; -import '@material/mwc-icon'; -import '@material/mwc-list/mwc-list-item.js'; +import '@material/mwc-dialog' +import '@material/mwc-button' +import '@material/mwc-select' +import '@material/mwc-textfield' +import '@material/mwc-icon' +import '@material/mwc-list/mwc-list-item.js' registerTranslateConfig({ - loader: (lang) => fetch(`/language/${lang}.json`).then((res) => res.json()), -}); + loader: (lang) => fetch(`/language/${lang}.json`).then((res) => res.json()) +}) -const checkLanguage = localStorage.getItem('qortalLanguage'); +const checkLanguage = localStorage.getItem('qortalLanguage') if (checkLanguage === null || checkLanguage.length === 0) { - localStorage.setItem('qortalLanguage', 'us'); - use('us'); + localStorage.setItem('qortalLanguage', 'us') + use('us') } else { - use(checkLanguage); + use(checkLanguage) } -let settingsDialog; +let settingsDialog class SettingsPage extends connect(store)(LitElement) { static get properties() { @@ -50,8 +38,8 @@ class SettingsPage extends connect(store)(LitElement) { theme: { type: String, reflect: true }, nodeIndex: { type: Number }, isBeingEdited: { type: Boolean }, - dropdownOpen: { type: Boolean }, - }; + dropdownOpen: { type: Boolean } + } } static get styles() { @@ -98,9 +86,11 @@ class SettingsPage extends connect(store)(LitElement) { .buttongreen { color: #03c851; } - .buttonBlue { - color: #03a9f4; - } + + .buttonBlue { + color: #03a9f4; + } + .floatleft { float: left; } @@ -108,24 +98,26 @@ class SettingsPage extends connect(store)(LitElement) { .floatright { float: right; } + .list-parent { display: flex; align-items: center; justify-content: space-between; width: 100%; } + #customSelect { position: relative; border: 1px solid #ccc; cursor: pointer; - background: var(--plugback); + background: var(--plugback); } #customSelect .selected { padding: 10px; - display: flex; - align-items: center; - justify-content: space-between; + display: flex; + align-items: center; + justify-content: space-between; } #customSelect ul { @@ -149,32 +141,32 @@ class SettingsPage extends connect(store)(LitElement) { #customSelect ul li { padding: 10px; - transition: 0.2s all; + transition: 0.2s all; } #customSelect ul li:hover { background-color: var(--graylight); } - .selected-left-side{ - display: flex; - align-items: center; - } - `; + + .selected-left-side { + display: flex; + align-items: center; + } + ` } constructor() { - super(); - this.nodeConfig = {}; - this.nodeIndex = localStorage.getItem('mySelectedNode'); - this.theme = localStorage.getItem('qortalTheme') - ? localStorage.getItem('qortalTheme') - : 'light'; - this.isBeingEdited = false; - this.isBeingEditedIndex = null; - this.dropdownOpen = false; + super() + this.theme = localStorage.getItem('qortalTheme') ? localStorage.getItem('qortalTheme') : 'light' + this.nodeConfig = {} + this.nodeIndex = localStorage.getItem('mySelectedNode') + this.isBeingEdited = false + this.isBeingEditedIndex = null + this.dropdownOpen = false } render() { + this.nodeSelectedOnNewStart() return html`
@@ -182,129 +174,58 @@ class SettingsPage extends connect(store)(LitElement) {

-
-
+
+
-
- link - - ${ - this.selectedItem - ? html` -
- - ${this.selectedItem - .name} - ${this.selectedItem - .protocol + - '://' + - this.selectedItem.domain + - ':' + - this.selectedItem - .port} -
- ` - : 'Please select an option' +
+ link + ${this.selectedItem ? html + ` +
+ ${this.selectedItem.name} + ${this.selectedItem.protocol + '://' + this.selectedItem.domain + ':' + this.selectedItem.port} +
+ ` : html`${translate('settings.selectnode')}` } -
- expand_more +
+ expand_more
    ${this.nodeConfig.knownNodes.map( (n, index) => html` -
  • +
  • - ${n.name} - ${n.protocol + - '://' + - n.domain + - ':' + - n.port} + ${n.name} + ${n.protocol + '://' + n.domain + ':' + n.port}
    edit - remove + edit + + + remove +
  • @@ -312,9 +233,6 @@ class SettingsPage extends connect(store)(LitElement) { )}
- - -

${translate('settings.nodehint')}

@@ -323,14 +241,15 @@ class SettingsPage extends connect(store)(LitElement) { outlined @click="${() => this.shadowRoot.querySelector('#addNodeDialog').show()}" >add${translate('settings.addcustomnode')} + ${translate('settings.addcustomnode')} +
- remove${translate('settings.deletecustomnode')} + + remove + ${translate('settings.deletecustomnode')} +

@@ -341,9 +260,7 @@ class SettingsPage extends connect(store)(LitElement) {


-
+


@@ -353,11 +270,7 @@ class SettingsPage extends connect(store)(LitElement) {
- + ${translate('general.close')} @@ -368,36 +281,16 @@ class SettingsPage extends connect(store)(LitElement) {

- +
- + http https
- - - + + + ${translate('general.close')} @@ -411,17 +304,16 @@ class SettingsPage extends connect(store)(LitElement) {

-
- + + > +

${translate('walletpage.wchange56')}

@@ -429,255 +321,257 @@ class SettingsPage extends connect(store)(LitElement) { ${translate('settings.warning')}
- + ${translate('general.close')}
- `; + ` } firstUpdated() { - const checkNode = localStorage.getItem('mySelectedNode'); + const checkNode = localStorage.getItem('mySelectedNode') if (checkNode === null || checkNode.length === 0) { localStorage.setItem('mySelectedNode', 0); } else { + this.handleSelectionOnNewStart(checkNode) } } + handleSelectionOnNewStart(index) { + this.localSavedNodes = JSON.parse(localStorage.getItem('myQortalNodes')) + this.dropdownOpen = false + this.selectedItem = this.localSavedNodes[index] + this.requestUpdate() + } + + nodeSelectedOnNewStart() { + const selectedNodeIndexOnNewStart = localStorage.getItem('mySelectedNode') + this.catchSavedNodes = JSON.parse(localStorage.getItem('myQortalNodes')) + const selectedNodeOnNewStart = this.catchSavedNodes[selectedNodeIndexOnNewStart] + const selectedNameOnNewStart = `${selectedNodeOnNewStart.name}` + const selectedNodeUrlOnNewStart = `${selectedNodeOnNewStart.protocol + '://' + selectedNodeOnNewStart.domain +':' + selectedNodeOnNewStart.port}` + + const index = parseInt(selectedNodeIndexOnNewStart) + if (isNaN(index)) return + + const snack0string = get('settings.snack2') + + snackbar.add({ + labelText: `${snack0string} : ${selectedNameOnNewStart} ${selectedNodeUrlOnNewStart}`, + dismiss: true + }) + } + toggleDropdown() { - this.dropdownOpen = !this.dropdownOpen; + this.dropdownOpen = !this.dropdownOpen } handleBlur(event) { - if ( - !this.shadowRoot - .querySelector('#customSelect') - .contains(event.relatedTarget) - ) { - this.dropdownOpen = false; + if (!this.shadowRoot.querySelector('#customSelect').contains(event.relatedTarget)) { + this.dropdownOpen = false } } + focusOnCustomSelect() { - const customSelect = this.shadowRoot.querySelector('#customSelect'); + const customSelect = this.shadowRoot.querySelector('#customSelect') if (customSelect) { - customSelect.focus(); + customSelect.focus() } } handleSelection(event, node, index) { - event.stopPropagation(); + event.stopPropagation() - this.selectedItem = node; - this.dropdownOpen = false; - this.requestUpdate(); - this.nodeSelected(index); + this.selectedItem = node + this.dropdownOpen = false + this.requestUpdate() + this.nodeSelected(index) + localStorage.setItem('mySelectedNode', index) } show() { - this.shadowRoot.getElementById('settingsDialog').show(); + this.shadowRoot.getElementById('settingsDialog').show() } close() { - this.shadowRoot.getElementById('settingsDialog').close(); + this.shadowRoot.getElementById('settingsDialog').close() } removeList() { - localStorage.removeItem('myQortalNodes'); + localStorage.removeItem('myQortalNodes') const obj1 = { name: 'Local Node', protocol: 'http', domain: '127.0.0.1', port: 12391, - enableManagement: true, - }; + enableManagement: true + } const obj2 = { name: 'Local Testnet', protocol: 'http', domain: '127.0.0.1', port: 62391, - enableManagement: true, - }; + enableManagement: true + } - var renewNodes = []; - renewNodes.push(obj1, obj2); - localStorage.setItem('myQortalNodes', JSON.stringify(renewNodes)); + var renewNodes = [] + renewNodes.push(obj1, obj2) + localStorage.setItem('myQortalNodes', JSON.stringify(renewNodes)) - let snack1string = get('settings.snack1'); + let snack1string = get('settings.snack1') snackbar.add({ labelText: `${snack1string}`, - dismiss: true, - }); + dismiss: true + }) - localStorage.removeItem('mySelectedNode'); - localStorage.setItem('mySelectedNode', 0); + localStorage.removeItem('mySelectedNode') + localStorage.setItem('mySelectedNode', 0) - store.dispatch(doLoadNodeConfig()); + store.dispatch(doLoadNodeConfig()) } nodeSelected(selectedNodeIndex) { - const selectedNode = this.nodeConfig.knownNodes[selectedNodeIndex]; - const selectedNodeUrl = `${ - selectedNode.protocol + - '://' + - selectedNode.domain + - ':' + - selectedNode.port - }`; + const selectedNode = this.nodeConfig.knownNodes[selectedNodeIndex] + const selectedName = `${selectedNode.name}` + const selectedNodeUrl = `${selectedNode.protocol + '://' + selectedNode.domain +':' + selectedNode.port}` - const index = parseInt(selectedNodeIndex); - if (isNaN(index)) return; + const index = parseInt(selectedNodeIndex) + if (isNaN(index)) return - store.dispatch(doSetNode(selectedNodeIndex)); + store.dispatch(doSetNode(selectedNodeIndex)) localStorage.removeItem('mySelectedNode'); - localStorage.setItem('mySelectedNode', selectedNodeIndex); + localStorage.setItem('mySelectedNode', selectedNodeIndex) - let snack2string = get('settings.snack2'); + let snack2string = get('settings.snack2') snackbar.add({ - labelText: `${snack2string} : ${selectedNodeUrl}`, - dismiss: true, - }); - - // this.shadowRoot.querySelector('#settingsDialog').close(); + labelText: `${snack2string} : ${selectedName} ${selectedNodeUrl}`, + dismiss: true + }) } addNode(e) { - e.stopPropagation(); + e.stopPropagation() if (this.isBeingEdited) { - this.editNode(this.isBeingEditedIndex); - return; + this.editNode(this.isBeingEditedIndex) + return } - const nameInput = this.shadowRoot.getElementById('nameInput').value; - const protocolList = - this.shadowRoot.getElementById('protocolList').value; - const domainInput = this.shadowRoot.getElementById('domainInput').value; - const portInput = this.shadowRoot.getElementById('portInput').value; - if ( - protocolList.length >= 4 && - domainInput.length >= 3 && - portInput.length >= 2 - ) { + const nameInput = this.shadowRoot.getElementById('nameInput').value + const protocolList = this.shadowRoot.getElementById('protocolList').value + const domainInput = this.shadowRoot.getElementById('domainInput').value + const portInput = this.shadowRoot.getElementById('portInput').value + + if (protocolList.length >= 4 && domainInput.length >= 3 && portInput.length >= 2) { const nodeObject = { name: nameInput, protocol: protocolList, domain: domainInput, port: portInput, - enableManagement: true, - }; + enableManagement: true + } - store.dispatch(doAddNode(nodeObject)); + store.dispatch(doAddNode(nodeObject)) - const haveNodes = JSON.parse(localStorage.getItem('myQortalNodes')); + const haveNodes = JSON.parse(localStorage.getItem('myQortalNodes')) if (haveNodes === null || haveNodes.length === 0) { - var savedNodes = []; - savedNodes.push(nodeObject); - localStorage.setItem( - 'myQortalNodes', - JSON.stringify(savedNodes) - ); + var savedNodes = [] + savedNodes.push(nodeObject) + localStorage.setItem('myQortalNodes', JSON.stringify(savedNodes)) - let snack3string = get('settings.snack3'); + let snack3string = get('settings.snack3') snackbar.add({ labelText: `${snack3string}`, - dismiss: true, - }); + dismiss: true + }) - this.shadowRoot.getElementById('nameInput').value = ''; - this.shadowRoot.getElementById('protocolList').value = ''; - this.shadowRoot.getElementById('domainInput').value = ''; - this.shadowRoot.getElementById('portInput').value = ''; + this.shadowRoot.getElementById('nameInput').value = '' + this.shadowRoot.getElementById('protocolList').value = '' + this.shadowRoot.getElementById('domainInput').value = '' + this.shadowRoot.getElementById('portInput').value = '' - this.shadowRoot.querySelector('#addNodeDialog').close(); + this.shadowRoot.querySelector('#addNodeDialog').close() } else { - var stored = JSON.parse(localStorage.getItem('myQortalNodes')); - stored.push(nodeObject); - localStorage.setItem('myQortalNodes', JSON.stringify(stored)); + var stored = JSON.parse(localStorage.getItem('myQortalNodes')) + stored.push(nodeObject) + localStorage.setItem('myQortalNodes', JSON.stringify(stored)) let snack3string = get('settings.snack3'); snackbar.add({ labelText: `${snack3string}`, - dismiss: true, - }); + dismiss: true + }) - this.shadowRoot.getElementById('nameInput').value = ''; - this.shadowRoot.getElementById('protocolList').value = ''; - this.shadowRoot.getElementById('domainInput').value = ''; - this.shadowRoot.getElementById('portInput').value = ''; + this.shadowRoot.getElementById('nameInput').value = '' + this.shadowRoot.getElementById('protocolList').value = '' + this.shadowRoot.getElementById('domainInput').value = '' + this.shadowRoot.getElementById('portInput').value = '' - this.shadowRoot.querySelector('#addNodeDialog').close(); + this.shadowRoot.querySelector('#addNodeDialog').close() } } } removeNode(event, index) { - event.stopPropagation(); - let stored = JSON.parse(localStorage.getItem('myQortalNodes')); - stored.splice(index, 1); - localStorage.setItem('myQortalNodes', JSON.stringify(stored)); + event.stopPropagation() + let stored = JSON.parse(localStorage.getItem('myQortalNodes')) + stored.splice(index, 1) + localStorage.setItem('myQortalNodes', JSON.stringify(stored)) store.dispatch(doRemoveNode(index)); - let snack3string = get('settings.snack6'); + let snack3string = get('settings.snack6') snackbar.add({ labelText: `${snack3string}`, - dismiss: true, - }); + dismiss: true + }) - this.shadowRoot.querySelector('#addNodeDialog').close(); + this.shadowRoot.querySelector('#addNodeDialog').close() } - editNode(index) { - const nameInput = this.shadowRoot.getElementById('nameInput').value; - const protocolList = - this.shadowRoot.getElementById('protocolList').value; - const domainInput = this.shadowRoot.getElementById('domainInput').value; - const portInput = this.shadowRoot.getElementById('portInput').value; - if ( - protocolList.length >= 4 && - domainInput.length >= 3 && - portInput.length >= 2 - ) { + editNode(index) { + const nameInput = this.shadowRoot.getElementById('nameInput').value + const protocolList = this.shadowRoot.getElementById('protocolList').value + const domainInput = this.shadowRoot.getElementById('domainInput').value + const portInput = this.shadowRoot.getElementById('portInput').value + + if (protocolList.length >= 4 && domainInput.length >= 3 && portInput.length >= 2) { const nodeObject = { name: nameInput, protocol: protocolList, domain: domainInput, port: portInput, enableManagement: true, - }; + } - let stored = JSON.parse(localStorage.getItem('myQortalNodes')); - const copyStored = [...stored]; - copyStored[index] = nodeObject; - localStorage.setItem('myQortalNodes', JSON.stringify(copyStored)); - store.dispatch(doEditNode(index, nodeObject)); - let snack3string = get('settings.snack7'); + let stored = JSON.parse(localStorage.getItem('myQortalNodes')) + const copyStored = [...stored] + copyStored[index] = nodeObject + localStorage.setItem('myQortalNodes', JSON.stringify(copyStored)) + store.dispatch(doEditNode(index, nodeObject)) + let snack3string = get('settings.snack7') snackbar.add({ labelText: `${snack3string}`, - dismiss: true, - }); - this.shadowRoot.getElementById('nameInput').value = ''; - this.shadowRoot.getElementById('protocolList').value = ''; - this.shadowRoot.getElementById('domainInput').value = ''; - this.shadowRoot.getElementById('portInput').value = ''; - this.isBeingEdited = false; - this.isBeingEditedIndex = null; + dismiss: true + }) + this.shadowRoot.getElementById('nameInput').value = '' + this.shadowRoot.getElementById('protocolList').value = '' + this.shadowRoot.getElementById('domainInput').value = '' + this.shadowRoot.getElementById('portInput').value = '' + this.isBeingEdited = false + this.isBeingEditedIndex = null - this.shadowRoot.querySelector('#addNodeDialog').close(); + this.shadowRoot.querySelector('#addNodeDialog').close() } } openImportNodesDialog() { - this.shadowRoot.querySelector('#importQortalNodesListDialog').show(); + this.shadowRoot.querySelector('#importQortalNodesListDialog').show() } closeImportNodesDialog() { - this.shadowRoot.querySelector('#importQortalNodesListDialog').close(); + this.shadowRoot.querySelector('#importQortalNodesListDialog').close() } renderExportNodesListButton() { @@ -687,8 +581,9 @@ class SettingsPage extends connect(store)(LitElement) { unelevated label="${translate('settings.export')}" @click="${() => this.exportQortalNodesList()}" - > - `; + > + + ` } exportQortalNodesList() { @@ -696,40 +591,38 @@ class SettingsPage extends connect(store)(LitElement) { const qortalNodesList = JSON.stringify( localStorage.getItem('myQortalNodes') ); - const qortalNodesListSave = JSON.parse(qortalNodesList || '[]'); + const qortalNodesListSave = JSON.parse(qortalNodesList || '[]') const blob = new Blob([qortalNodesListSave], { type: 'text/plain;charset=utf-8', }); - nodelist = 'qortal.nodes'; - this.saveFileToDisk(blob, nodelist); + nodelist = 'qortal.nodes' + this.saveFileToDisk(blob, nodelist) } async saveFileToDisk(blob, fileName) { try { const fileHandle = await self.showSaveFilePicker({ suggestedName: fileName, - types: [ - { - description: 'File', - }, - ], - }); + types: [{ + description: 'File' + }], + }) const writeFile = async (fileHandle, contents) => { - const writable = await fileHandle.createWritable(); - await writable.write(contents); - await writable.close(); + const writable = await fileHandle.createWritable() + await writable.write(contents) + await writable.close() }; writeFile(fileHandle, blob).then(() => console.log('FILE SAVED')); - let snack4string = get('settings.snack4'); + let snack4string = get('settings.snack4') snackbar.add({ labelText: `${snack4string} qortal.nodes`, - dismiss: true, - }); + dismiss: true + }) } catch (error) { if (error.name === 'AbortError') { - return; + return } - FileSaver.saveAs(blob, fileName); + FileSaver.saveAs(blob, fileName) } } @@ -741,25 +634,25 @@ class SettingsPage extends connect(store)(LitElement) { label="${translate('settings.import')}" @click="${() => this.openImportNodesDialog()}" > - `; + ` } async importQortalNodesList(file) { - localStorage.removeItem('myQortalNodes'); - const newItems = JSON.parse(file || '[]'); - localStorage.setItem('myQortalNodes', JSON.stringify(newItems)); - this.shadowRoot.querySelector('#importQortalNodesListDialog').close(); + localStorage.removeItem('myQortalNodes') + const newItems = JSON.parse(file || '[]') + localStorage.setItem('myQortalNodes', JSON.stringify(newItems)) + this.shadowRoot.querySelector('#importQortalNodesListDialog').close() - let snack5string = get('settings.snack5'); + let snack5string = get('settings.snack5') snackbar.add({ labelText: `${snack5string}`, dismiss: true, }); - localStorage.removeItem('mySelectedNode'); - localStorage.setItem('mySelectedNode', 0); + localStorage.removeItem('mySelectedNode') + localStorage.setItem('mySelectedNode', 0) - store.dispatch(doLoadNodeConfig()); + store.dispatch(doLoadNodeConfig()) } stateChanged(state) { @@ -768,9 +661,9 @@ class SettingsPage extends connect(store)(LitElement) { } } -window.customElements.define('settings-page', SettingsPage); +window.customElements.define('settings-page', SettingsPage) -const settings = document.createElement('settings-page'); -settingsDialog = document.body.appendChild(settings); +const settings = document.createElement('settings-page') +settingsDialog = document.body.appendChild(settings) -export default settingsDialog; +export default settingsDialog diff --git a/crypto/api/transactions/polls/CreatePollTransaction.js b/crypto/api/transactions/polls/CreatePollTransaction.js new file mode 100644 index 00000000..b7d8bb6c --- /dev/null +++ b/crypto/api/transactions/polls/CreatePollTransaction.js @@ -0,0 +1,111 @@ +'use strict' +import TransactionBase from '../TransactionBase.js' +import { QORT_DECIMALS } from '../../constants.js' + +export default class CreatePollTransaction extends TransactionBase { + constructor() { + super() + this.type = 8 + this._options = [] + } + + render(html) { + return html` + ${this._votedialog3} +
+ ${this._rPollName} +
+ ${this._votedialog4} +
+ ${this._rPollDesc} +
+ ${this._votedialog5} +
+ ${this._pollOptions.join(', ')} +
+ ${this._votedialog6} +
+ ${this._feeDialog}: ${this._feeDisplay} +
+ ` + } + + addOption(option) { + const optionBytes = this.constructor.utils.stringtoUTF8Array(option); + const optionLength = this.constructor.utils.int32ToBytes(optionBytes.length); + this._options.push({ length: optionLength, bytes: optionBytes }); + } + + set feeDialog(feeDialog){ + this._feeDialog = feeDialog + } + + set votedialog3(votedialog3) { + this._votedialog3 = votedialog3 + } + + set votedialog4(votedialog4) { + this._votedialog4 = votedialog4 + } + set votedialog5(votedialog5) { + this._votedialog5 = votedialog5 + } + set votedialog6(votedialog6) { + this._votedialog6 = votedialog6 + } + + set fee(fee) { + this._feeDisplay = fee + this._fee = fee * QORT_DECIMALS + this._feeBytes = this.constructor.utils.int64ToBytes(this._fee) + } + + set ownerAddress(ownerAddress) { + this._ownerAddress = ownerAddress instanceof Uint8Array ? ownerAddress : this.constructor.Base58.decode(ownerAddress) + } + + set rPollName(rPollName) { + this._rPollName = rPollName + this._rPollNameBytes = this.constructor.utils.stringtoUTF8Array(this._rPollName) + this._rPollNameLength = this.constructor.utils.int32ToBytes(this._rPollNameBytes.length); + + } + + set rPollDesc(rPollDesc) { + this._rPollDesc = rPollDesc + this._rPollDescBytes = this.constructor.utils.stringtoUTF8Array(this._rPollDesc.toLocaleLowerCase()) + this._rPollDescLength = this.constructor.utils.int32ToBytes(this._rPollDescBytes.length) + } + + set rOptions(rOptions) { + const optionsArray = rOptions[0].split(', ').map(opt => opt.trim()); + this._pollOptions = optionsArray + for (let i = 0; i < optionsArray.length; i++) { + this.addOption(optionsArray[i]); + } + + this._rNumberOfOptionsBytes = this.constructor.utils.int32ToBytes(optionsArray.length); + } + + + get params() { + const params = super.params + params.push( + this._ownerAddress, + this._rPollNameLength, + this._rPollNameBytes, + this._rPollDescLength, + this._rPollDescBytes, + this._rNumberOfOptionsBytes + ) + // Push the dynamic options + console.log('this._options', this._options) + for (let i = 0; i < this._options.length; i++) { + params.push(this._options[i].length, this._options[i].bytes); + } + + params.push(this._feeBytes); + + return params + } +} \ No newline at end of file diff --git a/crypto/api/transactions/polls/VoteOnPollTransaction.js b/crypto/api/transactions/polls/VoteOnPollTransaction.js new file mode 100644 index 00000000..9fbba6ff --- /dev/null +++ b/crypto/api/transactions/polls/VoteOnPollTransaction.js @@ -0,0 +1,65 @@ +'use strict' +import TransactionBase from '../TransactionBase.js' +import { QORT_DECIMALS } from '../../constants.js' + +export default class VoteOnPollTransaction extends TransactionBase { + constructor() { + super() + this.type = 9 + } + + render(html) { + return html` + ${this._votedialog1} +
+ ${this._rPollName} +
+ ${this._votedialog2} +
+ ${this._feeDialog}: ${this._feeDisplay} +
+ ` + } + + set feeDialog(feeDialog){ + this._feeDialog = feeDialog + } + + set votedialog1(votedialog1) { + this._votedialog1 = votedialog1 + } + + set votedialog2(votedialog2) { + this._votedialog2 = votedialog2 + } + + set fee(fee) { + this._feeDisplay = fee + this._fee = fee * QORT_DECIMALS + this._feeBytes = this.constructor.utils.int64ToBytes(this._fee) + } + + + set rPollName(rPollName) { + this._rPollName = rPollName + this._rPollNameBytes = this.constructor.utils.stringtoUTF8Array(this._rPollName) + this._rPollNameLength = this.constructor.utils.int32ToBytes(this._rPollNameBytes.length) + } + + + set rOptionIndex(rOptionIndex) { + this._rOptionIndex = rOptionIndex + this._rOptionIndexBytes = this.constructor.utils.int32ToBytes(this._rOptionIndex) + } + + get params() { + const params = super.params + params.push( + this._rPollNameLength, + this._rPollNameBytes, + this._rOptionIndexBytes, + this._feeBytes + ) + return params + } +} \ No newline at end of file diff --git a/crypto/api/transactions/transactions.js b/crypto/api/transactions/transactions.js index 0423d3ae..4f0e92fd 100644 --- a/crypto/api/transactions/transactions.js +++ b/crypto/api/transactions/transactions.js @@ -23,6 +23,8 @@ import RewardShareTransaction from './reward-share/RewardShareTransaction.js' import RemoveRewardShareTransaction from './reward-share/RemoveRewardShareTransaction.js' import TransferPrivsTransaction from './TransferPrivsTransaction.js' import DeployAtTransaction from './DeployAtTransaction.js' +import VoteOnPollTransaction from './polls/VoteOnPollTransaction.js' +import CreatePollTransaction from './polls/CreatePollTransaction.js' export const transactionTypes = { 2: PaymentTransaction, @@ -31,6 +33,8 @@ export const transactionTypes = { 5: SellNameTransacion, 6: CancelSellNameTransacion, 7: BuyNameTransacion, + 8: CreatePollTransaction, + 9: VoteOnPollTransaction, 16: DeployAtTransaction, 17: MessageTransaction, 18: ChatTransaction, diff --git a/locales/et.json b/locales/et.json index 159bb467..7ac4733b 100644 --- a/locales/et.json +++ b/locales/et.json @@ -1,39 +1,39 @@ { "__locale_name__": "Estonian", - "electron_translate_1": "Näita Qortal KL-st", - "electron_translate_2": "Lahku", - "electron_translate_3": "Uuendus saadaval", - "electron_translate_4": "Uus Qortal KL versioon saadaval. Kas soovid alla laadida ?", - "electron_translate_5": "PAIGALDA NÜÜD", - "electron_translate_6": "EHK HILJEM", - "electron_translate_7": "Uuendus valmis paigaldamiseks", - "electron_translate_8": "Uus Qortal KL versioon on alla laetud.", - "electron_translate_9": "Klõpsa PAIGALDA NÜÜD uuendamaks, EHK HILJEM et mitte KL-st uuendada.", - "electron_translate_10": "Ajutine uuendamise tõrge. Proovin hiljem uuesti.", + "electron_translate_1": "Näita Qortal UI-d", + "electron_translate_2": "Sulge", + "electron_translate_3": "Uuendus on saadaval", + "electron_translate_4": "Uus Qortal UI versioon on saadaval. Kas soovid selle alla laadida?", + "electron_translate_5": "PAIGALDA KOHE", + "electron_translate_6": "HILJEM", + "electron_translate_7": "Uuendus on paigaldamiseks valmis", + "electron_translate_8": "Uus Qortali kasutajaliidese versioon on alla laetud.", + "electron_translate_9": "Vali PAIGALDA NÜÜD, et uuendada UI versioon või HILJEM, kui ei soovi praegu uuendada.", + "electron_translate_10": "Ajutine uuendamise tõrge. Proovime hiljem uuesti.", "electron_translate_11": "LAE UUENDUS ALLA", - "electron_translate_12": "See laaditakse taustal alla ⌛️!", - "electron_translate_13": "KÄIVITA QORTAL TUUM", + "electron_translate_12": "Allalaadimine toimub nüüd taustal ⌛️!", + "electron_translate_13": "KÄIVITA QORTALI TUUM", "electron_translate_14": "TÄNAN EI", - "electron_translate_15": "Qortal Tuum EI tööta selles süsteemis", - "electron_translate_16": "Qortal KL on tuvastanud, et Qortal Tuum EI tööta selles süsteemis", - "electron_translate_17": "Klõpsake selles süsteemis Qortal Tuuma käivitamiseks nuppu KÄIVITA QORTAL TUUM VÕI klõpsake nuppu Tänan EI, et selles süsteemis käivitamine vahele jätta", - "electron_translate_18": "Laadi alla QORTAL TUUM", + "electron_translate_15": "Qortali Tuum pole käivitatud", + "electron_translate_16": "Qortal UI tuvastas, et Qortali Tuum ei tööta hetkel", + "electron_translate_17": "Klõpsa Tuuma käivitamiseks KÄIVITA QORTALI TUUM või vali TÄNAN EI, kui ei soovi seda hetkel teha", + "electron_translate_18": "LAADI ALLA QORTALI TUUM", "electron_translate_19": "TÄNAN EI", - "electron_translate_20": "Qortal Tuuma EI tuvastata", - "electron_translate_21": "Qortali kasutajaliides tuvastas, et Qortal Tuum EI ole sellesse süsteemi installitud (vaikeasukohas).", - "electron_translate_22": "Tuuma allalaadimiseks ja installimiseks (vaikeasukohta) klõpsake nuppu LAADI ALLA QORTAL TUUM VÕI klõpsake allalaadimise ja installimise vahelejätmiseks nuppu TÄNAN EI.", - "electron_translate_23": "Laadi alla JAVA", + "electron_translate_20": "Qortal Tuuma ei leidu", + "electron_translate_21": "Qortali kasutajaliides (UI) tuvastas, et Qortali Tuuma programmi faile pole arvutisse paigaldatud, vähemalt mitte tüüpilisse Qortali kausta.", + "electron_translate_22": "Tuuma failide allalaadimiseks ja vastavasse Qortali kausta paigaldamiseks vali LAADI ALLA QORTAL TUUM. Muul juhul vali TÄNAN EI.", + "electron_translate_23": "LAADI ALLA JAVA", "electron_translate_24": "TÄNAN EI", "electron_translate_25": "Java pole paigaldatud.", - "electron_translate_26": "Qortali kasutajaliides tuvastas, et Java pole teie süsteemi installitud.", - "electron_translate_27": "Java allalaadimiseks ja installimiseks klõpsake nuppu Laadi alla JAVA või TÄNAN EI, kui soovite seda alla laadida ja installida.", - "electron_translate_28": "Ära küsi enam kunagi", - "electron_translate_29": "MUUDA SEADET", + "electron_translate_26": "Qortali kasutajaliides (UI) tuvastas, et Java pole teie arvutisse paigaldatud. Aga seda on vaja.", + "electron_translate_27": "Java allalaadimiseks ja automaatseks paigaldamiseks klõpsa nuppu LAADI ALLA JAVA.", + "electron_translate_28": "Ära küsi rohkem Tuuma oleku kohta", + "electron_translate_29": "SALVESTA", "electron_translate_30": "TÜHISTA", - "electron_translate_31": "Käivitage tuumikseaded", - "electron_translate_32": "Muutke tuuma käivitamise küsimise praegust olekut, kui see ei tööta", - "electron_translate_33": "(Märkige või tühjendage märkeruut, ära küsi enam mitte kunagi)", + "electron_translate_31": "Tuuma käivitamise säte", + "electron_translate_32": "Siit saad muuta sätet selle osas, et kas tahad UI käivitamisel saad Tuuma käivitamise kohta märguande-küsimuse, juhul kui Tuum ei tööta", + "electron_translate_33": "(Märgi linnuke kasti, kui ei taha edaspidi saada küsimust Tuuma kohta)", "electron_translate_34": "Seaded", "electron_translate_35": "Kopeeri", "electron_translate_36": "Aseta", @@ -41,8 +41,6 @@ "electron_translate_38": "Suurenda", "electron_translate_39": "Vähenda", "electron_translate_40": "Tegelik suurus", - "electron_translate_41": "Lülitage täisekraan sisse", - "electron_translate_42": "Uus KL eksemplar", - "electron_translate_43": "Värskenduste otsimine!", - "electron_translate_44": "KL kontrollib taustal, kas uus versioon on saadaval, ja laadib selle alla." -} \ No newline at end of file + "electron_translate_41": "Lülita täisekraanile", + "electron_translate_42": "Uus UI versioon" +} diff --git a/package-lock.json b/package-lock.json index 1c1fab36..1b777009 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,7 +12,7 @@ "@hapi/hapi": "21.3.2", "@hapi/inert": "7.1.0", "@lit-labs/motion": "1.0.4", - "@popperjs/core": "^2.11.8", + "@popperjs/core": "2.11.8", "@tiptap/core": "2.0.4", "@tiptap/extension-highlight": "2.0.4", "@tiptap/extension-image": "2.0.4", @@ -26,7 +26,7 @@ "buffer": "6.0.3", "compressorjs": "1.2.1", "crypto-js": "4.1.1", - "electron-dl": "3.5.0", + "electron-dl": "3.5.1", "electron-log": "4.4.8", "electron-store": "8.1.0", "electron-updater": "6.1.4", @@ -45,12 +45,12 @@ "prosemirror-schema-list": "1.3.0", "prosemirror-state": "1.4.3", "prosemirror-transform": "1.8.0", - "prosemirror-view": "1.32.0", - "sass": "1.68.0", + "prosemirror-view": "1.32.1", + "sass": "1.69.4", "short-unique-id": "5.0.3" }, "devDependencies": { - "@babel/core": "7.23.0", + "@babel/core": "7.23.2", "@material/mwc-button": "0.27.0", "@material/mwc-checkbox": "0.27.0", "@material/mwc-dialog": "0.27.0", @@ -86,28 +86,28 @@ "@polymer/paper-spinner": "3.0.2", "@polymer/paper-toast": "3.0.1", "@polymer/paper-tooltip": "3.0.1", - "@qortal/rollup-plugin-web-worker-loader": "1.6.4", - "@rollup/plugin-alias": "5.0.0", - "@rollup/plugin-babel": "6.0.3", - "@rollup/plugin-commonjs": "25.0.4", - "@rollup/plugin-node-resolve": "15.2.1", - "@rollup/plugin-replace": "5.0.2", - "@rollup/plugin-terser": "0.4.3", - "@vaadin/avatar": "24.1.9", - "@vaadin/button": "24.1.9", - "@vaadin/grid": "24.1.9", - "@vaadin/icons": "24.1.9", - "@vaadin/password-field": "24.1.9", - "@vaadin/tooltip": "24.1.10", - "@zip.js/zip.js": "2.7.29", + "@qortal/rollup-plugin-web-worker-loader": "1.6.5", + "@rollup/plugin-alias": "5.0.1", + "@rollup/plugin-babel": "6.0.4", + "@rollup/plugin-commonjs": "25.0.7", + "@rollup/plugin-node-resolve": "15.2.3", + "@rollup/plugin-replace": "5.0.4", + "@rollup/plugin-terser": "0.4.4", + "@vaadin/avatar": "24.2.0", + "@vaadin/button": "24.2.0", + "@vaadin/grid": "24.2.0", + "@vaadin/icons": "24.2.0", + "@vaadin/password-field": "24.2.0", + "@vaadin/tooltip": "24.2.0", + "@zip.js/zip.js": "2.7.30", "axios": "1.5.1", - "electron": "26.2.4", + "electron": "27.0.2", "electron-builder": "24.6.4", "electron-packager": "17.1.2", "epml": "0.3.3", - "eslint": "^8.50.0", - "eslint-plugin-lit": "^1.9.1", - "eslint-plugin-wc": "^2.0.3", + "eslint": "8.52.0", + "eslint-plugin-lit": "1.9.1", + "eslint-plugin-wc": "2.0.4", "file-saver": "2.0.5", "highcharts": "11.1.0", "html-escaper": "3.0.3", @@ -118,14 +118,14 @@ "pwa-helpers": "0.9.1", "redux": "4.2.1", "redux-thunk": "2.4.2", - "rollup": "3.29.4", + "rollup": "4.1.4", "rollup-plugin-node-globals": "1.4.0", "rollup-plugin-progress": "1.1.2", "rollup-plugin-scss": "3.0.0", "shelljs": "0.8.5" }, "engines": { - "node": ">=18.16.1" + "node": ">=18.17.1" } }, "node_modules/@aashutoshrathi/word-wrap": { @@ -164,18 +164,18 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.20.tgz", - "integrity": "sha512-BQYjKbpXjoXwFW5jGqiizJQQT/aC7pFm9Ok1OWssonuguICi264lbgMzRp2ZMmRSlfkX6DsWDDcsrctK8Rwfiw==", + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.2.tgz", + "integrity": "sha512-0S9TQMmDHlqAZ2ITT95irXKfxN9bncq8ZCoJhun3nHL/lLUxd2NKBJYoNGWH7S0hz6fRQwWlAWn/ILM0C70KZQ==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.0.tgz", - "integrity": "sha512-97z/ju/Jy1rZmDxybphrBuI+jtJjFVoz7Mr9yUQVVVi+DNZE333uFQeMOqcCIy1x3WYBIbWftUSLmbNXNT7qFQ==", + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.2.tgz", + "integrity": "sha512-n7s51eWdaWZ3vGT2tD4T7J6eJs3QoBXydv7vkUM06Bf1cbVD2Kc2UrkzhiQwobfV7NwOnQXYL7UBJ5VPU+RGoQ==", "dev": true, "dependencies": { "@ampproject/remapping": "^2.2.0", @@ -183,10 +183,10 @@ "@babel/generator": "^7.23.0", "@babel/helper-compilation-targets": "^7.22.15", "@babel/helper-module-transforms": "^7.23.0", - "@babel/helpers": "^7.23.0", + "@babel/helpers": "^7.23.2", "@babel/parser": "^7.23.0", "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.0", + "@babel/traverse": "^7.23.2", "@babel/types": "^7.23.0", "convert-source-map": "^2.0.0", "debug": "^4.1.0", @@ -350,13 +350,13 @@ } }, "node_modules/@babel/helpers": { - "version": "7.23.1", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.1.tgz", - "integrity": "sha512-chNpneuK18yW5Oxsr+t553UZzzAs3aZnFm4bxhebsNTeshrC95yA7l5yl7GBAG+JG1rF0F7zzD2EixK9mWSDoA==", + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.2.tgz", + "integrity": "sha512-lzchcp8SjTSVe/fPmLwtWVBFC7+Tbn8LGHDVfDp9JGxpAY5opSaEFgt8UQvrnECWOTdji2mOWMz1rOhkHscmGQ==", "dev": true, "dependencies": { "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.0", + "@babel/traverse": "^7.23.2", "@babel/types": "^7.23.0" }, "engines": { @@ -390,9 +390,9 @@ } }, "node_modules/@babel/runtime": { - "version": "7.23.1", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.1.tgz", - "integrity": "sha512-hC2v6p8ZSI/W0HUzh3V8C5g+NwSKzKPtJwSpTjwl0o297GP9+ZLQSkdvHz46CM3LqyoXxq+5G9komY+eSqSO0g==", + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.2.tgz", + "integrity": "sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg==", "dev": true, "dependencies": { "regenerator-runtime": "^0.14.0" @@ -416,9 +416,9 @@ } }, "node_modules/@babel/traverse": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.0.tgz", - "integrity": "sha512-t/QaEvyIoIkwzpiZ7aoSKK8kObQYeF7T2v+dazAYCb8SXtp58zEVkWW7zAnju8FNKNdr4ScAOEDmMItbyOmEYw==", + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz", + "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==", "dev": true, "dependencies": { "@babel/code-frame": "^7.22.13", @@ -757,9 +757,9 @@ } }, "node_modules/@eslint-community/regexpp": { - "version": "4.8.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.8.1.tgz", - "integrity": "sha512-PWiOzLIUAjN/w5K17PoF4n6sKBw0gqLHPhywmYHP4t1VFQQVYeb1yWsJwnMVEMl3tUHME7X/SJPZLmtG7XBDxQ==", + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.9.1.tgz", + "integrity": "sha512-Y27x+MBLjXa+0JWDhykM3+JE+il3kHKAEqabfEWq3SDhZjLYb6/BHL/JKFnH3fe207JaXkyDo685Oc2Glt6ifA==", "dev": true, "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" @@ -799,9 +799,9 @@ } }, "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.22.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.22.0.tgz", - "integrity": "sha512-H1Ddc/PbZHTDVJSnj8kWptIRSD6AM3pK+mKytuIVF4uoBV7rshFlhhvA58ceJ5wp3Er58w6zj7bykMpYXt3ETw==", + "version": "13.23.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", + "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -838,9 +838,9 @@ } }, "node_modules/@eslint/js": { - "version": "8.50.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.50.0.tgz", - "integrity": "sha512-NCC3zz2+nvYd+Ckfh87rA47zfu2QsQpvc6k1yzTk+b9KzRj0wkGa8LSoGOXN6Zv4lRf/EIoZ80biDh9HOI+RNQ==", + "version": "8.52.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.52.0.tgz", + "integrity": "sha512-mjZVbpaeMZludF2fsWLD0Z9gCref1Tk4i9+wddjRvpUNqqcndPkBD09N/Mapey0b3jaXbLm2kICwFv2E64QinA==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -892,9 +892,9 @@ } }, "node_modules/@hapi/accept": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@hapi/accept/-/accept-6.0.2.tgz", - "integrity": "sha512-xaTLf29Zeph/B32hekmgxLFsEPuX1xQYyZu0gJ4ZCHKU6nXmBRXfBymtWNEK0souOJcX2XHWUaZU6JzccuuMpg==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@hapi/accept/-/accept-6.0.3.tgz", + "integrity": "sha512-p72f9k56EuF0n3MwlBNThyVE5PXX40g+aQh+C/xbKrfzahM2Oispv3AXmOIU51t3j77zay1qrX7IIziZXspMlw==", "dependencies": { "@hapi/boom": "^10.0.1", "@hapi/hoek": "^11.0.2" @@ -1200,12 +1200,12 @@ } }, "node_modules/@humanwhocodes/config-array": { - "version": "0.11.11", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.11.tgz", - "integrity": "sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==", + "version": "0.11.13", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", + "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==", "dev": true, "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", + "@humanwhocodes/object-schema": "^2.0.1", "debug": "^4.1.1", "minimatch": "^3.0.5" }, @@ -1249,9 +1249,9 @@ } }, "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz", + "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==", "dev": true }, "node_modules/@jridgewell/gen-mapping": { @@ -1303,9 +1303,9 @@ "dev": true }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.19", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz", - "integrity": "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==", + "version": "0.3.20", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", + "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", "dev": true, "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", @@ -1321,9 +1321,9 @@ } }, "node_modules/@lit-labs/ssr-dom-shim": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.1.1.tgz", - "integrity": "sha512-kXOeFbfCm4fFf2A3WwVEeQj55tMZa8c8/f9AKHMobQMkzNUfUj+antR3fRPaZJawsa1aZiP/Da3ndpZrwEe4rQ==" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.1.2.tgz", + "integrity": "sha512-jnOD+/+dSrfTWYfSXBXlo5l5f0q1UuJo3tkbMDCYA2lKUYq79jaxqtGEvnRoh049nt1vdo1+45RinipU6FGY2g==" }, "node_modules/@lit/reactive-element": { "version": "1.6.3", @@ -2803,12 +2803,12 @@ } }, "node_modules/@qortal/rollup-plugin-web-worker-loader": { - "version": "1.6.4", - "resolved": "https://registry.npmjs.org/@qortal/rollup-plugin-web-worker-loader/-/rollup-plugin-web-worker-loader-1.6.4.tgz", - "integrity": "sha512-4E5KnOVLYVp4bp4wKIG4qqeOc5nGzUR+2ojuGlLw3zl2khYQroH/KRaLvTULJjJ3U+KVBOxcrt0iSbKUD6mAyw==", + "version": "1.6.5", + "resolved": "https://registry.npmjs.org/@qortal/rollup-plugin-web-worker-loader/-/rollup-plugin-web-worker-loader-1.6.5.tgz", + "integrity": "sha512-TY2/RyOzFDfTCzROgaNjgJqIHZ1/M38aGxapEfYJBGofymjYO0YC7cXlHR+YZsdmWqU0gGgTb/i1wiZKsyNzTw==", "dev": true, "peerDependencies": { - "rollup": "^3.17.1" + "rollup": "^4.0.0" } }, "node_modules/@remirror/core-constants": { @@ -2845,9 +2845,9 @@ } }, "node_modules/@rollup/plugin-alias": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@rollup/plugin-alias/-/plugin-alias-5.0.0.tgz", - "integrity": "sha512-l9hY5chSCjuFRPsnRm16twWBiSApl2uYFLsepQYwtBuAxNMQ/1dJqADld40P0Jkqm65GRTLy/AC6hnpVebtLsA==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-alias/-/plugin-alias-5.0.1.tgz", + "integrity": "sha512-JObvbWdOHoMy9W7SU0lvGhDtWq9PllP5mjpAy+TUslZG/WzOId9u80Hsqq1vCUn9pFJ0cxpdcnAv+QzU2zFH3Q==", "dev": true, "dependencies": { "slash": "^4.0.0" @@ -2856,7 +2856,7 @@ "node": ">=14.0.0" }, "peerDependencies": { - "rollup": "^1.20.0||^2.0.0||^3.0.0" + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" }, "peerDependenciesMeta": { "rollup": { @@ -2865,9 +2865,9 @@ } }, "node_modules/@rollup/plugin-babel": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-6.0.3.tgz", - "integrity": "sha512-fKImZKppa1A/gX73eg4JGo+8kQr/q1HBQaCGKECZ0v4YBBv3lFqi14+7xyApECzvkLTHCifx+7ntcrvtBIRcpg==", + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-6.0.4.tgz", + "integrity": "sha512-YF7Y52kFdFT/xVSuVdjkV5ZdX/3YtmX0QulG+x0taQOtJdHYzVU61aSSkAgVJ7NOv6qPkIYiJSgSWWN/DM5sGw==", "dev": true, "dependencies": { "@babel/helper-module-imports": "^7.18.6", @@ -2879,7 +2879,7 @@ "peerDependencies": { "@babel/core": "^7.0.0", "@types/babel__core": "^7.1.9", - "rollup": "^1.20.0||^2.0.0||^3.0.0" + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" }, "peerDependenciesMeta": { "@types/babel__core": { @@ -2891,9 +2891,9 @@ } }, "node_modules/@rollup/plugin-commonjs": { - "version": "25.0.4", - "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-25.0.4.tgz", - "integrity": "sha512-L92Vz9WUZXDnlQQl3EwbypJR4+DM2EbsO+/KOcEkP4Mc6Ct453EeDB2uH9lgRwj4w5yflgNpq9pHOiY8aoUXBQ==", + "version": "25.0.7", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-25.0.7.tgz", + "integrity": "sha512-nEvcR+LRjEjsaSsc4x3XZfCCvZIaSMenZu/OiwOKGN2UhQpAYI7ru7czFvyWbErlpoGjnSX3D5Ch5FcMA3kRWQ==", "dev": true, "dependencies": { "@rollup/pluginutils": "^5.0.1", @@ -2901,13 +2901,13 @@ "estree-walker": "^2.0.2", "glob": "^8.0.3", "is-reference": "1.2.1", - "magic-string": "^0.27.0" + "magic-string": "^0.30.3" }, "engines": { "node": ">=14.0.0" }, "peerDependencies": { - "rollup": "^2.68.0||^3.0.0" + "rollup": "^2.68.0||^3.0.0||^4.0.0" }, "peerDependenciesMeta": { "rollup": { @@ -2916,9 +2916,9 @@ } }, "node_modules/@rollup/plugin-node-resolve": { - "version": "15.2.1", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.2.1.tgz", - "integrity": "sha512-nsbUg588+GDSu8/NS8T4UAshO6xeaOfINNuXeVHcKV02LJtoRaM1SiOacClw4kws1SFiNhdLGxlbMY9ga/zs/w==", + "version": "15.2.3", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.2.3.tgz", + "integrity": "sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ==", "dev": true, "dependencies": { "@rollup/pluginutils": "^5.0.1", @@ -2932,7 +2932,7 @@ "node": ">=14.0.0" }, "peerDependencies": { - "rollup": "^2.78.0||^3.0.0" + "rollup": "^2.78.0||^3.0.0||^4.0.0" }, "peerDependenciesMeta": { "rollup": { @@ -2941,19 +2941,19 @@ } }, "node_modules/@rollup/plugin-replace": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-5.0.2.tgz", - "integrity": "sha512-M9YXNekv/C/iHHK+cvORzfRYfPbq0RDD8r0G+bMiTXjNGKulPnCT9O3Ss46WfhI6ZOCgApOP7xAdmCQJ+U2LAA==", + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-5.0.4.tgz", + "integrity": "sha512-E2hmRnlh09K8HGT0rOnnri9OTh+BILGr7NVJGB30S4E3cLRn3J0xjdiyOZ74adPs4NiAMgrjUMGAZNJDBgsdmQ==", "dev": true, "dependencies": { "@rollup/pluginutils": "^5.0.1", - "magic-string": "^0.27.0" + "magic-string": "^0.30.3" }, "engines": { "node": ">=14.0.0" }, "peerDependencies": { - "rollup": "^1.20.0||^2.0.0||^3.0.0" + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" }, "peerDependenciesMeta": { "rollup": { @@ -2962,9 +2962,9 @@ } }, "node_modules/@rollup/plugin-terser": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@rollup/plugin-terser/-/plugin-terser-0.4.3.tgz", - "integrity": "sha512-EF0oejTMtkyhrkwCdg0HJ0IpkcaVg1MMSf2olHb2Jp+1mnLM04OhjpJWGma4HobiDTF0WCyViWuvadyE9ch2XA==", + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/@rollup/plugin-terser/-/plugin-terser-0.4.4.tgz", + "integrity": "sha512-XHeJC5Bgvs8LfukDwWZp7yeqin6ns8RTl2B9avbejt6tZqsqvVoWI7ZTQrcNsfKEDWBTnTxM8nMDkO2IFFbd0A==", "dev": true, "dependencies": { "serialize-javascript": "^6.0.1", @@ -2975,7 +2975,7 @@ "node": ">=14.0.0" }, "peerDependencies": { - "rollup": "^2.x || ^3.x" + "rollup": "^2.0.0||^3.0.0||^4.0.0" }, "peerDependenciesMeta": { "rollup": { @@ -2984,9 +2984,9 @@ } }, "node_modules/@rollup/pluginutils": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.4.tgz", - "integrity": "sha512-0KJnIoRI8A+a1dqOYLxH8vBf8bphDmty5QvIm2hqm7oFCFYKCAZWWd2hXgMibaPsNDhI0AtpYfQZJG47pt/k4g==", + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.5.tgz", + "integrity": "sha512-6aEYR910NyP73oHiJglti74iRyOwgFU4x3meH/H8OJx6Ry0j6cOVZ5X/wTvub7G7Ao6qaHBEaNsV3GLJkSsF+Q==", "dev": true, "dependencies": { "@types/estree": "^1.0.0", @@ -2997,7 +2997,7 @@ "node": ">=14.0.0" }, "peerDependencies": { - "rollup": "^1.20.0||^2.0.0||^3.0.0" + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" }, "peerDependenciesMeta": { "rollup": { @@ -3005,6 +3005,162 @@ } } }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.1.4.tgz", + "integrity": "sha512-WlzkuFvpKl6CLFdc3V6ESPt7gq5Vrimd2Yv9IzKXdOpgbH4cdDSS1JLiACX8toygihtH5OlxyQzhXOph7Ovlpw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.1.4.tgz", + "integrity": "sha512-D1e+ABe56T9Pq2fD+R3ybe1ylCDzu3tY4Qm2Mj24R9wXNCq35+JbFbOpc2yrroO2/tGhTobmEl2Bm5xfE/n8RA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.1.4.tgz", + "integrity": "sha512-7vTYrgEiOrjxnjsgdPB+4i7EMxbVp7XXtS+50GJYj695xYTTEMn3HZVEvgtwjOUkAP/Q4HDejm4fIAjLeAfhtg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.1.4.tgz", + "integrity": "sha512-eGJVZScKSLZkYjhTAESCtbyTBq9SXeW9+TX36ki5gVhDqJtnQ5k0f9F44jNK5RhAMgIj0Ht9+n6HAgH0gUUyWQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.1.4.tgz", + "integrity": "sha512-HnigYSEg2hOdX1meROecbk++z1nVJDpEofw9V2oWKqOWzTJlJf1UXVbDE6Hg30CapJxZu5ga4fdAQc/gODDkKg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.1.4.tgz", + "integrity": "sha512-TzJ+N2EoTLWkaClV2CUhBlj6ljXofaYzF/R9HXqQ3JCMnCHQZmQnbnZllw7yTDp0OG5whP4gIPozR4QiX+00MQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.1.4.tgz", + "integrity": "sha512-aVPmNMdp6Dlo2tWkAduAD/5TL/NT5uor290YvjvFvCv0Q3L7tVdlD8MOGDL+oRSw5XKXKAsDzHhUOPUNPRHVTQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.1.4.tgz", + "integrity": "sha512-77Fb79ayiDad0grvVsz4/OB55wJRyw9Ao+GdOBA9XywtHpuq5iRbVyHToGxWquYWlEf6WHFQQnFEttsAzboyKg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.1.4.tgz", + "integrity": "sha512-/t6C6niEQTqmQTVTD9TDwUzxG91Mlk69/v0qodIPUnjjB3wR4UA3klg+orR2SU3Ux2Cgf2pWPL9utK80/1ek8g==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.1.4.tgz", + "integrity": "sha512-ZY5BHHrOPkMbCuGWFNpJH0t18D2LU6GMYKGaqaWTQ3CQOL57Fem4zE941/Ek5pIsVt70HyDXssVEFQXlITI5Gg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.1.4.tgz", + "integrity": "sha512-XG2mcRfFrJvYyYaQmvCIvgfkaGinfXrpkBuIbJrTl9SaIQ8HumheWTIwkNz2mktCKwZfXHQNpO7RgXLIGQ7HXA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.1.4.tgz", + "integrity": "sha512-ANFqWYPwkhIqPmXw8vm0GpBEHiPpqcm99jiiAp71DbCSqLDhrtr019C5vhD0Bw4My+LmMvciZq6IsWHqQpl2ZQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, "node_modules/@sindresorhus/is": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", @@ -3042,9 +3198,9 @@ } }, "node_modules/@tiptap/extension-blockquote": { - "version": "2.1.11", - "resolved": "https://registry.npmjs.org/@tiptap/extension-blockquote/-/extension-blockquote-2.1.11.tgz", - "integrity": "sha512-IEVe3goA0rgp1G8Wm733BSRJiy71Vh2fmTCyZKWmc2A6GREVSy1X3fCvAo6pMENRObhjIoaBQUCE3p4iJYOxqg==", + "version": "2.1.12", + "resolved": "https://registry.npmjs.org/@tiptap/extension-blockquote/-/extension-blockquote-2.1.12.tgz", + "integrity": "sha512-Qb3YRlCfugx9pw7VgLTb+jY37OY4aBJeZnqHzx4QThSm13edNYjasokbX0nTwL1Up4NPTcY19JUeHt6fVaVVGg==", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -3054,9 +3210,9 @@ } }, "node_modules/@tiptap/extension-bold": { - "version": "2.1.11", - "resolved": "https://registry.npmjs.org/@tiptap/extension-bold/-/extension-bold-2.1.11.tgz", - "integrity": "sha512-vhdkBtvd029ufOYt2ug49Gz+RLKSczO/CCqKYBqBmpIpsifyK7M6jkgamvAQg3c/vYk0LNcKiL2dp0Jp7L+5Gw==", + "version": "2.1.12", + "resolved": "https://registry.npmjs.org/@tiptap/extension-bold/-/extension-bold-2.1.12.tgz", + "integrity": "sha512-AZGxIxcGU1/y6V2YEbKsq6BAibL8yQrbRm6EdcBnby41vj1WziewEKswhLGmZx5IKM2r2ldxld03KlfSIlKQZg==", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -3066,9 +3222,9 @@ } }, "node_modules/@tiptap/extension-bullet-list": { - "version": "2.1.11", - "resolved": "https://registry.npmjs.org/@tiptap/extension-bullet-list/-/extension-bullet-list-2.1.11.tgz", - "integrity": "sha512-SOOVH2aSmdMtjWL7TTLbN72xbAFz2G5jifT4UCXb7Qx6LsyhNCyDCu0ukOW8rSosGoSdmBXxAsD9sBJ1jEOmZw==", + "version": "2.1.12", + "resolved": "https://registry.npmjs.org/@tiptap/extension-bullet-list/-/extension-bullet-list-2.1.12.tgz", + "integrity": "sha512-vtD8vWtNlmAZX8LYqt2yU9w3mU9rPCiHmbp4hDXJs2kBnI0Ju/qAyXFx6iJ3C3XyuMnMbJdDI9ee0spAvFz7cQ==", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -3078,9 +3234,9 @@ } }, "node_modules/@tiptap/extension-code": { - "version": "2.1.11", - "resolved": "https://registry.npmjs.org/@tiptap/extension-code/-/extension-code-2.1.11.tgz", - "integrity": "sha512-G0UEbMFunujy/F86yHN0/dumPLbwTis9C+6IQv1XRPNsV28U0MgxBhlPcJUgyO5lwuleePDxiBVcRv2XrysgKw==", + "version": "2.1.12", + "resolved": "https://registry.npmjs.org/@tiptap/extension-code/-/extension-code-2.1.12.tgz", + "integrity": "sha512-CRiRq5OTC1lFgSx6IMrECqmtb93a0ZZKujEnaRhzWliPBjLIi66va05f/P1vnV6/tHaC3yfXys6dxB5A4J8jxw==", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -3090,9 +3246,9 @@ } }, "node_modules/@tiptap/extension-code-block": { - "version": "2.1.11", - "resolved": "https://registry.npmjs.org/@tiptap/extension-code-block/-/extension-code-block-2.1.11.tgz", - "integrity": "sha512-QhmhCCWqg/5qLXpZ3sl2A0rqJqV8zMOegcxUFaqcJMOqNbsuHcRgc9C+1hWSVLbCmstB7M6sgF02QpTBOkYHxg==", + "version": "2.1.12", + "resolved": "https://registry.npmjs.org/@tiptap/extension-code-block/-/extension-code-block-2.1.12.tgz", + "integrity": "sha512-RXtSYCVsnk8D+K80uNZShClfZjvv1EgO42JlXLVGWQdIgaNyuOv/6I/Jdf+ZzhnpsBnHufW+6TJjwP5vJPSPHA==", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -3103,9 +3259,9 @@ } }, "node_modules/@tiptap/extension-document": { - "version": "2.1.11", - "resolved": "https://registry.npmjs.org/@tiptap/extension-document/-/extension-document-2.1.11.tgz", - "integrity": "sha512-L/iLuqxvJep33ycCFNrnUhdR0VtcZyeNnqB+ZvVHzEwLoRud+LBy44lpEdBrAFsvRm3DG14m/FGYL+TfaD0vxA==", + "version": "2.1.12", + "resolved": "https://registry.npmjs.org/@tiptap/extension-document/-/extension-document-2.1.12.tgz", + "integrity": "sha512-0QNfAkCcFlB9O8cUNSwTSIQMV9TmoEhfEaLz/GvbjwEq4skXK3bU+OQX7Ih07waCDVXIGAZ7YAZogbvrn/WbOw==", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -3115,9 +3271,9 @@ } }, "node_modules/@tiptap/extension-dropcursor": { - "version": "2.1.11", - "resolved": "https://registry.npmjs.org/@tiptap/extension-dropcursor/-/extension-dropcursor-2.1.11.tgz", - "integrity": "sha512-MiJepRpHlu93aInOMW8NeRCvm9VE5rL0MA9TONY/IspJFGFIqonc/01J6t33JQa3Xh/x3xAfis4nKa/UazeVJw==", + "version": "2.1.12", + "resolved": "https://registry.npmjs.org/@tiptap/extension-dropcursor/-/extension-dropcursor-2.1.12.tgz", + "integrity": "sha512-0tT/q8nL4NBCYPxr9T0Brck+RQbWuczm9nV0bnxgt0IiQXoRHutfPWdS7GA65PTuVRBS/3LOco30fbjFhkfz/A==", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -3128,9 +3284,9 @@ } }, "node_modules/@tiptap/extension-gapcursor": { - "version": "2.1.11", - "resolved": "https://registry.npmjs.org/@tiptap/extension-gapcursor/-/extension-gapcursor-2.1.11.tgz", - "integrity": "sha512-P/xjyhSOVyop5XXbNtRPgrooQrSlpYblwR67ClI9FAC7uQliuOwi5VcndmEItjWWSe85kJa2IHjOS7mLYvJe8A==", + "version": "2.1.12", + "resolved": "https://registry.npmjs.org/@tiptap/extension-gapcursor/-/extension-gapcursor-2.1.12.tgz", + "integrity": "sha512-zFYdZCqPgpwoB7whyuwpc8EYLYjUE5QYKb8vICvc+FraBUDM51ujYhFSgJC3rhs8EjI+8GcK8ShLbSMIn49YOQ==", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -3141,9 +3297,9 @@ } }, "node_modules/@tiptap/extension-hard-break": { - "version": "2.1.11", - "resolved": "https://registry.npmjs.org/@tiptap/extension-hard-break/-/extension-hard-break-2.1.11.tgz", - "integrity": "sha512-qhiPe6FA0b6PPb/ITlgSnY0l9tEVmXZ9e7eSjvks12ORfqL/dofSCLtChHWvhZxugzo92xejG2hXLi6lyOLbkg==", + "version": "2.1.12", + "resolved": "https://registry.npmjs.org/@tiptap/extension-hard-break/-/extension-hard-break-2.1.12.tgz", + "integrity": "sha512-nqKcAYGEOafg9D+2cy1E4gHNGuL12LerVa0eS2SQOb+PT8vSel9OTKU1RyZldsWSQJ5rq/w4uIjmLnrSR2w6Yw==", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -3153,9 +3309,9 @@ } }, "node_modules/@tiptap/extension-heading": { - "version": "2.1.11", - "resolved": "https://registry.npmjs.org/@tiptap/extension-heading/-/extension-heading-2.1.11.tgz", - "integrity": "sha512-QBtl0S1aDFB+F1wvTrS5iGdNUEeXp+WuTddj+L2f5EP4KqG2x7sj7e7ENMy20g/l8tbKwzd3AZZydvClH4Ybbw==", + "version": "2.1.12", + "resolved": "https://registry.npmjs.org/@tiptap/extension-heading/-/extension-heading-2.1.12.tgz", + "integrity": "sha512-MoANP3POAP68Ko9YXarfDKLM/kXtscgp6m+xRagPAghRNujVY88nK1qBMZ3JdvTVN6b/ATJhp8UdrZX96TLV2w==", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -3177,9 +3333,9 @@ } }, "node_modules/@tiptap/extension-history": { - "version": "2.1.11", - "resolved": "https://registry.npmjs.org/@tiptap/extension-history/-/extension-history-2.1.11.tgz", - "integrity": "sha512-88dovV2O9icmBn0IvaArFFeS6X5ts6BxZPu5VbGML8KBL8iAu+Og7RXEPdOy5e13K0K4V21fDpO3n7KdvNOAYQ==", + "version": "2.1.12", + "resolved": "https://registry.npmjs.org/@tiptap/extension-history/-/extension-history-2.1.12.tgz", + "integrity": "sha512-6b7UFVkvPjq3LVoCTrYZAczt5sQrQUaoDWAieVClVZoFLfjga2Fwjcfgcie8IjdPt8YO2hG/sar/c07i9vM0Sg==", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -3190,9 +3346,9 @@ } }, "node_modules/@tiptap/extension-horizontal-rule": { - "version": "2.1.11", - "resolved": "https://registry.npmjs.org/@tiptap/extension-horizontal-rule/-/extension-horizontal-rule-2.1.11.tgz", - "integrity": "sha512-uvHPa2YCKnDhtSBSZB3lk5U4H3wRKP0DNvVx4Y2F7MdQianVzcyOd1pZYO9BQs+lUB1aZots6doE69Zqz3mU2Q==", + "version": "2.1.12", + "resolved": "https://registry.npmjs.org/@tiptap/extension-horizontal-rule/-/extension-horizontal-rule-2.1.12.tgz", + "integrity": "sha512-RRuoK4KxrXRrZNAjJW5rpaxjiP0FJIaqpi7nFbAua2oHXgsCsG8qbW2Y0WkbIoS8AJsvLZ3fNGsQ8gpdliuq3A==", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -3215,9 +3371,9 @@ } }, "node_modules/@tiptap/extension-italic": { - "version": "2.1.11", - "resolved": "https://registry.npmjs.org/@tiptap/extension-italic/-/extension-italic-2.1.11.tgz", - "integrity": "sha512-QmDsHtnBBit/1KtQpBPxjSPjDC1mVKtoNTgsEwMWK6YAkCKOKPj7oPEqqjaNZIRMKPPzE5XCsfBoS3jtVmo+6A==", + "version": "2.1.12", + "resolved": "https://registry.npmjs.org/@tiptap/extension-italic/-/extension-italic-2.1.12.tgz", + "integrity": "sha512-/XYrW4ZEWyqDvnXVKbgTXItpJOp2ycswk+fJ3vuexyolO6NSs0UuYC6X4f+FbHYL5VuWqVBv7EavGa+tB6sl3A==", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -3227,9 +3383,9 @@ } }, "node_modules/@tiptap/extension-list-item": { - "version": "2.1.11", - "resolved": "https://registry.npmjs.org/@tiptap/extension-list-item/-/extension-list-item-2.1.11.tgz", - "integrity": "sha512-YhwHaPGhffsFsg/zjCu1G24//j/BTRDRZbZXmMwp77m1yEqPULcWyoWrI+gUzetQxJRD/ruAucqjLtoLLfICmQ==", + "version": "2.1.12", + "resolved": "https://registry.npmjs.org/@tiptap/extension-list-item/-/extension-list-item-2.1.12.tgz", + "integrity": "sha512-Gk7hBFofAPmNQ8+uw8w5QSsZOMEGf7KQXJnx5B022YAUJTYYxO3jYVuzp34Drk9p+zNNIcXD4kc7ff5+nFOTrg==", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -3239,9 +3395,9 @@ } }, "node_modules/@tiptap/extension-ordered-list": { - "version": "2.1.11", - "resolved": "https://registry.npmjs.org/@tiptap/extension-ordered-list/-/extension-ordered-list-2.1.11.tgz", - "integrity": "sha512-/tghfEJ5U7WFbF8xyOqRJks8KxP/lRjnroMXMglaushSMx8PYPo1dZDB/dJZw7ksy47MAaKJfKlx3gyN2CPXBQ==", + "version": "2.1.12", + "resolved": "https://registry.npmjs.org/@tiptap/extension-ordered-list/-/extension-ordered-list-2.1.12.tgz", + "integrity": "sha512-tF6VGl+D2avCgn9U/2YLJ8qVmV6sPE/iEzVAFZuOSe6L0Pj7SQw4K6AO640QBob/d8VrqqJFHCb6l10amJOnXA==", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -3251,9 +3407,9 @@ } }, "node_modules/@tiptap/extension-paragraph": { - "version": "2.1.11", - "resolved": "https://registry.npmjs.org/@tiptap/extension-paragraph/-/extension-paragraph-2.1.11.tgz", - "integrity": "sha512-gXMgJ2CU3X4yh1wKnb8RdbDmhITB76pH6DX0uWprmEgvzNMN3Qw+h5uBD9lgxg1WVghbCmkG9mY9J4PPbPTLxw==", + "version": "2.1.12", + "resolved": "https://registry.npmjs.org/@tiptap/extension-paragraph/-/extension-paragraph-2.1.12.tgz", + "integrity": "sha512-hoH/uWPX+KKnNAZagudlsrr4Xu57nusGekkJWBcrb5MCDE91BS+DN2xifuhwXiTHxnwOMVFjluc0bPzQbkArsw==", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -3276,9 +3432,9 @@ } }, "node_modules/@tiptap/extension-strike": { - "version": "2.1.11", - "resolved": "https://registry.npmjs.org/@tiptap/extension-strike/-/extension-strike-2.1.11.tgz", - "integrity": "sha512-UnjeSVgu3bDuyjjUdWsUErRCoQKAHCzH/pAiqTEPEEdFYgZFQPBpcJICRVdlYjRmI2ZKh6d0TMUS55m7ckmwmQ==", + "version": "2.1.12", + "resolved": "https://registry.npmjs.org/@tiptap/extension-strike/-/extension-strike-2.1.12.tgz", + "integrity": "sha512-HlhrzIjYUT8oCH9nYzEL2QTTn8d1ECnVhKvzAe6x41xk31PjLMHTUy8aYjeQEkWZOWZ34tiTmslV1ce6R3Dt8g==", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -3288,9 +3444,9 @@ } }, "node_modules/@tiptap/extension-text": { - "version": "2.1.11", - "resolved": "https://registry.npmjs.org/@tiptap/extension-text/-/extension-text-2.1.11.tgz", - "integrity": "sha512-Iey0EXYv9079+lbHMvZtLc6XcYfKrq++msEXuFFNHxvL0i/XzndhGf+qlDhLROLgEtDiiTqzOBBwFCGlFjbDow==", + "version": "2.1.12", + "resolved": "https://registry.npmjs.org/@tiptap/extension-text/-/extension-text-2.1.12.tgz", + "integrity": "sha512-rCNUd505p/PXwU9Jgxo4ZJv4A3cIBAyAqlx/dtcY6cjztCQuXJhuQILPhjGhBTOLEEL4kW2wQtqzCmb7O8i2jg==", "funding": { "type": "github", "url": "https://github.com/sponsors/ueberdosis" @@ -3411,18 +3567,18 @@ } }, "node_modules/@types/debug": { - "version": "4.1.9", - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.9.tgz", - "integrity": "sha512-8Hz50m2eoS56ldRlepxSBa6PWEVCtzUo/92HgLc2qTMnotJNIm7xP+UZhyWoYsyOdd5dxZ+NZLb24rsKyFs2ow==", + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.10.tgz", + "integrity": "sha512-tOSCru6s732pofZ+sMv9o4o3Zc+Sa8l3bxd/tweTQudFn06vAzb13ZX46Zi6m6EJ+RUbRTHvgQJ1gBtSgkaUYA==", "dev": true, "dependencies": { "@types/ms": "*" } }, "node_modules/@types/estree": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.2.tgz", - "integrity": "sha512-VeiPZ9MMwXjO32/Xu7+OwflfmeoRwkE/qzndw42gGtgJwZopBnzy2gD//NN1+go1mADzkDcqf/KnFRSjTJ8xJA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.3.tgz", + "integrity": "sha512-CS2rOaoQ/eAgAfcTfq6amKG7bsN+EMcgGY4FAFQdvSj2y1ixvOZTUA9mOtCai7E1SYu283XNw7urKK30nP3wkQ==", "dev": true }, "node_modules/@types/fs-extra": { @@ -3435,9 +3591,9 @@ } }, "node_modules/@types/http-cache-semantics": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.2.tgz", - "integrity": "sha512-FD+nQWA2zJjh4L9+pFXqWOi0Hs1ryBCfI+985NjluQ1p8EYtoLvjLOKidXBtZ4/IcxDX4o8/E8qDS3540tNliw==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.3.tgz", + "integrity": "sha512-V46MYLFp08Wf2mmaBhvgjStM3tPa+2GAdy/iqoX+noX1//zje2x4XmrIU0cAwyClATsTmahbtoQ2EwP7I5WSiA==", "dev": true }, "node_modules/@types/keyv": { @@ -3450,31 +3606,31 @@ } }, "node_modules/@types/ms": { - "version": "0.7.32", - "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.32.tgz", - "integrity": "sha512-xPSg0jm4mqgEkNhowKgZFBNtwoEwF6gJ4Dhww+GFpm3IgtNseHQZ5IqdNwnquZEoANxyDAKDRAdVo4Z72VvD/g==", + "version": "0.7.33", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.33.tgz", + "integrity": "sha512-AuHIyzR5Hea7ij0P9q7vx7xu4z0C28ucwjAZC0ja7JhINyCnOw8/DnvAPQQ9TfOlCtZAmCERKQX9+o1mgQhuOQ==", "dev": true }, "node_modules/@types/node": { - "version": "18.18.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.3.tgz", - "integrity": "sha512-0OVfGupTl3NBFr8+iXpfZ8NR7jfFO+P1Q+IO/q0wbo02wYkP5gy36phojeYWpLQ6WAMjl+VfmqUk2YbUfp0irA==", + "version": "18.18.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.6.tgz", + "integrity": "sha512-wf3Vz+jCmOQ2HV1YUJuCWdL64adYxumkrxtc+H1VUQlnQI04+5HtH+qZCOE21lBE7gIrt+CwX2Wv8Acrw5Ak6w==", "devOptional": true }, "node_modules/@types/object.omit": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/object.omit/-/object.omit-3.0.1.tgz", - "integrity": "sha512-24XD34UeRWw505TsMNBrQ4bES2s8IxiFC59mmNUFhTz9IX2hAtA7gQ8wVww1i17QmhBYILg5iqYP2y7aqA3pwQ==" + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/object.omit/-/object.omit-3.0.2.tgz", + "integrity": "sha512-BxWU36cMP+FKD3OLFluQaj2cBev2sx2LJaHELuphHwnleq+xnEhTmuYYYx4pOT/1U/ZoR6B+RdvxWh2FD6lGGA==" }, "node_modules/@types/object.pick": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@types/object.pick/-/object.pick-1.3.2.tgz", - "integrity": "sha512-sn7L+qQ6RLPdXRoiaE7bZ/Ek+o4uICma/lBFPyJEKDTPTBP1W8u0c4baj3EiS4DiqLs+Hk+KUGvMVJtAw3ePJg==" + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@types/object.pick/-/object.pick-1.3.3.tgz", + "integrity": "sha512-qZqHmdGEALeSATMB1djT1S5szv6Wtpb7DKpHrt2XG4iyKlV7C2Xk8GmDXr1KXakOqUfX6ohw7ceruYt4NVmB1Q==" }, "node_modules/@types/plist": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/plist/-/plist-3.0.3.tgz", - "integrity": "sha512-DXkBoKc7jwUR0p439icInmXXMJNhoImdpOrrgA5/nDFK7LVtcJ9MyQNKhJEKpEztnHGWnNWMWLOIR62By0Ln0A==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/plist/-/plist-3.0.4.tgz", + "integrity": "sha512-pTa9xUFQFM9WJGSWHajYNljD+DbVylE1q9IweK1LBhUYJdJ28YNU8j3KZ4Q1Qw+cSl4+QLLLOVmqNjhhvVO8fA==", "dev": true, "optional": true, "dependencies": { @@ -3489,9 +3645,9 @@ "dev": true }, "node_modules/@types/responselike": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.1.tgz", - "integrity": "sha512-TiGnitEDxj2X0j+98Eqk5lv/Cij8oHd32bU4D/Yw6AOq7vvTk0gSD2GPj0G/HkvhMoVsdlhYF4yqqlyPBTM6Sg==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha512-/4YQT5Kp6HxUDb4yhRkm0bJ7TbjvTddqX7PZ5hz6qV3pxSo72f/6YPRo+Mu2DU307tm9IioO69l7uAwn5XNcFA==", "dev": true, "dependencies": { "@types/node": "*" @@ -3503,93 +3659,99 @@ "integrity": "sha512-5eQEtSCoESnh2FsiLTxE121IiE60hnMqcb435fShf4bpLRjEu1Eoekht23y6zXS9Ts3l+Szu3TARnTsA0GkOkQ==" }, "node_modules/@types/trusted-types": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.4.tgz", - "integrity": "sha512-IDaobHimLQhjwsQ/NMwRVfa/yL7L/wriQPMhw1ZJall0KX6E1oxk29XMDeilW5qTIg5aoiqf5Udy8U/51aNoQQ==" + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.5.tgz", + "integrity": "sha512-I3pkr8j/6tmQtKV/ZzHtuaqYSQvyjGRKH4go60Rr0IDLlFxuRT5V32uvB1mecM5G1EVAUyF/4r4QZ1GHgz+mxA==" }, "node_modules/@types/verror": { - "version": "1.10.7", - "resolved": "https://registry.npmjs.org/@types/verror/-/verror-1.10.7.tgz", - "integrity": "sha512-4c5F4T0qMSoXq1KHx7WV1FMuD2h0xdaFoJ7HSVWUfQ8w5YbqCwLOA8K7/yy1I+Txuzvm417dnPUaLmqazX1F7g==", + "version": "1.10.8", + "resolved": "https://registry.npmjs.org/@types/verror/-/verror-1.10.8.tgz", + "integrity": "sha512-YhUhnxRYs/NiVUbIs3F/EzviDP/NZCEAE2Mx5DUqLdldUmphOhFCVh7Kc+7zlYEExM0P8dzfbJi0yRlNb2Bw5g==", "dev": true, "optional": true }, "node_modules/@types/yauzl": { - "version": "2.10.1", - "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.1.tgz", - "integrity": "sha512-CHzgNU3qYBnp/O4S3yv2tXPlvMTq0YWSTVg2/JYLqWZGHwwgJGAwd00poay/11asPq8wLFwHzubyInqHIFmmiw==", + "version": "2.10.2", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.2.tgz", + "integrity": "sha512-Km7XAtUIduROw7QPgvcft0lIupeG8a8rdKL8RiSyKvlE7dYY31fEn41HVuQsRFDuROA8tA4K2UVL+WdfFmErBA==", "optional": true, "dependencies": { "@types/node": "*" } }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true + }, "node_modules/@vaadin/a11y-base": { - "version": "24.1.10", - "resolved": "https://registry.npmjs.org/@vaadin/a11y-base/-/a11y-base-24.1.10.tgz", - "integrity": "sha512-yEcPz3ZjWL4uPnCqP91uhdpNMnrMEAIYKlnSvKVbnHg+O2ZT3qgtrdWjA61ZmPQV40RVBfPbJJVBH/OGo2ZGqg==", + "version": "24.2.0", + "resolved": "https://registry.npmjs.org/@vaadin/a11y-base/-/a11y-base-24.2.0.tgz", + "integrity": "sha512-cnppkRPiVjSDPLPzdnZ14yQZYRdWFjNiUh6jmUTCXiGsXrkgoUfmALxhhc9iodd1WxbrXwtD4OsMcJi/uMIjAg==", "dev": true, "dependencies": { "@open-wc/dedupe-mixin": "^1.3.0", "@polymer/polymer": "^3.0.0", - "@vaadin/component-base": "~24.1.10", + "@vaadin/component-base": "~24.2.0", "lit": "^2.0.0" } }, "node_modules/@vaadin/avatar": { - "version": "24.1.9", - "resolved": "https://registry.npmjs.org/@vaadin/avatar/-/avatar-24.1.9.tgz", - "integrity": "sha512-RuyhyZIBEWVhdD8trrnYsUf6HzdXJxjJoydipa4KVtzgSE6EstHve5rySqdZ93CbDepX2zTSIUBRTD4RU4zlgA==", + "version": "24.2.0", + "resolved": "https://registry.npmjs.org/@vaadin/avatar/-/avatar-24.2.0.tgz", + "integrity": "sha512-Xy+yxj9fxMLEjhLCsTmsYV3kVOamIurPgnPGK0/CGn4PQphdhqqiRd0b9cHxPJl/Ei6CDu033lj1ovT19CjmbA==", "dev": true, "dependencies": { "@polymer/polymer": "^3.0.0", - "@vaadin/a11y-base": "~24.1.9", - "@vaadin/component-base": "~24.1.9", - "@vaadin/item": "~24.1.9", - "@vaadin/list-box": "~24.1.9", - "@vaadin/overlay": "~24.1.9", - "@vaadin/tooltip": "~24.1.9", - "@vaadin/vaadin-lumo-styles": "~24.1.9", - "@vaadin/vaadin-material-styles": "~24.1.9", - "@vaadin/vaadin-themable-mixin": "~24.1.9" + "@vaadin/a11y-base": "~24.2.0", + "@vaadin/component-base": "~24.2.0", + "@vaadin/item": "~24.2.0", + "@vaadin/list-box": "~24.2.0", + "@vaadin/overlay": "~24.2.0", + "@vaadin/tooltip": "~24.2.0", + "@vaadin/vaadin-lumo-styles": "~24.2.0", + "@vaadin/vaadin-material-styles": "~24.2.0", + "@vaadin/vaadin-themable-mixin": "~24.2.0" } }, "node_modules/@vaadin/button": { - "version": "24.1.9", - "resolved": "https://registry.npmjs.org/@vaadin/button/-/button-24.1.9.tgz", - "integrity": "sha512-8IQ/bgURIIVOrMVMt6VWsP1n8bLOM1YftNJv2k6mPROC1mtgh/0e5KFsjU28p2BEQmVzICjbFcd6HBbz1FcsdA==", + "version": "24.2.0", + "resolved": "https://registry.npmjs.org/@vaadin/button/-/button-24.2.0.tgz", + "integrity": "sha512-gHO9jiPGRV4AwzsLJ2A2OkIDIdeOJ7iZ2JwPSdj/O4pzwwqPe+VOd4s2mrLKGWD9TNW/gsX4cRFVzwfbvOOKyg==", "dev": true, "dependencies": { "@open-wc/dedupe-mixin": "^1.3.0", "@polymer/polymer": "^3.0.0", - "@vaadin/a11y-base": "~24.1.9", - "@vaadin/component-base": "~24.1.9", - "@vaadin/vaadin-lumo-styles": "~24.1.9", - "@vaadin/vaadin-material-styles": "~24.1.9", - "@vaadin/vaadin-themable-mixin": "~24.1.9", + "@vaadin/a11y-base": "~24.2.0", + "@vaadin/component-base": "~24.2.0", + "@vaadin/vaadin-lumo-styles": "~24.2.0", + "@vaadin/vaadin-material-styles": "~24.2.0", + "@vaadin/vaadin-themable-mixin": "~24.2.0", "lit": "^2.0.0" } }, "node_modules/@vaadin/checkbox": { - "version": "24.1.10", - "resolved": "https://registry.npmjs.org/@vaadin/checkbox/-/checkbox-24.1.10.tgz", - "integrity": "sha512-B6MmW4890qaqUEh2+nzLqXpM8LrvLVb0yME3g/hqrAfM+YMfBxH6nPC3XI2m1iiTAHxd+p32CrTpFGmUNmkYYQ==", + "version": "24.2.0", + "resolved": "https://registry.npmjs.org/@vaadin/checkbox/-/checkbox-24.2.0.tgz", + "integrity": "sha512-sy2NzW6ESF5t0TSuGrBGkLnELFEQM01UQf4rkSyo2d4qo8tDADW2XcItj810qIGcsMxxCyUiywM2J2tMyukrIA==", "dev": true, "dependencies": { "@open-wc/dedupe-mixin": "^1.3.0", "@polymer/polymer": "^3.0.0", - "@vaadin/a11y-base": "~24.1.10", - "@vaadin/component-base": "~24.1.10", - "@vaadin/field-base": "~24.1.10", - "@vaadin/vaadin-lumo-styles": "~24.1.10", - "@vaadin/vaadin-material-styles": "~24.1.10", - "@vaadin/vaadin-themable-mixin": "~24.1.10", + "@vaadin/a11y-base": "~24.2.0", + "@vaadin/component-base": "~24.2.0", + "@vaadin/field-base": "~24.2.0", + "@vaadin/vaadin-lumo-styles": "~24.2.0", + "@vaadin/vaadin-material-styles": "~24.2.0", + "@vaadin/vaadin-themable-mixin": "~24.2.0", "lit": "^2.0.0" } }, "node_modules/@vaadin/component-base": { - "version": "24.1.10", - "resolved": "https://registry.npmjs.org/@vaadin/component-base/-/component-base-24.1.10.tgz", - "integrity": "sha512-EAgpnI4ROGCsc+KzKujQNWisIVFEFyD+e3B4tlFmeHlzpMHvVOpEBxTZFcNYMDf/QAMzGvngI+Vh0sLcQwezhw==", + "version": "24.2.0", + "resolved": "https://registry.npmjs.org/@vaadin/component-base/-/component-base-24.2.0.tgz", + "integrity": "sha512-n0iIg6Oj6+Ei2L2BaEdZn1gXdvX7ZNgDnC28TGQ7o2Ld7K0GomEEyG20/nTra8zxgZRm57CZKoR+PEcxkzTexQ==", "dev": true, "dependencies": { "@open-wc/dedupe-mixin": "^1.3.0", @@ -3600,173 +3762,173 @@ } }, "node_modules/@vaadin/field-base": { - "version": "24.1.10", - "resolved": "https://registry.npmjs.org/@vaadin/field-base/-/field-base-24.1.10.tgz", - "integrity": "sha512-fk8tqu4jggGxFlxNFxCZs7iVf2GlV2UzFT4gFMu+lD8iJP0Lo4NdvAinWnL0b17Si+zvPi8xb3CXm6xLD4Scow==", + "version": "24.2.0", + "resolved": "https://registry.npmjs.org/@vaadin/field-base/-/field-base-24.2.0.tgz", + "integrity": "sha512-AN3NNgvFx8K2fa7RZQ1iWeqDA+wQ0joa1RCP58Qo9u+JtU9c75XHJKiPiQvFVGH0EmRjOXwhE0KqyMYmKFfOaw==", "dev": true, "dependencies": { "@open-wc/dedupe-mixin": "^1.3.0", "@polymer/polymer": "^3.0.0", - "@vaadin/a11y-base": "~24.1.10", - "@vaadin/component-base": "~24.1.10", + "@vaadin/a11y-base": "~24.2.0", + "@vaadin/component-base": "~24.2.0", "lit": "^2.0.0" } }, "node_modules/@vaadin/grid": { - "version": "24.1.9", - "resolved": "https://registry.npmjs.org/@vaadin/grid/-/grid-24.1.9.tgz", - "integrity": "sha512-FGouiDpiOeBV/Zgqq+INLXL+BHR3FEcEw12BPpfAd8HRN9GXZSQ/3TD32IL9icXLd9dH2nbI3OSDGGyh2oCnjg==", + "version": "24.2.0", + "resolved": "https://registry.npmjs.org/@vaadin/grid/-/grid-24.2.0.tgz", + "integrity": "sha512-jCkTb3I8ljdkJDlxSOr0ORlxqZphhdfbfaxHWFSc8/i1TlUo4Uof2VugZRsSDVh2UGB1DyHOGUtHn80ZPEqzaw==", "dev": true, "dependencies": { "@open-wc/dedupe-mixin": "^1.3.0", "@polymer/polymer": "^3.0.0", - "@vaadin/a11y-base": "~24.1.9", - "@vaadin/checkbox": "~24.1.9", - "@vaadin/component-base": "~24.1.9", - "@vaadin/lit-renderer": "~24.1.9", - "@vaadin/text-field": "~24.1.9", - "@vaadin/vaadin-lumo-styles": "~24.1.9", - "@vaadin/vaadin-material-styles": "~24.1.9", - "@vaadin/vaadin-themable-mixin": "~24.1.9" + "@vaadin/a11y-base": "~24.2.0", + "@vaadin/checkbox": "~24.2.0", + "@vaadin/component-base": "~24.2.0", + "@vaadin/lit-renderer": "~24.2.0", + "@vaadin/text-field": "~24.2.0", + "@vaadin/vaadin-lumo-styles": "~24.2.0", + "@vaadin/vaadin-material-styles": "~24.2.0", + "@vaadin/vaadin-themable-mixin": "~24.2.0" } }, "node_modules/@vaadin/icon": { - "version": "24.1.10", - "resolved": "https://registry.npmjs.org/@vaadin/icon/-/icon-24.1.10.tgz", - "integrity": "sha512-FzBJ0/nr7jnsKmMXz2l/gudi0JZzlcKi8TTRk1vVVYLtIp/ANmEBXXEHvetncdnY6pOQebUKRbRtlhujpSlERg==", + "version": "24.2.0", + "resolved": "https://registry.npmjs.org/@vaadin/icon/-/icon-24.2.0.tgz", + "integrity": "sha512-0Ame9r0eb+kz+ryaxnH/CzzNefT8VERL3YFNlLo0YhJPK9vhcT9qxOfbCqWvT52R0DorIux80WS8ZtMAKTsjOQ==", "dev": true, "dependencies": { "@polymer/polymer": "^3.0.0", - "@vaadin/component-base": "~24.1.10", - "@vaadin/vaadin-lumo-styles": "~24.1.10", - "@vaadin/vaadin-themable-mixin": "~24.1.10", + "@vaadin/component-base": "~24.2.0", + "@vaadin/vaadin-lumo-styles": "~24.2.0", + "@vaadin/vaadin-themable-mixin": "~24.2.0", "lit": "^2.0.0" } }, "node_modules/@vaadin/icons": { - "version": "24.1.9", - "resolved": "https://registry.npmjs.org/@vaadin/icons/-/icons-24.1.9.tgz", - "integrity": "sha512-DM8nwyBx3fB6OSRynl69Led+6ckhBLZGbBD5DJ/Gya7jtUneHRK2B2mF5krD/KEPL+yJZsxWf+eAdNbSu4EIsw==", + "version": "24.2.0", + "resolved": "https://registry.npmjs.org/@vaadin/icons/-/icons-24.2.0.tgz", + "integrity": "sha512-ekiGe5JscULbr0LvMdotCkBWfKDewiGf+VJTG0mjEthcTCvxH5snTmoTlUrUMLJjmIKR6rwNLZ5dx3yPrdcMDQ==", "dev": true, "dependencies": { "@polymer/polymer": "^3.0.0", - "@vaadin/icon": "~24.1.9" + "@vaadin/icon": "~24.2.0" } }, "node_modules/@vaadin/input-container": { - "version": "24.1.10", - "resolved": "https://registry.npmjs.org/@vaadin/input-container/-/input-container-24.1.10.tgz", - "integrity": "sha512-frTUtrUcBxlZen3oFT9CsZDhfvJQUkV7JWeO9bq68dHXr9WpXUvOwW29W8Riop82swTBdFK/o+8MRdbhslc2Lg==", + "version": "24.2.0", + "resolved": "https://registry.npmjs.org/@vaadin/input-container/-/input-container-24.2.0.tgz", + "integrity": "sha512-Netv/fN+SFAZIvoZb8Dqwv0SLT4gGRtCwD+xstdF5CrgYuFcnrdAg8Gku7xSDhWy3Pq7sCXrbUV+YjCOHinSFA==", "dev": true, "dependencies": { "@polymer/polymer": "^3.0.0", - "@vaadin/component-base": "~24.1.10", - "@vaadin/vaadin-lumo-styles": "~24.1.10", - "@vaadin/vaadin-material-styles": "~24.1.10", - "@vaadin/vaadin-themable-mixin": "~24.1.10" + "@vaadin/component-base": "~24.2.0", + "@vaadin/vaadin-lumo-styles": "~24.2.0", + "@vaadin/vaadin-material-styles": "~24.2.0", + "@vaadin/vaadin-themable-mixin": "~24.2.0" } }, "node_modules/@vaadin/item": { - "version": "24.1.10", - "resolved": "https://registry.npmjs.org/@vaadin/item/-/item-24.1.10.tgz", - "integrity": "sha512-3H9KbwITBJbfeHHhBltTrV0RwgEFhA4taGM0NtZa1kK+vSuwjRtc4mkSsb7rei9E6C9nV4uPAK8FPPfnsxFfcw==", + "version": "24.2.0", + "resolved": "https://registry.npmjs.org/@vaadin/item/-/item-24.2.0.tgz", + "integrity": "sha512-kI+qOMkY7np2gmo88zc/z4OVBfNgBFjTDYhF7bnVTqD3aZIa39pjcNBm6vxJKPglOtZ/US3iJTh3HvyCv/EVjw==", "dev": true, "dependencies": { "@open-wc/dedupe-mixin": "^1.3.0", "@polymer/polymer": "^3.0.0", - "@vaadin/a11y-base": "~24.1.10", - "@vaadin/component-base": "~24.1.10", - "@vaadin/vaadin-lumo-styles": "~24.1.10", - "@vaadin/vaadin-material-styles": "~24.1.10", - "@vaadin/vaadin-themable-mixin": "~24.1.10" + "@vaadin/a11y-base": "~24.2.0", + "@vaadin/component-base": "~24.2.0", + "@vaadin/vaadin-lumo-styles": "~24.2.0", + "@vaadin/vaadin-material-styles": "~24.2.0", + "@vaadin/vaadin-themable-mixin": "~24.2.0" } }, "node_modules/@vaadin/list-box": { - "version": "24.1.10", - "resolved": "https://registry.npmjs.org/@vaadin/list-box/-/list-box-24.1.10.tgz", - "integrity": "sha512-SiREDDf3ALRECzf+6tWoWy9sg71/eOgW3gugLvELq9TajynnernBEkj79ONGbOQOpd5jzQKkUN0rLegd8o4CWA==", + "version": "24.2.0", + "resolved": "https://registry.npmjs.org/@vaadin/list-box/-/list-box-24.2.0.tgz", + "integrity": "sha512-F/5XEpnSYB1Rdl6Z1n1HN3k111B7VAD+9d5MCQCadfE4Q3bxqQ16QOqKON1LBoSguINwNRkm3M9Warpk8dUABQ==", "dev": true, "dependencies": { "@open-wc/dedupe-mixin": "^1.3.0", "@polymer/polymer": "^3.0.0", - "@vaadin/a11y-base": "~24.1.10", - "@vaadin/component-base": "~24.1.10", - "@vaadin/item": "~24.1.10", - "@vaadin/vaadin-lumo-styles": "~24.1.10", - "@vaadin/vaadin-material-styles": "~24.1.10", - "@vaadin/vaadin-themable-mixin": "~24.1.10" + "@vaadin/a11y-base": "~24.2.0", + "@vaadin/component-base": "~24.2.0", + "@vaadin/item": "~24.2.0", + "@vaadin/vaadin-lumo-styles": "~24.2.0", + "@vaadin/vaadin-material-styles": "~24.2.0", + "@vaadin/vaadin-themable-mixin": "~24.2.0" } }, "node_modules/@vaadin/lit-renderer": { - "version": "24.1.10", - "resolved": "https://registry.npmjs.org/@vaadin/lit-renderer/-/lit-renderer-24.1.10.tgz", - "integrity": "sha512-OTNgCt79Xy5TbO6egp9UiqfXV+Yl6vHlqi2OH4mgWu8W0ErUUAkaxrQ/hNXQ8qZ3klK/Ii4aVTQnzjf8RpCbzQ==", + "version": "24.2.0", + "resolved": "https://registry.npmjs.org/@vaadin/lit-renderer/-/lit-renderer-24.2.0.tgz", + "integrity": "sha512-fkj6aetCgq3kp6tUqkvL+E9LwLd6oH/a8Pg93sPuBx4D2dQ85IVIgJCpYFlBjdaDp548/frPRkfpRmziZ1netw==", "dev": true, "dependencies": { "lit": "^2.0.0" } }, "node_modules/@vaadin/overlay": { - "version": "24.1.10", - "resolved": "https://registry.npmjs.org/@vaadin/overlay/-/overlay-24.1.10.tgz", - "integrity": "sha512-8H68FgkWkv0eNwO48nmDja0m/w+EVJlTZFvyTZa/md/S0EjYr09LIbFylfR3nY+G9DW1aLlWgyyEhL08ccM74g==", + "version": "24.2.0", + "resolved": "https://registry.npmjs.org/@vaadin/overlay/-/overlay-24.2.0.tgz", + "integrity": "sha512-suNbMshKy52jhm2CDc4g974JU8hXsr5KIzopyR9A1pT3syiPx+75HqucZvqDJbiGMf/Fe04UjLrlhem6+tIuXw==", "dev": true, "dependencies": { "@open-wc/dedupe-mixin": "^1.3.0", "@polymer/polymer": "^3.0.0", - "@vaadin/a11y-base": "~24.1.10", - "@vaadin/component-base": "~24.1.10", - "@vaadin/vaadin-lumo-styles": "~24.1.10", - "@vaadin/vaadin-material-styles": "~24.1.10", - "@vaadin/vaadin-themable-mixin": "~24.1.10" + "@vaadin/a11y-base": "~24.2.0", + "@vaadin/component-base": "~24.2.0", + "@vaadin/vaadin-lumo-styles": "~24.2.0", + "@vaadin/vaadin-material-styles": "~24.2.0", + "@vaadin/vaadin-themable-mixin": "~24.2.0" } }, "node_modules/@vaadin/password-field": { - "version": "24.1.9", - "resolved": "https://registry.npmjs.org/@vaadin/password-field/-/password-field-24.1.9.tgz", - "integrity": "sha512-tLA2aQXQ8QvOJPaWe3JktxM56QgWLjZmiqKixvyAWHVpAIgs5STUeJ4A6+dHsA1jnars9deoonBJ7er26vMBwA==", + "version": "24.2.0", + "resolved": "https://registry.npmjs.org/@vaadin/password-field/-/password-field-24.2.0.tgz", + "integrity": "sha512-EGael4z/WBBpXHs6TQgKPUGCdHDT9OB+mmpKqfi8vlYr5FV7c6jxaouFH4mND4fiPwymCE8R1LbxVQ+wLcByeQ==", "dev": true, "dependencies": { "@polymer/polymer": "^3.0.0", - "@vaadin/button": "~24.1.9", - "@vaadin/component-base": "~24.1.9", - "@vaadin/text-field": "~24.1.9", - "@vaadin/vaadin-lumo-styles": "~24.1.9", - "@vaadin/vaadin-material-styles": "~24.1.9", - "@vaadin/vaadin-themable-mixin": "~24.1.9" + "@vaadin/button": "~24.2.0", + "@vaadin/component-base": "~24.2.0", + "@vaadin/text-field": "~24.2.0", + "@vaadin/vaadin-lumo-styles": "~24.2.0", + "@vaadin/vaadin-material-styles": "~24.2.0", + "@vaadin/vaadin-themable-mixin": "~24.2.0" } }, "node_modules/@vaadin/text-field": { - "version": "24.1.10", - "resolved": "https://registry.npmjs.org/@vaadin/text-field/-/text-field-24.1.10.tgz", - "integrity": "sha512-60QZp8PIAvoR/XjU09rQRfg+3d2xLsrpgDZYuMY2PJ7NcG8JUh5zY7LrIVGasbpQ27rna3Anli6AM75X5hbS8g==", + "version": "24.2.0", + "resolved": "https://registry.npmjs.org/@vaadin/text-field/-/text-field-24.2.0.tgz", + "integrity": "sha512-JJDYZ/HjUnQtFh2ylYDoTmrj4OxXc5aeDUyhgAzH7BpDkRR2+pOWupKUlgwwc1RUhz5sC14Pw0xgt68ZaMo/MA==", "dev": true, "dependencies": { "@open-wc/dedupe-mixin": "^1.3.0", "@polymer/polymer": "^3.0.0", - "@vaadin/a11y-base": "~24.1.10", - "@vaadin/component-base": "~24.1.10", - "@vaadin/field-base": "~24.1.10", - "@vaadin/input-container": "~24.1.10", - "@vaadin/vaadin-lumo-styles": "~24.1.10", - "@vaadin/vaadin-material-styles": "~24.1.10", - "@vaadin/vaadin-themable-mixin": "~24.1.10", + "@vaadin/a11y-base": "~24.2.0", + "@vaadin/component-base": "~24.2.0", + "@vaadin/field-base": "~24.2.0", + "@vaadin/input-container": "~24.2.0", + "@vaadin/vaadin-lumo-styles": "~24.2.0", + "@vaadin/vaadin-material-styles": "~24.2.0", + "@vaadin/vaadin-themable-mixin": "~24.2.0", "lit": "^2.0.0" } }, "node_modules/@vaadin/tooltip": { - "version": "24.1.10", - "resolved": "https://registry.npmjs.org/@vaadin/tooltip/-/tooltip-24.1.10.tgz", - "integrity": "sha512-t2a5wNuzSi+VM6jxMBv71lA7up/e2l+PXsv2AfTbW51b9IRGSCB3atpADqfnhx900xO29as66xWthC6sBY8EMg==", + "version": "24.2.0", + "resolved": "https://registry.npmjs.org/@vaadin/tooltip/-/tooltip-24.2.0.tgz", + "integrity": "sha512-I9ItRzk1Xw5JE6L/8V+FIDs+T7pAcd7vnVq3nTb81SYQ2Op2QUPTYG1jd9hz7QuZgVURtqO5Kbr9NtDbqUJYNA==", "dev": true, "dependencies": { "@polymer/polymer": "^3.0.0", - "@vaadin/a11y-base": "~24.1.10", - "@vaadin/component-base": "~24.1.10", - "@vaadin/overlay": "~24.1.10", - "@vaadin/vaadin-lumo-styles": "~24.1.10", - "@vaadin/vaadin-material-styles": "~24.1.10", - "@vaadin/vaadin-themable-mixin": "~24.1.10" + "@vaadin/a11y-base": "~24.2.0", + "@vaadin/component-base": "~24.2.0", + "@vaadin/overlay": "~24.2.0", + "@vaadin/vaadin-lumo-styles": "~24.2.0", + "@vaadin/vaadin-material-styles": "~24.2.0", + "@vaadin/vaadin-themable-mixin": "~24.2.0" } }, "node_modules/@vaadin/vaadin-development-mode-detector": { @@ -3776,30 +3938,32 @@ "dev": true }, "node_modules/@vaadin/vaadin-lumo-styles": { - "version": "24.1.10", - "resolved": "https://registry.npmjs.org/@vaadin/vaadin-lumo-styles/-/vaadin-lumo-styles-24.1.10.tgz", - "integrity": "sha512-QI5MP/vtskeMNZ95sKxsV6YojsayFHrx1jFWuv7OwjQ7wmMxE4U5pZJMwmun29+1bQTbTGb3Al5PEDZoKP+fiQ==", + "version": "24.2.0", + "resolved": "https://registry.npmjs.org/@vaadin/vaadin-lumo-styles/-/vaadin-lumo-styles-24.2.0.tgz", + "integrity": "sha512-rXW6GUe7Q0p5mKClVeVsMTOSZG8yN+snEDfZumD41/Vdfo/UAuVsl/k+J43pr1ArWzHQG0sqIRqHYMGqI8X+8g==", "dev": true, "dependencies": { "@polymer/polymer": "^3.0.0", - "@vaadin/icon": "~24.1.10", - "@vaadin/vaadin-themable-mixin": "~24.1.10" + "@vaadin/component-base": "~24.2.0", + "@vaadin/icon": "~24.2.0", + "@vaadin/vaadin-themable-mixin": "~24.2.0" } }, "node_modules/@vaadin/vaadin-material-styles": { - "version": "24.1.10", - "resolved": "https://registry.npmjs.org/@vaadin/vaadin-material-styles/-/vaadin-material-styles-24.1.10.tgz", - "integrity": "sha512-RH8RiJfKphM0qgj+JPNmUoBi3yoGExN9ts2hKnPuAWl/wBUnYu1hrZMGnqycZaQwOGbaeN7+Mgxb4XzXtZ2y6w==", + "version": "24.2.0", + "resolved": "https://registry.npmjs.org/@vaadin/vaadin-material-styles/-/vaadin-material-styles-24.2.0.tgz", + "integrity": "sha512-wHo3JlbheGpetme65ucSVCgjYwbvRNvfndHsig0n+l8EuvuVDsIoTrNdK7jz2gYMQpco36HOoSDPuqJXXt2nGQ==", "dev": true, "dependencies": { "@polymer/polymer": "^3.0.0", - "@vaadin/vaadin-themable-mixin": "~24.1.10" + "@vaadin/component-base": "~24.2.0", + "@vaadin/vaadin-themable-mixin": "~24.2.0" } }, "node_modules/@vaadin/vaadin-themable-mixin": { - "version": "24.1.10", - "resolved": "https://registry.npmjs.org/@vaadin/vaadin-themable-mixin/-/vaadin-themable-mixin-24.1.10.tgz", - "integrity": "sha512-a+GNdiheesm4tjqfb84D28rvXXsA3scThF2bi6KBMsPtNn6nZDcy+EK9W4YIMlbJ8xA3QaTxomB7bMXSYehDgQ==", + "version": "24.2.0", + "resolved": "https://registry.npmjs.org/@vaadin/vaadin-themable-mixin/-/vaadin-themable-mixin-24.2.0.tgz", + "integrity": "sha512-5Y2KwOlVUad9adTLondWQi7MGyvCmldWHFf5QiBIm22yQY/AxLVhzbPXcwPRR7yw+usVCJCDKmOMJa5YrwyQ1g==", "dev": true, "dependencies": { "@open-wc/dedupe-mixin": "^1.3.0", @@ -3835,9 +3999,9 @@ } }, "node_modules/@zip.js/zip.js": { - "version": "2.7.29", - "resolved": "https://registry.npmjs.org/@zip.js/zip.js/-/zip.js-2.7.29.tgz", - "integrity": "sha512-KtOa3HY7Vi77ctZAVhx2nsKweDTCP4DVBghZkvg5qyIX6T/Z54QlU6f0q2hFhxu5j+LgUDeMMhiv2xj4ZF6snA==", + "version": "2.7.30", + "resolved": "https://registry.npmjs.org/@zip.js/zip.js/-/zip.js-2.7.30.tgz", + "integrity": "sha512-nhMvQCj+TF1ATBqYzFds7v+yxPBhdDYHh8J341KtC1D2UrVBUIYcYK4Jy1/GiTsxOXEiKOXSUxvPG/XR+7jMqw==", "dev": true, "engines": { "bun": ">=0.7.0", @@ -3852,9 +4016,9 @@ "dev": true }, "node_modules/acorn": { - "version": "5.7.4", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz", - "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==", + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -3863,6 +4027,15 @@ "node": ">=0.4.0" } }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, "node_modules/agent-base": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", @@ -4538,9 +4711,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001542", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001542.tgz", - "integrity": "sha512-UrtAXVcj1mvPBFQ4sKd38daP8dEcXXr5sQe6QNNinaPd0iA/cxg9/l3VrSdL73jgw5sKyuQ6jNgiKO12W3SsVA==", + "version": "1.0.30001551", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001551.tgz", + "integrity": "sha512-vtBAez47BoGMMzlbYhfXrMV1kvRF2WP/lqiMuDu1Sb4EE4LKEgjopFDSRtZfdVnslNRpOqV/woE+Xgrwj6VQlg==", "dev": true, "funding": [ { @@ -4608,6 +4781,17 @@ "fsevents": "~2.3.2" } }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/chownr": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", @@ -4624,9 +4808,9 @@ "dev": true }, "node_modules/ci-info": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", - "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", "dev": true, "funding": [ { @@ -5064,9 +5248,9 @@ } }, "node_modules/define-data-property": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.0.tgz", - "integrity": "sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", "dev": true, "optional": true, "dependencies": { @@ -5279,9 +5463,9 @@ } }, "node_modules/electron": { - "version": "26.2.4", - "resolved": "https://registry.npmjs.org/electron/-/electron-26.2.4.tgz", - "integrity": "sha512-weMUSMyDho5E0DPQ3breba3D96IxwNvtYHjMd/4/wNN3BdI5s3+0orNnPVGJFcLhSvKoxuKUqdVonUocBPwlQA==", + "version": "27.0.2", + "resolved": "https://registry.npmjs.org/electron/-/electron-27.0.2.tgz", + "integrity": "sha512-4fbcHQ40ZDlqhr5Pamm+M5BF7ry2lGqjFTWTJ/mrBwuiPWu6xhV/RWgUhKBaLqKNfAaNl3eMxV3Jc82gv6JauQ==", "dev": true, "hasInstallScript": true, "dependencies": { @@ -5428,14 +5612,17 @@ } }, "node_modules/electron-dl": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/electron-dl/-/electron-dl-3.5.0.tgz", - "integrity": "sha512-Oj+VSuScVx8hEKM2HEvTQswTX6G3MLh7UoAz/oZuvKyNDfudNi1zY6PK/UnFoK1nCl9DF6k+3PFwElKbtZlDig==", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/electron-dl/-/electron-dl-3.5.1.tgz", + "integrity": "sha512-5Yb9s/iPVJ5mW5x3j6XkKxt7WEqREr/AhYxZmtEfW1ffQHs1+aGoiQ2fXCAU6UIXMnWog2MXK82vrxJsjA3nbQ==", "dependencies": { "ext-name": "^5.0.0", "pupa": "^2.0.1", "unused-filename": "^2.1.0" }, + "engines": { + "node": ">=12" + }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } @@ -5710,9 +5897,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.539", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.539.tgz", - "integrity": "sha512-wRmWJ8F7rgmINuI32S6r2SLrw/h/bJQsDSvBiq9GBfvc2Lh73qTOwn73r3Cf67mjVgFGJYcYtmERzySa5jIWlg==", + "version": "1.4.563", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.563.tgz", + "integrity": "sha512-dg5gj5qOgfZNkPNeyKBZQAQitIQ/xwfIDmEQJHCbXaD9ebTZxwJXUsDYcBlAvZGZLi+/354l35J1wkmP6CqYaw==", "dev": true }, "node_modules/electron-updater": { @@ -5896,18 +6083,19 @@ } }, "node_modules/eslint": { - "version": "8.50.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.50.0.tgz", - "integrity": "sha512-FOnOGSuFuFLv/Sa+FDVRZl4GGVAAFFi8LecRsI5a1tMO5HIE8nCm4ivAlzt4dT3ol/PaaGC0rJEEXQmHJBGoOg==", + "version": "8.52.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.52.0.tgz", + "integrity": "sha512-zh/JHnaixqHZsolRB/w9/02akBk9EPrOs9JwcTP2ek7yL5bVvXuRariiaAjjoJ5DvuwQ1WAE/HsMz+w17YgBCg==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", "@eslint/eslintrc": "^2.1.2", - "@eslint/js": "8.50.0", - "@humanwhocodes/config-array": "^0.11.11", + "@eslint/js": "8.52.0", + "@humanwhocodes/config-array": "^0.11.13", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", @@ -5967,9 +6155,9 @@ } }, "node_modules/eslint-plugin-wc": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-wc/-/eslint-plugin-wc-2.0.3.tgz", - "integrity": "sha512-O3i71FodYMArf8DBs+OuDQ8SH8SMiNaJ4GIcXRDsGURPdvBrVDNS9+GQ0xwmzhqUWV0df5xq8irpceA6YBdJmg==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-wc/-/eslint-plugin-wc-2.0.4.tgz", + "integrity": "sha512-ORu7MBv0hXIvq894EJad70m+AvHGbmrDdKT6lcgtCVVhEbuIAyxg0ilfqqqHOmsh8PfcUBeEae3y7CElKvm1KQ==", "dev": true, "dependencies": { "is-valid-element-name": "^1.0.0", @@ -6078,38 +6266,10 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint/node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, "node_modules/eslint/node_modules/globals": { - "version": "13.22.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.22.0.tgz", - "integrity": "sha512-H1Ddc/PbZHTDVJSnj8kWptIRSD6AM3pK+mKytuIVF4uoBV7rshFlhhvA58ceJ5wp3Er58w6zj7bykMpYXt3ETw==", + "version": "13.23.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", + "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -6130,21 +6290,6 @@ "node": ">=8" } }, - "node_modules/eslint/node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/eslint/node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -6157,45 +6302,6 @@ "node": "*" } }, - "node_modules/eslint/node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/eslint/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -6237,27 +6343,6 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/espree/node_modules/acorn": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", - "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/espree/node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, "node_modules/esquery": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", @@ -6479,23 +6564,28 @@ } }, "node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, "dependencies": { - "locate-path": "^3.0.0" + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">=6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/flat-cache": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.1.0.tgz", - "integrity": "sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.1.1.tgz", + "integrity": "sha512-/qM2b3LUIaIgviBQovTLvijfyOQXPtSRnRK26ksj2J7rzPIecePUIpJsZ4T02Qg+xiAEKIs5K8dsHEd+VaKa/Q==", "dev": true, "dependencies": { - "flatted": "^3.2.7", + "flatted": "^3.2.9", "keyv": "^4.5.3", "rimraf": "^3.0.2" }, @@ -6662,10 +6752,14 @@ } }, "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "optional": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/fuzzysort": { "version": "1.9.0", @@ -6819,14 +6913,15 @@ } }, "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, "dependencies": { - "is-glob": "^4.0.1" + "is-glob": "^4.0.3" }, "engines": { - "node": ">= 6" + "node": ">=10.13.0" } }, "node_modules/global-agent": { @@ -6958,13 +7053,10 @@ "dev": true }, "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.4.tgz", + "integrity": "sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==", "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, "engines": { "node": ">= 0.4.0" } @@ -7703,9 +7795,9 @@ } }, "node_modules/keyv": { - "version": "4.5.3", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.3.tgz", - "integrity": "sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==", + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", "dev": true, "dependencies": { "json-buffer": "3.0.1" @@ -7817,15 +7909,18 @@ } }, "node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "p-locate": "^5.0.0" }, "engines": { - "node": ">=6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/lodash": { @@ -7874,12 +7969,12 @@ } }, "node_modules/magic-string": { - "version": "0.27.0", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz", - "integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==", + "version": "0.30.5", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.5.tgz", + "integrity": "sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==", "dev": true, "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.13" + "@jridgewell/sourcemap-codec": "^1.4.15" }, "engines": { "node": ">=12" @@ -8311,28 +8406,33 @@ } }, "node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, "dependencies": { - "p-try": "^2.0.0" + "yocto-queue": "^0.1.0" }, "engines": { - "node": ">=6" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, "dependencies": { - "p-limit": "^2.0.0" + "p-limit": "^3.0.2" }, "engines": { - "node": ">=6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/p-try": { @@ -8401,11 +8501,11 @@ "dev": true }, "node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/path-is-absolute": { @@ -8485,6 +8585,62 @@ "node": ">=8" } }, + "node_modules/pkg-up/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-up/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-up/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-up/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-up/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "engines": { + "node": ">=4" + } + }, "node_modules/plist": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/plist/-/plist-3.1.0.tgz", @@ -8715,9 +8871,9 @@ } }, "node_modules/prosemirror-view": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/prosemirror-view/-/prosemirror-view-1.32.0.tgz", - "integrity": "sha512-HwW7IWgca6ehiW2PA48H/8yl0TakA0Ms5LgN5Krc97oar7GfjIKE/NocUsLe74Jq4mwyWKUNoBljE8WkXKZwng==", + "version": "1.32.1", + "resolved": "https://registry.npmjs.org/prosemirror-view/-/prosemirror-view-1.32.1.tgz", + "integrity": "sha512-9SnB4HBgRczzTyIMZLPE1iszegL04hNfUyS8uPtP1RPxNM2NTCiIs8KwNsJU4nbZO9rxJTwVTv7Jm3zU4CR78A==", "dependencies": { "prosemirror-model": "^1.16.0", "prosemirror-state": "^1.0.0", @@ -8919,6 +9075,15 @@ "node": ">=4" } }, + "node_modules/read-pkg-up/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", @@ -8993,9 +9158,9 @@ } }, "node_modules/resolve": { - "version": "1.22.6", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.6.tgz", - "integrity": "sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw==", + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", "dev": true, "dependencies": { "is-core-module": "^2.13.0", @@ -9131,18 +9296,30 @@ } }, "node_modules/rollup": { - "version": "3.29.4", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz", - "integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.1.4.tgz", + "integrity": "sha512-U8Yk1lQRKqCkDBip/pMYT+IKaN7b7UesK3fLSTuHBoBJacCE+oBqo/dfG/gkUdQNNB2OBmRP98cn2C2bkYZkyw==", "dev": true, "bin": { "rollup": "dist/bin/rollup" }, "engines": { - "node": ">=14.18.0", + "node": ">=18.0.0", "npm": ">=8.0.0" }, "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.1.4", + "@rollup/rollup-android-arm64": "4.1.4", + "@rollup/rollup-darwin-arm64": "4.1.4", + "@rollup/rollup-darwin-x64": "4.1.4", + "@rollup/rollup-linux-arm-gnueabihf": "4.1.4", + "@rollup/rollup-linux-arm64-gnu": "4.1.4", + "@rollup/rollup-linux-arm64-musl": "4.1.4", + "@rollup/rollup-linux-x64-gnu": "4.1.4", + "@rollup/rollup-linux-x64-musl": "4.1.4", + "@rollup/rollup-win32-arm64-msvc": "4.1.4", + "@rollup/rollup-win32-ia32-msvc": "4.1.4", + "@rollup/rollup-win32-x64-msvc": "4.1.4", "fsevents": "~2.3.2" } }, @@ -9160,6 +9337,18 @@ "rollup-pluginutils": "^2.3.1" } }, + "node_modules/rollup-plugin-node-globals/node_modules/acorn": { + "version": "5.7.4", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz", + "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/rollup-plugin-node-globals/node_modules/estree-walker": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.5.2.tgz", @@ -9272,9 +9461,9 @@ } }, "node_modules/sass": { - "version": "1.68.0", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.68.0.tgz", - "integrity": "sha512-Lmj9lM/fef0nQswm1J2HJcEsBUba4wgNx2fea6yJHODREoMFnwRpZydBnX/RjyXw2REIwdkbqE4hrTo4qfDBUA==", + "version": "1.69.4", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.69.4.tgz", + "integrity": "sha512-+qEreVhqAy8o++aQfCJwp0sklr2xyEzkm9Pp/Igu9wNPoe7EZEQ8X/MBvvXggI2ql607cxKg/RKOwDj6pp2XDA==", "dependencies": { "chokidar": ">=3.0.0 <4.0.0", "immutable": "^4.0.0", @@ -9639,9 +9828,9 @@ } }, "node_modules/spdx-license-ids": { - "version": "3.0.15", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.15.tgz", - "integrity": "sha512-lpT8hSQp9jAKp9mhtBU4Xjon8LPGBvLIuBiSVhMEtmLecTh2mO0tlqrAMp47tBXzMr13NJMQ2lf7RpQGLJ3HsQ==", + "version": "3.0.16", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz", + "integrity": "sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==", "dev": true }, "node_modules/sprintf-js": { @@ -9837,9 +10026,9 @@ } }, "node_modules/terser": { - "version": "5.20.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.20.0.tgz", - "integrity": "sha512-e56ETryaQDyebBwJIWYB2TT6f2EZ0fL0sW/JRXNMN26zZdKi2u/E/5my5lG6jNxym6qsrVXfFRmOdV42zlAgLQ==", + "version": "5.22.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.22.0.tgz", + "integrity": "sha512-hHZVLgRA2z4NWcN6aS5rQDc+7Dcy58HOf2zbYwmFcQ+ua3h6eEFf5lIDKTzbWwlazPyOZsFQO8V80/IjVNExEw==", "dev": true, "dependencies": { "@jridgewell/source-map": "^0.3.3", @@ -9854,18 +10043,6 @@ "node": ">=10" } }, - "node_modules/terser/node_modules/acorn": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", - "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/terser/node_modules/commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", @@ -10051,14 +10228,6 @@ "node": ">=8" } }, - "node_modules/unused-filename/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "engines": { - "node": ">=8" - } - }, "node_modules/update-browserslist-db": { "version": "1.0.13", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", diff --git a/package.json b/package.json index 217f967e..9b85a313 100644 --- a/package.json +++ b/package.json @@ -34,7 +34,7 @@ "@hapi/hapi": "21.3.2", "@hapi/inert": "7.1.0", "@lit-labs/motion": "1.0.4", - "@popperjs/core": "^2.11.8", + "@popperjs/core": "2.11.8", "@tiptap/core": "2.0.4", "@tiptap/extension-highlight": "2.0.4", "@tiptap/extension-image": "2.0.4", @@ -48,7 +48,7 @@ "buffer": "6.0.3", "compressorjs": "1.2.1", "crypto-js": "4.1.1", - "electron-dl": "3.5.0", + "electron-dl": "3.5.1", "electron-log": "4.4.8", "electron-store": "8.1.0", "electron-updater": "6.1.4", @@ -67,12 +67,12 @@ "prosemirror-schema-list": "1.3.0", "prosemirror-state": "1.4.3", "prosemirror-transform": "1.8.0", - "prosemirror-view": "1.32.0", - "sass": "1.68.0", + "prosemirror-view": "1.32.1", + "sass": "1.69.4", "short-unique-id": "5.0.3" }, "devDependencies": { - "@babel/core": "7.23.0", + "@babel/core": "7.23.2", "@material/mwc-button": "0.27.0", "@material/mwc-checkbox": "0.27.0", "@material/mwc-dialog": "0.27.0", @@ -108,28 +108,28 @@ "@polymer/paper-spinner": "3.0.2", "@polymer/paper-toast": "3.0.1", "@polymer/paper-tooltip": "3.0.1", - "@qortal/rollup-plugin-web-worker-loader": "1.6.4", - "@rollup/plugin-alias": "5.0.0", - "@rollup/plugin-babel": "6.0.3", - "@rollup/plugin-commonjs": "25.0.4", - "@rollup/plugin-node-resolve": "15.2.1", - "@rollup/plugin-replace": "5.0.2", - "@rollup/plugin-terser": "0.4.3", - "@vaadin/avatar": "24.1.9", - "@vaadin/button": "24.1.9", - "@vaadin/grid": "24.1.9", - "@vaadin/icons": "24.1.9", - "@vaadin/password-field": "24.1.9", - "@vaadin/tooltip": "24.1.10", - "@zip.js/zip.js": "2.7.29", + "@qortal/rollup-plugin-web-worker-loader": "1.6.5", + "@rollup/plugin-alias": "5.0.1", + "@rollup/plugin-babel": "6.0.4", + "@rollup/plugin-commonjs": "25.0.7", + "@rollup/plugin-node-resolve": "15.2.3", + "@rollup/plugin-replace": "5.0.4", + "@rollup/plugin-terser": "0.4.4", + "@vaadin/avatar": "24.2.0", + "@vaadin/button": "24.2.0", + "@vaadin/grid": "24.2.0", + "@vaadin/icons": "24.2.0", + "@vaadin/password-field": "24.2.0", + "@vaadin/tooltip": "24.2.0", + "@zip.js/zip.js": "2.7.30", "axios": "1.5.1", - "electron": "26.2.4", + "electron": "27.0.2", "electron-builder": "24.6.4", "electron-packager": "17.1.2", "epml": "0.3.3", - "eslint": "^8.50.0", - "eslint-plugin-lit": "^1.9.1", - "eslint-plugin-wc": "^2.0.3", + "eslint": "8.52.0", + "eslint-plugin-lit": "1.9.1", + "eslint-plugin-wc": "2.0.4", "file-saver": "2.0.5", "highcharts": "11.1.0", "html-escaper": "3.0.3", @@ -140,13 +140,13 @@ "pwa-helpers": "0.9.1", "redux": "4.2.1", "redux-thunk": "2.4.2", - "rollup": "3.29.4", + "rollup": "4.1.4", "rollup-plugin-node-globals": "1.4.0", "rollup-plugin-progress": "1.1.2", "rollup-plugin-scss": "3.0.0", "shelljs": "0.8.5" }, "engines": { - "node": ">=18.16.1" + "node": ">=18.17.1" } } diff --git a/plugins/plugins/core/components/qdn-action-types.js b/plugins/plugins/core/components/qdn-action-types.js index 59385690..496aba42 100644 --- a/plugins/plugins/core/components/qdn-action-types.js +++ b/plugins/plugins/core/components/qdn-action-types.js @@ -59,4 +59,10 @@ export const OPEN_NEW_TAB = 'OPEN_NEW_TAB' export const NOTIFICATIONS_PERMISSION = 'NOTIFICATIONS_PERMISSION' //SEND_LOCAL_NOTIFICATION -export const SEND_LOCAL_NOTIFICATION = 'SEND_LOCAL_NOTIFICATION' \ No newline at end of file +export const SEND_LOCAL_NOTIFICATION = 'SEND_LOCAL_NOTIFICATION' + +//VOTE_ON_POLL +export const VOTE_ON_POLL= 'VOTE_ON_POLL' + +//CREATE_POLL +export const CREATE_POLL= 'CREATE_POLL' \ No newline at end of file diff --git a/plugins/plugins/core/qdn/browser/browser.src.js b/plugins/plugins/core/qdn/browser/browser.src.js index ca7b664d..3225f33e 100644 --- a/plugins/plugins/core/qdn/browser/browser.src.js +++ b/plugins/plugins/core/qdn/browser/browser.src.js @@ -493,6 +493,33 @@ class WebBrowser extends LitElement { return qortFee } + async unitVoteFee() { + const myNode = window.parent.reduxStore.getState().app.nodeConfig.knownNodes[window.parent.reduxStore.getState().app.nodeConfig.node] + const nodeUrl = myNode.protocol + '://' + myNode.domain + ':' + myNode.port + const url = `${nodeUrl}/transactions/unitfee?txType=VOTE_ON_POLL` + const response = await fetch(url) + if (!response.ok) { + throw new Error('Error when fetching vote fee'); + } + + const data = await response.json() + const joinFee = (Number(data) / 1e8).toFixed(8) + return joinFee + } + async unitCreatePollFee() { + const myNode = window.parent.reduxStore.getState().app.nodeConfig.knownNodes[window.parent.reduxStore.getState().app.nodeConfig.node] + const nodeUrl = myNode.protocol + '://' + myNode.domain + ':' + myNode.port + const url = `${nodeUrl}/transactions/unitfee?txType=CREATE_POLL` + const response = await fetch(url) + if (!response.ok) { + throw new Error('Error when fetching vote fee'); + } + + const data = await response.json() + const joinFee = (Number(data) / 1e8).toFixed(8) + return joinFee + } + async _joinGroup(groupId, groupName) { const joinFeeInput = await this.unitJoinFee() const getLastRef = async () => { @@ -607,6 +634,122 @@ class WebBrowser extends LitElement { } + async _voteOnPoll(pollName, optionIndex) { + const voteFeeInput = await this.unitVoteFee() + const getLastRef = async () => { + let myRef = await parentEpml.request('apiCall', { + type: 'api', + url: `/addresses/lastreference/${this.selectedAddress.address}` + }) + return myRef + }; + + const validateReceiver = async () => { + let lastRef = await getLastRef(); + let myTransaction = await makeTransactionRequest(lastRef) + const res = getTxnRequestResponse(myTransaction) + return res + } + + const makeTransactionRequest = async (lastRef) => { + let votedialog1 = get("transactions.votedialog1") + let votedialog2 = get("transactions.votedialog2") + let feeDialog = get("walletpage.wchange12") + + let myTxnrequest = await parentEpml.request('transaction', { + type: 9, + nonce: this.selectedAddress.nonce, + params: { + fee: voteFeeInput, + voterAddress: this.selectedAddress.address, + rPollName: pollName, + rOptionIndex: optionIndex, + lastReference: lastRef, + votedialog1: votedialog1, + votedialog2: votedialog2, + feeDialog + }, + apiVersion: 2 + }) + return myTxnrequest + } + + const getTxnRequestResponse = (txnResponse) => { + if (txnResponse.success === false && txnResponse.message) { + throw new Error(txnResponse.message) + } else if (txnResponse.success === true && !txnResponse.data.error) { + return txnResponse.data + } else if (txnResponse.data && txnResponse.data.message) { + throw new Error(txnResponse.data.message) + } else { + throw new Error('Server error. Could not perform action.') + } + } + const voteRes = await validateReceiver() + return voteRes + + } + async _createPoll(pollName, pollDescription, options, pollOwnerAddress) { + const voteFeeInput = await this.unitCreatePollFee() + const getLastRef = async () => { + let myRef = await parentEpml.request('apiCall', { + type: 'api', + url: `/addresses/lastreference/${this.selectedAddress.address}` + }) + return myRef + }; + + const validateReceiver = async () => { + let lastRef = await getLastRef(); + let myTransaction = await makeTransactionRequest(lastRef) + const res = getTxnRequestResponse(myTransaction) + return res + } + + const makeTransactionRequest = async (lastRef) => { + let votedialog3 = get("transactions.votedialog3") + let votedialog4 = get("transactions.votedialog4") + let votedialog5 = get("transactions.votedialog5") + let votedialog6 = get("transactions.votedialog6") + let feeDialog = get("walletpage.wchange12") + + let myTxnrequest = await parentEpml.request('transaction', { + type: 8, + nonce: this.selectedAddress.nonce, + params: { + fee: voteFeeInput, + ownerAddress: pollOwnerAddress, + rPollName: pollName, + rPollDesc: pollDescription, + rOptions: options, + lastReference: lastRef, + votedialog3: votedialog3, + votedialog4: votedialog4, + votedialog5: votedialog5, + votedialog6: votedialog6, + feeDialog + }, + apiVersion: 2 + }) + return myTxnrequest + } + + const getTxnRequestResponse = (txnResponse) => { + if (txnResponse.success === false && txnResponse.message) { + throw new Error(txnResponse.message) + } else if (txnResponse.success === true && !txnResponse.data.error) { + return txnResponse.data + } else if (txnResponse.data && txnResponse.data.message) { + throw new Error(txnResponse.data.message) + } else { + throw new Error('Server error. Could not perform action.') + } + } + const voteRes = await validateReceiver() + return voteRes + + } + firstUpdated() { this.changeTheme(); this.changeLanguage(); @@ -1321,6 +1464,103 @@ class WebBrowser extends LitElement { // If they decline, send back JSON that includes an `error` key, such as `{"error": "User declined request"}` break; } + case actions.VOTE_ON_POLL: { + const requiredFields = ['pollName', 'optionIndex']; + const missingFields = []; + + requiredFields.forEach((field) => { + if (!data[field]) { + missingFields.push(field); + } + }); + + if (missingFields.length > 0) { + const missingFieldsString = missingFields.join(', '); + const errorMsg = `Missing fields: ${missingFieldsString}` + let data = {}; + data['error'] = errorMsg; + response = JSON.stringify(data); + break + } + const pollName = data.pollName; + const optionIndex = data.optionIndex; + + + let pollInfo = null + try { + pollInfo = await parentEpml.request("apiCall", { + type: "api", + url: `/polls/${pollName}`, + }); + } catch (error) { + const errorMsg = (error && error.message) || 'Poll not found'; + let obj = {}; + obj['error'] = errorMsg; + response = JSON.stringify(obj); + break + } + + if (!pollInfo || pollInfo.error) { + const errorMsg = (pollInfo && pollInfo.message) || 'Poll not found'; + let obj = {}; + obj['error'] = errorMsg; + response = JSON.stringify(obj); + break + } + + try { + this.loader.show(); + const resVoteOnPoll = await this._voteOnPoll(pollName, optionIndex) + response = JSON.stringify(resVoteOnPoll); + } catch (error) { + const obj = {}; + const errorMsg = error.message || 'Failed to vote on the poll.'; + obj['error'] = errorMsg; + response = JSON.stringify(obj); + } finally { + this.loader.hide(); + } + + break; + } + case actions.CREATE_POLL: { + const requiredFields = ['pollName', 'pollDescription', 'pollOptions', 'pollOwnerAddress']; + const missingFields = []; + + requiredFields.forEach((field) => { + if (!data[field]) { + missingFields.push(field); + } + }); + + if (missingFields.length > 0) { + const missingFieldsString = missingFields.join(', '); + const errorMsg = `Missing fields: ${missingFieldsString}` + let data = {}; + data['error'] = errorMsg; + response = JSON.stringify(data); + break + } + const pollName = data.pollName; + const pollDescription = data.pollDescription + const pollOptions = data.pollOptions + const pollOwnerAddress = data.pollOwnerAddress + + try { + this.loader.show(); + const resCreatePoll = await this._createPoll(pollName, pollDescription, pollOptions, pollOwnerAddress) + response = JSON.stringify(resCreatePoll); + } catch (error) { + const obj = {}; + const errorMsg = error.message || 'Failed to created poll.'; + obj['error'] = errorMsg; + response = JSON.stringify(obj); + } finally { + this.loader.hide(); + } + + break; + } case actions.OPEN_NEW_TAB: { if(!data.qortalLink){ const obj = {}; diff --git a/plugins/plugins/core/trade-portal/trade-portal.src.js b/plugins/plugins/core/trade-portal/trade-portal.src.js index 2a5cb7a7..5d9b91b1 100644 --- a/plugins/plugins/core/trade-portal/trade-portal.src.js +++ b/plugins/plugins/core/trade-portal/trade-portal.src.js @@ -100,17 +100,17 @@ class TradePortal extends LitElement { --mdc-theme-primary: rgb(3, 169, 244); --mdc-theme-secondary: var(--mdc-theme-primary); --mdc-theme-error: rgb(255, 89, 89); - --mdc-text-field-outlined-idle-border-color: var(--txtfieldborder); + --mdc-text-field-outlined-idle-border-color: var(--txtfieldborder); --mdc-text-field-outlined-hover-border-color: var(--txtfieldhoverborder); --mdc-text-field-label-ink-color: var(--black); --mdc-text-field-ink-color: var(--black); - --mdc-select-outlined-idle-border-color: var(--txtfieldborder); + --mdc-select-outlined-idle-border-color: var(--txtfieldborder); --mdc-select-outlined-hover-border-color: var(--txtfieldhoverborder); --mdc-select-label-ink-color: var(--black); --mdc-select-ink-color: var(--black); --mdc-theme-surface: var(--white); --mdc-dialog-content-ink-color: var(--black); - --mdc-dialog-shape-radius: 25px; + --mdc-dialog-shape-radius: 25px; --paper-input-container-focus-color: var(--mdc-theme-primary); --lumo-primary-text-color: rgb(0, 167, 245); --lumo-primary-color-50pct: rgba(0, 167, 245, 0.5); @@ -1580,7 +1580,7 @@ class TradePortal extends LitElement { this.selectedAddress = selectedAddress this.btcWallet = window.parent.reduxStore.getState().app.selectedAddress.btcWallet.address - this.ltcWwallet = window.parent.reduxStore.getState().app.selectedAddress.ltcWallet.address + this.ltcWallet = window.parent.reduxStore.getState().app.selectedAddress.ltcWallet.address this.dogeWallet = window.parent.reduxStore.getState().app.selectedAddress.dogeWallet.address this.dgbWallet = window.parent.reduxStore.getState().app.selectedAddress.dgbWallet.address this.rvnWallet = window.parent.reduxStore.getState().app.selectedAddress.rvnWallet.address