Merge remote-tracking branch 'origin/master' into mongodb-3.0-driver-2.0

v1.18.x
Barış Soner Uşaklı 10 years ago
commit e4199179f7

@ -50,6 +50,15 @@ $ git rev-parse HEAD
If you have downloaded the `.zip` or `.tar.gz` packages from GitHub (or elsewhere), please let us know.
## Provide theme versions if issue is related to the theme/display
``` bash
$ npm ls nodebb-theme-vanilla nodebb-theme-lavender
nodebb@0.7.0-dev /home/julian/Projects/nodebb/forum
├── nodebb-theme-lavender@0.2.13
└── nodebb-theme-vanilla@0.2.35
```
## Attempt to use `git bisect`
If you have installed NodeBB via GitHub clone, are familiar with utilising git, and are willing to help us narrow down the specific commit that causes a bug, consider running `git bisect`.

@ -33,6 +33,7 @@
"heapdump": "^0.3.0",
"less": "^2.0.0",
"logrotate-stream": "^0.2.3",
"lru-cache": "^2.5.0",
"mime": "^1.3.4",
"mkdirp": "~0.5.0",
"mmmagic": "^0.3.13",
@ -41,7 +42,7 @@
"nodebb-plugin-dbsearch": "^0.1.0",
"nodebb-plugin-emoji-extended": "^0.4.1-4",
"nodebb-plugin-markdown": "^1.0.0",
"nodebb-plugin-mentions": "^0.9.0",
"nodebb-plugin-mentions": "^0.10.0",
"nodebb-plugin-soundpack-default": "~0.1.1",
"nodebb-plugin-spam-be-gone": "^0.4.0",
"nodebb-theme-lavender": "^1.0.6",
@ -63,7 +64,7 @@
"socket.io-redis": "^0.1.3",
"socketio-wildcard": "~0.1.1",
"string": "^3.0.0",
"templates.js": "^0.1.23",
"templates.js": "^0.1.28",
"uglify-js": "git+https://github.com/julianlam/UglifyJS2.git",
"underscore": "~1.7.0",
"validator": "^3.30.0",

@ -1,6 +1,6 @@
{
"new_topic_button": "موضوع جديد",
"guest-login-post": "Log in to post",
"guest-login-post": "المرجو تسجيل الدخول أوَّلا",
"no_topics": "<strong>لا توجد مواضيع في هذه الفئة</strong>لم لا تحاول إنشاء موضوع؟<br />",
"browsing": "تصفح",
"no_replies": "لم يرد أحد",

@ -9,9 +9,9 @@
"reset.text1": "لقد توصلنا بطلب إعادة تعيين كلمة السرالخاصة بك، ربما لكونك قد نسيتها, إن لم يكن الأمر كذلك، المرجو تجاهل هذه الرسالة.",
"reset.text2": "لمواصلة طلب إعاة تعيين كلمة السر، المرجو تتبع هذا الرابط.",
"reset.cta": "انقر هنا لإعادة تعيين كلمة السر الخاصة بك.",
"reset.notify.subject": "Password successfully changed",
"reset.notify.text1": "We are notifying you that on %1, your password was changed successfully.",
"reset.notify.text2": "If you did not authorise this, please notify an administrator immediately.",
"reset.notify.subject": "تم تغيير كلمة المرور بنجاح",
"reset.notify.text1": "نحيطك علما أن كلمة مرورك قد تم تغييرها في %1",
"reset.notify.text2": "إن لم يكن لديك علم بهذا، المرجو إشعار مدبر النظام بأسرع مايمكن.",
"digest.notifications": "لديك تنبيهات غير مقروءة من طرف %1:",
"digest.latest_topics": "آخر المستجدات من %1",
"digest.cta": "انقر هنا لمشاهدة %1",
@ -20,8 +20,8 @@
"notif.chat.subject": "هناك محادثة جديدة من %1",
"notif.chat.cta": "انقر هنا لمتابعة المحادثة",
"notif.chat.unsub.info": "تم إرسال هذا الإشعار بوجودة محادثة جديدة وفقا لخيارات تسجيلك.",
"notif.post.cta": "Click here to read the full topic",
"notif.post.unsub.info": "This post notification was sent to you due to your subscription settings.",
"notif.post.cta": "انقر هنا لقراءة الموضوع بأكمله",
"notif.post.unsub.info": "تم إشعارك بهذه المشاركة بناءً على الخيارات التي سبق وأن حددتها.",
"test.text1": "هذه رسالة تجريبية للتأكد من صحة إعدادت الرسائل الإلكترونية في منتدى NodeBB خاصتك.",
"unsub.cta": "انقر هنا لتغيير تلك الإعدادات",
"closing": "شكرًا لك!"

@ -18,9 +18,9 @@
"username-taken": "اسم المستخدم مأخوذ",
"email-taken": "البريد الالكتروني مأخوذ",
"email-not-confirmed": "عنوان بريدك الإلكتروني غير مفعل بعد. انقر هنا لتفعيله من فضلك.",
"email-not-confirmed-chat": "You are unable to chat until your email is confirmed",
"no-email-to-confirm": "This forum requires email confirmation, please click here to enter an email",
"email-confirm-failed": "We could not confirm your email, please try again later.",
"email-not-confirmed-chat": "لايمكنك الدردشة إلا بعد تفعيل بريدك الإلكتروني",
"no-email-to-confirm": "هذا المنتدى يستلزم تفعيل بريدك الإلكتروني، انقر هنا من فضلك لإدخاله.",
"email-confirm-failed": "لم نستطع تفعيل بريدك الإلكتروني، المرجو المحاولة لاحقًا.",
"username-too-short": "اسم المستخدم قصير.",
"username-too-long": "اسم المستخدم طويل",
"user-banned": "المستخدم محظور",
@ -35,10 +35,10 @@
"no-emailers-configured": "لا يمكن إرسال رسالة إلكترونية تجريبية لعدم وجود قوالب خاصة بالرسائل الإلكترونية،",
"category-disabled": "قائمة معطلة",
"topic-locked": "الموضوع مقفول",
"post-edit-duration-expired": "You are only allowed to edit posts for %1 seconds after posting",
"post-edit-duration-expired": "لايمكنك تعديل مشاركتك بعد مرور أكثر من %1 ثانية على كتابتها.",
"still-uploading": "الرجاء انتظار الرفع",
"content-too-short": "المرجو إدخال موضوع أطول من هذا. يجب أن تتوفر المواضيع على %1 حروف على الأقل.",
"content-too-long": "Please enter a shorter post. Posts can't be longer than %1 characters.",
"content-too-long": "لا يمكن للمشاركات أن تتجاوز %1 حرفًا/أحرف.",
"title-too-short": "المرجو إدخال عنوان أطول من هذا. يجب أن تتوفر العناوين على %1 حروف على الأقل.",
"title-too-long": "المرجو إدخال عنوان أقصر من هذا. يجب ألا تتجاوز العناوين %1 حرفًا.",
"too-many-posts": "يمكنك إنشاء المواضيع بمعدل موضوع واحد كل %1 ثانية - المرجو الانتظار قليلا.",

@ -1,34 +1,34 @@
{
"groups": "المجموعات",
"view_group": "معاينة المجموعة",
"owner": "Group Owner",
"new_group": "Create New Group",
"no_groups_found": "There are no groups to see",
"pending.accept": "Accept",
"pending.reject": "Reject",
"cover-instructions": "Drag and Drop a photo, drag to position, and hit <strong>Save</strong>",
"cover-change": "Change",
"cover-save": "Save",
"cover-saving": "Saving",
"owner": "مالك المجموعة",
"new_group": "أنشئ مجموعة جديدة",
"no_groups_found": "لاوجدود لمجموعات يمكن معاينتها",
"pending.accept": "موافق",
"pending.reject": "رفض",
"cover-instructions": "اسحب وأسقِط صورة، اسحبها للموضع المرغوب، وانقر على <strong>حفظ</strong>",
"cover-change": "تغيير",
"cover-save": "حفظ",
"cover-saving": "جاري الحفظ",
"details.title": "تفاصيل المجموعة",
"details.members": "لائحة الأعضاء",
"details.pending": "Pending Members",
"details.pending": "المستخدمون في الانتظار",
"details.has_no_posts": "أعضاء هذه المجموعة لم يضيفوا أية مشاركة",
"details.latest_posts": "آخر المشاركات",
"details.private": "Private",
"details.grant": "Grant/Rescind Ownership",
"details.kick": "Kick",
"details.owner_options": "Group Administration",
"details.group_name": "Group Name",
"details.description": "Description",
"details.badge_preview": "Badge Preview",
"details.change_icon": "Change Icon",
"details.change_colour": "Change Colour",
"details.badge_text": "Badge Text",
"details.userTitleEnabled": "Show Badge",
"details.private_help": "If enabled, joining of groups requires approval from a group owner",
"details.hidden": "Hidden",
"details.hidden_help": "If enabled, this group will not be found in the groups listing, and users will have to be invited manually",
"event.updated": "Group details have been updated",
"event.deleted": "The group \"%1\" has been deleted"
"details.private": "خاص",
"details.grant": "منح/سحب المِلكية",
"details.kick": "طرد",
"details.owner_options": "تدبير المجموعة",
"details.group_name": "اسم المجموعة",
"details.description": "الوصف",
"details.badge_preview": "معاينة الوسام",
"details.change_icon": "تغيير الأيقونة",
"details.change_colour": "تغيير اللون",
"details.badge_text": "نص الوسام",
"details.userTitleEnabled": "إظهار الوسام",
"details.private_help": "في حالة تفعيل الخيار، الانضمام إلى المجموعة يستلزم قبول مالكها",
"details.hidden": "مخفي",
"details.hidden_help": "في حالة تفعيل الخيار، لن تظهر المجموعة للعموم والإنضمام إليها سيتلزم دعوة يدوية.",
"event.updated": "تم تحديث بيانات المجموعة",
"event.deleted": "تم حذف المجموعة %1"
}

@ -1,7 +1,7 @@
{
"username-email": "Username / Email",
"username": "Username",
"email": "Email",
"username-email": "اسم المستخدم / البريد الإلكتروني",
"username": "اسم المستخدم",
"email": "البريد الإلكتروني",
"remember_me": "تذكرني؟",
"forgot_password": "نسيت كلمة المرور؟",
"alternative_logins": "تسجيلات الدخول البديلة",

@ -2,7 +2,7 @@
"title": "تنبيهات",
"no_notifs": "ليس لديك أية تنبيهات جديدة",
"see_all": "معاينة كل التنبيهات",
"mark_all_read": "Mark all notifications read",
"mark_all_read": "اجعل كل التنبيهات مقروءة",
"back_to_home": "عودة إلى %1",
"outgoing_link": "رابط خارجي",
"outgoing_link_message": "أنت تغادر %1 حاليا.",

@ -19,12 +19,12 @@
"email-taken": "Die E-Mail-Adresse ist bereits vergeben",
"email-not-confirmed": "Deine E-Mail wurde noch nicht bestätigt. Bitte klicke hier, um deine E-Mail zu bestätigen.",
"email-not-confirmed-chat": "Der Chat ist deaktiviert bis Du deine E-Mail bestätigt hast",
"no-email-to-confirm": "This forum requires email confirmation, please click here to enter an email",
"email-confirm-failed": "We could not confirm your email, please try again later.",
"no-email-to-confirm": "Dieses Forum setzt E-Mail-Bestätigung voraus, bitte klick hier um eine E-Mail-Adresse einzugeben",
"email-confirm-failed": "Wir konnten deine E-Mail-Adresse nicht bestätigen, bitte versuch es später noch einmal",
"username-too-short": "Benutzername ist zu kurz",
"username-too-long": "Der Benutzername ist zu lang",
"user-banned": "Der Benutzer ist gesperrt",
"user-too-new": "Entschuldigung, du musst %1 Sekunden warten, bevor du deinen ersten Beitrag verfassen kannst!",
"user-too-new": "Tut uns leid, du musst %1 Sekunden warten, bevor du deinen ersten Beitrag verfassen kannst!",
"no-category": "Die Kategorie existiert nicht",
"no-topic": "Das Thema existiert nicht",
"no-post": "Der Beitrag existiert nicht",
@ -35,7 +35,7 @@
"no-emailers-configured": "Es wurde keine E-Mail-Plugins geladen, weshalb eine Test-E-Mail nicht gesendet werden konnte.",
"category-disabled": "Kategorie ist deaktiviert",
"topic-locked": "Thema ist gesperrt",
"post-edit-duration-expired": "You are only allowed to edit posts for %1 seconds after posting",
"post-edit-duration-expired": "Du darfst Beiträge lediglich innerhalb von %1 Sekunden nach dem erstellen editieren",
"still-uploading": "Bitte warte bis der Vorgang abgeschlossen ist.",
"content-too-short": "Bitte gib einen längeren Beitrag ein. Beiträge sollten mindestens %1 Zeichen enthalten.",
"content-too-long": "Bitte schreibe einen kürzeren Beitrag. Beiträge können nicht mehr als %1 Zeichen enthalten.",
@ -43,16 +43,16 @@
"title-too-long": "Der Titel darf maximal %1 Zeichen enthalten.",
"too-many-posts": "Du kannst maximal alle %1 Sekunden einen Beitrag erstellen - bitte warte, bevor du einen neuen Beitrag erstellst",
"too-many-posts-newbie": "Als neuer Benutzer kannst du nur alle %1 Sekunden einen Beitrag verfassen, bis du %2 Reputationspunkte hast - Bitte warte etwas, bevor du erneut einen Beitrag verfasst",
"tag-too-short": "Please enter a longer tag. Tags should contain at least %1 characters",
"tag-too-long": "Please enter a shorter tag. Tags can't be longer than %1 characters",
"file-too-big": "Die maximale Dateigröße beträgt %1 kbs - bitte lade eine kleinere Datei hoch",
"cant-vote-self-post": "Du kannst deinen eigenen Beitrag nicht bewerten.",
"tag-too-short": "Bitte gib ein längeres Stichwort an. Stichwörter sollten aus mindestens %1 Zeichen bestehen.",
"tag-too-long": "Bitte gib ein kürzeres Stichwort ein. Stichwörter können nicht länger als %1 Zeichen sein.",
"file-too-big": "Die maximale Dateigröße beträgt %1 kB - bitte lade eine kleinere Datei hoch",
"cant-vote-self-post": "Du kannst deinen eigenen Beitrag nicht bewerten",
"already-favourited": "Dieser Beitrag ist bereits in deinen Favoriten enthalten",
"already-unfavourited": "Du hast diesen Beitrag bereits aus deinen Favoriten entfernt",
"cant-ban-other-admins": "Du kannst andere Administratoren nicht sperren!",
"invalid-image-type": "Falsche Bildart. Erlaubte Arten sind: %1",
"invalid-image-extension": "Ungültige Dateinamenerweiterung",
"invalid-file-type": "Invalid file type. Allowed types are: %1",
"invalid-file-type": "Ungültiger Dateityp. Erlaubte Typen sind: %1",
"group-name-too-short": "Gruppenname zu kurz",
"group-already-exists": "Gruppe existiert bereits",
"group-name-change-not-allowed": "Du kannst den Namen der Gruppe nicht ändern",
@ -75,7 +75,7 @@
"not-enough-reputation-to-flag": "Deine Reputation ist nicht gut genug, um diesen Beitrag zu melden",
"reload-failed": "Es ist ein Problem während des Reloads von NodeBB aufgetreten: \"%1\". NodeBB wird weiterhin clientseitige Assets bereitstellen, allerdings solltest du das, was du vor dem Reload gemacht hast, rückgängig machen.",
"registration-error": "Registrierungsfehler",
"parse-error": "Ein Fehler ist beim Parsen der Server-Antwort aufgetreten",
"wrong-login-type-email": "Please use your email to login",
"wrong-login-type-username": "Please use your username to login"
"parse-error": "Beim auswerten der Serverantwort ist etwas schiefgegangen",
"wrong-login-type-email": "Bitte nutze deine E-Mail-Adresse zum einloggen",
"wrong-login-type-username": "Bitte nutze deinen Benutzernamen zum einloggen"
}

@ -4,31 +4,31 @@
"owner": "Gruppenbesitzer",
"new_group": "Neue Gruppe erstellen",
"no_groups_found": "Es sind keine Gruppen vorhanden",
"pending.accept": "Accept",
"pending.reject": "Reject",
"cover-instructions": "Drag and Drop ein Foto, bewege es in Position, dann drücke <strong>Speichern</strong>",
"pending.accept": "Annehmen",
"pending.reject": "Abweisen",
"cover-instructions": "Foto auf eine Position bewegen, und <strong>Speichern</strong> drücken",
"cover-change": "Ändern",
"cover-save": "Speichern",
"cover-saving": "Am speichern",
"cover-saving": "Speicherung läuft",
"details.title": "Gruppendetails",
"details.members": "Mitgliederliste",
"details.pending": "Ausstehende Mitglieder",
"details.pending": "Mitglieder in Schwebe",
"details.has_no_posts": "Die Mitglieder dieser Gruppe haben keine Beiträge verfasst.",
"details.latest_posts": "Aktuelle Beiträge",
"details.private": "Private",
"details.grant": "Gewähre/Widerrufe Besitz",
"details.latest_posts": "Neueste Beiträge",
"details.private": "Privat",
"details.grant": "Gewähre/widerrufe Besitz",
"details.kick": "Kick",
"details.owner_options": "Gruppenadministration",
"details.group_name": "Group Name",
"details.description": "Description",
"details.badge_preview": "Badge Preview",
"details.change_icon": "Change Icon",
"details.change_colour": "Change Colour",
"details.badge_text": "Badge Text",
"details.userTitleEnabled": "Show Badge",
"details.private_help": "If enabled, joining of groups requires approval from a group owner",
"details.hidden": "Hidden",
"details.hidden_help": "If enabled, this group will not be found in the groups listing, and users will have to be invited manually",
"details.group_name": "Gruppenname",
"details.description": "Beschreibung",
"details.badge_preview": "Abzeichenvorschau",
"details.change_icon": "Symbol ändern",
"details.change_colour": "Farbe ändern",
"details.badge_text": "Text für das Abzeichen",
"details.userTitleEnabled": "Abzeichen anzeigen",
"details.private_help": "Wenn aktiviert, setzt ein Gruppenbeitritt die Zustimmung eines Gruppenbesitzers voraus",
"details.hidden": "Versteckt",
"details.hidden_help": "Wenn aktiviert, wird diese Gruppe in der Gruppenliste nicht zu finden sein, und Benutzer werden manuell eingeladen werden müssen.",
"event.updated": "Gruppendetails wurden aktualisiert",
"event.deleted": "Die Gruppe \"% 1\" wurde gelöscht"
"event.deleted": "Die Gruppe \"%1\" wurde gelöscht."
}

@ -1,10 +1,10 @@
{
"username-email": "Username / Email",
"username": "Username",
"email": "Email",
"username-email": "Benutzername / E-Mail-Adresse",
"username": "Benutzername",
"email": "E-Mail",
"remember_me": "Eingeloggt bleiben?",
"forgot_password": "Passwort vergessen?",
"alternative_logins": "Login Alternativen",
"alternative_logins": "Alternative Logins",
"failed_login_attempt": " Anmeldeversuch fehlgeschlagen, versuche es erneut.",
"login_successful": "Du hast dich erfolgreich eingeloggt!",
"dont_have_account": "Sie haben noch kein Konto?"

@ -2,7 +2,7 @@
"title": "Benachrichtigungen",
"no_notifs": "Du hast keine neuen Benachrichtigungen",
"see_all": "Alle Benachrichtigungen ansehen",
"mark_all_read": "Mark all notifications read",
"mark_all_read": "Alle Benachrichtigungen als gelesen markieren",
"back_to_home": "Zurück zu %1",
"outgoing_link": "Externer Link",
"outgoing_link_message": "Du verlässt nun %1.",

@ -6,7 +6,7 @@
"year": "Jahr",
"alltime": "Gesamter Zeitraum",
"no_recent_topics": "Es gibt keine aktuellen Themen.",
"no_popular_topics": "There are no popular topics.",
"no_popular_topics": "Es gibt keine beliebten Themen.",
"there-is-a-new-topic": "Es gibt ein neues Thema.",
"there-is-a-new-topic-and-a-new-post": "Es gibt ein neues Thema und einen neuen Beitrag.",
"there-is-a-new-topic-and-new-posts": "Es gibt ein neues Thema und %1 neue Beiträge.",
@ -15,5 +15,5 @@
"there-are-new-topics-and-new-posts": "Es gibt %1 neue Themen und %2 neue Beiträge.",
"there-is-a-new-post": "Es gibt einen neuen Beitrag.",
"there-are-new-posts": "Es gibt %1 neue Beiträge.",
"click-here-to-reload": "Hier klicken um neu zu laden."
"click-here-to-reload": "Hier klicken um zu aktualisieren."
}

@ -1,5 +1,5 @@
{
"results_matching": "%1 Ergebniss(e) stimmen mit \"%2\" überein, (%3 Sekunden)",
"results_matching": "%1 Ergebnis(se) stimmen mit \"%2\" überein, (%3 Sekunden)",
"no-matches": "Keine Ergebnisse gefunden",
"in": "In",
"by": "Bei",
@ -8,13 +8,13 @@
"posted-by": "Geschrieben von",
"in-categories": "In Kategorien",
"search-child-categories": "Suche in Unterkategorien",
"reply-count": "Antwort Anzahl",
"reply-count": "Anzahl Antworten",
"at-least": "Mindestens",
"at-most": "Höchstens",
"post-time": "Beitrags Zeit",
"post-time": "Verfaßt am",
"newer-than": "Neuer als",
"older-than": "Älter als",
"any-date": "Jeder Zeitpunkt",
"any-date": "Beliebiger Zeitpunkt",
"yesterday": "Gestern",
"one-week": "Eine Woche",
"two-weeks": "Zwei Wochen",
@ -23,18 +23,18 @@
"six-months": "Sechs Monate",
"one-year": "Ein Jahr",
"sort-by": "Sortieren nach",
"last-reply-time": "Letzter Antwort Zeitpunkt",
"last-reply-time": "Zeitpunkt der letzten Antwort",
"topic-title": "Thementitel",
"number-of-replies": "Anzahl von Antworten",
"number-of-replies": "Anzahl an Antworten",
"number-of-views": "Anzahl der Aufrufe",
"topic-start-date": "Thema Startdatum",
"topic-start-date": "Erstelldatum des Themas",
"username": "Benutzername",
"category": "Kategorie",
"descending": "In absteigender Reihenfolge",
"ascending": "In aufsteigender Reihenfolge",
"save-preferences": "Save preferences",
"clear-preferences": "Clear preferences",
"search-preferences-saved": "Search preferences saved",
"search-preferences-cleared": "Search preferences cleared",
"show-results-as": "Show results as"
"save-preferences": "Einstellungen speichern",
"clear-preferences": "Einstellungen löschen",
"search-preferences-saved": "Sucheinstellungen gespeichert",
"search-preferences-cleared": "Sucheinstellungen gelöscht",
"show-results-as": "Ergebnisse anzeigen als"
}

@ -1,7 +1,7 @@
{
"no_tag_topics": "Es gibt keine Themen mit diesem Tag.",
"tags": "Tags",
"enter_tags_here": "Enter tags here. %1-%2 characters. Press enter after each tag.",
"enter_tags_here_short": "Gib Tags ein...",
"no_tags": "Es gibt bisher keine Tags."
"no_tag_topics": "Es gibt keine Themen mit diesem Stichwort.",
"tags": "Stichwörter",
"enter_tags_here": "Gib hier Stichwörter ein. %1-%2 Zeichen. Drücke Enter nach jedem Stichwort.",
"enter_tags_here_short": "Gib Stichwörter ein...",
"no_tags": "Es gibt bisher keine Stichwörter."
}

@ -23,7 +23,7 @@
"username-taken": "Username taken",
"email-taken": "Email taken",
"email-not-confirmed": "Your email has not been confirmed yet, please click here to confirm your email.",
"email-not-confirmed-chat": "You are unable to chat until your email is confirmed",
"email-not-confirmed-chat": "You are unable to chat until your email is confirmed, please click here to confirm your email.",
"no-email-to-confirm": "This forum requires email confirmation, please click here to enter an email",
"email-confirm-failed": "We could not confirm your email, please try again later.",

@ -1,7 +1,7 @@
{
"no_tag_topics": "There are no topics with this tag.",
"tags": "Tags",
"enter_tags_here": "Enter tags here. %1-%2 characters. Press enter after each tag.",
"enter_tags_here": "Enter tags here, between %1 and %2 characters each.",
"enter_tags_here_short": "Enter tags...",
"no_tags": "There are no tags yet."
}

@ -1,6 +1,6 @@
{
"new_topic_button": "Nuevo tema",
"guest-login-post": "Log in to post",
"guest-login-post": "Acceder para poder escribir un mensaje",
"no_topics": "<strong>No hay temas en esta categoría.</strong><br />¿Por que no te animas y publicas uno?",
"browsing": "viendo ahora",
"no_replies": "Nadie ha respondido aún",

@ -19,8 +19,8 @@
"email-taken": "Correo electrónico ocupado",
"email-not-confirmed": "Su cuenta de correo electrónico no ha sido confirmada aún, por favor haga click aquí para confirmarla.",
"email-not-confirmed-chat": "No puedes hacer uso del chat hasta que confirmes tu email",
"no-email-to-confirm": "This forum requires email confirmation, please click here to enter an email",
"email-confirm-failed": "We could not confirm your email, please try again later.",
"no-email-to-confirm": "Este foro requiere confirmación de su email, por favor pulse aquí para introducir un email",
"email-confirm-failed": "No se ha podido confirmar su email, por favor inténtelo de nuevo más tarde.",
"username-too-short": "Nombre de usuario es demasiado corto",
"username-too-long": "Nombre de usuario demasiado largo",
"user-banned": "Usuario baneado",
@ -35,7 +35,7 @@
"no-emailers-configured": "No se ha cargado ningún plugin de email, así que no se pudo enviar el email de prueba.",
"category-disabled": "Categoría deshabilitada",
"topic-locked": "Tema bloqueado",
"post-edit-duration-expired": "You are only allowed to edit posts for %1 seconds after posting",
"post-edit-duration-expired": "Sólo puedes editar mensajes durante %1 segundos después de haberlo escrito",
"still-uploading": "Por favor, espera a que terminen las subidas.",
"content-too-short": "Por favor introduzca una publicación más larga. Las publicaciones deben contener al menos %1 caracteres.",
"content-too-long": "Por favor introduzca un mensaje más corto. Los mensajes no pueden exceder los %1 caracteres.",
@ -43,8 +43,8 @@
"title-too-long": "Por favor, introduce un título más corto, que no sobrepase los %1 caracteres.",
"too-many-posts": "Solo puedes publicar una vez cada %1 segundos - por favor espere antes de volver a publicar",
"too-many-posts-newbie": "Como nuevo usuario, solo puedes publicar una vez cada %1 segundos hasta hayas ganado una reputación de %2 - por favor espere antes de volver a publicar",
"tag-too-short": "Please enter a longer tag. Tags should contain at least %1 characters",
"tag-too-long": "Please enter a shorter tag. Tags can't be longer than %1 characters",
"tag-too-short": "Por favor introduce una etiqueta más larga. Las etiquetas deben contener por lo menos %1 caracteres",
"tag-too-long": "Por favor introduce una etiqueta más pequeña. Las etiquetas no pueden exceder los %1 caracteres",
"file-too-big": "El tamaño de fichero máximo es de %1 kbs - por favor, suba un fichero más pequeño",
"cant-vote-self-post": "No puedes votar tus propios posts",
"already-favourited": "Ya ha marcado esta publicación como favorita",
@ -52,7 +52,7 @@
"cant-ban-other-admins": "¡No puedes expulsar a otros administradores!",
"invalid-image-type": "Tipo de imagen inválido. Los tipos permitidos son: %1",
"invalid-image-extension": "Extensión de imagen inválida",
"invalid-file-type": "Invalid file type. Allowed types are: %1",
"invalid-file-type": "Tipo de fichero inválido. Los tipos permitidos son: %1",
"group-name-too-short": "Nombre del grupo es demasiado corto.",
"group-already-exists": "El grupo ya existe.",
"group-name-change-not-allowed": "El nombre del grupo deseado no está permitido.",
@ -76,6 +76,6 @@
"reload-failed": "NodeBB encontró un problema al refrescar: \"%1\". NodeBB intentará cargar el resto de contenido, aunque deberías deshacer lo que hiciste justo antes.",
"registration-error": "Error de registro",
"parse-error": "Algo ha ido mal mientras se parseaba la respuesta del servidor",
"wrong-login-type-email": "Please use your email to login",
"wrong-login-type-username": "Please use your username to login"
"wrong-login-type-email": "Por favor emplea tu email para acceder",
"wrong-login-type-username": "Por favor introduce tu nombre de usuario para acceder"
}

@ -4,8 +4,8 @@
"owner": "Propietario del Grupo",
"new_group": "Crear Nuevo Grupo",
"no_groups_found": "No hay grupos que ver",
"pending.accept": "Accept",
"pending.reject": "Reject",
"pending.accept": "Aceptar",
"pending.reject": "Rechazar",
"cover-instructions": "Arrastra y suelta una foto, arrastra a la posición, y pulsa <strong> Guardar </strong>",
"cover-change": "Cambiar",
"cover-save": "Guardar",
@ -15,20 +15,20 @@
"details.pending": "Miembros Pendientes",
"details.has_no_posts": "Los miembros de este grupo no han hecho ninguna publicación.",
"details.latest_posts": "Últimas Publicaciones",
"details.private": "Private",
"details.grant": "Grant/Rescind Ownership",
"details.kick": "Kick",
"details.private": "Privado",
"details.grant": "Conceder/Rescindir Propiedad",
"details.kick": "Expulsar",
"details.owner_options": "Administración De Grupo",
"details.group_name": "Group Name",
"details.description": "Description",
"details.badge_preview": "Badge Preview",
"details.change_icon": "Change Icon",
"details.change_colour": "Change Colour",
"details.badge_text": "Badge Text",
"details.userTitleEnabled": "Show Badge",
"details.private_help": "If enabled, joining of groups requires approval from a group owner",
"details.hidden": "Hidden",
"details.hidden_help": "If enabled, this group will not be found in the groups listing, and users will have to be invited manually",
"details.group_name": "Nombre de Grupo",
"details.description": "Descripción",
"details.badge_preview": "Previsualización de Insignia",
"details.change_icon": "Cambiar Icono",
"details.change_colour": "Cambiar Color",
"details.badge_text": "Texto de Insignia",
"details.userTitleEnabled": "Mostrar Insignia",
"details.private_help": "Si está habilitado, entrar en los grupos requiere aprobación de sus propietarios",
"details.hidden": "Oculto",
"details.hidden_help": "Si está habilitado, este grupo no aparecerá en los listados de grupos, y los usuarios tendrán que ser invitados manualmente",
"event.updated": "Los detalles del grupo han sido actualizados",
"event.deleted": "El grupo \"%1\" ha sido eliminado"
}

@ -1,7 +1,7 @@
{
"username-email": "Username / Email",
"username": "Username",
"email": "Email",
"username-email": "Usuario / Email",
"username": "Usuario",
"email": "Correo Electrónico",
"remember_me": "¿Recordarme?",
"forgot_password": "¿Olvidaste tu contraseña?",
"alternative_logins": "Métodos alternativos",

@ -2,7 +2,7 @@
"title": "Notificaciones",
"no_notifs": "No tiene nuevas notificaciones",
"see_all": "Ver todas las notificaciones",
"mark_all_read": "Mark all notifications read",
"mark_all_read": "Marcar todas las notificaciones cómo leídas",
"back_to_home": "Volver a %1",
"outgoing_link": "Enlace externo",
"outgoing_link_message": "Ahora estás saliendo de %1.",

@ -6,7 +6,7 @@
"year": "Año",
"alltime": "Siempre",
"no_recent_topics": "No hay publicaciones recientes.",
"no_popular_topics": "There are no popular topics.",
"no_popular_topics": "No hay tópicos populares",
"there-is-a-new-topic": "Hay una nueva publicación.",
"there-is-a-new-topic-and-a-new-post": "hay una nueva publicación y un nuevo mensaje.",
"there-is-a-new-topic-and-new-posts": "Hay una nueva publicación y %1 nuevos mensajes.",

@ -32,9 +32,9 @@
"category": "Categoría",
"descending": "En orden descendente",
"ascending": "En orden ascendente",
"save-preferences": "Save preferences",
"clear-preferences": "Clear preferences",
"search-preferences-saved": "Search preferences saved",
"search-preferences-cleared": "Search preferences cleared",
"show-results-as": "Show results as"
"save-preferences": "Guardar preferencias",
"clear-preferences": "Descartar preferencias",
"search-preferences-saved": "Preferencias de búsqueda guardadas",
"search-preferences-cleared": "Preferencias de búsqueda descartadas",
"show-results-as": "Mostrar resultados como"
}

@ -1,7 +1,7 @@
{
"no_tag_topics": "No hay temas con esta etiqueta.",
"tags": "Etiquetas",
"enter_tags_here": "Enter tags here. %1-%2 characters. Press enter after each tag.",
"enter_tags_here": "Introduce las etiquetas aquí. %1-%2 caracteres. Presiona enter después de cada etiqueta.",
"enter_tags_here_short": "Introduzca las etiquetas...",
"no_tags": "Aún no hay etiquetas."
}

@ -12,7 +12,7 @@
"notify_me": "Serás notificado cuando haya nuevas respuestas en este tema",
"quote": "Citar",
"reply": "Responder",
"guest-login-reply": "Log in to reply",
"guest-login-reply": "Accede para responder",
"edit": "Editar",
"delete": "Borrar",
"purge": "Purgar",

@ -19,8 +19,8 @@
"email-taken": "Email déjà utilisé",
"email-not-confirmed": "Votre adresse email n'est pas confirmée, cliquez ici pour la valider.",
"email-not-confirmed-chat": "Vous ne pouver discuter tant que votre email n'est pas confirmé",
"no-email-to-confirm": "This forum requires email confirmation, please click here to enter an email",
"email-confirm-failed": "We could not confirm your email, please try again later.",
"no-email-to-confirm": "Ce forum requiert une vérification de votre adresse email. Veuillez cliquer ici pour entrer une adresse.",
"email-confirm-failed": "Votre adresse email n'a pas pu être vérifiée. Veuillez ré-essayer plus tard.",
"username-too-short": "Nom d'utilisateur trop court",
"username-too-long": "Nom d'utilisateur trop long",
"user-banned": "Utilisateur banni",
@ -35,7 +35,7 @@
"no-emailers-configured": "Un email de test n'a pas pu être envoyé car aucun plugin de gestion des emails n'était chargé",
"category-disabled": "Catégorie désactivée",
"topic-locked": "Sujet verrouillé",
"post-edit-duration-expired": "You are only allowed to edit posts for %1 seconds after posting",
"post-edit-duration-expired": "Vous ne pouvez modifier un post que %1 secondes après l'avoir posté.",
"still-uploading": "Veuillez patienter pendant le téléchargement.",
"content-too-short": "Veuillez entrer un message plus long. %1 caractères minimum.",
"content-too-long": "Veuillez poster un message plus cours. Les messages ne peuvent être plus long que %1 caractères.",
@ -43,8 +43,8 @@
"title-too-long": "Veuillez entrer un titre plus court. Les titres ne peuvent excéder %1 caractères.",
"too-many-posts": "Vous ne pouvez poster que toutes les %1 secondes.",
"too-many-posts-newbie": "En tant que nouvel utilisateur, vous ne pouvez poster que toutes les %1 secondes jusqu'à ce que vous obteniez une réputation de %2 - patientez avant de publier de nouveau. ",
"tag-too-short": "Please enter a longer tag. Tags should contain at least %1 characters",
"tag-too-long": "Please enter a shorter tag. Tags can't be longer than %1 characters",
"tag-too-short": "Veuillez entrer un mot-clé plus long. Les mots-clés devraient contenir au moins %1 caractères.",
"tag-too-long": "Veuillez entrer un mot-clé plus court. Les mot-clés ne peuvent faire plus de %1 caractères.",
"file-too-big": "La taille maximum des fichiers est de %1 kbs.",
"cant-vote-self-post": "Vous ne pouvez pas voter pour vos propres messages",
"already-favourited": "Vous avez déjà mis ce message en favoris",
@ -52,7 +52,7 @@
"cant-ban-other-admins": "Vous ne pouvez pas bannir les autres administrateurs !",
"invalid-image-type": "Type d'image invalide. Les types autorisés sont: %1",
"invalid-image-extension": "Extension d'image invalide",
"invalid-file-type": "Invalid file type. Allowed types are: %1",
"invalid-file-type": "Type de fichier non valide. Les types autorisés sont : %1",
"group-name-too-short": "Nom de groupe trop court",
"group-already-exists": "Ce groupe existe déjà",
"group-name-change-not-allowed": "Modification du nom de groupe non permise",
@ -76,6 +76,6 @@
"reload-failed": "NodeBB a rencontré un problème lors du rechargement : \"% 1\" . NodeBB continuera de fonctionner côté client, même si vous devez annuler ce que vous avez fait juste avant de recharger .",
"registration-error": "Erreur d'enregistrement",
"parse-error": "Une erreur est survenue en analysant la réponse du serveur",
"wrong-login-type-email": "Please use your email to login",
"wrong-login-type-username": "Please use your username to login"
"wrong-login-type-email": "Veuillez utiliser votre adresse email pour vous connecter",
"wrong-login-type-username": "Veuillez utiliser votre identifiant pour vous connecter"
}

@ -4,8 +4,8 @@
"owner": "Propriétaire du groupe",
"new_group": "Créer un nouveau groupe",
"no_groups_found": "Il n'y a aucun groupe",
"pending.accept": "Accept",
"pending.reject": "Reject",
"pending.accept": "Accepter",
"pending.reject": "Refuser",
"cover-instructions": "Glissez-déposez une image, ajustez la position, et cliquez sur <strong>Enregistrer</strong>",
"cover-change": "Modifier",
"cover-save": "Enregistrer",
@ -15,20 +15,20 @@
"details.pending": "Membres en attente",
"details.has_no_posts": "Les membres de ce groupe n'ont envoyé aucun message.",
"details.latest_posts": "Derniers messages",
"details.private": "Private",
"details.private": "Privé",
"details.grant": "Promouvoir/rétrograder comme propriétaire",
"details.kick": "Exclure",
"details.owner_options": "Administration du groupe",
"details.group_name": "Group Name",
"details.group_name": "Nom du groupe",
"details.description": "Description",
"details.badge_preview": "Badge Preview",
"details.change_icon": "Change Icon",
"details.change_colour": "Change Colour",
"details.badge_text": "Badge Text",
"details.userTitleEnabled": "Show Badge",
"details.private_help": "If enabled, joining of groups requires approval from a group owner",
"details.hidden": "Hidden",
"details.hidden_help": "If enabled, this group will not be found in the groups listing, and users will have to be invited manually",
"details.badge_preview": "Aperçu du badge",
"details.change_icon": "Modifier l'icône",
"details.change_colour": "Modifier la couleur",
"details.badge_text": "Texte du badge",
"details.userTitleEnabled": "Afficher le badge",
"details.private_help": "Si cette case est cochée, rejoindre un groupe nécessite l'accord d'un propriétaire du groupe.",
"details.hidden": "Masqué",
"details.hidden_help": "Si cette case est cochée, ce groupe n'est pas affiché dans la liste des groupes, et les utilisateurs devront être invités manuellement.",
"event.updated": "Les détails du groupe ont été mis à jour",
"event.deleted": "Le groupe é%1\" a été supprimé"
}

@ -1,6 +1,6 @@
{
"username-email": "Username / Email",
"username": "Username",
"username-email": "Identifiant ou email",
"username": "Identifiant",
"email": "Email",
"remember_me": "Se souvenir de moi ?",
"forgot_password": "Mot de passe oublié ?",

@ -2,7 +2,7 @@
"title": "Notifications",
"no_notifs": "Vous n'avez aucune notification",
"see_all": "Voir toutes les notifications.",
"mark_all_read": "Mark all notifications read",
"mark_all_read": "Marquer toutes les notifications comme lues",
"back_to_home": "Revenir à %1",
"outgoing_link": "Lien sortant",
"outgoing_link_message": "Vous quittez %1.",

@ -6,7 +6,7 @@
"year": "An",
"alltime": "Toujours",
"no_recent_topics": "Il n'y a aucun sujet récent.",
"no_popular_topics": "There are no popular topics.",
"no_popular_topics": "Il n'y a pas de sujet populaire.",
"there-is-a-new-topic": "Il y a un nouveau sujet.",
"there-is-a-new-topic-and-a-new-post": "Il y a un nouveau sujet et un nouveau message.",
"there-is-a-new-topic-and-new-posts": "Il y a un nouveau sujet et %1 nouveaux messages.",

@ -32,9 +32,9 @@
"category": "Catégorie",
"descending": "Par ordre décroissant",
"ascending": "Par ordre croissant",
"save-preferences": "Save preferences",
"clear-preferences": "Clear preferences",
"search-preferences-saved": "Search preferences saved",
"search-preferences-cleared": "Search preferences cleared",
"show-results-as": "Show results as"
"save-preferences": "Enregistrer les préférences",
"clear-preferences": "Réinitialiser les préférences",
"search-preferences-saved": "Préférences de recherche enregistrées",
"search-preferences-cleared": "Préférences de recherche réinitialisées",
"show-results-as": "Affichez les résultats comme"
}

@ -1,7 +1,7 @@
{
"no_tag_topics": "Il n'y a aucun sujet ayant ce mot-clé",
"tags": "Mots-clés",
"enter_tags_here": "Enter tags here. %1-%2 characters. Press enter after each tag.",
"enter_tags_here": "Entrez les mots-clés ici. %1-%2 caractères. Tapez sur \"Entrée\" après chaque mot-clé.",
"enter_tags_here_short": "Entrez des mots-clés...",
"no_tags": "Il n'y a pas encore de mots-clés."
}

@ -1,6 +1,6 @@
{
"new_topic_button": "Nowy wątek",
"guest-login-post": "Log in to post",
"guest-login-post": "Zaloguj się, aby napisać.",
"no_topics": "<strong>W tej kategorii nie ma jeszcze żadnych wątków.</strong><br />Dlaczego ty nie utworzysz jakiegoś?",
"browsing": "przegląda",
"no_replies": "Nikt jeszcze nie odpowiedział",

@ -19,8 +19,8 @@
"email-taken": "E-mail zajęty.",
"email-not-confirmed": "Twój email nie został jeszcze potwierdzony. Proszę kliknąć tutaj by go potwierdzić.",
"email-not-confirmed-chat": "Nie możesz rozmawiać do czasu, gdy twój email zostanie potwierdzony.",
"no-email-to-confirm": "This forum requires email confirmation, please click here to enter an email",
"email-confirm-failed": "We could not confirm your email, please try again later.",
"no-email-to-confirm": "To forum wymaga weryfikacji przez email. Proszę kliknąć tutaj, aby wprowadzić adres.",
"email-confirm-failed": "Nie byliśmy w stanie potwierdzić twojego email-a. Proszę spróbować później.",
"username-too-short": "Nazwa użytkownika za krótka.",
"username-too-long": "Zbyt długa nazwa użytkownika",
"user-banned": "Użytkownik zbanowany",
@ -35,7 +35,7 @@
"no-emailers-configured": "Nie zainstalowano żadnego dodatku obsługującego e-mail, więc nie można wysłać testowej wiadomości.",
"category-disabled": "Kategoria wyłączona.",
"topic-locked": "Temat zamknięty",
"post-edit-duration-expired": "You are only allowed to edit posts for %1 seconds after posting",
"post-edit-duration-expired": "Możesz edytować posty przez %1 sekund po napisaniu.",
"still-uploading": "Poczekaj na pełne załadowanie",
"content-too-short": "Proszę wpisać dłuższy post. Posty powinny zawierać co najmniej %1 znaków.",
"content-too-long": "Proszę wpisać krótszy post. Posty nie mogą zawierać więcej niż %1 znaków.",
@ -43,8 +43,8 @@
"title-too-long": "Wpisz krótszy tytuł, nie może być dłuższy niż %1 znaków.",
"too-many-posts": "Możesz wysyłać posty co %1 sekund - proszę poczekać",
"too-many-posts-newbie": "Jako nowy użytkownik, możesz wysyłać posty co %1 sekund, do chwili aż zbierzesz %2 reputacji - proszę poczekać przed ponownym wysłaniem posta",
"tag-too-short": "Please enter a longer tag. Tags should contain at least %1 characters",
"tag-too-long": "Please enter a shorter tag. Tags can't be longer than %1 characters",
"tag-too-short": "Proszę podać dłuższy tag. Tagi powinny zawierać co najmniej %1 znaków.",
"tag-too-long": "Proszę podać krótszy tag. Tagi nie mogą być dłuższe niż %1 znaków.",
"file-too-big": "Maksymalny dozwolony rozmiar pliku to %1 kb - proszę wybrać mniejszy plik",
"cant-vote-self-post": "Nie możesz głosować na własny post",
"already-favourited": "Już polubiłeś ten post",
@ -52,7 +52,7 @@
"cant-ban-other-admins": "Nie możesz zbanować innych adminów!",
"invalid-image-type": "Błędny typ pliku. Dozwolone typy to: %1",
"invalid-image-extension": "Błędne rozszerzenie pliku",
"invalid-file-type": "Invalid file type. Allowed types are: %1",
"invalid-file-type": "Błędny typ pliku. Dozwolone typy to: %1",
"group-name-too-short": "Nazwa grupy za krótka",
"group-already-exists": "Grupa już istnieje",
"group-name-change-not-allowed": "Nie można zmieniać nazwy tej grupy.",
@ -76,6 +76,6 @@
"reload-failed": "NodeBB napotkał problem w czasie ładowania \"%1\". Forum będzie nadal dostarczać zasoby dostępne w kliencie, jednak powinieneś cofnąć ostatnią akcję.",
"registration-error": "Błąd rejestracji",
"parse-error": "Coś poszło nie tak podczas parsingu odpowiedzi serwera",
"wrong-login-type-email": "Please use your email to login",
"wrong-login-type-username": "Please use your username to login"
"wrong-login-type-email": "Zaloguj się używając adresu email",
"wrong-login-type-username": "Zaloguj się używając nazwy użytkownika"
}

@ -4,8 +4,8 @@
"owner": "Właściciel grupy",
"new_group": "Stwórz nową grupę",
"no_groups_found": "Brak grup do wyświetlenia",
"pending.accept": "Accept",
"pending.reject": "Reject",
"pending.accept": "Przyjmij",
"pending.reject": "Odrzuć",
"cover-instructions": "Przeciągnij i upuść zdjęcie, ustaw w odpowiedniej pozycji i kliknij <strong>Zapisz</strong>",
"cover-change": "Zmień",
"cover-save": "Zapisz",
@ -15,20 +15,20 @@
"details.pending": "Członkowie oczekujący",
"details.has_no_posts": "Członkowie tej grupy nie napisali żadnych postów.",
"details.latest_posts": "Ostatnie posty",
"details.private": "Private",
"details.private": "Prywatna",
"details.grant": "Nadaj/Cofnij prawa Właściciela",
"details.kick": "Wykop",
"details.owner_options": "Administracja grupy",
"details.group_name": "Group Name",
"details.description": "Description",
"details.badge_preview": "Badge Preview",
"details.change_icon": "Change Icon",
"details.change_colour": "Change Colour",
"details.badge_text": "Badge Text",
"details.userTitleEnabled": "Show Badge",
"details.private_help": "If enabled, joining of groups requires approval from a group owner",
"details.hidden": "Hidden",
"details.hidden_help": "If enabled, this group will not be found in the groups listing, and users will have to be invited manually",
"details.group_name": "Nazwa grupy",
"details.description": "Opis",
"details.badge_preview": "Podgląd plakietki",
"details.change_icon": "Zmień ikonę",
"details.change_colour": "Zmień kolor",
"details.badge_text": "Treść plakietki",
"details.userTitleEnabled": "Pokaż plakietkę",
"details.private_help": "Jeśli aktywowane, przystępowanie do grup wymaga zatwierdzenia przez właściciela grupy",
"details.hidden": "Ukryty",
"details.hidden_help": "Jeśli aktywowane, ta grupa nie będzie widoczna w wykazie grup, a użytkownicy będą musieli być zapraszani manualnie.",
"event.updated": "Dane grupy zostały zaktualizowane",
"event.deleted": "Grupa \"%1\" została skasowana"
}

@ -1,7 +1,7 @@
{
"username-email": "Username / Email",
"username": "Username",
"email": "Email",
"username-email": "Nazwa użytkownika lub adres e-mail",
"username": "Nazwa użytkownika",
"email": "Adres e-mail",
"remember_me": "Zapamiętaj mnie",
"forgot_password": "Zapomniałeś hasło?",
"alternative_logins": "Alternatywne logowanie",

@ -2,7 +2,7 @@
"title": "Powiadomienia",
"no_notifs": "Nie masz nowych powiadomień",
"see_all": "Zobacz wszystkie powiadomienia",
"mark_all_read": "Mark all notifications read",
"mark_all_read": "Oznacz wszystkie powiadomienia jako przeczytane",
"back_to_home": "Wróć do %1",
"outgoing_link": "Łącze wychodzące",
"outgoing_link_message": "Opuszczasz %1.",

@ -6,7 +6,7 @@
"year": "Rok",
"alltime": "Od początku",
"no_recent_topics": "Brak ostatnich wątków.",
"no_popular_topics": "There are no popular topics.",
"no_popular_topics": "Brak popularnych wątków.",
"there-is-a-new-topic": "Masz nowy wątek.",
"there-is-a-new-topic-and-a-new-post": "Masz nowy wątek i nowy post.",
"there-is-a-new-topic-and-new-posts": "Masz nowy wątek i %1 nowych postów.",

@ -32,9 +32,9 @@
"category": "Kategoria",
"descending": "W kolejności malejącej",
"ascending": "W kolejności rosnącej",
"save-preferences": "Save preferences",
"clear-preferences": "Clear preferences",
"search-preferences-saved": "Search preferences saved",
"search-preferences-cleared": "Search preferences cleared",
"show-results-as": "Show results as"
"save-preferences": "Zapisz ustawienia",
"clear-preferences": "Wyczyść ustawienia",
"search-preferences-saved": "Ustawienia wyszukiwania zapisane",
"search-preferences-cleared": "Ustawienia wyszukiwania wyczyszczone",
"show-results-as": "Pokaż wyniki jako"
}

@ -1,7 +1,7 @@
{
"no_tag_topics": "Nie ma tematów z tym tagiem",
"tags": "Tagi",
"enter_tags_here": "Enter tags here. %1-%2 characters. Press enter after each tag.",
"enter_tags_here": "Tutaj wpisz tagi. %1-%2 znaków. Naciśnij enter po każdym.",
"enter_tags_here_short": "Wpisz tagi...",
"no_tags": "Jeszcze nie ma tagów."
}

@ -12,7 +12,7 @@
"notify_me": "Powiadamiaj mnie o nowych odpowiedziach w tym wątku",
"quote": "Cytuj",
"reply": "Odpowiedz",
"guest-login-reply": "Log in to reply",
"guest-login-reply": "Zaloguj się, aby odpowiedzieć.",
"edit": "Edytuj",
"delete": "Usuń",
"purge": "Wymaż",

@ -1,6 +1,6 @@
{
"new_topic_button": "Создать тему",
"guest-login-post": "Log in to post",
"guest-login-post": "Войдите чтобы создавать сообщения",
"no_topics": "<strong>В этой категории еще нет тем.</strong><br />Почему бы вам не создать первую?",
"browsing": "просматривают",
"no_replies": "Нет ответов",

@ -19,8 +19,8 @@
"email-taken": "Email занят",
"email-not-confirmed": "Ваш email не подтвержден, нажмите для подтверждения.",
"email-not-confirmed-chat": "Вы не можете оставлять сообщения, пока Ваш email не подтверждён",
"no-email-to-confirm": "This forum requires email confirmation, please click here to enter an email",
"email-confirm-failed": "We could not confirm your email, please try again later.",
"no-email-to-confirm": "Этот форум требует подтверждения по E-mail. Нажмите здесь для ввода E-mail.",
"email-confirm-failed": "Мы не можем подтвердить Ваш E-mail, попробуйте позже.",
"username-too-short": "Слишком короткое имя пользователя",
"username-too-long": "Имя пользователя слишком длинное",
"user-banned": "Пользователь заблокирован",
@ -35,7 +35,7 @@
"no-emailers-configured": "Не подключен ни один плагин для отправки почты, поэтому тестовый email не может быть отправлен",
"category-disabled": "Категория отключена",
"topic-locked": "Тема закрыта",
"post-edit-duration-expired": "You are only allowed to edit posts for %1 seconds after posting",
"post-edit-duration-expired": "Вы можете редактировать сообщение в течении %1 секунд(ы) после написания.",
"still-uploading": "Пожалуйста, подождите завершения загрузки.",
"content-too-short": "Пост должен содержать минимум %1 симв.",
"content-too-long": "Размер поста не должен превышать %1 символов. Пожалуйста, сделайте его короче.",
@ -43,8 +43,8 @@
"title-too-long": "Заголовок не может быть длиннее %1 символов.",
"too-many-posts": "Вы можете делать пост один раз в %1 сек.",
"too-many-posts-newbie": "Вы новый пользователь, поэтому можете делать пост раз в %1 сек., пока не заработаете %2 п. репутации.",
"tag-too-short": "Please enter a longer tag. Tags should contain at least %1 characters",
"tag-too-long": "Please enter a shorter tag. Tags can't be longer than %1 characters",
"tag-too-short": "Введите более длинный тэг. Тэги должны содержать как минимум %1 символа(ов).",
"tag-too-long": "Введите тэг покороче. Тэги должны быть короче %1 символов.",
"file-too-big": "Максимальный разрешенный размер файла - %1 Кбайт. Пожалуйста, загрузите файл меньшего размера.",
"cant-vote-self-post": "Вы не можете проголосовать за Ваш пост",
"already-favourited": "Вы уже добавили этот пост в избранное",
@ -52,7 +52,7 @@
"cant-ban-other-admins": "Вы не можете забанить других администраторов!",
"invalid-image-type": "Неверный формат изображения. Поддерживаемые форматы: %1",
"invalid-image-extension": "Недопустимое расширение файла",
"invalid-file-type": "Invalid file type. Allowed types are: %1",
"invalid-file-type": "Неверный формат фаила. Поддерживаемые форматы : %1",
"group-name-too-short": "Название группы слишком короткое",
"group-already-exists": "Группа уже существует",
"group-name-change-not-allowed": "Изменение названия группы запрещено",
@ -76,6 +76,6 @@
"reload-failed": "NodeBB обнаружил проблему при перезагрузке: \"%1\". NodeBB продолжит работать с существующими ресурсами клиента, но Вы должны отменить то, что сделали перед перезагрузкой.",
"registration-error": "Ошибка при регистрации",
"parse-error": "Похоже, что-то пошло не так в процессе обработки ответа сервера.",
"wrong-login-type-email": "Please use your email to login",
"wrong-login-type-username": "Please use your username to login"
"wrong-login-type-email": "Пожалуйста, используйте свой E-mail для входа.",
"wrong-login-type-username": "Пожалуйста, используйте своё имя пользователя для входа."
}

@ -4,8 +4,8 @@
"owner": "Администратор группы",
"new_group": "Создать группу",
"no_groups_found": "Нет групп для отображения",
"pending.accept": "Accept",
"pending.reject": "Reject",
"pending.accept": "Принять",
"pending.reject": "Отклонить",
"cover-instructions": "Перетяните сюда изображение, переместите на нужную позицию и нажмите <strong>Сохранить</strong>",
"cover-change": "Изменить",
"cover-save": "Сохранить",
@ -15,20 +15,20 @@
"details.pending": "Заявки в группу",
"details.has_no_posts": "Пользователями этой группы не публиковали никаких записей",
"details.latest_posts": "Последние записи",
"details.private": "Private",
"details.private": "Частный (ая)",
"details.grant": "Выдать/забрать администратора",
"details.kick": "Исключить",
"details.owner_options": "Настройки группы",
"details.group_name": "Group Name",
"details.description": "Description",
"details.badge_preview": "Badge Preview",
"details.change_icon": "Change Icon",
"details.change_colour": "Change Colour",
"details.badge_text": "Badge Text",
"details.userTitleEnabled": "Show Badge",
"details.private_help": "If enabled, joining of groups requires approval from a group owner",
"details.hidden": "Hidden",
"details.hidden_help": "If enabled, this group will not be found in the groups listing, and users will have to be invited manually",
"details.group_name": "Имя группы",
"details.description": "Описание",
"details.badge_preview": "Предпросмотр Бейджа",
"details.change_icon": "Сменить иконку",
"details.change_colour": "Изменить цвет",
"details.badge_text": "Текст на Бейдже",
"details.userTitleEnabled": "Показать Бейдж",
"details.private_help": "Если включено, вступление в группы будет подтверждаться владельцем группы",
"details.hidden": "Скрыто",
"details.hidden_help": "Если включено, группа не будет показываться в списках, а пользователи должны приглашаться вручную",
"event.updated": "Настройки группы обновлены",
"event.deleted": "Группа \"%1\" удалена"
}

@ -1,6 +1,6 @@
{
"username-email": "Username / Email",
"username": "Username",
"username-email": "Имя пользователя / E-mail",
"username": "Имя пользователя",
"email": "Email",
"remember_me": "Запомнить меня",
"forgot_password": "Забыли пароль?",

@ -2,7 +2,7 @@
"title": "Уведомления",
"no_notifs": "Для Вас нет новых уведомлений",
"see_all": "Просмотреть все уведомления",
"mark_all_read": "Mark all notifications read",
"mark_all_read": "Отметить все уведомления как прочитанные",
"back_to_home": "Назад к %1",
"outgoing_link": "Внешняя ссылка",
"outgoing_link_message": "Вы покидаете %1.",

@ -6,7 +6,7 @@
"year": "Год",
"alltime": "За всё время",
"no_recent_topics": "Нет свежих тем.",
"no_popular_topics": "There are no popular topics.",
"no_popular_topics": "Популярные темы отсутствуют.",
"there-is-a-new-topic": "Опубликована новая тема.",
"there-is-a-new-topic-and-a-new-post": "Опубликована новая тема и новое сообщение.",
"there-is-a-new-topic-and-new-posts": "Опубликована новая тема и %1 новых сообщений.",

@ -32,9 +32,9 @@
"category": "Категория",
"descending": "В порядке возрастания",
"ascending": "В порядке убывания",
"save-preferences": "Save preferences",
"clear-preferences": "Clear preferences",
"search-preferences-saved": "Search preferences saved",
"save-preferences": "Сохранить настройки",
"clear-preferences": "Очистить настройки",
"search-preferences-saved": "Искать сохраненные настройки",
"search-preferences-cleared": "Search preferences cleared",
"show-results-as": "Show results as"
"show-results-as": "Показать результаты как"
}

@ -1,7 +1,7 @@
{
"no_tag_topics": "Нет топиков с таким тегом.",
"tags": "Теги",
"enter_tags_here": "Enter tags here. %1-%2 characters. Press enter after each tag.",
"enter_tags_here": "Укажите тэги здесь. %1-%2 символов(а). Нажимайте Enter после каждого тэга.",
"enter_tags_here_short": "Введите теги...",
"no_tags": "Здесь еще нет тегов."
}

@ -1,6 +1,6 @@
{
"new_topic_button": "Yeni Başlık",
"guest-login-post": "Log in to post",
"guest-login-post": "Göndermek için giriş yapın",
"no_topics": "<strong> Bu kategoride hiç konu yok. </strong> <br /> Yeni bir konu açmak istemez misiniz?",
"browsing": "gözden geçiriliyor",
"no_replies": "Kimse yanıtlamadı",

@ -19,8 +19,8 @@
"email-taken": "E-posta Alınmış",
"email-not-confirmed": "E-postanız onaylanmamış, onaylamak için lütfen buraya tıklayın.",
"email-not-confirmed-chat": "Email adresiniz doğrulanmadan sohbet edemezsiniz.",
"no-email-to-confirm": "This forum requires email confirmation, please click here to enter an email",
"email-confirm-failed": "We could not confirm your email, please try again later.",
"no-email-to-confirm": "Bu forum e-posta doğrulaması gerektirir, lütfen buraya bir e-posta adresi girin",
"email-confirm-failed": "E-posta adresinizi doğrulayamıyoruz. Lütfen daha sonra tekrar deneyin.",
"username-too-short": "Kullanıcı ismi çok kısa",
"username-too-long": "Kullanıcı ismi çok uzun.",
"user-banned": "Kullanıcı Yasaklı",
@ -43,8 +43,8 @@
"title-too-long": "Lütfen daha kısa bir başlık girin. Başlıklar %1 karakterden uzun olamaz.",
"too-many-posts": "Sadece %1 saniyede bir ileti gönderebilirsiniz.",
"too-many-posts-newbie": "Yeni bir kullanıcı olarak, %2 saygınlığınız olana kadar sadece %1 saniyede bir mesaj gönderebilirsiniz. Lütfen tekrar ileti göndermeden önce bekleyin.",
"tag-too-short": "Please enter a longer tag. Tags should contain at least %1 characters",
"tag-too-long": "Please enter a shorter tag. Tags can't be longer than %1 characters",
"tag-too-short": "Lütfen daha uzun bir etiket giriniz. Etiketler en az %1 karakter uzunluğunda olmalı",
"tag-too-long": "Lütfen daha kısa bir etiket girin. Etiketler %1 karakterden daha uzun olamaz",
"file-too-big": "İzin verilen en büyük dosya boyutu %1 kbs.",
"cant-vote-self-post": "Kendi iletinize oy veremezsiniz",
"already-favourited": "Bu iletiyi zaten favorilerinize eklediniz",
@ -52,7 +52,7 @@
"cant-ban-other-admins": "Başka yöneticileri yasaklayamazsınız!",
"invalid-image-type": "Geçersiz resim uzantısı. Izin verilen uzantılar: %1",
"invalid-image-extension": "Geçersiz resim uzantısı",
"invalid-file-type": "Invalid file type. Allowed types are: %1",
"invalid-file-type": "Geçersiz dosya türü. İzin verilenler şunlar : %1",
"group-name-too-short": "Grup ismi çok kısa",
"group-already-exists": "Grup zaten var",
"group-name-change-not-allowed": "Grup ismini değiştiremezsiniz",
@ -76,6 +76,6 @@
"reload-failed": "NodeBB tekrar yüklenirken bir sorunla karşılaştı: “%1“. NodeBB varolan dosyaları servis etmeye devam edecek.",
"registration-error": "Kayıt Hatası",
"parse-error": "Sunucu yanıtı çözümlemesi sırasında bir şeyler ters gitti",
"wrong-login-type-email": "Please use your email to login",
"wrong-login-type-username": "Please use your username to login"
"wrong-login-type-email": "Lütfen giriş için e-posta adresinizi kullanın",
"wrong-login-type-username": "Lütfen giriş için kullanıcı adınızı kullanın"
}

@ -4,8 +4,8 @@
"owner": "Grup Kurucusu",
"new_group": "Yeni Grup Oluştur",
"no_groups_found": "Henüz hiç grup yok",
"pending.accept": "Accept",
"pending.reject": "Reject",
"pending.accept": "Onayla",
"pending.reject": "Reddet",
"cover-instructions": "Bir fotoğrafı Sürükleyin ve Bırakın, uygun yere sürükleyip <strong>Kaydet</strong>'e tıklayın.",
"cover-change": "Değiştir",
"cover-save": "Kaydet",
@ -15,20 +15,20 @@
"details.pending": "Üyeler bekleniyor",
"details.has_no_posts": "Bu grubun üyeleri henüz bir ileti göndermedi.",
"details.latest_posts": "En son iletiler",
"details.private": "Private",
"details.private": "Özel",
"details.grant": "Grant/Rescind Ownership",
"details.kick": "Kick",
"details.kick": "Dışarı at",
"details.owner_options": "Grup Yöneticisi",
"details.group_name": "Group Name",
"details.description": "Description",
"details.badge_preview": "Badge Preview",
"details.change_icon": "Change Icon",
"details.change_colour": "Change Colour",
"details.badge_text": "Badge Text",
"details.userTitleEnabled": "Show Badge",
"details.private_help": "If enabled, joining of groups requires approval from a group owner",
"details.hidden": "Hidden",
"details.hidden_help": "If enabled, this group will not be found in the groups listing, and users will have to be invited manually",
"details.group_name": "Grup ismi",
"details.description": "Tanımlama",
"details.badge_preview": "Rozet Önizlemesi",
"details.change_icon": "İkonu Değiştir",
"details.change_colour": "Rengi Değiştir",
"details.badge_text": "Rozet Yazısı",
"details.userTitleEnabled": "Rozeti Göster",
"details.private_help": "Gruba katılmak için eğer etkinse grup sahibini onayı gerekir, ",
"details.hidden": "Gizli",
"details.hidden_help": "Bu grup eğer etkinse grup listelerinde bulunmaz, ve kullanıcılar bizzat davet eder",
"event.updated": "Grup detayları güncellenmiştir",
"event.deleted": "\"%1\" grubu silinmiş"
}

@ -1,7 +1,7 @@
{
"username-email": "Username / Email",
"username": "Username",
"email": "Email",
"username-email": "Kullancı Adı / E posta adresi",
"username": "Kullanıcı Adı",
"email": "E posta Adresi",
"remember_me": "Beni Hatırla!",
"forgot_password": "Şifrenizi mi unuttunuz?",
"alternative_logins": "Alternatif Girişler",

@ -2,7 +2,7 @@
"title": "Bildirimler",
"no_notifs": "Yeni bildirimleriniz yok",
"see_all": "Bütün bildirimleri gör",
"mark_all_read": "Mark all notifications read",
"mark_all_read": "Okunmuş bütün bildirimleri işaretle",
"back_to_home": "Geri dön %1",
"outgoing_link": "Harici Link",
"outgoing_link_message": "Bu forumdan ayrılıyorsunuz",

@ -6,7 +6,7 @@
"year": "Yıl",
"alltime": "Hepsi",
"no_recent_topics": "Güncel konular yok.",
"no_popular_topics": "There are no popular topics.",
"no_popular_topics": "Popüler konu yok",
"there-is-a-new-topic": "Yeni bir konu mevcut.",
"there-is-a-new-topic-and-a-new-post": "Yeni bir konu ve yayın mevcut.",
"there-is-a-new-topic-and-new-posts": "Bir adet yeni konu ve %1 adet yeni yayın var.",

@ -32,9 +32,9 @@
"category": "Kategori",
"descending": "Azalan düzene göre",
"ascending": "Artan düzene göre",
"save-preferences": "Save preferences",
"clear-preferences": "Clear preferences",
"search-preferences-saved": "Search preferences saved",
"search-preferences-cleared": "Search preferences cleared",
"show-results-as": "Show results as"
"save-preferences": "Tercihleri Kaydet",
"clear-preferences": "Tercihleri Sil",
"search-preferences-saved": "Kaydedilmiş Arama tercihleri",
"search-preferences-cleared": "Silinmiş Arama Tercihleri",
"show-results-as": "Sonuçları göster : "
}

@ -1,7 +1,7 @@
{
"no_tag_topics": "Bu etiketli başlık yok.",
"tags": "Etiketler",
"enter_tags_here": "Enter tags here. %1-%2 characters. Press enter after each tag.",
"enter_tags_here": "Etiketleri buraya girin. %1-%2 karakter. Her etiketten sonra enter tuşuna basın.",
"enter_tags_here_short": "Etiketleri gir...",
"no_tags": "Henüz etiket yok."
}

@ -12,7 +12,7 @@
"notify_me": "Bu konudaki cevaplardan haberdar ol",
"quote": "Alıntı",
"reply": "Cevap",
"guest-login-reply": "Log in to reply",
"guest-login-reply": "Cevaplamak için giriş yapın",
"edit": "Düzenle",
"delete": "Sil",
"purge": "Temizle",

@ -5,7 +5,7 @@
"search": "Ara",
"enter_username": "Aramak için bir kullanıcı adı girin",
"load_more": "Daha Fazla Yükle",
"users-found-search-took": "%1 user(s) found! Search took %2 seconds.",
"users-found-search-took": "%1 kullanıcı(lar) bulundu! Arama %2 saniye sürdü.",
"filter-by": "Şu şekilde filtrele",
"online-only": "Sadece çevrimiçi",
"picture-only": "Sadece resim"

@ -1,6 +1,6 @@
{
"new_topic_button": "Chủ đề mới",
"guest-login-post": "Log in to post",
"guest-login-post": "Đăng nhập để viết bài",
"no_topics": "<strong>Không có bài viết trong danh mục này.</strong><br />Hãy đăng một bài viết mới.",
"browsing": "đang xem",
"no_replies": "Chưa có bình luận nào",

@ -9,9 +9,9 @@
"reset.text1": "Chúng tôi nhận được yêu cầu khởi tạo lại mật khẩu của bạn, rất có thể vì bạn đã quên mất nó. Nếu bạn không gởi yêu cầu, hãy bỏ qua email này.",
"reset.text2": "Để đặt lại mật khẩu, hãy click vào liên kết sau:",
"reset.cta": "Click vào đây để khởi tạo lại mật khẩu",
"reset.notify.subject": "Password successfully changed",
"reset.notify.text1": "We are notifying you that on %1, your password was changed successfully.",
"reset.notify.text2": "If you did not authorise this, please notify an administrator immediately.",
"reset.notify.subject": "Thay đổi mật khẩu thành công",
"reset.notify.text1": "Chúng tôi thông báo với bạn trên %1, mật khẩu của bạn đã thay đổi thành công",
"reset.notify.text2": "Nếu bạn không cho phép điều này, vui lòng thông báo cho quản trị viên ngay lập tức",
"digest.notifications": "Bạn có thông báo chưa đọc từ %1",
"digest.latest_topics": "Chủ đề mới nhất từ %1",
"digest.cta": "Click vào đây để truy cập %1",
@ -20,8 +20,8 @@
"notif.chat.subject": "Bạn có tin nhắn mới từ %1",
"notif.chat.cta": "Nhấn vào đây để tiếp tục cuộc hội thoại",
"notif.chat.unsub.info": "Thông báo tin nhắn này được gửi tới dựa theo cài đặt theo dõi của bạn.",
"notif.post.cta": "Click here to read the full topic",
"notif.post.unsub.info": "This post notification was sent to you due to your subscription settings.",
"notif.post.cta": "Nhấn vào đây để đọc toàn bộ chủ đề",
"notif.post.unsub.info": "Thông báo bài viết này được gửi cho bạn dựa tên thiết lập nhận thông báo của bạn",
"test.text1": "Đây là email kiểm tra xem chức năng gửi mail trên hệ thống NodeBB của bạn có hoạt động tốt hay không.",
"unsub.cta": "Nhấn vào đây để thay đổi cài đặt.",
"closing": "Xin cảm ơn!"

@ -18,7 +18,7 @@
"username-taken": "Tên đăng nhập đã tồn tại",
"email-taken": "Email đã được đăng kí",
"email-not-confirmed": "Email của bạn chưa được xác nhận, xin hãy nhấn vào đây để xác nhận địa chỉ này là của bạn",
"email-not-confirmed-chat": "You are unable to chat until your email is confirmed",
"email-not-confirmed-chat": "Bạn không thể trò chuyện cho đến khi thư điện tử của bạn được xác nhận",
"no-email-to-confirm": "This forum requires email confirmation, please click here to enter an email",
"email-confirm-failed": "We could not confirm your email, please try again later.",
"username-too-short": "Tên đăng nhập quá ngắn",

@ -2,7 +2,7 @@
"title": "Thông báo",
"no_notifs": "Bạn không có thông báo nào mới",
"see_all": "Xem tất cả thông báo",
"mark_all_read": "Mark all notifications read",
"mark_all_read": "Đánh dấu đã xem tất cả thông báo",
"back_to_home": "Quay lại %1",
"outgoing_link": "Liên kết ngoài",
"outgoing_link_message": "Bạn đang rời khỏi %1.",

@ -1,6 +1,6 @@
{
"new_topic_button": "新主题",
"guest-login-post": "Log in to post",
"guest-login-post": "登陆后发表",
"no_topics": "<strong>此版块还没有任何内容。</strong><br />赶紧来发帖吧!",
"browsing": "正在浏览",
"no_replies": "尚无回复",

@ -19,8 +19,8 @@
"email-taken": "电子邮箱已被占用",
"email-not-confirmed": "您的电子邮箱尚未确认,请点击这里确认您的电子邮箱。",
"email-not-confirmed-chat": "在确认您的邮箱之前,您不能使用聊天功能",
"no-email-to-confirm": "This forum requires email confirmation, please click here to enter an email",
"email-confirm-failed": "We could not confirm your email, please try again later.",
"no-email-to-confirm": "本论坛需要电子邮箱确认,请点击这里输入一个电子邮箱地址",
"email-confirm-failed": "我们无法确认您的电子邮箱,请重试",
"username-too-short": "用户名太短",
"username-too-long": "用户名太长",
"user-banned": "用户已禁止",
@ -35,7 +35,7 @@
"no-emailers-configured": "未加载任何电子邮箱插件,无法发送测试邮件",
"category-disabled": "版块已禁用",
"topic-locked": "主题已锁定",
"post-edit-duration-expired": "You are only allowed to edit posts for %1 seconds after posting",
"post-edit-duration-expired": "您只能在发表后 %1 秒内修改内容",
"still-uploading": "请等待上传完成",
"content-too-short": "请再输入一些内容,帖子至少要有 %1 个字符。",
"content-too-long": "请输入更短的发帖。发帖字数不能超过 %1 个字符。",
@ -43,8 +43,8 @@
"title-too-long": "请输入更短的标题。不超过 %1 字。",
"too-many-posts": "发帖间隔至少要 %1 秒 - 请稍候再发帖",
"too-many-posts-newbie": "作为新用户,您必须每隔 %1 秒才能发帖一次,直到您有 %2 点威望为止 —— 请稍候再发帖",
"tag-too-short": "Please enter a longer tag. Tags should contain at least %1 characters",
"tag-too-long": "Please enter a shorter tag. Tags can't be longer than %1 characters",
"tag-too-short": "标签长度过短,标签长度至少为 %1 个字符",
"tag-too-long": "标签长度过长,标签长度至多为 %1 个字符",
"file-too-big": "文件不能超过 %1k 字节 - 请上传更小的文件",
"cant-vote-self-post": "您不能给自己的帖子投票。",
"already-favourited": "您已收藏该帖",
@ -52,7 +52,7 @@
"cant-ban-other-admins": "您不能禁止其他管理员!",
"invalid-image-type": "无效的图像类型。允许的类型有:%1",
"invalid-image-extension": "无效的图像扩展",
"invalid-file-type": "Invalid file type. Allowed types are: %1",
"invalid-file-type": "无效文件格式,允许的格式有:%1",
"group-name-too-short": "用户组名称太短",
"group-already-exists": "用户组已存在",
"group-name-change-not-allowed": "不允许更改用户组名称",
@ -76,6 +76,6 @@
"reload-failed": "NodeBB 重新加载时遇到问题: \"%1\"。NodeBB 会继续给已存在的客户端组件服务,虽然您应该撤销在重新加载前执行的操作。",
"registration-error": "注册错误",
"parse-error": "解析服务器响应时出错",
"wrong-login-type-email": "Please use your email to login",
"wrong-login-type-username": "Please use your username to login"
"wrong-login-type-email": "请输入您的电子邮箱地址登录",
"wrong-login-type-username": "请输入您的用户名登录"
}

@ -144,7 +144,7 @@ define('admin/extend/plugins', function() {
socket.emit('admin.plugins.upgrade', {
id: pluginID,
version: version
}, function(err) {
}, function(err, isActive) {
if (err) {
return app.alertError(err.message);
}
@ -152,6 +152,18 @@ define('admin/extend/plugins', function() {
parent.find('.fa-exclamation-triangle').remove();
parent.find('.currentVersion').text(version);
btn.remove();
if (isActive) {
app.alert({
alert_id: 'plugin_upgraded',
title: 'Plugin Upgraded',
message: 'Please reload your NodeBB to fully upgrade this plugin',
type: 'warning',
timeout: 5000,
clickfn: function() {
socket.emit('admin.reload');
}
});
}
});
}

@ -3,7 +3,7 @@
define('admin/extend/widgets', function() {
var Widgets = {};
Widgets.init = function() {
$('#widgets .nav-pills a').on('click', function(ev) {
var $this = $(this);

@ -18,7 +18,7 @@ define('admin/general/navigation', function() {
stop: drop
});
});
$('#enabled')
.on('click', '.delete', remove)
.on('click', '.toggle', toggle)
@ -75,6 +75,7 @@ define('admin/general/navigation', function() {
function remove() {
$(this).parents('li').remove();
return false;
}
function toggle() {

@ -75,8 +75,6 @@ define('admin/manage/categories', [
name: $('#inputName').val(),
description: $('#inputDescription').val(),
icon: $('#new-category-modal i').attr('value'),
bgColor: '#0059b2',
color: '#fff',
order: $('.admin-categories #entry-container').children().length + 1
};
@ -207,7 +205,7 @@ define('admin/manage/categories', [
case 'name':
data[name] = $(this).val() + ' (copy)';
break;
default:
default:
data[name] = $(this).val();
}
});
@ -226,7 +224,7 @@ define('admin/manage/categories', [
var inputEl = $(this),
cid = inputEl.parents('li[data-cid]').attr('data-cid');
uploader.open(RELATIVE_PATH + '/admin/category/uploadpicture', { cid: cid }, 0, function(imageUrlOnServer) {
uploader.open(RELATIVE_PATH + '/api/admin/category/uploadpicture', { cid: cid }, 0, function(imageUrlOnServer) {
inputEl.val(imageUrlOnServer);
var previewBox = inputEl.parents('li[data-cid]').find('.preview-box');
previewBox.css('background', 'url(' + imageUrlOnServer + '?' + new Date().getTime() + ')')

@ -103,11 +103,17 @@ define(function() {
if (menuItems.html() !== '') {
menuItems.append('<li role="presentation" class="divider"></li>');
} else {
menuItems.append('<li role="presentation"><a role="menuitem" href="#">No results...</a></li>');
}
}
if (value.length > 0) {
menuItems.append('<li role="presentation"><a role="menuitem" href="' + RELATIVE_PATH + '/search/' + value + '">Search the forum for <strong>' + value + '</strong></a></li>');
if (config.searchEnabled) {
menuItems.append('<li role="presentation"><a role="menuitem" target="_top" href="' + RELATIVE_PATH + '/search/' + value + '">Search the forum for <strong>' + value + '</strong></a></li>');
} else if (value.length < 3) {
menuItems.append('<li role="presentation"><a role="menuitem" href="#">Type more to see results...</a></li>');
}
} else {
menuItems.append('<li role="presentation"><a role="menuitem" href="#">Start typing to see results...</a></li>');
}

@ -3,321 +3,282 @@
var ajaxify = ajaxify || {};
$(document).ready(function() {
require(['templates'], function (templatesModule) {
/*global app, templates, utils, socket, translator, config, RELATIVE_PATH*/
var location = document.location || window.location,
rootUrl = location.protocol + '//' + (location.hostname || location.host) + (location.port ? ':' + location.port : ''),
apiXHR = null;
/*global app, templates, utils, socket, translator, config, RELATIVE_PATH*/
var location = document.location || window.location,
rootUrl = location.protocol + '//' + (location.hostname || location.host) + (location.port ? ':' + location.port : ''),
apiXHR = null;
window.onpopstate = function (event) {
if (event !== null && event.state && event.state.url !== undefined && !ajaxify.initialLoad) {
ajaxify.go(event.state.url, function() {
$(window).trigger('action:popstate', {url: event.state.url});
}, true);
}
};
ajaxify.currentPage = null;
ajaxify.initialLoad = false;
function onAjaxError(err, url, callback, quiet) {
var data = err.data,
textStatus = err.textStatus;
if (data) {
var status = parseInt(data.status, 10);
if (status === 403 || status === 404 || status === 500) {
$('#footer, #content').removeClass('hide').addClass('ajaxifying');
return renderTemplate(url, status.toString(), data.responseJSON, (new Date()).getTime(), callback);
} else if (status === 401) {
app.alertError('[[global:please_log_in]]');
app.previousUrl = url;
return ajaxify.go('login');
} else if (status === 302) {
if (data.responseJSON.path) {
if (!ajaxify.go(data.responseJSON.path, callback, quiet)) {
window.location.href = data.responseJSON.path;
}
} else if (data.responseJSON) {
ajaxify.go(data.responseJSON.slice(1), callback, quiet);
}
}
} else if (textStatus !== 'abort') {
app.alertError(data.responseJSON.error);
}
$(window).on('popstate', function (ev) {
ev = ev.originalEvent;
if (ev !== null && ev.state && ev.state.url !== undefined) {
ajaxify.go(ev.state.url, function() {
$(window).trigger('action:popstate', {url: ev.state.url});
}, true);
}
});
ajaxify.go = function (url, callback, quiet) {
// "quiet": If set to true, will not call pushState
app.enterRoom('');
ajaxify.currentPage = null;
$(window).off('scroll');
ajaxify.go = function (url, callback, quiet) {
if (ajaxify.handleACPRedirect(url)) {
return true;
}
if ($('#content').hasClass('ajaxifying') && apiXHR) {
apiXHR.abort();
}
app.enterRoom('');
// Remove relative path and trailing slash
url = ajaxify.removeRelativePath(url.replace(/\/$/, ''));
$(window).off('scroll');
var tpl_url = ajaxify.getTemplateMapping(url);
if ($('#content').hasClass('ajaxifying') && apiXHR) {
apiXHR.abort();
}
$(window).trigger('action:ajaxify.start', {url: url, tpl_url: tpl_url});
url = ajaxify.start(url, quiet);
var hash = '';
if(ajaxify.initialLoad) {
hash = window.location.hash ? window.location.hash : '';
}
$('#footer, #content').removeClass('hide').addClass('ajaxifying');
if (ajaxify.isTemplateAvailable(tpl_url) && !!!templatesModule.config.force_refresh[tpl_url]) {
ajaxify.currentPage = url;
var startTime = (new Date()).getTime();
if (window.history && window.history.pushState) {
window.history[!quiet ? 'pushState' : 'replaceState']({
url: url + hash
}, url, RELATIVE_PATH + '/' + url + hash);
}
ajaxify.variables.flush();
ajaxify.loadData(url, function(err, data) {
if (err) {
return onAjaxError(err, url, callback, quiet);
}
translator.load(config.defaultLang, tpl_url);
app.template = data.template.name;
$('#footer, #content').removeClass('hide').addClass('ajaxifying');
translator.load(config.defaultLang, data.template.name);
var startTime = (new Date()).getTime();
renderTemplate(url, data.template.name, data, startTime, callback);
ajaxify.variables.flush();
ajaxify.loadData(url, function(err, data) {
if (err) {
return onAjaxError(err, url, callback, quiet);
}
require(['search'], function(search) {
search.topicDOM.end();
});
});
renderTemplate(url, tpl_url, data, startTime, callback);
return true;
};
require(['search'], function(search) {
search.topicDOM.end();
});
});
ajaxify.handleACPRedirect = function(url) {
// If ajaxifying into an admin route from regular site, do a cold load.
url = ajaxify.removeRelativePath(url.replace(/\/$/, ''));
if (url.indexOf('admin') === 0 && window.location.pathname.indexOf('/admin') !== 0) {
window.open(RELATIVE_PATH + '/' + url, '_blank');
return true;
}
return false;
}
return true;
}
ajaxify.start = function(url, quiet, search) {
url = ajaxify.removeRelativePath(url.replace(/\/$/, ''));
var hash = window.location.hash;
search = search || '';
return false;
};
$(window).trigger('action:ajaxify.start', {url: url});
function renderTemplate(url, tpl_url, data, startTime, callback) {
var animationDuration = parseFloat($('#content').css('transition-duration')) || 0.2;
$(window).trigger('action:ajaxify.loadingTemplates', {});
ajaxify.currentPage = url;
templates.parse(tpl_url, data, function(template) {
translator.translate(template, function(translatedTemplate) {
setTimeout(function() {
$('#content').html(translatedTemplate);
if (window.history && window.history.pushState) {
window.history[!quiet ? 'pushState' : 'replaceState']({
url: url + search + hash
}, url, RELATIVE_PATH + '/' + url + search + hash);
}
return url;
};
ajaxify.variables.parse();
function onAjaxError(err, url, callback, quiet) {
var data = err.data,
textStatus = err.textStatus;
ajaxify.widgets.render(tpl_url, url, function() {
$(window).trigger('action:ajaxify.end', {url: url, tpl_url: tpl_url});
});
if (data) {
var status = parseInt(data.status, 10);
$(window).trigger('action:ajaxify.contentLoaded', {url: url});
if (status === 403 || status === 404 || status === 500) {
$('#footer, #content').removeClass('hide').addClass('ajaxifying');
return renderTemplate(url, status.toString(), data.responseJSON, (new Date()).getTime(), callback);
} else if (status === 401) {
app.alertError('[[global:please_log_in]]');
app.previousUrl = url;
return ajaxify.go('login');
} else if (status === 302) {
if (data.responseJSON.external) {
window.location.href = data.responseJSON.external;
} else if (typeof data.responseJSON === 'string') {
ajaxify.go(data.responseJSON.slice(1), callback, quiet);
}
}
} else if (textStatus !== 'abort') {
app.alertError(data.responseJSON.error);
}
}
ajaxify.loadScript(tpl_url);
function renderTemplate(url, tpl_url, data, startTime, callback) {
var animationDuration = parseFloat($('#content').css('transition-duration')) || 0.2;
$(window).trigger('action:ajaxify.loadingTemplates', {});
if (typeof callback === 'function') {
callback();
}
templates.parse(tpl_url, data, function(template) {
translator.translate(template, function(translatedTemplate) {
setTimeout(function() {
$('#content').html(translatedTemplate);
app.processPage();
ajaxify.end(url, tpl_url);
$('#content, #footer').removeClass('ajaxifying');
ajaxify.initialLoad = false;
if (typeof callback === 'function') {
callback();
}
app.refreshTitle(url);
}, animationDuration * 1000 - ((new Date()).getTime() - startTime));
$('#content, #footer').removeClass('ajaxifying');
});
app.refreshTitle(url);
}, animationDuration * 1000 - ((new Date()).getTime() - startTime));
});
});
}
}
ajaxify.removeRelativePath = function(url) {
if (url.indexOf(RELATIVE_PATH.slice(1)) === 0) {
url = url.slice(RELATIVE_PATH.length);
}
return url;
};
ajaxify.refresh = function() {
ajaxify.go(ajaxify.currentPage);
};
ajaxify.end = function(url, tpl_url) {
ajaxify.variables.parse();
ajaxify.loadScript = function(tpl_url, callback) {
var location = !app.inAdmin ? 'forum/' : '';
ajaxify.loadScript(tpl_url);
require([location + tpl_url], function(script) {
if (script && script.init) {
script.init();
}
ajaxify.widgets.render(tpl_url, url, function() {
$(window).trigger('action:ajaxify.end', {url: url});
});
if (callback) {
callback();
}
});
};
$(window).trigger('action:ajaxify.contentLoaded', {url: url});
ajaxify.isTemplateAvailable = function(tpl) {
return $.inArray(tpl + '.tpl', templatesModule.available) !== -1;
};
app.processPage();
};
ajaxify.getTemplateMapping = function(url) {
var tpl_url = ajaxify.getCustomTemplateMapping(url.split('?')[0]);
ajaxify.removeRelativePath = function(url) {
if (url.indexOf(RELATIVE_PATH.slice(1)) === 0) {
url = url.slice(RELATIVE_PATH.length);
}
return url;
};
if (tpl_url === false && !templates[url]) {
tpl_url = url.split('/');
ajaxify.refresh = function() {
ajaxify.go(ajaxify.currentPage);
};
while(tpl_url.length) {
if (ajaxify.isTemplateAvailable(tpl_url.join('/'))) {
tpl_url = tpl_url.join('/');
break;
}
tpl_url.pop();
}
ajaxify.loadScript = function(tpl_url, callback) {
var location = !app.inAdmin ? 'forum/' : '';
if (!tpl_url.length) {
tpl_url = url.split('/')[0].split('?')[0];
}
} else if (templates[url]) {
tpl_url = url;
require([location + tpl_url], function(script) {
if (script && script.init) {
script.init();
}
return tpl_url;
};
ajaxify.getCustomTemplateMapping = function(tpl) {
if (templatesModule.config && templatesModule.config.custom_mapping && tpl !== undefined) {
for (var pattern in templatesModule.config.custom_mapping) {
if (templatesModule.config.custom_mapping.hasOwnProperty(pattern)) {
var match = tpl.match(pattern);
if (match && match[0] === tpl) {
return (templatesModule.config.custom_mapping[pattern]);
}
}
}
if (callback) {
callback();
}
});
};
return false;
};
ajaxify.loadData = function(url, callback) {
url = ajaxify.removeRelativePath(url);
ajaxify.loadData = function(url, callback) {
url = ajaxify.removeRelativePath(url);
$(window).trigger('action:ajaxify.loadingData', {url: url});
$(window).trigger('action:ajaxify.loadingData', {url: url});
apiXHR = $.ajax({
url: RELATIVE_PATH + '/api/' + url,
cache: false,
success: function(data) {
if (!data) {
return;
}
var location = document.location || window.location,
tpl_url = ajaxify.getCustomTemplateMapping(url.split('?')[0]);
data.relative_path = RELATIVE_PATH;
if (!tpl_url) {
tpl_url = ajaxify.getTemplateMapping(url);
if (callback) {
callback(null, data);
}
},
error: function(data, textStatus) {
if (data.status === 0 && textStatus === 'error') {
data.status = 500;
}
callback({
data: data,
textStatus: textStatus
});
}
apiXHR = $.ajax({
url: RELATIVE_PATH + '/api/' + url,
cache: false,
});
};
ajaxify.loadTemplate = function(template, callback) {
if (templates.cache[template]) {
callback(templates.cache[template]);
} else {
$.ajax({
url: RELATIVE_PATH + '/templates/' + template + '.tpl' + (config['cache-buster'] ? '?v=' + config['cache-buster'] : ''),
type: 'GET',
success: function(data) {
if (!data) {
return;
}
data.relative_path = RELATIVE_PATH;
if (callback) {
callback(null, data);
}
callback(data.toString());
},
error: function(data, textStatus) {
callback({
data: data,
textStatus: textStatus
});
error: function(error) {
throw new Error("Unable to load template: " + template + " (" + error.statusText + ")");
}
});
};
ajaxify.loadTemplate = function(template, callback) {
if (templates.cache[template]) {
callback(templates.cache[template]);
} else {
$.ajax({
url: RELATIVE_PATH + '/templates/' + template + '.tpl' + (config['cache-buster'] ? '?v=' + config['cache-buster'] : ''),
type: 'GET',
success: function(data) {
callback(data.toString());
},
error: function(error) {
throw new Error("Unable to load template: " + template + " (" + error.statusText + ")");
}
});
}
};
$('document').ready(function () {
templates.registerLoader(ajaxify.loadTemplate);
templatesModule.refresh(app.load);
}
};
if (!window.history || !window.history.pushState) {
return; // no ajaxification for old browsers
}
function ajaxifyAnchors() {
templates.registerLoader(ajaxify.loadTemplate);
function hrefEmpty(href) {
return href === undefined || href === '' || href === 'javascript:;' || href === window.location.href + "#" || href.slice(0, 1) === "#";
}
if (!window.history || !window.history.pushState) {
return; // no ajaxification for old browsers
}
// Enhancing all anchors to ajaxify...
$(document.body).on('click', 'a', function (e) {
if (this.target !== '') {
return;
} else if (hrefEmpty(this.href) || this.protocol === 'javascript:' || $(this).attr('data-ajaxify') === 'false') {
return e.preventDefault();
}
function hrefEmpty(href) {
return href === undefined || href === '' || href === 'javascript:;' || href === window.location.href + "#" || href.slice(0, 1) === "#";
}
if (!window.location.pathname.match(/\/(403|404)$/g)) {
app.previousUrl = window.location.href;
}
// Enhancing all anchors to ajaxify...
$(document.body).on('click', 'a', function (e) {
if (this.target !== '') {
return;
} else if (hrefEmpty(this.href) || this.protocol === 'javascript:' || $(this).attr('data-ajaxify') === 'false') {
return e.preventDefault();
}
if (!e.ctrlKey && !e.shiftKey && !e.metaKey && e.which === 1) {
if (this.host === '' || this.host === window.location.host) {
// Internal link
var url = this.href.replace(rootUrl + '/', '');
if (!window.location.pathname.match(/\/(403|404)$/g)) {
app.previousUrl = window.location.href;
}
if(window.location.pathname === this.pathname && this.hash) {
if (this.hash !== window.location.hash) {
window.location.hash = this.hash;
}
if (!e.ctrlKey && !e.shiftKey && !e.metaKey && e.which === 1) {
if (this.host === '' || this.host === window.location.host) {
// Internal link
var url = this.href.replace(rootUrl + '/', '');
ajaxify.loadScript(ajaxify.getTemplateMapping(url));
e.preventDefault();
} else {
if (ajaxify.go(url)) {
e.preventDefault();
}
if(window.location.pathname === this.pathname && this.hash) {
if (this.hash !== window.location.hash) {
window.location.hash = this.hash;
}
} else if (window.location.pathname !== '/outgoing') {
// External Link
if (config.openOutgoingLinksInNewTab) {
window.open(this.href, '_blank');
e.preventDefault();
} else if (config.useOutgoingLinksPage) {
ajaxify.go('outgoing?url=' + encodeURIComponent(this.href));
e.preventDefault();
} else {
if (ajaxify.go(url)) {
e.preventDefault();
}
}
} else if (window.location.pathname !== '/outgoing') {
// External Link
if (config.openOutgoingLinksInNewTab) {
window.open(this.href, '_blank');
e.preventDefault();
} else if (config.useOutgoingLinksPage) {
ajaxify.go('outgoing?url=' + encodeURIComponent(this.href));
e.preventDefault();
}
}
});
}
});
}
ajaxifyAnchors();
app.load();
templates.cache['500'] = $('.tpl-500').html();
});
});

@ -17,12 +17,12 @@ app.cacheBuster = null;
function socketIOConnect() {
var ioParams = {
reconnectionAttempts: config.maxReconnectionAttempts,
reconnectionDelay : config.reconnectionDelay,
reconnectionDelay: config.reconnectionDelay,
transports: config.socketioTransports,
path: config.relative_path + '/socket.io'
};
socket = io.connect(config.websocketAddress, ioParams);
socket = io(config.websocketAddress, ioParams);
reconnecting = false;
socket.on('event:connect', function () {
@ -41,11 +41,6 @@ app.cacheBuster = null;
});
socket.on('reconnecting', function (attempt) {
if(attempt === parseInt(config.maxReconnectionAttempts, 10)) {
socket.io.attempts = 0;
return;
}
reconnecting = true;
var reconnectEl = $('#reconnect');
@ -74,6 +69,11 @@ app.cacheBuster = null;
socket.on('event:alert', function(data) {
app.alert(data);
});
socket.on('reconnect_failed', function() {
// Wait ten times the reconnection delay and then start over
setTimeout(socket.connect.bind(socket), parseInt(config.reconnectionDelay, 10) * 10);
});
}
function onSocketConnect(data) {
@ -372,7 +372,7 @@ app.cacheBuster = null;
if (utils.findBootstrapEnvironment() === 'xs') {
return;
}
$('#header-menu li [title]').each(function() {
$('#header-menu li a[title]').each(function() {
$(this).tooltip({
placement: 'bottom',
title: $(this).attr('title')
@ -481,17 +481,8 @@ app.cacheBuster = null;
app.load = function() {
$('document').ready(function () {
var url = ajaxify.removeRelativePath(window.location.pathname.slice(1).replace(/\/$/, "")),
tpl_url = ajaxify.getTemplateMapping(url),
search = window.location.search,
hash = window.location.hash,
$window = $(window);
$window.trigger('action:ajaxify.start', {
url: url,
tpl_url: tpl_url
});
var url = ajaxify.start(window.location.pathname.slice(1), true, window.location.search);
ajaxify.end(url, app.template);
collapseNavigationOnClick();
@ -513,30 +504,7 @@ app.cacheBuster = null;
});
createHeaderTooltips();
showEmailConfirmWarning();
ajaxify.variables.parse();
ajaxify.currentPage = url;
$window.trigger('action:ajaxify.contentLoaded', {
url: url
});
if (window.history && window.history.replaceState) {
window.history.replaceState({
url: url + search + hash
}, url, RELATIVE_PATH + '/' + url + search + hash);
}
ajaxify.loadScript(tpl_url, function() {
ajaxify.widgets.render(tpl_url, url, function() {
app.processPage();
$window.trigger('action:ajaxify.end', {
url: url,
tpl_url: tpl_url
});
});
});
app.showEmailConfirmWarning();
socket.removeAllListeners('event:nodebb.ready');
socket.on('event:nodebb.ready', function(cacheBusters) {
@ -569,7 +537,7 @@ app.cacheBuster = null;
});
};
function showEmailConfirmWarning() {
app.showEmailConfirmWarning = function(err) {
if (!config.requireEmailConfirmation || !app.user.uid) {
return;
}
@ -587,7 +555,7 @@ app.cacheBuster = null;
} else if (!app.user['email:confirmed']) {
app.alert({
alert_id: 'email_confirm',
message: '[[error:email-not-confirmed]]',
message: err ? err.message : '[[error:email-not-confirmed]]',
type: 'warning',
timeout: 0,
clickfn: function() {
@ -601,7 +569,7 @@ app.cacheBuster = null;
}
});
}
}
};
showWelcomeMessage = window.location.href.indexOf('loggedin') !== -1;

@ -6,7 +6,7 @@ define('forum/categories', function() {
var categories = {};
$(window).on('action:ajaxify.start', function(ev, data) {
if (data.tpl_url !== 'categories') {
if (ajaxify.currentPage !== data.url) {
socket.removeListener('event:new_post', categories.onNewPost);
}
});

@ -13,7 +13,7 @@ define('forum/category', [
var Category = {};
$(window).on('action:ajaxify.start', function(ev, data) {
if(data && data.tpl_url !== 'category') {
if (ajaxify.currentPage !== data.url) {
navigator.hide();
removeListeners();

@ -206,6 +206,9 @@ define('forum/chats', ['string', 'sounds', 'forum/infinitescroll'], function(S,
message:msg
}, function(err) {
if (err) {
if (err.message === '[[error:email-not-confirmed-chat]]') {
return app.showEmailConfirmWarning(err);
}
return app.alertError(err.message);
}

@ -2,14 +2,14 @@
/* globals define, app, socket, utils */
define('forum/recent', ['forum/infinitescroll'], function(infinitescroll) {
define('forum/recent', ['forum/infinitescroll', 'composer'], function(infinitescroll, composer) {
var Recent = {};
var newTopicCount = 0,
newPostCount = 0;
$(window).on('action:ajaxify.start', function(ev, data) {
if (data.tpl_url !== 'recent') {
if (ajaxify.currentPage !== data.url) {
Recent.removeListeners();
}
});
@ -23,6 +23,17 @@ define('forum/recent', ['forum/infinitescroll'], function(infinitescroll) {
$(this).addClass('hide');
});
$('#new_topic').on('click', function() {
socket.emit('categories.getCategoriesByPrivilege', 'topics:create', function(err, categories) {
if (err) {
return app.alertError(err.message);
}
if (categories.length) {
composer.newTopic(categories[0].cid);
}
});
});
infinitescroll.init(Recent.loadMoreTopics);
};

@ -116,19 +116,13 @@ define('forum/search', ['search', 'autocomplete'], function(searchModule, autoco
if (!searchQuery) {
return;
}
var searchTerms = searchQuery.split(' ');
var regexes = [];
for (var i=0; i<searchTerms.length; ++i) {
var regex = new RegExp(searchTerms[i], 'gi');
regexes.push({regex: regex, term: searchTerms[i]});
}
var regexStr = searchQuery.trim().split(' ').join('|');
var regex = new RegExp('(' + regexStr + ')', 'gi');
$('.search-result-text').each(function() {
var result = $(this);
var text = result.html();
for(var i=0; i<regexes.length; ++i) {
text = text.replace(regexes[i].regex, '<strong>' + regexes[i].term + '</strong>');
}
var text = result.html().replace(regex, '<strong>$1</strong>');
result.html(text).find('img').addClass('img-responsive');
});
}
@ -142,6 +136,9 @@ define('forum/search', ['search', 'autocomplete'], function(searchModule, autoco
$('#clear-preferences').on('click', function() {
localStorage.removeItem('search-preferences');
var query = $('#search-input').val();
$('#advanced-search')[0].reset();
$('#search-input').val(query);
app.alertSuccess('[[search:search-preferences-cleared]]');
return false;
});

@ -18,7 +18,7 @@ define('forum/topic', [
currentUrl = '';
$(window).on('action:ajaxify.start', function(ev, data) {
if(data.tpl_url !== 'topic') {
if (ajaxify.currentPage !== data.url) {
navigator.hide();
$('.header-topic-title').find('span').text('').hide();
app.removeAlert('bookmark');

@ -6,7 +6,7 @@ define('forum/unread', ['forum/recent', 'topicSelect', 'forum/infinitescroll'],
var Unread = {};
$(window).on('action:ajaxify.start', function(ev, data) {
if (data.tpl_url !== 'unread') {
if (ajaxify.currentPage !== data.url) {
recent.removeListeners();
}
});
@ -130,7 +130,7 @@ define('forum/unread', ['forum/recent', 'topicSelect', 'forum/infinitescroll'],
function createCategoryLink(category) {
var link = $('<a role="menuitem" href="#"></a>');
if (category.icon) {
link.append('<i class="fa fa-fw ' + category.icon + '"></i> ' + category.name);
} else {

@ -22,11 +22,24 @@ define('composer', [
$(window).off('resize', onWindowResize).on('resize', onWindowResize);
$(window).on('action:popstate', function(ev, data) {
$(window).on('popstate', function(ev, data) {
var env = utils.findBootstrapEnvironment();
if (composer.active && (env === 'xs' || env ==='sm')) {
discard(composer.active);
if (!composer.posts[composer.active].modified) {
discard(composer.active);
return;
}
translator.translate('[[modules:composer.discard]]', function(translated) {
bootbox.confirm(translated, function(confirm) {
if (confirm) {
discard(composer.active);
} else {
history.pushState({}, '', '#compose');
}
});
});
}
});
@ -95,10 +108,15 @@ define('composer', [
composer.posts[uuid] = post;
composer.load(uuid);
var env = utils.findBootstrapEnvironment();
if (env === 'xs' || env ==='sm') {
history.pushState({}, '', '#compose');
}
}
function composerAlert(message) {
$('.action-bar button').removeAttr('disabled');
$('[data-action="post"]').removeAttr('disabled');
app.alert({
type: 'danger',
timeout: 3000,
@ -237,9 +255,8 @@ define('composer', [
composer.bsEnvironment = utils.findBootstrapEnvironment();
var template = (composer.bsEnvironment === 'xs' || composer.bsEnvironment === 'sm') ? 'composer-mobile' : 'composer';
var data = {
mobile: composer.bsEnvironment === 'xs' || composer.bsEnvironment === 'sm',
allowTopicsThumbnail: allowTopicsThumbnail,
showTags: isTopic || isMain,
minimumTagLength: config.minimumTagLength,
@ -250,7 +267,7 @@ define('composer', [
formatting: composer.formatting
};
parseAndTranslate(template, data, function(composerTemplate) {
parseAndTranslate('composer', data, function(composerTemplate) {
if ($('#cmp-uuid-' + post_uuid).length) {
return;
}
@ -267,6 +284,7 @@ define('composer', [
tags.init(postContainer, composer.posts[post_uuid]);
categoryList.init(postContainer, composer.posts[post_uuid]);
updateTitle(postData, postContainer);
activate(post_uuid);
@ -286,22 +304,23 @@ define('composer', [
composer.posts[post_uuid].modified = true;
});
postContainer.on('click', '.action-bar button[data-action="post"]', function() {
postContainer.on('click', '[data-action="post"]', function() {
$(this).attr('disabled', true);
post(post_uuid);
});
postContainer.on('click', '.action-bar button[data-action="discard"]', function() {
postContainer.on('click', '[data-action="discard"]', function() {
if (!composer.posts[post_uuid].modified) {
discard(post_uuid);
return;
}
var btn = $(this).prop('disabled', true);
translator.translate('[[modules:composer.discard]]', function(translated) {
bootbox.confirm(translated, function(confirm) {
if (confirm) {
discard(post_uuid);
}
btn.prop('disabled', false);
});
});
});
@ -329,6 +348,7 @@ define('composer', [
resize.handleResize(postContainer);
handleHelp(postContainer);
handleTogglePreview(postContainer);
$(window).trigger('action:composer.loaded', {
post_uuid: post_uuid
@ -357,11 +377,32 @@ define('composer', [
});
}
function handleTogglePreview(postContainer) {
var showBtn = postContainer.find('.write-container .toggle-preview'),
hideBtn = postContainer.find('.preview-container .toggle-preview');
hideBtn.on('click', function() {
$('.preview-container').addClass('hide');
$('.write-container').addClass('maximized');
showBtn.removeClass('hide');
$('.write').focus();
});
showBtn.on('click', function() {
$('.preview-container').removeClass('hide');
$('.write-container').removeClass('maximized');
showBtn.addClass('hide');
$('.write').focus();
});
}
function updateTitle(postData, postContainer) {
var titleEl = postContainer.find('.title');
if (parseInt(postData.tid, 10) > 0) {
titleEl.translateVal('[[topic:composer.replying_to, ' + postData.title + ']]');
titleEl.translateVal('[[topic:composer.replying_to, "' + postData.title + '"]]');
titleEl.prop('disabled', true);
} else if (parseInt(postData.pid, 10) > 0) {
titleEl.val(postData.title);
@ -466,10 +507,10 @@ define('composer', [
}
function done(err, data) {
$('.action-bar button').removeAttr('disabled');
$('[data-action="post"]').removeAttr('disabled');
if (err) {
if (err.message === '[[error:email-not-confirmed]]') {
return showEmailConfirmAlert(err);
return app.showEmailConfirmWarning(err);
}
return app.alertError(err.message);
@ -482,25 +523,6 @@ define('composer', [
}
}
function showEmailConfirmAlert(err) {
app.alert({
alert_id: 'email_confirm',
title: '[[global:alert.error]]',
message: err.message,
type: 'danger',
timeout: 0,
clickfn: function() {
app.removeAlert('email_confirm');
socket.emit('user.emailConfirm', {}, function(err) {
if (err) {
return app.alertError(err.message);
}
app.alertSuccess('[[notifications:email-confirm-sent]]');
});
}
});
}
function discard(post_uuid) {
if (composer.posts[post_uuid]) {
$('#cmp-uuid-' + post_uuid).remove();
@ -512,9 +534,10 @@ define('composer', [
composer.active = undefined;
taskbar.discard('composer', post_uuid);
$('body').css({'margin-bottom': 0});
$('.action-bar button').removeAttr('disabled');
$('[data-action="post"]').removeAttr('disabled');
app.toggleNavbar(true);
$('html').removeClass('composing mobile');
}
}

@ -35,6 +35,8 @@ define('composer/categoryList', function() {
if (postData.cid) {
postData.cid = this.value;
}
$('[tabindex=' + (parseInt($(this).attr('tabindex'), 10) + 1) + ']').trigger('focus');
});
};

@ -20,11 +20,11 @@ define('composer/formatting', ['composer/controls', 'composer/preview'], functio
}
};
var customButtons = [];
var buttons = [];
formatting.addComposerButtons = function() {
for(var x=0,numButtons=customButtons.length;x<numButtons;x++) {
$('.formatting-bar .btn-group form').before('<span class="btn btn-link" tabindex="-1" data-format="' + customButtons[x].name + '"><i class="' + customButtons[x].iconClass + '"></i></span>');
for(var x=0,numButtons=buttons.length;x<numButtons;x++) {
$('.formatting-bar .btn-group form').before('<span class="btn btn-link" tabindex="-1" data-format="' + buttons[x].name + '"><i class="' + buttons[x].iconClass + '"></i></span>');
}
};
@ -32,7 +32,7 @@ define('composer/formatting', ['composer/controls', 'composer/preview'], functio
var name = iconClass.replace('fa fa-', '');
formattingDispatchTable[name] = onClick;
customButtons.push({
buttons.push({
name: name,
iconClass: iconClass
});

@ -3,32 +3,47 @@
/* globals app, define, config, utils*/
define('composer/resize', function() {
define('composer/resize', ['autosize'], function(autosize) {
var resize = {},
oldPercentage = 0,
env;
oldPercentage = 0;
resize.reposition = function(postContainer) {
var percentage = localStorage.getItem('composer:resizePercentage');
var percentage = localStorage.getItem('composer:resizePercentage') || 0.5;
doResize(postContainer, percentage);
};
function doResize(postContainer, percentage) {
if (!env) {
env = utils.findBootstrapEnvironment();
var env = utils.findBootstrapEnvironment();
// todo, lump in browsers that don't support transform (ie8) here
// at this point we should use modernizr
if (env === 'sm' || env === 'xs' || window.innerHeight < 480) {
$('html').addClass('composing mobile');
autosize(postContainer.find('textarea')[0]);
percentage = 1;
} else {
$('html').removeClass('composing mobile');
}
if (percentage) {
var max = getMaximumPercentage();
if (percentage < 0.25) {
percentage = 0.25;
} else if (percentage > max) {
percentage = max;
}
if (env === 'md' || env === 'lg') {
postContainer.css('height', Math.floor($(window).height() * percentage) + 'px');
postContainer.css('transform', 'translate(0, ' + (Math.abs(1-percentage) * 100) + '%)');
} else {
postContainer.removeAttr('style');
}
}
if (env === 'sm' || env === 'xs' || window.innerHeight < 480) {
app.toggleNavbar(false);
postContainer.css('height', $(window).height());
}
postContainer.percentage = percentage;
if (config.hasImageUploadPlugin) {
postContainer.find('.img-upload-btn').removeClass('hide');
@ -40,7 +55,7 @@ define('composer/resize', function() {
postContainer.find('#files.lt-ie9').removeClass('hide');
}
postContainer.css('visibility', 'visible').css('z-index', 2);
postContainer.css('visibility', 'visible');
// Add some extra space at the bottom of the body so that the user can still scroll to the last post w/ composer open
$('body').css({'margin-bottom': postContainer.css('height')});
@ -50,9 +65,10 @@ define('composer/resize', function() {
resize.handleResize = function(postContainer) {
function resizeStart(e) {
var resizeRect = resizeEl[0].getBoundingClientRect();
var resizeCenterY = resizeRect.top + (resizeRect.height/2);
resizeOffset = resizeCenterY - e.clientY;
var resizeRect = resizeEl[0].getBoundingClientRect(),
resizeCenterY = resizeRect.top + (resizeRect.height / 2);
resizeOffset = (resizeCenterY - e.clientY) / 2;
resizeActive = true;
resizeDown = e.clientY;
@ -63,29 +79,37 @@ define('composer/resize', function() {
function resizeStop(e) {
resizeActive = false;
toggleHeight(e);
postContainer.find('textarea').focus();
$(window).off('mousemove', resizeAction);
$(window).off('mouseup', resizeStop);
$('body').off('touchmove', resizeTouchAction);
var position = (e.clientY - resizeOffset),
newHeight = $(window).height() - position,
windowHeight = $(window).height();
if (newHeight > windowHeight - $('#header-menu').height() - (windowHeight / 15)) {
snapToTop = true;
} else {
snapToTop = false;
}
toggleMaximize(e);
}
function toggleHeight(e) {
var triggerIconEl = $('.resizer i');
if (e.clientY - resizeDown === 0){
var newPercentage = ($(window).height() - $('#header-menu').height() - 20) / $(window).height();
function toggleMaximize(e) {
if (e.clientY - resizeDown === 0 || snapToTop) {
var newPercentage = getMaximumPercentage();
if (triggerIconEl.hasClass('fa-chevron-up')) {
oldPercentage = getPercentage(postContainer);
if (!postContainer.hasClass('maximized') || !snapToTop) {
oldPercentage = postContainer.percentage;
doResize(postContainer, newPercentage);
triggerIconEl.addClass('fa-chevron-down').removeClass('fa-chevron-up');
postContainer.addClass('maximized');
} else {
doResize(postContainer, oldPercentage);
triggerIconEl.addClass('fa-chevron-up').removeClass('fa-chevron-down');
postContainer.removeClass('maximized');
}
} else {
triggerIconEl.addClass('fa-chevron-up').removeClass('fa-chevron-down');
}
}
@ -96,60 +120,67 @@ define('composer/resize', function() {
function resizeAction(e) {
if (resizeActive) {
var position = (e.clientY + resizeOffset);
var newHeight = $(window).height() - position;
var position = (e.clientY - resizeOffset),
newHeight = $(window).height() - position;
if(newHeight > $(window).height() - $('#header-menu').height() - 20) {
newHeight = $(window).height() - $('#header-menu').height() - 20;
} else if (newHeight < 100) {
newHeight = 100;
}
doResize(postContainer, newHeight / $(window).height());
postContainer.css('height', newHeight);
$('body').css({'margin-bottom': newHeight});
resizeWritePreview(postContainer);
resizeSavePosition(newHeight);
if (Math.abs(e.clientY - resizeDown) > 0) {
postContainer.removeClass('maximized');
}
}
e.preventDefault();
return false;
}
function resizeSavePosition(px) {
var percentage = px / $(window).height();
localStorage.setItem('composer:resizePercentage', percentage);
}
function getPercentage(postContainer) {
return postContainer.height() / $(window).height();
var percentage = px / $(window).height(),
max = getMaximumPercentage();
localStorage.setItem('composer:resizePercentage', percentage < max ? percentage : max);
}
var resizeActive = false,
resizeOffset = 0,
resizeDown = 0,
snapToTop = false,
resizeEl = postContainer.find('.resizer');
resizeEl.on('mousedown', resizeStart);
resizeEl.on('touchstart', function(e) {
e.preventDefault();
resizeStart(e.touches[0]);
});
resizeEl.on('touchend', function(e) {
e.preventDefault();
resizeStop();
});
resizeEl
.on('mousedown', resizeStart)
.on('touchstart', function(e) {
e.preventDefault();
resizeStart(e.touches[0]);
})
.on('touchend', function(e) {
e.preventDefault();
resizeStop();
});
};
function getMaximumPercentage() {
return ($(window).height() - $('#header-menu').height() - 1) / $(window).height();
}
function resizeWritePreview(postContainer) {
var h1 = postContainer.find('.title-container').outerHeight(true);
var h2 = postContainer.find('.category-tag-row').outerHeight(true);
var h3 = postContainer.find('.formatting-bar').outerHeight(true);
var h4 = postContainer.find('.topic-thumb-container').outerHeight(true);
var h5 = $('.taskbar').height();
var total = h1 + h2 + h3 + h4 + h5;
postContainer.find('.write-preview-container').css('height', postContainer.height() - total);
var total = getFormattingHeight(postContainer);
postContainer
.find('.write-preview-container')
.css('height', postContainer.percentage * $(window).height() - $('#header-menu').height() - total);
}
function getFormattingHeight(postContainer) {
return [
postContainer.find('.title-container').outerHeight(true),
postContainer.find('.formatting-bar').outerHeight(true),
postContainer.find('.topic-thumb-container').outerHeight(true),
$('.taskbar').height()
].reduce(function(a, b) {
return a + b;
});
}

@ -1,20 +0,0 @@
"use strict";
/*globals define, RELATIVE_PATH*/
define('templates', function() {
var Templates = {};
Templates.refresh = function(callback) {
$.getJSON(RELATIVE_PATH + '/api/get_templates_listing', function (data) {
Templates.config = data.templatesConfig;
Templates.available = data.availableTemplates;
if (callback) {
callback();
}
});
};
return Templates;
});

@ -70,12 +70,14 @@
collapseDash: /-+/g,
trimTrailingDash: /-$/g,
trimLeadingDash: /^-/g,
isLatin: /^[\w]+$/,
isLatin: /^[\w\d\s.,\-@]+$/,
languageKeyRegex: /\[\[[\w]+:.+\]\]/,
//http://dense13.com/blog/2009/05/03/converting-string-to-slug-javascript/
slugify: function(str, preserveCase) {
if (!str) { str = ''; }
if (!str) {
return '';
}
str = str.replace(utils.trimRegex, '');
if(utils.isLatin.test(str)) {
str = str.replace(utils.invalidLatinChars, '-');
@ -276,7 +278,7 @@
}
if (!hash[key]) {
hash[key] = value;
} else {
} else {
if (!$.isArray(hash[key])) {
hash[key] = [hash[key]];
}

@ -68,11 +68,16 @@
ajaxify.widgets.reposition(location);
}
}
var widgetAreas = $('#content [widget-area]');
widgetAreas.find('img:not(.user-img)').addClass('img-responsive');
widgetAreas.find('span.timeago').timeago();
widgetAreas.find('img[title].teaser-pic,img[title].user-img').each(function() {
$(this).tooltip({
placement: 'top',
title: $(this).attr('title')
});
});
$(window).trigger('action:widgets.loaded', {});
if (typeof callback === 'function') {

@ -0,0 +1,155 @@
/*!
Autosize 2.0.0
license: MIT
http://www.jacklmoore.com/autosize
*/
'use strict';
/*globals define*/
(function (root, factory) {
if (typeof define === 'function' && define.amd) {
// AMD. Register as an anonymous module.
define('autosize', factory);
} else if (typeof exports === 'object') {
// Node. Does not work with strict CommonJS, but
// only CommonJS-like environments that support module.exports,
// like Node.
module.exports = factory();
} else {
// Browser globals (root is window)
root.autosize = factory();
}
}(this, function () {
function main(ta) {
if (!ta || !ta.nodeName || ta.nodeName !== 'TEXTAREA' || ta.hasAttribute('data-autosize-on')) { return; }
var maxHeight;
var heightOffset;
var amountOfCR;
function init() {
var style = window.getComputedStyle(ta, null);
if (style.resize === 'vertical') {
ta.style.resize = 'none';
} else if (style.resize === 'both') {
ta.style.resize = 'horizontal';
}
// horizontal overflow is hidden, so break-word is necessary for handling words longer than the textarea width
ta.style.wordWrap = 'break-word';
// Chrome/Safari-specific fix:
// When the textarea y-overflow is hidden, Chrome/Safari doesn't reflow the text to account for the space
// made available by removing the scrollbar. This workaround will cause the text to reflow.
var width = ta.style.width;
ta.style.width = '0px';
// Force reflow:
/* jshint ignore:start */
ta.offsetWidth;
/* jshint ignore:end */
ta.style.width = width;
maxHeight = style.maxHeight !== 'none' ? parseFloat(style.maxHeight) : false;
if (style.boxSizing === 'content-box') {
heightOffset = -(parseFloat(style.paddingTop)+parseFloat(style.paddingBottom));
} else {
heightOffset = parseFloat(style.borderTopWidth)+parseFloat(style.borderBottomWidth);
}
amountOfCR = (ta.value.match(/\n/g) || []).length;
adjust();
}
function adjust() {
var startHeight = ta.style.height;
var htmlTop = document.documentElement.scrollTop;
var bodyTop = document.body.scrollTop;
var newAmountOfCR = (ta.value.match(/\n/g) || []).length;
if (newAmountOfCR === amountOfCR) {
return;
}
amountOfCR = newAmountOfCR;
ta.style.height = 'auto';
var endHeight = ta.scrollHeight+heightOffset;
if (maxHeight !== false && maxHeight < endHeight) {
endHeight = maxHeight;
if (ta.style.overflowY !== 'scroll') {
ta.style.overflowY = 'scroll';
}
} else if (ta.style.overflowY !== 'hidden') {
ta.style.overflowY = 'hidden';
}
ta.style.height = endHeight+'px';
// prevents scroll-position jumping
document.documentElement.scrollTop = htmlTop;
document.body.scrollTop = bodyTop;
if (startHeight !== ta.style.height) {
var evt = document.createEvent('Event');
evt.initEvent('autosize.resized', true, false);
ta.dispatchEvent(evt);
}
}
// IE9 does not fire onpropertychange or oninput for deletions,
// so binding to onkeyup to catch most of those events.
// There is no way that I know of to detect something like 'cut' in IE9.
if ('onpropertychange' in ta && 'oninput' in ta) {
ta.addEventListener('keyup', adjust);
}
window.addEventListener('resize', adjust);
ta.addEventListener('input', adjust);
ta.addEventListener('autosize.update', adjust);
ta.addEventListener('autosize.destroy', function(style){
window.removeEventListener('resize', adjust);
ta.removeEventListener('input', adjust);
ta.removeEventListener('keyup', adjust);
ta.removeEventListener('autosize.destroy');
Object.keys(style).forEach(function(key){
ta.style[key] = style[key];
});
ta.removeAttribute('data-autosize-on');
}.bind(ta, {
height: ta.style.height,
overflow: ta.style.overflow,
overflowY: ta.style.overflowY,
wordWrap: ta.style.wordWrap,
resize: ta.style.resize
}));
ta.setAttribute('data-autosize-on', true);
ta.style.overflow = 'hidden';
ta.style.overflowY = 'hidden';
init();
}
// Do nothing in IE8 or lower
if (typeof window.getComputedStyle !== 'function') {
return function(elements) {
return elements;
};
} else {
return function(elements) {
if (elements && elements.length) {
Array.prototype.forEach.call(elements, main);
} else if (elements && elements.nodeName) {
main(elements);
}
return elements;
};
}
}));

Binary file not shown.

@ -1,6 +1,6 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
<svg xmlns="http://www.w3.org/2000/svg">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1">
<metadata></metadata>
<defs>
<font id="fontawesomeregular" horiz-adv-x="1536" >
@ -147,14 +147,14 @@
<glyph unicode="&#xf077;" horiz-adv-x="1792" d="M1683 205l-166 -165q-19 -19 -45 -19t-45 19l-531 531l-531 -531q-19 -19 -45 -19t-45 19l-166 165q-19 19 -19 45.5t19 45.5l742 741q19 19 45 19t45 -19l742 -741q19 -19 19 -45.5t-19 -45.5z" />
<glyph unicode="&#xf078;" horiz-adv-x="1792" d="M1683 728l-742 -741q-19 -19 -45 -19t-45 19l-742 741q-19 19 -19 45.5t19 45.5l166 165q19 19 45 19t45 -19l531 -531l531 531q19 19 45 19t45 -19l166 -165q19 -19 19 -45.5t-19 -45.5z" />
<glyph unicode="&#xf079;" horiz-adv-x="1920" d="M1280 32q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-8 0 -13.5 2t-9 7t-5.5 8t-3 11.5t-1 11.5v13v11v160v416h-192q-26 0 -45 19t-19 45q0 24 15 41l320 384q19 22 49 22t49 -22l320 -384q15 -17 15 -41q0 -26 -19 -45t-45 -19h-192v-384h576q16 0 25 -11l160 -192q7 -11 7 -21 zM1920 448q0 -24 -15 -41l-320 -384q-20 -23 -49 -23t-49 23l-320 384q-15 17 -15 41q0 26 19 45t45 19h192v384h-576q-16 0 -25 12l-160 192q-7 9 -7 20q0 13 9.5 22.5t22.5 9.5h960q8 0 13.5 -2t9 -7t5.5 -8t3 -11.5t1 -11.5v-13v-11v-160v-416h192q26 0 45 -19t19 -45z " />
<glyph unicode="&#xf07a;" horiz-adv-x="1664" d="M640 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1536 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1664 1088v-512q0 -24 -16 -42.5t-41 -21.5 l-1044 -122q1 -7 4.5 -21.5t6 -26.5t2.5 -22q0 -16 -24 -64h920q26 0 45 -19t19 -45t-19 -45t-45 -19h-1024q-26 0 -45 19t-19 45q0 14 11 39.5t29.5 59.5t20.5 38l-177 823h-204q-26 0 -45 19t-19 45t19 45t45 19h256q16 0 28.5 -6.5t20 -15.5t13 -24.5t7.5 -26.5 t5.5 -29.5t4.5 -25.5h1201q26 0 45 -19t19 -45z" />
<glyph unicode="&#xf07a;" horiz-adv-x="1664" d="M640 0q0 -52 -38 -90t-90 -38t-90 38t-38 90t38 90t90 38t90 -38t38 -90zM1536 0q0 -52 -38 -90t-90 -38t-90 38t-38 90t38 90t90 38t90 -38t38 -90zM1664 1088v-512q0 -24 -16.5 -42.5t-40.5 -21.5l-1044 -122q13 -60 13 -70q0 -16 -24 -64h920q26 0 45 -19t19 -45 t-19 -45t-45 -19h-1024q-26 0 -45 19t-19 45q0 11 8 31.5t16 36t21.5 40t15.5 29.5l-177 823h-204q-26 0 -45 19t-19 45t19 45t45 19h256q16 0 28.5 -6.5t19.5 -15.5t13 -24.5t8 -26t5.5 -29.5t4.5 -26h1201q26 0 45 -19t19 -45z" />
<glyph unicode="&#xf07b;" horiz-adv-x="1664" d="M1664 928v-704q0 -92 -66 -158t-158 -66h-1216q-92 0 -158 66t-66 158v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h672q92 0 158 -66t66 -158z" />
<glyph unicode="&#xf07c;" horiz-adv-x="1920" d="M1879 584q0 -31 -31 -66l-336 -396q-43 -51 -120.5 -86.5t-143.5 -35.5h-1088q-34 0 -60.5 13t-26.5 43q0 31 31 66l336 396q43 51 120.5 86.5t143.5 35.5h1088q34 0 60.5 -13t26.5 -43zM1536 928v-160h-832q-94 0 -197 -47.5t-164 -119.5l-337 -396l-5 -6q0 4 -0.5 12.5 t-0.5 12.5v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h544q92 0 158 -66t66 -158z" />
<glyph unicode="&#xf07d;" horiz-adv-x="768" d="M704 1216q0 -26 -19 -45t-45 -19h-128v-1024h128q26 0 45 -19t19 -45t-19 -45l-256 -256q-19 -19 -45 -19t-45 19l-256 256q-19 19 -19 45t19 45t45 19h128v1024h-128q-26 0 -45 19t-19 45t19 45l256 256q19 19 45 19t45 -19l256 -256q19 -19 19 -45z" />
<glyph unicode="&#xf07e;" horiz-adv-x="1792" d="M1792 640q0 -26 -19 -45l-256 -256q-19 -19 -45 -19t-45 19t-19 45v128h-1024v-128q0 -26 -19 -45t-45 -19t-45 19l-256 256q-19 19 -19 45t19 45l256 256q19 19 45 19t45 -19t19 -45v-128h1024v128q0 26 19 45t45 19t45 -19l256 -256q19 -19 19 -45z" />
<glyph unicode="&#xf080;" horiz-adv-x="2048" d="M640 640v-512h-256v512h256zM1024 1152v-1024h-256v1024h256zM2048 0v-128h-2048v1536h128v-1408h1920zM1408 896v-768h-256v768h256zM1792 1280v-1152h-256v1152h256z" />
<glyph unicode="&#xf081;" d="M1280 926q-56 -25 -121 -34q68 40 93 117q-65 -38 -134 -51q-61 66 -153 66q-87 0 -148.5 -61.5t-61.5 -148.5q0 -29 5 -48q-129 7 -242 65t-192 155q-29 -50 -29 -106q0 -114 91 -175q-47 1 -100 26v-2q0 -75 50 -133.5t123 -72.5q-29 -8 -51 -8q-13 0 -39 4 q21 -63 74.5 -104t121.5 -42q-116 -90 -261 -90q-26 0 -50 3q148 -94 322 -94q112 0 210 35.5t168 95t120.5 137t75 162t24.5 168.5q0 18 -1 27q63 45 105 109zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5 t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
<glyph unicode="&#xf082;" d="M1536 160q0 -119 -84.5 -203.5t-203.5 -84.5h-192v608h203l30 224h-233v143q0 54 28 83t96 29l132 1v207q-96 9 -180 9q-136 0 -218 -80.5t-82 -225.5v-166h-224v-224h224v-608h-544q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960 q119 0 203.5 -84.5t84.5 -203.5v-960z" />
<glyph unicode="&#xf082;" d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-188v595h199l30 232h-229v148q0 56 23.5 84t91.5 28l122 1v207q-63 9 -178 9q-136 0 -217.5 -80t-81.5 -226v-171h-200v-232h200v-595h-532q-119 0 -203.5 84.5t-84.5 203.5v960 q0 119 84.5 203.5t203.5 84.5h960z" />
<glyph unicode="&#xf083;" horiz-adv-x="1792" d="M928 704q0 14 -9 23t-23 9q-66 0 -113 -47t-47 -113q0 -14 9 -23t23 -9t23 9t9 23q0 40 28 68t68 28q14 0 23 9t9 23zM1152 574q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181zM128 0h1536v128h-1536v-128zM1280 574q0 159 -112.5 271.5 t-271.5 112.5t-271.5 -112.5t-112.5 -271.5t112.5 -271.5t271.5 -112.5t271.5 112.5t112.5 271.5zM256 1216h384v128h-384v-128zM128 1024h1536v118v138h-828l-64 -128h-644v-128zM1792 1280v-1280q0 -53 -37.5 -90.5t-90.5 -37.5h-1536q-53 0 -90.5 37.5t-37.5 90.5v1280 q0 53 37.5 90.5t90.5 37.5h1536q53 0 90.5 -37.5t37.5 -90.5z" />
<glyph unicode="&#xf084;" horiz-adv-x="1792" d="M832 1024q0 80 -56 136t-136 56t-136 -56t-56 -136q0 -42 19 -83q-41 19 -83 19q-80 0 -136 -56t-56 -136t56 -136t136 -56t136 56t56 136q0 42 -19 83q41 -19 83 -19q80 0 136 56t56 136zM1683 320q0 -17 -49 -66t-66 -49q-9 0 -28.5 16t-36.5 33t-38.5 40t-24.5 26 l-96 -96l220 -220q28 -28 28 -68q0 -42 -39 -81t-81 -39q-40 0 -68 28l-671 671q-176 -131 -365 -131q-163 0 -265.5 102.5t-102.5 265.5q0 160 95 313t248 248t313 95q163 0 265.5 -102.5t102.5 -265.5q0 -189 -131 -365l355 -355l96 96q-3 3 -26 24.5t-40 38.5t-33 36.5 t-16 28.5q0 17 49 66t66 49q13 0 23 -10q6 -6 46 -44.5t82 -79.5t86.5 -86t73 -78t28.5 -41z" />
<glyph unicode="&#xf085;" horiz-adv-x="1920" d="M896 640q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1664 128q0 52 -38 90t-90 38t-90 -38t-38 -90q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1664 1152q0 52 -38 90t-90 38t-90 -38t-38 -90q0 -53 37.5 -90.5t90.5 -37.5 t90.5 37.5t37.5 90.5zM1280 731v-185q0 -10 -7 -19.5t-16 -10.5l-155 -24q-11 -35 -32 -76q34 -48 90 -115q7 -10 7 -20q0 -12 -7 -19q-23 -30 -82.5 -89.5t-78.5 -59.5q-11 0 -21 7l-115 90q-37 -19 -77 -31q-11 -108 -23 -155q-7 -24 -30 -24h-186q-11 0 -20 7.5t-10 17.5 l-23 153q-34 10 -75 31l-118 -89q-7 -7 -20 -7q-11 0 -21 8q-144 133 -144 160q0 9 7 19q10 14 41 53t47 61q-23 44 -35 82l-152 24q-10 1 -17 9.5t-7 19.5v185q0 10 7 19.5t16 10.5l155 24q11 35 32 76q-34 48 -90 115q-7 11 -7 20q0 12 7 20q22 30 82 89t79 59q11 0 21 -7 l115 -90q34 18 77 32q11 108 23 154q7 24 30 24h186q11 0 20 -7.5t10 -17.5l23 -153q34 -10 75 -31l118 89q8 7 20 7q11 0 21 -8q144 -133 144 -160q0 -9 -7 -19q-12 -16 -42 -54t-45 -60q23 -48 34 -82l152 -23q10 -2 17 -10.5t7 -19.5zM1920 198v-140q0 -16 -149 -31 q-12 -27 -30 -52q51 -113 51 -138q0 -4 -4 -7q-122 -71 -124 -71q-8 0 -46 47t-52 68q-20 -2 -30 -2t-30 2q-14 -21 -52 -68t-46 -47q-2 0 -124 71q-4 3 -4 7q0 25 51 138q-18 25 -30 52q-149 15 -149 31v140q0 16 149 31q13 29 30 52q-51 113 -51 138q0 4 4 7q4 2 35 20 t59 34t30 16q8 0 46 -46.5t52 -67.5q20 2 30 2t30 -2q51 71 92 112l6 2q4 0 124 -70q4 -3 4 -7q0 -25 -51 -138q17 -23 30 -52q149 -15 149 -31zM1920 1222v-140q0 -16 -149 -31q-12 -27 -30 -52q51 -113 51 -138q0 -4 -4 -7q-122 -71 -124 -71q-8 0 -46 47t-52 68 q-20 -2 -30 -2t-30 2q-14 -21 -52 -68t-46 -47q-2 0 -124 71q-4 3 -4 7q0 25 51 138q-18 25 -30 52q-149 15 -149 31v140q0 16 149 31q13 29 30 52q-51 113 -51 138q0 4 4 7q4 2 35 20t59 34t30 16q8 0 46 -46.5t52 -67.5q20 2 30 2t30 -2q51 71 92 112l6 2q4 0 124 -70 q4 -3 4 -7q0 -25 -51 -138q17 -23 30 -52q149 -15 149 -31z" />
@ -275,7 +275,7 @@
<glyph unicode="&#xf10c;" d="M768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103 t279.5 -279.5t103 -385.5z" />
<glyph unicode="&#xf10d;" horiz-adv-x="1664" d="M768 576v-384q0 -80 -56 -136t-136 -56h-384q-80 0 -136 56t-56 136v704q0 104 40.5 198.5t109.5 163.5t163.5 109.5t198.5 40.5h64q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-64q-106 0 -181 -75t-75 -181v-32q0 -40 28 -68t68 -28h224q80 0 136 -56t56 -136z M1664 576v-384q0 -80 -56 -136t-136 -56h-384q-80 0 -136 56t-56 136v704q0 104 40.5 198.5t109.5 163.5t163.5 109.5t198.5 40.5h64q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-64q-106 0 -181 -75t-75 -181v-32q0 -40 28 -68t68 -28h224q80 0 136 -56t56 -136z" />
<glyph unicode="&#xf10e;" horiz-adv-x="1664" d="M768 1216v-704q0 -104 -40.5 -198.5t-109.5 -163.5t-163.5 -109.5t-198.5 -40.5h-64q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h64q106 0 181 75t75 181v32q0 40 -28 68t-68 28h-224q-80 0 -136 56t-56 136v384q0 80 56 136t136 56h384q80 0 136 -56t56 -136zM1664 1216 v-704q0 -104 -40.5 -198.5t-109.5 -163.5t-163.5 -109.5t-198.5 -40.5h-64q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h64q106 0 181 75t75 181v32q0 40 -28 68t-68 28h-224q-80 0 -136 56t-56 136v384q0 80 56 136t136 56h384q80 0 136 -56t56 -136z" />
<glyph unicode="&#xf110;" horiz-adv-x="1568" d="M496 192q0 -60 -42.5 -102t-101.5 -42q-60 0 -102 42t-42 102t42 102t102 42q59 0 101.5 -42t42.5 -102zM928 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM320 640q0 -66 -47 -113t-113 -47t-113 47t-47 113 t47 113t113 47t113 -47t47 -113zM1360 192q0 -46 -33 -79t-79 -33t-79 33t-33 79t33 79t79 33t79 -33t33 -79zM528 1088q0 -73 -51.5 -124.5t-124.5 -51.5t-124.5 51.5t-51.5 124.5t51.5 124.5t124.5 51.5t124.5 -51.5t51.5 -124.5zM992 1280q0 -80 -56 -136t-136 -56 t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1536 640q0 -40 -28 -68t-68 -28t-68 28t-28 68t28 68t68 28t68 -28t28 -68zM1328 1088q0 -33 -23.5 -56.5t-56.5 -23.5t-56.5 23.5t-23.5 56.5t23.5 56.5t56.5 23.5t56.5 -23.5t23.5 -56.5z" />
<glyph unicode="&#xf110;" horiz-adv-x="1792" d="M526 142q0 -53 -37.5 -90.5t-90.5 -37.5q-52 0 -90 38t-38 90q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1024 -64q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM320 640q0 -53 -37.5 -90.5t-90.5 -37.5 t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1522 142q0 -52 -38 -90t-90 -38q-53 0 -90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM558 1138q0 -66 -47 -113t-113 -47t-113 47t-47 113t47 113t113 47t113 -47t47 -113z M1728 640q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1088 1344q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1618 1138q0 -93 -66 -158.5t-158 -65.5q-93 0 -158.5 65.5t-65.5 158.5 q0 92 65.5 158t158.5 66q92 0 158 -66t66 -158z" />
<glyph unicode="&#xf111;" d="M1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
<glyph unicode="&#xf112;" horiz-adv-x="1792" d="M1792 416q0 -166 -127 -451q-3 -7 -10.5 -24t-13.5 -30t-13 -22q-12 -17 -28 -17q-15 0 -23.5 10t-8.5 25q0 9 2.5 26.5t2.5 23.5q5 68 5 123q0 101 -17.5 181t-48.5 138.5t-80 101t-105.5 69.5t-133 42.5t-154 21.5t-175.5 6h-224v-256q0 -26 -19 -45t-45 -19t-45 19 l-512 512q-19 19 -19 45t19 45l512 512q19 19 45 19t45 -19t19 -45v-256h224q713 0 875 -403q53 -134 53 -333z" />
<glyph unicode="&#xf113;" horiz-adv-x="1664" d="M640 320q0 -40 -12.5 -82t-43 -76t-72.5 -34t-72.5 34t-43 76t-12.5 82t12.5 82t43 76t72.5 34t72.5 -34t43 -76t12.5 -82zM1280 320q0 -40 -12.5 -82t-43 -76t-72.5 -34t-72.5 34t-43 76t-12.5 82t12.5 82t43 76t72.5 34t72.5 -34t43 -76t12.5 -82zM1440 320 q0 120 -69 204t-187 84q-41 0 -195 -21q-71 -11 -157 -11t-157 11q-152 21 -195 21q-118 0 -187 -84t-69 -204q0 -88 32 -153.5t81 -103t122 -60t140 -29.5t149 -7h168q82 0 149 7t140 29.5t122 60t81 103t32 153.5zM1664 496q0 -207 -61 -331q-38 -77 -105.5 -133t-141 -86 t-170 -47.5t-171.5 -22t-167 -4.5q-78 0 -142 3t-147.5 12.5t-152.5 30t-137 51.5t-121 81t-86 115q-62 123 -62 331q0 237 136 396q-27 82 -27 170q0 116 51 218q108 0 190 -39.5t189 -123.5q147 35 309 35q148 0 280 -32q105 82 187 121t189 39q51 -102 51 -218 q0 -87 -27 -168q136 -160 136 -398z" />
@ -411,7 +411,7 @@
<glyph unicode="&#xf19d;" horiz-adv-x="2304" d="M1774 700l18 -316q4 -69 -82 -128t-235 -93.5t-323 -34.5t-323 34.5t-235 93.5t-82 128l18 316l574 -181q22 -7 48 -7t48 7zM2304 1024q0 -23 -22 -31l-1120 -352q-4 -1 -10 -1t-10 1l-652 206q-43 -34 -71 -111.5t-34 -178.5q63 -36 63 -109q0 -69 -58 -107l58 -433 q2 -14 -8 -25q-9 -11 -24 -11h-192q-15 0 -24 11q-10 11 -8 25l58 433q-58 38 -58 107q0 73 65 111q11 207 98 330l-333 104q-22 8 -22 31t22 31l1120 352q4 1 10 1t10 -1l1120 -352q22 -8 22 -31z" />
<glyph unicode="&#xf19e;" d="M859 579l13 -707q-62 11 -105 11q-41 0 -105 -11l13 707q-40 69 -168.5 295.5t-216.5 374.5t-181 287q58 -15 108 -15q43 0 111 15q63 -111 133.5 -229.5t167 -276.5t138.5 -227q37 61 109.5 177.5t117.5 190t105 176t107 189.5q54 -14 107 -14q56 0 114 14v0 q-28 -39 -60 -88.5t-49.5 -78.5t-56.5 -96t-49 -84q-146 -248 -353 -610z" />
<glyph unicode="&#xf1a0;" horiz-adv-x="1280" d="M981 197q0 25 -7 49t-14.5 42t-27 41.5t-29.5 35t-38.5 34.5t-36.5 29t-41.5 30t-36.5 26q-16 2 -49 2q-53 0 -104.5 -7t-107 -25t-97 -46t-68.5 -74.5t-27 -105.5q0 -56 23.5 -102t61 -75.5t87 -50t100 -29t101.5 -8.5q58 0 111.5 13t99 39t73 73t27.5 109zM864 1055 q0 59 -17 125.5t-48 129t-84 103.5t-117 41q-42 0 -82.5 -19.5t-66.5 -52.5q-46 -59 -46 -160q0 -46 10 -97.5t31.5 -103t52 -92.5t75 -67t96.5 -26q37 0 77.5 16.5t65.5 43.5q53 56 53 159zM752 1536h417l-137 -88h-132q75 -63 113 -133t38 -160q0 -72 -24.5 -129.5 t-59.5 -93t-69.5 -65t-59 -61.5t-24.5 -66q0 -36 32 -70.5t77 -68t90.5 -73.5t77.5 -104t32 -142q0 -91 -49 -173q-71 -122 -209.5 -179.5t-298.5 -57.5q-132 0 -246.5 41.5t-172.5 137.5q-36 59 -36 131q0 81 44.5 150t118.5 115q131 82 404 100q-32 41 -47.5 73.5 t-15.5 73.5q0 40 21 85q-46 -4 -68 -4q-148 0 -249.5 96.5t-101.5 244.5q0 82 36 159t99 131q76 66 182 98t218 32z" />
<glyph unicode="&#xf1a1;" horiz-adv-x="1984" d="M831 572q0 -56 -40.5 -96t-96.5 -40q-57 0 -98 40t-41 96q0 57 41.5 98t97.5 41t96.5 -41t40.5 -98zM1292 711q56 0 96.5 -41t40.5 -98q0 -56 -40.5 -96t-96.5 -40q-57 0 -98 40t-41 96q0 57 41.5 98t97.5 41zM1984 722q0 -62 -31 -114t-83 -82q5 -33 5 -61 q0 -121 -68.5 -230.5t-197.5 -193.5q-125 -82 -285.5 -125.5t-335.5 -43.5q-176 0 -336.5 43.5t-284.5 125.5q-129 84 -197.5 193t-68.5 231q0 29 5 66q-48 31 -77 81.5t-29 109.5q0 94 66 160t160 66q83 0 148 -55q248 158 592 164l134 423q4 14 17.5 21.5t28.5 4.5 l347 -82q22 50 68.5 81t102.5 31q77 0 131.5 -54.5t54.5 -131.5t-54.5 -132t-131.5 -55q-76 0 -130.5 54t-55.5 131l-315 74l-116 -366q327 -14 560 -166q64 58 151 58q94 0 160 -66t66 -160zM1664 1459q-45 0 -77 -32t-32 -77t32 -77t77 -32t77 32t32 77t-32 77t-77 32z M77 722q0 -67 51 -111q49 131 180 235q-36 25 -82 25q-62 0 -105.5 -43.5t-43.5 -105.5zM1567 105q112 73 171.5 166t59.5 194t-59.5 193.5t-171.5 165.5q-116 75 -265.5 115.5t-313.5 40.5t-313.5 -40.5t-265.5 -115.5q-112 -73 -171.5 -165.5t-59.5 -193.5t59.5 -194 t171.5 -166q116 -75 265.5 -115.5t313.5 -40.5t313.5 40.5t265.5 115.5zM1850 605q57 46 57 117q0 62 -43.5 105.5t-105.5 43.5q-49 0 -86 -28q131 -105 178 -238zM1258 237q11 11 27 11t27 -11t11 -27.5t-11 -27.5q-99 -99 -319 -99h-2q-220 0 -319 99q-11 11 -11 27.5 t11 27.5t27 11t27 -11q77 -77 265 -77h2q188 0 265 77z" />
<glyph unicode="&#xf1a1;" horiz-adv-x="2304" d="M1509 107q0 -14 -12 -29q-52 -59 -147.5 -83t-196.5 -24q-252 0 -346 107q-12 15 -12 29q0 17 12 29.5t29 12.5q15 0 30 -12q58 -49 125.5 -66t159.5 -17t160 17t127 66q15 12 30 12q17 0 29 -12.5t12 -29.5zM978 498q0 -61 -43 -104t-104 -43q-60 0 -104.5 43.5 t-44.5 103.5q0 61 44 105t105 44t104 -44t43 -105zM1622 498q0 -61 -43 -104t-104 -43q-60 0 -104.5 43.5t-44.5 103.5q0 61 44 105t105 44t104 -44t43 -105zM415 793q-39 27 -88 27q-66 0 -113 -47t-47 -113q0 -72 54 -121q53 141 194 254zM2020 382q0 222 -249 387 q-128 85 -291.5 126.5t-331.5 41.5t-331.5 -41.5t-292.5 -126.5q-249 -165 -249 -387t249 -387q129 -85 292.5 -126.5t331.5 -41.5t331.5 41.5t291.5 126.5q249 165 249 387zM2137 660q0 66 -47 113t-113 47q-50 0 -93 -30q140 -114 192 -256q61 48 61 126zM1993 1335 q0 49 -34.5 83.5t-82.5 34.5q-49 0 -83.5 -34.5t-34.5 -83.5q0 -48 34.5 -82.5t83.5 -34.5q48 0 82.5 34.5t34.5 82.5zM2220 660q0 -65 -33 -122t-89 -90q5 -35 5 -66q0 -139 -79 -255.5t-208 -201.5q-140 -92 -313.5 -136.5t-354.5 -44.5t-355 44.5t-314 136.5 q-129 85 -208 201.5t-79 255.5q0 36 6 71q-53 33 -83.5 88.5t-30.5 118.5q0 100 71 171.5t172 71.5q91 0 159 -60q265 170 638 177l144 456q10 29 40 29q24 0 384 -90q24 55 74 88t110 33q82 0 141 -59t59 -142t-59 -141.5t-141 -58.5q-83 0 -141.5 58.5t-59.5 140.5 l-339 80l-125 -395q349 -15 603 -179q71 63 163 63q101 0 172 -71.5t71 -171.5z" />
<glyph unicode="&#xf1a2;" d="M950 393q7 7 17.5 7t17.5 -7t7 -18t-7 -18q-65 -64 -208 -64h-1h-1q-143 0 -207 64q-8 7 -8 18t8 18q7 7 17.5 7t17.5 -7q49 -51 172 -51h1h1q122 0 173 51zM671 613q0 -37 -26 -64t-63 -27t-63 27t-26 64t26 63t63 26t63 -26t26 -63zM1214 1049q-29 0 -50 21t-21 50 q0 30 21 51t50 21q30 0 51 -21t21 -51q0 -29 -21 -50t-51 -21zM1216 1408q132 0 226 -94t94 -227v-894q0 -133 -94 -227t-226 -94h-896q-132 0 -226 94t-94 227v894q0 133 94 227t226 94h896zM1321 596q35 14 57 45.5t22 70.5q0 51 -36 87.5t-87 36.5q-60 0 -98 -48 q-151 107 -375 115l83 265l206 -49q1 -50 36.5 -85t84.5 -35q50 0 86 35.5t36 85.5t-36 86t-86 36q-36 0 -66 -20.5t-45 -53.5l-227 54q-9 2 -17.5 -2.5t-11.5 -14.5l-95 -302q-224 -4 -381 -113q-36 43 -93 43q-51 0 -87 -36.5t-36 -87.5q0 -37 19.5 -67.5t52.5 -45.5 q-7 -25 -7 -54q0 -98 74 -181.5t201.5 -132t278.5 -48.5q150 0 277.5 48.5t201.5 132t74 181.5q0 27 -6 54zM971 702q37 0 63 -26t26 -63t-26 -64t-63 -27t-63 27t-26 64t26 63t63 26z" />
<glyph unicode="&#xf1a3;" d="M866 697l90 27v62q0 79 -58 135t-138 56t-138 -55.5t-58 -134.5v-283q0 -20 -14 -33.5t-33 -13.5t-32.5 13.5t-13.5 33.5v120h-151v-122q0 -82 57.5 -139t139.5 -57q81 0 138.5 56.5t57.5 136.5v280q0 19 13.5 33t33.5 14q19 0 32.5 -14t13.5 -33v-54zM1199 502v122h-150 v-126q0 -20 -13.5 -33.5t-33.5 -13.5q-19 0 -32.5 14t-13.5 33v123l-90 -26l-60 28v-123q0 -80 58 -137t139 -57t138.5 57t57.5 139zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103 t385.5 -103t279.5 -279.5t103 -385.5z" />
<glyph unicode="&#xf1a4;" horiz-adv-x="1920" d="M1062 824v118q0 42 -30 72t-72 30t-72 -30t-30 -72v-612q0 -175 -126 -299t-303 -124q-178 0 -303.5 125.5t-125.5 303.5v266h328v-262q0 -43 30 -72.5t72 -29.5t72 29.5t30 72.5v620q0 171 126.5 292t301.5 121q176 0 302 -122t126 -294v-136l-195 -58zM1592 602h328 v-266q0 -178 -125.5 -303.5t-303.5 -125.5q-177 0 -303 124.5t-126 300.5v268l131 -61l195 58v-270q0 -42 30 -71.5t72 -29.5t72 29.5t30 71.5v275z" />
@ -438,7 +438,7 @@
<glyph unicode="&#xf1ba;" horiz-adv-x="2048" d="M1824 640q93 0 158.5 -65.5t65.5 -158.5v-384q0 -14 -9 -23t-23 -9h-96v-64q0 -80 -56 -136t-136 -56t-136 56t-56 136v64h-1024v-64q0 -80 -56 -136t-136 -56t-136 56t-56 136v64h-96q-14 0 -23 9t-9 23v384q0 93 65.5 158.5t158.5 65.5h28l105 419q23 94 104 157.5 t179 63.5h128v224q0 14 9 23t23 9h448q14 0 23 -9t9 -23v-224h128q98 0 179 -63.5t104 -157.5l105 -419h28zM320 160q66 0 113 47t47 113t-47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47zM516 640h1016l-89 357q-2 8 -14 17.5t-21 9.5h-768q-9 0 -21 -9.5t-14 -17.5z M1728 160q66 0 113 47t47 113t-47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47z" />
<glyph unicode="&#xf1bb;" d="M1504 64q0 -26 -19 -45t-45 -19h-462q1 -17 6 -87.5t5 -108.5q0 -25 -18 -42.5t-43 -17.5h-320q-25 0 -43 17.5t-18 42.5q0 38 5 108.5t6 87.5h-462q-26 0 -45 19t-19 45t19 45l402 403h-229q-26 0 -45 19t-19 45t19 45l402 403h-197q-26 0 -45 19t-19 45t19 45l384 384 q19 19 45 19t45 -19l384 -384q19 -19 19 -45t-19 -45t-45 -19h-197l402 -403q19 -19 19 -45t-19 -45t-45 -19h-229l402 -403q19 -19 19 -45z" />
<glyph unicode="&#xf1bc;" d="M1127 326q0 32 -30 51q-193 115 -447 115q-133 0 -287 -34q-42 -9 -42 -52q0 -20 13.5 -34.5t35.5 -14.5q5 0 37 8q132 27 243 27q226 0 397 -103q19 -11 33 -11q19 0 33 13.5t14 34.5zM1223 541q0 40 -35 61q-237 141 -548 141q-153 0 -303 -42q-48 -13 -48 -64 q0 -25 17.5 -42.5t42.5 -17.5q7 0 37 8q122 33 251 33q279 0 488 -124q24 -13 38 -13q25 0 42.5 17.5t17.5 42.5zM1331 789q0 47 -40 70q-126 73 -293 110.5t-343 37.5q-204 0 -364 -47q-23 -7 -38.5 -25.5t-15.5 -48.5q0 -31 20.5 -52t51.5 -21q11 0 40 8q133 37 307 37 q159 0 309.5 -34t253.5 -95q21 -12 40 -12q29 0 50.5 20.5t21.5 51.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
<glyph unicode="&#xf1bd;" d="M1397 1408q58 0 98.5 -40.5t40.5 -98.5v-1258q0 -58 -40.5 -98.5t-98.5 -40.5h-1258q-58 0 -98.5 40.5t-40.5 98.5v1258q0 58 40.5 98.5t98.5 40.5h1258zM1465 11v1258q0 28 -20 48t-48 20h-1258q-28 0 -48 -20t-20 -48v-1258q0 -28 20 -48t48 -20h1258q28 0 48 20t20 48 zM694 749l188 -387l533 145v-496q0 -7 -5.5 -12.5t-12.5 -5.5h-1258q-7 0 -12.5 5.5t-5.5 12.5v141l711 195l-212 439q4 1 12 2.5t12 1.5q170 32 303.5 21.5t221 -46t143.5 -94.5q27 -28 -25 -42q-64 -16 -256 -62l-97 198q-111 7 -240 -16zM1397 1287q7 0 12.5 -5.5 t5.5 -12.5v-428q-85 30 -188 52q-294 64 -645 12l-18 -3l-65 134h-233l85 -190q-132 -51 -230 -137v560q0 7 5.5 12.5t12.5 5.5h1258zM286 387q-14 -3 -26 4.5t-14 21.5q-24 203 166 305l129 -270z" />
<glyph unicode="&#xf1bd;" horiz-adv-x="1024" d="M1024 1233l-303 -582l24 -31h279v-415h-507l-44 -30l-142 -273l-30 -30h-301v303l303 583l-24 30h-279v415h507l44 30l142 273l30 30h301v-303z" />
<glyph unicode="&#xf1be;" horiz-adv-x="2304" d="M784 164l16 241l-16 523q-1 10 -7.5 17t-16.5 7q-9 0 -16 -7t-7 -17l-14 -523l14 -241q1 -10 7.5 -16.5t15.5 -6.5q22 0 24 23zM1080 193l11 211l-12 586q0 16 -13 24q-8 5 -16 5t-16 -5q-13 -8 -13 -24l-1 -6l-10 -579q0 -1 11 -236v-1q0 -10 6 -17q9 -11 23 -11 q11 0 20 9q9 7 9 20zM35 533l20 -128l-20 -126q-2 -9 -9 -9t-9 9l-17 126l17 128q2 9 9 9t9 -9zM121 612l26 -207l-26 -203q-2 -9 -10 -9q-9 0 -9 10l-23 202l23 207q0 9 9 9q8 0 10 -9zM401 159zM213 650l25 -245l-25 -237q0 -11 -11 -11q-10 0 -12 11l-21 237l21 245 q2 12 12 12q11 0 11 -12zM307 657l23 -252l-23 -244q-2 -13 -14 -13q-13 0 -13 13l-21 244l21 252q0 13 13 13q12 0 14 -13zM401 639l21 -234l-21 -246q-2 -16 -16 -16q-6 0 -10.5 4.5t-4.5 11.5l-20 246l20 234q0 6 4.5 10.5t10.5 4.5q14 0 16 -15zM784 164zM495 785 l21 -380l-21 -246q0 -7 -5 -12.5t-12 -5.5q-16 0 -18 18l-18 246l18 380q2 18 18 18q7 0 12 -5.5t5 -12.5zM589 871l19 -468l-19 -244q0 -8 -5.5 -13.5t-13.5 -5.5q-18 0 -20 19l-16 244l16 468q2 19 20 19q8 0 13.5 -5.5t5.5 -13.5zM687 911l18 -506l-18 -242 q-2 -21 -22 -21q-19 0 -21 21l-16 242l16 506q0 9 6.5 15.5t14.5 6.5q9 0 15 -6.5t7 -15.5zM1079 169v0v0zM881 915l15 -510l-15 -239q0 -10 -7.5 -17.5t-17.5 -7.5t-17 7t-8 18l-14 239l14 510q0 11 7.5 18t17.5 7t17.5 -7t7.5 -18zM980 896l14 -492l-14 -236q0 -11 -8 -19 t-19 -8t-19 8t-9 19l-12 236l12 492q1 12 9 20t19 8t18.5 -8t8.5 -20zM1192 404l-14 -231v0q0 -13 -9 -22t-22 -9t-22 9t-10 22l-6 114l-6 117l12 636v3q2 15 12 24q9 7 20 7q8 0 15 -5q14 -8 16 -26zM2304 423q0 -117 -83 -199.5t-200 -82.5h-786q-13 2 -22 11t-9 22v899 q0 23 28 33q85 34 181 34q195 0 338 -131.5t160 -323.5q53 22 110 22q117 0 200 -83t83 -201z" />
<glyph unicode="&#xf1c0;" d="M768 768q237 0 443 43t325 127v-170q0 -69 -103 -128t-280 -93.5t-385 -34.5t-385 34.5t-280 93.5t-103 128v170q119 -84 325 -127t443 -43zM768 0q237 0 443 43t325 127v-170q0 -69 -103 -128t-280 -93.5t-385 -34.5t-385 34.5t-280 93.5t-103 128v170q119 -84 325 -127 t443 -43zM768 384q237 0 443 43t325 127v-170q0 -69 -103 -128t-280 -93.5t-385 -34.5t-385 34.5t-280 93.5t-103 128v170q119 -84 325 -127t443 -43zM768 1536q208 0 385 -34.5t280 -93.5t103 -128v-128q0 -69 -103 -128t-280 -93.5t-385 -34.5t-385 34.5t-280 93.5 t-103 128v128q0 69 103 128t280 93.5t385 34.5z" />
<glyph unicode="&#xf1c1;" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M894 465q33 -26 84 -56q59 7 117 7q147 0 177 -49q16 -22 2 -52q0 -1 -1 -2l-2 -2v-1q-6 -38 -71 -38q-48 0 -115 20t-130 53q-221 -24 -392 -83q-153 -262 -242 -262q-15 0 -28 7l-24 12q-1 1 -6 5q-10 10 -6 36q9 40 56 91.5t132 96.5q14 9 23 -6q2 -2 2 -4q52 85 107 197 q68 136 104 262q-24 82 -30.5 159.5t6.5 127.5q11 40 42 40h21h1q23 0 35 -15q18 -21 9 -68q-2 -6 -4 -8q1 -3 1 -8v-30q-2 -123 -14 -192q55 -164 146 -238zM318 54q52 24 137 158q-51 -40 -87.5 -84t-49.5 -74zM716 974q-15 -42 -2 -132q1 7 7 44q0 3 7 43q1 4 4 8 q-1 1 -1 2t-0.5 1.5t-0.5 1.5q-1 22 -13 36q0 -1 -1 -2v-2zM592 313q135 54 284 81q-2 1 -13 9.5t-16 13.5q-76 67 -127 176q-27 -86 -83 -197q-30 -56 -45 -83zM1238 329q-24 24 -140 24q76 -28 124 -28q14 0 18 1q0 1 -2 3z" />
@ -513,8 +513,53 @@
<glyph unicode="&#xf20a;" horiz-adv-x="2048" d="M785 528h207q-14 -158 -98.5 -248.5t-214.5 -90.5q-162 0 -254.5 116t-92.5 316q0 194 93 311.5t233 117.5q148 0 232 -87t97 -247h-203q-5 64 -35.5 99t-81.5 35q-57 0 -88.5 -60.5t-31.5 -177.5q0 -48 5 -84t18 -69.5t40 -51.5t66 -18q95 0 109 139zM1497 528h206 q-14 -158 -98 -248.5t-214 -90.5q-162 0 -254.5 116t-92.5 316q0 194 93 311.5t233 117.5q148 0 232 -87t97 -247h-204q-4 64 -35 99t-81 35q-57 0 -88.5 -60.5t-31.5 -177.5q0 -48 5 -84t18 -69.5t39.5 -51.5t65.5 -18q49 0 76.5 38t33.5 101zM1856 647q0 207 -15.5 307 t-60.5 161q-6 8 -13.5 14t-21.5 15t-16 11q-86 63 -697 63q-625 0 -710 -63q-5 -4 -17.5 -11.5t-21 -14t-14.5 -14.5q-45 -60 -60 -159.5t-15 -308.5q0 -208 15 -307.5t60 -160.5q6 -8 15 -15t20.5 -14t17.5 -12q44 -33 239.5 -49t470.5 -16q610 0 697 65q5 4 17 11t20.5 14 t13.5 16q46 60 61 159t15 309zM2048 1408v-1536h-2048v1536h2048z" />
<glyph unicode="&#xf20b;" d="M992 912v-496q0 -14 -9 -23t-23 -9h-160q-14 0 -23 9t-9 23v496q0 112 -80 192t-192 80h-272v-1152q0 -14 -9 -23t-23 -9h-160q-14 0 -23 9t-9 23v1344q0 14 9 23t23 9h464q135 0 249 -66.5t180.5 -180.5t66.5 -249zM1376 1376v-880q0 -135 -66.5 -249t-180.5 -180.5 t-249 -66.5h-464q-14 0 -23 9t-9 23v960q0 14 9 23t23 9h160q14 0 23 -9t9 -23v-768h272q112 0 192 80t80 192v880q0 14 9 23t23 9h160q14 0 23 -9t9 -23z" />
<glyph unicode="&#xf20c;" d="M1311 694v-114q0 -24 -13.5 -38t-37.5 -14h-202q-24 0 -38 14t-14 38v114q0 24 14 38t38 14h202q24 0 37.5 -14t13.5 -38zM821 464v250q0 53 -32.5 85.5t-85.5 32.5h-133q-68 0 -96 -52q-28 52 -96 52h-130q-53 0 -85.5 -32.5t-32.5 -85.5v-250q0 -22 21 -22h55 q22 0 22 22v230q0 24 13.5 38t38.5 14h94q24 0 38 -14t14 -38v-230q0 -22 21 -22h54q22 0 22 22v230q0 24 14 38t38 14h97q24 0 37.5 -14t13.5 -38v-230q0 -22 22 -22h55q21 0 21 22zM1410 560v154q0 53 -33 85.5t-86 32.5h-264q-53 0 -86 -32.5t-33 -85.5v-410 q0 -21 22 -21h55q21 0 21 21v180q31 -42 94 -42h191q53 0 86 32.5t33 85.5zM1536 1176v-1072q0 -96 -68 -164t-164 -68h-1072q-96 0 -164 68t-68 164v1072q0 96 68 164t164 68h1072q96 0 164 -68t68 -164z" />
<glyph unicode="&#xf20d;" horiz-adv-x="1792" />
<glyph unicode="&#xf20e;" horiz-adv-x="1792" />
<glyph unicode="&#xf20d;" d="M915 450h-294l147 551zM1001 128h311l-324 1024h-440l-324 -1024h311l383 314zM1536 1120v-960q0 -118 -85 -203t-203 -85h-960q-118 0 -203 85t-85 203v960q0 118 85 203t203 85h960q118 0 203 -85t85 -203z" />
<glyph unicode="&#xf20e;" horiz-adv-x="2048" d="M2048 641q0 -21 -13 -36.5t-33 -19.5l-205 -356q3 -9 3 -18q0 -20 -12.5 -35.5t-32.5 -19.5l-193 -337q3 -8 3 -16q0 -23 -16.5 -40t-40.5 -17q-25 0 -41 18h-400q-17 -20 -43 -20t-43 20h-399q-17 -20 -43 -20q-23 0 -40 16.5t-17 40.5q0 8 4 20l-193 335 q-20 4 -32.5 19.5t-12.5 35.5q0 9 3 18l-206 356q-20 5 -32.5 20.5t-12.5 35.5q0 21 13.5 36.5t33.5 19.5l199 344q0 1 -0.5 3t-0.5 3q0 36 34 51l209 363q-4 10 -4 18q0 24 17 40.5t40 16.5q26 0 44 -21h396q16 21 43 21t43 -21h398q18 21 44 21q23 0 40 -16.5t17 -40.5 q0 -6 -4 -18l207 -358q23 -1 39 -17.5t16 -38.5q0 -13 -7 -27l187 -324q19 -4 31.5 -19.5t12.5 -35.5zM1063 -158h389l-342 354h-143l-342 -354h360q18 16 39 16t39 -16zM112 654q1 -4 1 -13q0 -10 -2 -15l208 -360q2 0 4.5 -1t5.5 -2.5l5 -2.5l188 199v347l-187 194 q-13 -8 -29 -10zM986 1438h-388l190 -200l554 200h-280q-16 -16 -38 -16t-38 16zM1689 226q1 6 5 11l-64 68l-17 -79h76zM1583 226l22 105l-252 266l-296 -307l63 -64h463zM1495 -142l16 28l65 310h-427l333 -343q8 4 13 5zM578 -158h5l342 354h-373v-335l4 -6q14 -5 22 -13 zM552 226h402l64 66l-309 321l-157 -166v-221zM359 226h163v189l-168 -177q4 -8 5 -12zM358 1051q0 -1 0.5 -2t0.5 -2q0 -16 -8 -29l171 -177v269zM552 1121v-311l153 -157l297 314l-223 236zM556 1425l-4 -8v-264l205 74l-191 201q-6 -2 -10 -3zM1447 1438h-16l-621 -224 l213 -225zM1023 946l-297 -315l311 -319l296 307zM688 634l-136 141v-284zM1038 270l-42 -44h85zM1374 618l238 -251l132 624l-3 5l-1 1zM1718 1018q-8 13 -8 29v2l-216 376q-5 1 -13 5l-437 -463l310 -327zM522 1142v223l-163 -282zM522 196h-163l163 -283v283zM1607 196 l-48 -227l130 227h-82zM1729 266l207 361q-2 10 -2 14q0 1 3 16l-171 296l-129 -612l77 -82q5 3 15 7z" />
<glyph unicode="&#xf210;" d="M0 856q0 131 91.5 226.5t222.5 95.5h742l352 358v-1470q0 -132 -91.5 -227t-222.5 -95h-780q-131 0 -222.5 95t-91.5 227v790zM1232 102l-176 180v425q0 46 -32 79t-78 33h-484q-46 0 -78 -33t-32 -79v-492q0 -46 32.5 -79.5t77.5 -33.5h770z" />
<glyph unicode="&#xf211;" d="M934 1386q-317 -121 -556 -362.5t-358 -560.5q-20 89 -20 176q0 208 102.5 384.5t278.5 279t384 102.5q82 0 169 -19zM1203 1267q93 -65 164 -155q-389 -113 -674.5 -400.5t-396.5 -676.5q-93 72 -155 162q112 386 395 671t667 399zM470 -67q115 356 379.5 622t619.5 384 q40 -92 54 -195q-292 -120 -516 -345t-343 -518q-103 14 -194 52zM1536 -125q-193 50 -367 115q-135 -84 -290 -107q109 205 274 370.5t369 275.5q-21 -152 -101 -284q65 -175 115 -370z" />
<glyph unicode="&#xf212;" horiz-adv-x="2048" d="M1893 1144l155 -1272q-131 0 -257 57q-200 91 -393 91q-226 0 -374 -148q-148 148 -374 148q-193 0 -393 -91q-128 -57 -252 -57h-5l155 1272q224 127 482 127q233 0 387 -106q154 106 387 106q258 0 482 -127zM1398 157q129 0 232 -28.5t260 -93.5l-124 1021 q-171 78 -368 78q-224 0 -374 -141q-150 141 -374 141q-197 0 -368 -78l-124 -1021q105 43 165.5 65t148.5 39.5t178 17.5q202 0 374 -108q172 108 374 108zM1438 191l-55 907q-211 -4 -359 -155q-152 155 -374 155q-176 0 -336 -66l-114 -941q124 51 228.5 76t221.5 25 q209 0 374 -102q172 107 374 102z" />
<glyph unicode="&#xf213;" horiz-adv-x="2048" d="M1500 165v733q0 21 -15 36t-35 15h-93q-20 0 -35 -15t-15 -36v-733q0 -20 15 -35t35 -15h93q20 0 35 15t15 35zM1216 165v531q0 20 -15 35t-35 15h-101q-20 0 -35 -15t-15 -35v-531q0 -20 15 -35t35 -15h101q20 0 35 15t15 35zM924 165v429q0 20 -15 35t-35 15h-101 q-20 0 -35 -15t-15 -35v-429q0 -20 15 -35t35 -15h101q20 0 35 15t15 35zM632 165v362q0 20 -15 35t-35 15h-101q-20 0 -35 -15t-15 -35v-362q0 -20 15 -35t35 -15h101q20 0 35 15t15 35zM2048 311q0 -166 -118 -284t-284 -118h-1244q-166 0 -284 118t-118 284 q0 116 63 214.5t168 148.5q-10 34 -10 73q0 113 80.5 193.5t193.5 80.5q102 0 180 -67q45 183 194 300t338 117q149 0 275 -73.5t199.5 -199.5t73.5 -275q0 -66 -14 -122q135 -33 221 -142.5t86 -247.5z" />
<glyph unicode="&#xf214;" d="M0 1536h1536v-1392l-776 -338l-760 338v1392zM1436 209v926h-1336v-926l661 -294zM1436 1235v201h-1336v-201h1336zM181 937v-115h-37v115h37zM181 789v-115h-37v115h37zM181 641v-115h-37v115h37zM181 493v-115h-37v115h37zM181 345v-115h-37v115h37zM207 202l15 34 l105 -47l-15 -33zM343 142l15 34l105 -46l-15 -34zM478 82l15 34l105 -46l-15 -34zM614 23l15 33l104 -46l-15 -34zM797 10l105 46l15 -33l-105 -47zM932 70l105 46l15 -34l-105 -46zM1068 130l105 46l15 -34l-105 -46zM1203 189l105 47l15 -34l-105 -46zM259 1389v-36h-114 v36h114zM421 1389v-36h-115v36h115zM583 1389v-36h-115v36h115zM744 1389v-36h-114v36h114zM906 1389v-36h-114v36h114zM1068 1389v-36h-115v36h115zM1230 1389v-36h-115v36h115zM1391 1389v-36h-114v36h114zM181 1049v-79h-37v115h115v-36h-78zM421 1085v-36h-115v36h115z M583 1085v-36h-115v36h115zM744 1085v-36h-114v36h114zM906 1085v-36h-114v36h114zM1068 1085v-36h-115v36h115zM1230 1085v-36h-115v36h115zM1355 970v79h-78v36h115v-115h-37zM1355 822v115h37v-115h-37zM1355 674v115h37v-115h-37zM1355 526v115h37v-115h-37zM1355 378 v115h37v-115h-37zM1355 230v115h37v-115h-37zM760 265q-129 0 -221 91.5t-92 221.5q0 129 92 221t221 92q130 0 221.5 -92t91.5 -221q0 -130 -91.5 -221.5t-221.5 -91.5zM595 646q0 -36 19.5 -56.5t49.5 -25t64 -7t64 -2t49.5 -9t19.5 -30.5q0 -49 -112 -49q-97 0 -123 51 h-3l-31 -63q67 -42 162 -42q29 0 56.5 5t55.5 16t45.5 33t17.5 53q0 46 -27.5 69.5t-67.5 27t-79.5 3t-67 5t-27.5 25.5q0 21 20.5 33t40.5 15t41 3q34 0 70.5 -11t51.5 -34h3l30 58q-3 1 -21 8.5t-22.5 9t-19.5 7t-22 7t-20 4.5t-24 4t-23 1q-29 0 -56.5 -5t-54 -16.5 t-43 -34t-16.5 -53.5z" />
<glyph unicode="&#xf215;" horiz-adv-x="2048" d="M863 504q0 112 -79.5 191.5t-191.5 79.5t-191 -79.5t-79 -191.5t79 -191t191 -79t191.5 79t79.5 191zM1726 505q0 112 -79 191t-191 79t-191.5 -79t-79.5 -191q0 -113 79.5 -192t191.5 -79t191 79.5t79 191.5zM2048 1314v-1348q0 -44 -31.5 -75.5t-76.5 -31.5h-1832 q-45 0 -76.5 31.5t-31.5 75.5v1348q0 44 31.5 75.5t76.5 31.5h431q44 0 76 -31.5t32 -75.5v-161h754v161q0 44 32 75.5t76 31.5h431q45 0 76.5 -31.5t31.5 -75.5z" />
<glyph unicode="&#xf216;" horiz-adv-x="2048" d="M1430 953zM1690 749q148 0 253 -98.5t105 -244.5q0 -157 -109 -261.5t-267 -104.5q-85 0 -162 27.5t-138 73.5t-118 106t-109 126.5t-103.5 132.5t-108.5 126t-117 106t-136 73.5t-159 27.5q-154 0 -251.5 -91.5t-97.5 -244.5q0 -157 104 -250t263 -93q100 0 208 37.5 t193 98.5q5 4 21 18.5t30 24t22 9.5q14 0 24.5 -10.5t10.5 -24.5q0 -24 -60 -77q-101 -88 -234.5 -142t-260.5 -54q-133 0 -245.5 58t-180 165t-67.5 241q0 205 141.5 341t347.5 136q120 0 226.5 -43.5t185.5 -113t151.5 -153t139 -167.5t133.5 -153.5t149.5 -113 t172.5 -43.5q102 0 168.5 61.5t66.5 162.5q0 95 -64.5 159t-159.5 64q-30 0 -81.5 -18.5t-68.5 -18.5q-20 0 -35.5 15t-15.5 35q0 18 8.5 57t8.5 59q0 159 -107.5 263t-266.5 104q-58 0 -111.5 -18.5t-84 -40.5t-55.5 -40.5t-33 -18.5q-15 0 -25.5 10.5t-10.5 25.5 q0 19 25 46q59 67 147 103.5t182 36.5q191 0 318 -125.5t127 -315.5q0 -37 -4 -66q57 15 115 15z" />
<glyph unicode="&#xf217;" horiz-adv-x="1664" d="M1216 832q0 26 -19 45t-45 19h-128v128q0 26 -19 45t-45 19t-45 -19t-19 -45v-128h-128q-26 0 -45 -19t-19 -45t19 -45t45 -19h128v-128q0 -26 19 -45t45 -19t45 19t19 45v128h128q26 0 45 19t19 45zM640 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5 t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1536 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1664 1088v-512q0 -24 -16 -42.5t-41 -21.5l-1044 -122q1 -7 4.5 -21.5t6 -26.5t2.5 -22q0 -16 -24 -64h920 q26 0 45 -19t19 -45t-19 -45t-45 -19h-1024q-26 0 -45 19t-19 45q0 14 11 39.5t29.5 59.5t20.5 38l-177 823h-204q-26 0 -45 19t-19 45t19 45t45 19h256q16 0 28.5 -6.5t20 -15.5t13 -24.5t7.5 -26.5t5.5 -29.5t4.5 -25.5h1201q26 0 45 -19t19 -45z" />
<glyph unicode="&#xf218;" horiz-adv-x="1792" d="M1280 832q0 26 -19 45t-45 19t-45 -19l-147 -146v293q0 26 -19 45t-45 19t-45 -19t-19 -45v-293l-147 146q-19 19 -45 19t-45 -19t-19 -45t19 -45l256 -256q19 -19 45 -19t45 19l256 256q19 19 19 45zM640 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5 t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1536 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1664 1088v-512q0 -24 -16 -42.5t-41 -21.5l-1044 -122q1 -7 4.5 -21.5t6 -26.5t2.5 -22q0 -16 -24 -64h920 q26 0 45 -19t19 -45t-19 -45t-45 -19h-1024q-26 0 -45 19t-19 45q0 14 11 39.5t29.5 59.5t20.5 38l-177 823h-204q-26 0 -45 19t-19 45t19 45t45 19h256q16 0 28.5 -6.5t20 -15.5t13 -24.5t7.5 -26.5t5.5 -29.5t4.5 -25.5h1201q26 0 45 -19t19 -45z" />
<glyph unicode="&#xf219;" horiz-adv-x="2048" d="M212 768l623 -665l-300 665h-323zM1024 -4l349 772h-698zM538 896l204 384h-262l-288 -384h346zM1213 103l623 665h-323zM683 896h682l-204 384h-274zM1510 896h346l-288 384h-262zM1651 1382l384 -512q14 -18 13 -41.5t-17 -40.5l-960 -1024q-18 -20 -47 -20t-47 20 l-960 1024q-16 17 -17 40.5t13 41.5l384 512q18 26 51 26h1152q33 0 51 -26z" />
<glyph unicode="&#xf21a;" horiz-adv-x="2048" d="M1811 -19q19 19 45 19t45 -19l128 -128l-90 -90l-83 83l-83 -83q-18 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83 q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-128 128l90 90l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83 q19 19 45 19t45 -19l83 -83zM237 19q-19 -19 -45 -19t-45 19l-128 128l90 90l83 -82l83 82q19 19 45 19t45 -19l83 -82l64 64v293l-210 314q-17 26 -7 56.5t40 40.5l177 58v299h128v128h256v128h256v-128h256v-128h128v-299l177 -58q30 -10 40 -40.5t-7 -56.5l-210 -314 v-293l19 18q19 19 45 19t45 -19l83 -82l83 82q19 19 45 19t45 -19l128 -128l-90 -90l-83 83l-83 -83q-18 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83 q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83zM640 1152v-128l384 128l384 -128v128h-128v128h-512v-128h-128z" />
<glyph unicode="&#xf21b;" d="M576 0l96 448l-96 128l-128 64zM832 0l128 640l-128 -64l-96 -128zM992 1010q-2 4 -4 6q-10 8 -96 8q-70 0 -167 -19q-7 -2 -21 -2t-21 2q-97 19 -167 19q-86 0 -96 -8q-2 -2 -4 -6q2 -18 4 -27q2 -3 7.5 -6.5t7.5 -10.5q2 -4 7.5 -20.5t7 -20.5t7.5 -17t8.5 -17t9 -14 t12 -13.5t14 -9.5t17.5 -8t20.5 -4t24.5 -2q36 0 59 12.5t32.5 30t14.5 34.5t11.5 29.5t17.5 12.5h12q11 0 17.5 -12.5t11.5 -29.5t14.5 -34.5t32.5 -30t59 -12.5q13 0 24.5 2t20.5 4t17.5 8t14 9.5t12 13.5t9 14t8.5 17t7.5 17t7 20.5t7.5 20.5q2 7 7.5 10.5t7.5 6.5 q2 9 4 27zM1408 131q0 -121 -73 -190t-194 -69h-874q-121 0 -194 69t-73 190q0 61 4.5 118t19 125.5t37.5 123.5t63.5 103.5t93.5 74.5l-90 220h214q-22 64 -22 128q0 12 2 32q-194 40 -194 96q0 57 210 99q17 62 51.5 134t70.5 114q32 37 76 37q30 0 84 -31t84 -31t84 31 t84 31q44 0 76 -37q36 -42 70.5 -114t51.5 -134q210 -42 210 -99q0 -56 -194 -96q7 -81 -20 -160h214l-82 -225q63 -33 107.5 -96.5t65.5 -143.5t29 -151.5t8 -148.5z" />
<glyph unicode="&#xf21c;" horiz-adv-x="2304" d="M2301 500q12 -103 -22 -198.5t-99 -163.5t-158.5 -106t-196.5 -31q-161 11 -279.5 125t-134.5 274q-12 111 27.5 210.5t118.5 170.5l-71 107q-96 -80 -151 -194t-55 -244q0 -27 -18.5 -46.5t-45.5 -19.5h-256h-69q-23 -164 -149 -274t-294 -110q-185 0 -316.5 131.5 t-131.5 316.5t131.5 316.5t316.5 131.5q76 0 152 -27l24 45q-123 110 -304 110h-64q-26 0 -45 19t-19 45t19 45t45 19h128q78 0 145 -13.5t116.5 -38.5t71.5 -39.5t51 -36.5h512h115l-85 128h-222q-30 0 -49 22.5t-14 52.5q4 23 23 38t43 15h253q33 0 53 -28l70 -105 l114 114q19 19 46 19h101q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-179l115 -172q131 63 275 36q143 -26 244 -134.5t118 -253.5zM448 128q115 0 203 72.5t111 183.5h-314q-35 0 -55 31q-18 32 -1 63l147 277q-47 13 -91 13q-132 0 -226 -94t-94 -226t94 -226 t226 -94zM1856 128q132 0 226 94t94 226t-94 226t-226 94q-60 0 -121 -24l174 -260q15 -23 10 -49t-27 -40q-15 -11 -36 -11q-35 0 -53 29l-174 260q-93 -95 -93 -225q0 -132 94 -226t226 -94z" />
<glyph unicode="&#xf21d;" d="M1408 0q0 -63 -61.5 -113.5t-164 -81t-225 -46t-253.5 -15.5t-253.5 15.5t-225 46t-164 81t-61.5 113.5q0 49 33 88.5t91 66.5t118 44.5t131 29.5q26 5 48 -10.5t26 -41.5q5 -26 -10.5 -48t-41.5 -26q-58 -10 -106 -23.5t-76.5 -25.5t-48.5 -23.5t-27.5 -19.5t-8.5 -12 q3 -11 27 -26.5t73 -33t114 -32.5t160.5 -25t201.5 -10t201.5 10t160.5 25t114 33t73 33.5t27 27.5q-1 4 -8.5 11t-27.5 19t-48.5 23.5t-76.5 25t-106 23.5q-26 4 -41.5 26t-10.5 48q4 26 26 41.5t48 10.5q71 -12 131 -29.5t118 -44.5t91 -66.5t33 -88.5zM1024 896v-384 q0 -26 -19 -45t-45 -19h-64v-384q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v384h-64q-26 0 -45 19t-19 45v384q0 53 37.5 90.5t90.5 37.5h384q53 0 90.5 -37.5t37.5 -90.5zM928 1280q0 -93 -65.5 -158.5t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5 t158.5 -65.5t65.5 -158.5z" />
<glyph unicode="&#xf21e;" horiz-adv-x="1792" d="M1280 512h305q-5 -6 -10 -10.5t-9 -7.5l-3 -4l-623 -600q-18 -18 -44 -18t-44 18l-624 602q-5 2 -21 20h369q22 0 39.5 13.5t22.5 34.5l70 281l190 -667q6 -20 23 -33t39 -13q21 0 38 13t23 33l146 485l56 -112q18 -35 57 -35zM1792 940q0 -145 -103 -300h-369l-111 221 q-8 17 -25.5 27t-36.5 8q-45 -5 -56 -46l-129 -430l-196 686q-6 20 -23.5 33t-39.5 13t-39 -13.5t-22 -34.5l-116 -464h-423q-103 155 -103 300q0 220 127 344t351 124q62 0 126.5 -21.5t120 -58t95.5 -68.5t76 -68q36 36 76 68t95.5 68.5t120 58t126.5 21.5q224 0 351 -124 t127 -344z" />
<glyph unicode="&#xf221;" horiz-adv-x="1280" d="M1152 960q0 -221 -147.5 -384.5t-364.5 -187.5v-260h224q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-224v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-224q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h224v260q-150 16 -271.5 103t-186 224t-52.5 292 q11 134 80.5 249t182 188t245.5 88q170 19 319 -54t236 -212t87 -306zM128 960q0 -185 131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5z" />
<glyph unicode="&#xf222;" horiz-adv-x="1792" d="M1280 1504q0 14 9 23t23 9h416q26 0 45 -19t19 -45v-416q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v262l-419 -420q87 -104 129.5 -236.5t30.5 -276.5q-22 -250 -200.5 -431t-428.5 -206q-163 -17 -314 39.5t-256.5 162t-162 256.5t-39.5 314q25 250 206 428.5 t431 200.5q144 12 276.5 -30.5t236.5 -129.5l419 419h-261q-14 0 -23 9t-9 23v64zM704 -128q117 0 223.5 45.5t184 123t123 184t45.5 223.5t-45.5 223.5t-123 184t-184 123t-223.5 45.5t-223.5 -45.5t-184 -123t-123 -184t-45.5 -223.5t45.5 -223.5t123 -184t184 -123 t223.5 -45.5z" />
<glyph unicode="&#xf223;" horiz-adv-x="1280" d="M830 1220q145 -72 233.5 -210.5t88.5 -305.5q0 -221 -147.5 -384.5t-364.5 -187.5v-132h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96v-96q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v96h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96v132q-217 24 -364.5 187.5 t-147.5 384.5q0 167 88.5 305.5t233.5 210.5q-165 96 -228 273q-6 16 3.5 29.5t26.5 13.5h69q21 0 29 -20q44 -106 140 -171t214 -65t214 65t140 171q8 20 37 20h61q17 0 26.5 -13.5t3.5 -29.5q-63 -177 -228 -273zM576 256q185 0 316.5 131.5t131.5 316.5t-131.5 316.5 t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
<glyph unicode="&#xf224;" d="M1024 1504q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q126 -158 126 -359q0 -221 -147.5 -384.5t-364.5 -187.5v-132h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96v-96q0 -14 -9 -23t-23 -9h-64 q-14 0 -23 9t-9 23v96h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96v132q-149 16 -270.5 103t-186.5 223.5t-53 291.5q16 204 160 353.5t347 172.5q118 14 228 -19t198 -103l255 254h-134q-14 0 -23 9t-9 23v64zM576 256q185 0 316.5 131.5t131.5 316.5t-131.5 316.5 t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
<glyph unicode="&#xf225;" horiz-adv-x="1792" d="M1280 1504q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q126 -158 126 -359q0 -221 -147.5 -384.5t-364.5 -187.5v-132h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96v-96q0 -14 -9 -23t-23 -9h-64 q-14 0 -23 9t-9 23v96h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96v132q-217 24 -364.5 187.5t-147.5 384.5q0 201 126 359l-52 53l-101 -111q-9 -10 -22 -10.5t-23 7.5l-48 44q-10 8 -10.5 21.5t8.5 23.5l105 115l-111 112v-134q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9 t-9 23v288q0 26 19 45t45 19h288q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-133l106 -107l86 94q9 10 22 10.5t23 -7.5l48 -44q10 -8 10.5 -21.5t-8.5 -23.5l-90 -99l57 -56q158 126 359 126t359 -126l255 254h-134q-14 0 -23 9t-9 23v64zM832 256q185 0 316.5 131.5 t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
<glyph unicode="&#xf226;" horiz-adv-x="1792" d="M1790 1007q12 -155 -52.5 -292t-186 -224t-271.5 -103v-260h224q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-224v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-512v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-224q-14 0 -23 9t-9 23v64q0 14 9 23 t23 9h224v260q-150 16 -271.5 103t-186 224t-52.5 292q17 206 164.5 356.5t352.5 169.5q206 21 377 -94q171 115 377 94q205 -19 352.5 -169.5t164.5 -356.5zM896 647q128 131 128 313t-128 313q-128 -131 -128 -313t128 -313zM576 512q115 0 218 57q-154 165 -154 391 q0 224 154 391q-103 57 -218 57q-185 0 -316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5zM1152 128v260q-137 15 -256 94q-119 -79 -256 -94v-260h512zM1216 512q185 0 316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5q-115 0 -218 -57q154 -167 154 -391 q0 -226 -154 -391q103 -57 218 -57z" />
<glyph unicode="&#xf227;" horiz-adv-x="1920" d="M1536 1120q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q76 -95 107.5 -214t9.5 -247q-31 -182 -166 -312t-318 -156q-210 -29 -384.5 80t-241.5 300q-117 6 -221 57.5t-177.5 133t-113.5 192.5t-32 230 q9 135 78 252t182 191.5t248 89.5q118 14 227.5 -19t198.5 -103l255 254h-134q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q59 -74 93 -169q182 -9 328 -124l255 254h-134q-14 0 -23 9 t-9 23v64zM1024 704q0 20 -4 58q-162 -25 -271 -150t-109 -292q0 -20 4 -58q162 25 271 150t109 292zM128 704q0 -168 111 -294t276 -149q-3 29 -3 59q0 210 135 369.5t338 196.5q-53 120 -163.5 193t-245.5 73q-185 0 -316.5 -131.5t-131.5 -316.5zM1088 -128 q185 0 316.5 131.5t131.5 316.5q0 168 -111 294t-276 149q3 -29 3 -59q0 -210 -135 -369.5t-338 -196.5q53 -120 163.5 -193t245.5 -73z" />
<glyph unicode="&#xf228;" horiz-adv-x="2048" d="M1664 1504q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q76 -95 107.5 -214t9.5 -247q-32 -180 -164.5 -310t-313.5 -157q-223 -34 -409 90q-117 -78 -256 -93v-132h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23 t-23 -9h-96v-96q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v96h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96v132q-155 17 -279.5 109.5t-187 237.5t-39.5 307q25 187 159.5 322.5t320.5 164.5q224 34 410 -90q146 97 320 97q201 0 359 -126l255 254h-134q-14 0 -23 9 t-9 23v64zM896 391q128 131 128 313t-128 313q-128 -131 -128 -313t128 -313zM128 704q0 -185 131.5 -316.5t316.5 -131.5q117 0 218 57q-154 167 -154 391t154 391q-101 57 -218 57q-185 0 -316.5 -131.5t-131.5 -316.5zM1216 256q185 0 316.5 131.5t131.5 316.5 t-131.5 316.5t-316.5 131.5q-117 0 -218 -57q154 -167 154 -391t-154 -391q101 -57 218 -57z" />
<glyph unicode="&#xf229;" horiz-adv-x="1792" d="M1728 1536q26 0 45 -19t19 -45v-416q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v262l-229 -230l156 -156q9 -10 9 -23t-9 -22l-46 -46q-9 -9 -22 -9t-23 9l-156 157l-99 -100q87 -104 129.5 -236.5t30.5 -276.5q-22 -250 -200.5 -431t-428.5 -206q-163 -17 -314 39.5 t-256.5 162t-162 256.5t-39.5 314q25 250 206 428.5t431 200.5q144 12 276.5 -30.5t236.5 -129.5l99 99l-156 156q-9 10 -9 23t9 22l46 46q9 9 22 9t23 -9l156 -156l229 229h-261q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h416zM1280 448q0 117 -45.5 223.5t-123 184t-184 123 t-223.5 45.5t-223.5 -45.5t-184 -123t-123 -184t-45.5 -223.5t45.5 -223.5t123 -184t184 -123t223.5 -45.5t223.5 45.5t184 123t123 184t45.5 223.5z" />
<glyph unicode="&#xf22a;" horiz-adv-x="1280" d="M640 892q217 -24 364.5 -187.5t147.5 -384.5q0 -167 -87 -306t-236 -212t-319 -54q-133 15 -245.5 88t-182 188t-80.5 249q-12 155 52.5 292t186 224t271.5 103v132h-160q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h160v165l-92 -92q-10 -9 -23 -9t-22 9l-46 46q-9 9 -9 22 t9 23l202 201q19 19 45 19t45 -19l202 -201q9 -10 9 -23t-9 -22l-46 -46q-9 -9 -22 -9t-23 9l-92 92v-165h160q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-160v-132zM576 -128q185 0 316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5 t131.5 -316.5t316.5 -131.5z" />
<glyph unicode="&#xf22b;" horiz-adv-x="2048" d="M2029 685q19 -19 19 -45t-19 -45l-294 -294q-9 -10 -22.5 -10t-22.5 10l-45 45q-10 9 -10 22.5t10 22.5l185 185h-294v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-131q-12 -119 -67 -226t-139 -183.5t-196.5 -121.5t-234.5 -45q-180 0 -330.5 91t-234.5 247 t-74 337q8 162 94 300t226.5 219.5t302.5 85.5q166 4 310.5 -71.5t235.5 -208.5t107 -296h131v224q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-224h294l-185 185q-10 9 -10 22.5t10 22.5l45 45q9 10 22.5 10t22.5 -10zM640 128q104 0 198.5 40.5t163.5 109.5t109.5 163.5 t40.5 198.5t-40.5 198.5t-109.5 163.5t-163.5 109.5t-198.5 40.5t-198.5 -40.5t-163.5 -109.5t-109.5 -163.5t-40.5 -198.5t40.5 -198.5t109.5 -163.5t163.5 -109.5t198.5 -40.5z" />
<glyph unicode="&#xf22c;" horiz-adv-x="1280" d="M1152 960q0 -221 -147.5 -384.5t-364.5 -187.5v-612q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v612q-217 24 -364.5 187.5t-147.5 384.5q0 117 45.5 223.5t123 184t184 123t223.5 45.5t223.5 -45.5t184 -123t123 -184t45.5 -223.5zM576 512q185 0 316.5 131.5 t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
<glyph unicode="&#xf22d;" horiz-adv-x="1792" />
<glyph unicode="&#xf22e;" horiz-adv-x="1792" />
<glyph unicode="&#xf22f;" horiz-adv-x="1792" />
<glyph unicode="&#xf230;" d="M1451 1408q35 0 60 -25t25 -60v-1366q0 -35 -25 -60t-60 -25h-391v595h199l30 232h-229v148q0 56 23.5 84t91.5 28l122 1v207q-63 9 -178 9q-136 0 -217.5 -80t-81.5 -226v-171h-200v-232h200v-595h-735q-35 0 -60 25t-25 60v1366q0 35 25 60t60 25h1366z" />
<glyph unicode="&#xf231;" horiz-adv-x="1280" d="M0 939q0 108 37.5 203.5t103.5 166.5t152 123t185 78t202 26q158 0 294 -66.5t221 -193.5t85 -287q0 -96 -19 -188t-60 -177t-100 -149.5t-145 -103t-189 -38.5q-68 0 -135 32t-96 88q-10 -39 -28 -112.5t-23.5 -95t-20.5 -71t-26 -71t-32 -62.5t-46 -77.5t-62 -86.5 l-14 -5l-9 10q-15 157 -15 188q0 92 21.5 206.5t66.5 287.5t52 203q-32 65 -32 169q0 83 52 156t132 73q61 0 95 -40.5t34 -102.5q0 -66 -44 -191t-44 -187q0 -63 45 -104.5t109 -41.5q55 0 102 25t78.5 68t56 95t38 110.5t20 111t6.5 99.5q0 173 -109.5 269.5t-285.5 96.5 q-200 0 -334 -129.5t-134 -328.5q0 -44 12.5 -85t27 -65t27 -45.5t12.5 -30.5q0 -28 -15 -73t-37 -45q-2 0 -17 3q-51 15 -90.5 56t-61 94.5t-32.5 108t-11 106.5z" />
<glyph unicode="&#xf232;" d="M985 562q13 0 97.5 -44t89.5 -53q2 -5 2 -15q0 -33 -17 -76q-16 -39 -71 -65.5t-102 -26.5q-57 0 -190 62q-98 45 -170 118t-148 185q-72 107 -71 194v8q3 91 74 158q24 22 52 22q6 0 18 -1.5t19 -1.5q19 0 26.5 -6.5t15.5 -27.5q8 -20 33 -88t25 -75q0 -21 -34.5 -57.5 t-34.5 -46.5q0 -7 5 -15q34 -73 102 -137q56 -53 151 -101q12 -7 22 -7q15 0 54 48.5t52 48.5zM782 32q127 0 243.5 50t200.5 134t134 200.5t50 243.5t-50 243.5t-134 200.5t-200.5 134t-243.5 50t-243.5 -50t-200.5 -134t-134 -200.5t-50 -243.5q0 -203 120 -368l-79 -233 l242 77q158 -104 345 -104zM782 1414q153 0 292.5 -60t240.5 -161t161 -240.5t60 -292.5t-60 -292.5t-161 -240.5t-240.5 -161t-292.5 -60q-195 0 -365 94l-417 -134l136 405q-108 178 -108 389q0 153 60 292.5t161 240.5t240.5 161t292.5 60z" />
<glyph unicode="&#xf233;" horiz-adv-x="1792" d="M128 128h1024v128h-1024v-128zM128 640h1024v128h-1024v-128zM1696 192q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM128 1152h1024v128h-1024v-128zM1696 704q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM1696 1216 q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM1792 384v-384h-1792v384h1792zM1792 896v-384h-1792v384h1792zM1792 1408v-384h-1792v384h1792z" />
<glyph unicode="&#xf234;" horiz-adv-x="2048" d="M704 640q-159 0 -271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5t-112.5 -271.5t-271.5 -112.5zM1664 512h352q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-352v-352q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5 t-9.5 22.5v352h-352q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h352v352q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5v-352zM928 288q0 -52 38 -90t90 -38h256v-238q-68 -50 -171 -50h-874q-121 0 -194 69t-73 190q0 53 3.5 103.5t14 109t26.5 108.5 t43 97.5t62 81t85.5 53.5t111.5 20q19 0 39 -17q79 -61 154.5 -91.5t164.5 -30.5t164.5 30.5t154.5 91.5q20 17 39 17q132 0 217 -96h-223q-52 0 -90 -38t-38 -90v-192z" />
<glyph unicode="&#xf235;" horiz-adv-x="2048" d="M704 640q-159 0 -271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5t-112.5 -271.5t-271.5 -112.5zM1781 320l249 -249q9 -9 9 -23q0 -13 -9 -22l-136 -136q-9 -9 -22 -9q-14 0 -23 9l-249 249l-249 -249q-9 -9 -23 -9q-13 0 -22 9l-136 136 q-9 9 -9 22q0 14 9 23l249 249l-249 249q-9 9 -9 23q0 13 9 22l136 136q9 9 22 9q14 0 23 -9l249 -249l249 249q9 9 23 9q13 0 22 -9l136 -136q9 -9 9 -22q0 -14 -9 -23zM1283 320l-181 -181q-37 -37 -37 -91q0 -53 37 -90l83 -83q-21 -3 -44 -3h-874q-121 0 -194 69 t-73 190q0 53 3.5 103.5t14 109t26.5 108.5t43 97.5t62 81t85.5 53.5t111.5 20q19 0 39 -17q154 -122 319 -122t319 122q20 17 39 17q28 0 57 -6q-28 -27 -41 -50t-13 -56q0 -54 37 -91z" />
<glyph unicode="&#xf236;" horiz-adv-x="2048" d="M256 512h1728q26 0 45 -19t19 -45v-448h-256v256h-1536v-256h-256v1216q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-704zM832 832q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM2048 576v64q0 159 -112.5 271.5t-271.5 112.5h-704 q-26 0 -45 -19t-19 -45v-384h1152z" />
<glyph unicode="&#xf237;" d="M1536 1536l-192 -448h192v-192h-274l-55 -128h329v-192h-411l-357 -832l-357 832h-411v192h329l-55 128h-274v192h192l-192 448h256l323 -768h378l323 768h256zM768 320l108 256h-216z" />
<glyph unicode="&#xf238;" d="M1088 1536q185 0 316.5 -93.5t131.5 -226.5v-896q0 -130 -125.5 -222t-305.5 -97l213 -202q16 -15 8 -35t-30 -20h-1056q-22 0 -30 20t8 35l213 202q-180 5 -305.5 97t-125.5 222v896q0 133 131.5 226.5t316.5 93.5h640zM768 192q80 0 136 56t56 136t-56 136t-136 56 t-136 -56t-56 -136t56 -136t136 -56zM1344 768v512h-1152v-512h1152z" />
<glyph unicode="&#xf239;" d="M1088 1536q185 0 316.5 -93.5t131.5 -226.5v-896q0 -130 -125.5 -222t-305.5 -97l213 -202q16 -15 8 -35t-30 -20h-1056q-22 0 -30 20t8 35l213 202q-180 5 -305.5 97t-125.5 222v896q0 133 131.5 226.5t316.5 93.5h640zM288 224q66 0 113 47t47 113t-47 113t-113 47 t-113 -47t-47 -113t47 -113t113 -47zM704 768v512h-544v-512h544zM1248 224q66 0 113 47t47 113t-47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47zM1408 768v512h-576v-512h576z" />
<glyph unicode="&#xf23a;" horiz-adv-x="1792" d="M1792 204v-209h-642v209h134v926h-6l-314 -1135h-243l-310 1135h-8v-926h135v-209h-538v209h69q21 0 43 19.5t22 37.5v881q0 18 -22 40t-43 22h-69v209h672l221 -821h6l223 821h670v-209h-71q-19 0 -41 -22t-22 -40v-881q0 -18 21.5 -37.5t41.5 -19.5h71z" />
<glyph unicode="&#xf23b;" horiz-adv-x="1792" />
<glyph unicode="&#xf23c;" horiz-adv-x="1792" />
<glyph unicode="&#xf23d;" horiz-adv-x="1792" />
<glyph unicode="&#xf23e;" horiz-adv-x="1792" />
<glyph unicode="&#xf500;" horiz-adv-x="1792" />
</font>
</defs></svg>

Before

Width:  |  Height:  |  Size: 280 KiB

After

Width:  |  Height:  |  Size: 306 KiB

@ -1,4 +1,4 @@
// Spinning Icons
// Animated Icons
// --------------------------
.@{fa-css-prefix}-spin {
@ -6,6 +6,11 @@
animation: fa-spin 2s infinite linear;
}
.@{fa-css-prefix}-pulse {
-webkit-animation: fa-spin 1s infinite steps(8);
animation: fa-spin 1s infinite steps(8);
}
@-webkit-keyframes fa-spin {
0% {
-webkit-transform: rotate(0deg);

@ -3,9 +3,11 @@
.@{fa-css-prefix} {
display: inline-block;
font: normal normal normal 14px/1 FontAwesome; // shortening font declaration
font: normal normal normal @fa-font-size-base/1 FontAwesome; // shortening font declaration
font-size: inherit; // can't have font-size inherit on line above, so need to override
text-rendering: auto; // optimizelegibility throws things off #1094
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
transform: translate(0, 0); // ensures no half-pixel rendering in firefox
}

@ -1,2 +0,0 @@
// Extras
// --------------------------

@ -1,5 +1,5 @@
/*!
* Font Awesome 4.2.0 by @davegandy - http://fontawesome.io - @fontawesome
* Font Awesome 4.3.0 by @davegandy - http://fontawesome.io - @fontawesome
* License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
*/
@ -11,7 +11,7 @@
@import "fixed-width.less";
@import "list.less";
@import "bordered-pulled.less";
@import "spinning.less";
@import "animated.less";
@import "rotated-flipped.less";
@import "stacked.less";
@import "icons.less";

@ -158,6 +158,7 @@
.@{fa-css-prefix}-bookmark-o:before { content: @fa-var-bookmark-o; }
.@{fa-css-prefix}-phone-square:before { content: @fa-var-phone-square; }
.@{fa-css-prefix}-twitter:before { content: @fa-var-twitter; }
.@{fa-css-prefix}-facebook-f:before,
.@{fa-css-prefix}-facebook:before { content: @fa-var-facebook; }
.@{fa-css-prefix}-github:before { content: @fa-var-github; }
.@{fa-css-prefix}-unlock:before { content: @fa-var-unlock; }
@ -397,7 +398,8 @@
.@{fa-css-prefix}-trello:before { content: @fa-var-trello; }
.@{fa-css-prefix}-female:before { content: @fa-var-female; }
.@{fa-css-prefix}-male:before { content: @fa-var-male; }
.@{fa-css-prefix}-gittip:before { content: @fa-var-gittip; }
.@{fa-css-prefix}-gittip:before,
.@{fa-css-prefix}-gratipay:before { content: @fa-var-gratipay; }
.@{fa-css-prefix}-sun-o:before { content: @fa-var-sun-o; }
.@{fa-css-prefix}-moon-o:before { content: @fa-var-moon-o; }
.@{fa-css-prefix}-archive:before { content: @fa-var-archive; }
@ -500,6 +502,7 @@
.@{fa-css-prefix}-send-o:before,
.@{fa-css-prefix}-paper-plane-o:before { content: @fa-var-paper-plane-o; }
.@{fa-css-prefix}-history:before { content: @fa-var-history; }
.@{fa-css-prefix}-genderless:before,
.@{fa-css-prefix}-circle-thin:before { content: @fa-var-circle-thin; }
.@{fa-css-prefix}-header:before { content: @fa-var-header; }
.@{fa-css-prefix}-paragraph:before { content: @fa-var-paragraph; }
@ -550,3 +553,44 @@
.@{fa-css-prefix}-sheqel:before,
.@{fa-css-prefix}-ils:before { content: @fa-var-ils; }
.@{fa-css-prefix}-meanpath:before { content: @fa-var-meanpath; }
.@{fa-css-prefix}-buysellads:before { content: @fa-var-buysellads; }
.@{fa-css-prefix}-connectdevelop:before { content: @fa-var-connectdevelop; }
.@{fa-css-prefix}-dashcube:before { content: @fa-var-dashcube; }
.@{fa-css-prefix}-forumbee:before { content: @fa-var-forumbee; }
.@{fa-css-prefix}-leanpub:before { content: @fa-var-leanpub; }
.@{fa-css-prefix}-sellsy:before { content: @fa-var-sellsy; }
.@{fa-css-prefix}-shirtsinbulk:before { content: @fa-var-shirtsinbulk; }
.@{fa-css-prefix}-simplybuilt:before { content: @fa-var-simplybuilt; }
.@{fa-css-prefix}-skyatlas:before { content: @fa-var-skyatlas; }
.@{fa-css-prefix}-cart-plus:before { content: @fa-var-cart-plus; }
.@{fa-css-prefix}-cart-arrow-down:before { content: @fa-var-cart-arrow-down; }
.@{fa-css-prefix}-diamond:before { content: @fa-var-diamond; }
.@{fa-css-prefix}-ship:before { content: @fa-var-ship; }
.@{fa-css-prefix}-user-secret:before { content: @fa-var-user-secret; }
.@{fa-css-prefix}-motorcycle:before { content: @fa-var-motorcycle; }
.@{fa-css-prefix}-street-view:before { content: @fa-var-street-view; }
.@{fa-css-prefix}-heartbeat:before { content: @fa-var-heartbeat; }
.@{fa-css-prefix}-venus:before { content: @fa-var-venus; }
.@{fa-css-prefix}-mars:before { content: @fa-var-mars; }
.@{fa-css-prefix}-mercury:before { content: @fa-var-mercury; }
.@{fa-css-prefix}-transgender:before { content: @fa-var-transgender; }
.@{fa-css-prefix}-transgender-alt:before { content: @fa-var-transgender-alt; }
.@{fa-css-prefix}-venus-double:before { content: @fa-var-venus-double; }
.@{fa-css-prefix}-mars-double:before { content: @fa-var-mars-double; }
.@{fa-css-prefix}-venus-mars:before { content: @fa-var-venus-mars; }
.@{fa-css-prefix}-mars-stroke:before { content: @fa-var-mars-stroke; }
.@{fa-css-prefix}-mars-stroke-v:before { content: @fa-var-mars-stroke-v; }
.@{fa-css-prefix}-mars-stroke-h:before { content: @fa-var-mars-stroke-h; }
.@{fa-css-prefix}-neuter:before { content: @fa-var-neuter; }
.@{fa-css-prefix}-facebook-official:before { content: @fa-var-facebook-official; }
.@{fa-css-prefix}-pinterest-p:before { content: @fa-var-pinterest-p; }
.@{fa-css-prefix}-whatsapp:before { content: @fa-var-whatsapp; }
.@{fa-css-prefix}-server:before { content: @fa-var-server; }
.@{fa-css-prefix}-user-plus:before { content: @fa-var-user-plus; }
.@{fa-css-prefix}-user-times:before { content: @fa-var-user-times; }
.@{fa-css-prefix}-hotel:before,
.@{fa-css-prefix}-bed:before { content: @fa-var-bed; }
.@{fa-css-prefix}-viacoin:before { content: @fa-var-viacoin; }
.@{fa-css-prefix}-train:before { content: @fa-var-train; }
.@{fa-css-prefix}-subway:before { content: @fa-var-subway; }
.@{fa-css-prefix}-medium:before { content: @fa-var-medium; }

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save