Skip to content

Commit

Permalink
feat: reverse layout emulation
Browse files Browse the repository at this point in the history
fixes #39
  • Loading branch information
aradzie committed Apr 15, 2024
1 parent 4b133cd commit 473bf02
Show file tree
Hide file tree
Showing 50 changed files with 315 additions and 98 deletions.
44 changes: 22 additions & 22 deletions docs/translations_report.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,130 +2,130 @@

Translated: 102 messages, 1070 words

Untranslated: 325 messages, 4154 words
Untranslated: 327 messages, 4183 words

# Czech

Translated: 416 messages, 5022 words

Untranslated: 11 messages, 202 words
Untranslated: 13 messages, 231 words

# Danish

Translated: 388 messages, 4826 words

Untranslated: 39 messages, 398 words
Untranslated: 41 messages, 427 words

# German

Translated: 413 messages, 5019 words

Untranslated: 14 messages, 205 words
Untranslated: 16 messages, 234 words

# Greek

Translated: 395 messages, 4833 words

Untranslated: 32 messages, 391 words
Untranslated: 34 messages, 420 words

# Spanish

Translated: 388 messages, 4318 words

Untranslated: 39 messages, 906 words
Untranslated: 41 messages, 935 words

# Estonian

Translated: 421 messages, 5186 words

Untranslated: 6 messages, 38 words
Untranslated: 8 messages, 67 words

# Persian

Translated: 342 messages, 1828 words

Untranslated: 85 messages, 3396 words
Untranslated: 87 messages, 3425 words

# French

Translated: 383 messages, 4437 words

Untranslated: 44 messages, 787 words
Untranslated: 46 messages, 816 words

# Hebrew

Translated: 404 messages, 4848 words

Untranslated: 23 messages, 376 words
Untranslated: 25 messages, 405 words

# Hungarian

Translated: 372 messages, 4269 words

Untranslated: 55 messages, 955 words
Untranslated: 57 messages, 984 words

# Italian

Translated: 369 messages, 2831 words

Untranslated: 58 messages, 2393 words
Untranslated: 60 messages, 2422 words

# Japanese

Translated: 255 messages, 2256 words

Untranslated: 172 messages, 2968 words
Untranslated: 174 messages, 2997 words

# Nepali

Translated: 397 messages, 4835 words

Untranslated: 30 messages, 389 words
Untranslated: 32 messages, 418 words

# Dutch

Translated: 309 messages, 1860 words

Untranslated: 118 messages, 3364 words
Untranslated: 120 messages, 3393 words

# Polish

Translated: 418 messages, 4998 words

Untranslated: 9 messages, 226 words
Untranslated: 11 messages, 255 words

# Brazilian Portuguese

Translated: 393 messages, 4830 words

Untranslated: 34 messages, 394 words
Untranslated: 36 messages, 423 words

# Russian

Translated: 421 messages, 5075 words

Untranslated: 6 messages, 149 words
Untranslated: 8 messages, 178 words

# Swedish

Translated: 392 messages, 4830 words

Untranslated: 35 messages, 394 words
Untranslated: 37 messages, 423 words

# Turkish

Translated: 266 messages, 1855 words

Untranslated: 161 messages, 3369 words
Untranslated: 163 messages, 3398 words

# Ukrainian

Translated: 397 messages, 4835 words

Untranslated: 30 messages, 389 words
Untranslated: 32 messages, 418 words

# Simplified Chinese

Translated: 416 messages, 5016 words

Untranslated: 11 messages, 208 words
Untranslated: 13 messages, 237 words
2 changes: 1 addition & 1 deletion packages/keybr-intl/lib/messages/ar.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion packages/keybr-intl/lib/messages/cs.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion packages/keybr-intl/lib/messages/da.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion packages/keybr-intl/lib/messages/de.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion packages/keybr-intl/lib/messages/el.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion packages/keybr-intl/lib/messages/en.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion packages/keybr-intl/lib/messages/es.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion packages/keybr-intl/lib/messages/et.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion packages/keybr-intl/lib/messages/fa.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion packages/keybr-intl/lib/messages/fr.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion packages/keybr-intl/lib/messages/he.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion packages/keybr-intl/lib/messages/hu.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion packages/keybr-intl/lib/messages/it.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion packages/keybr-intl/lib/messages/ja.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion packages/keybr-intl/lib/messages/ne.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion packages/keybr-intl/lib/messages/nl.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion packages/keybr-intl/lib/messages/pl.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion packages/keybr-intl/lib/messages/pt-br.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion packages/keybr-intl/lib/messages/ru.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion packages/keybr-intl/lib/messages/sv.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion packages/keybr-intl/lib/messages/tr.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion packages/keybr-intl/lib/messages/uk.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion packages/keybr-intl/lib/messages/zh-hans.json

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions packages/keybr-intl/translations/cs.json
Original file line number Diff line number Diff line change
Expand Up @@ -81,8 +81,8 @@
"highScores.column.score.label": "Skóre",
"highScores.column.speed.label": "Rychlost psaní",
"highScores.column.user.label": "Uživatel",
"keyboard.emulate.description": "Emulace klávesnice ignoruje rozložení klávesnice nakonfigurované v systému a umožňuje procvičovat vybranou klávesnici bez ohledu na to, jak je systém nakonfigurován. Pohodlnější je ponechat možnost emulace zapnutou.",
"keyboard.emulate.label": "Emulovat rozložení",
"keyboard.emulation.forward.description": "Emulace klávesnice ignoruje rozložení klávesnice nakonfigurované v systému a umožňuje procvičovat vybranou klávesnici bez ohledu na to, jak je systém nakonfigurován. Pohodlnější je ponechat možnost emulace zapnutou.",
"keyboard.emulation.forward.label": "Emulovat rozložení",
"keyboard.geometry.label": "Geometrie:",
"keyboard.language.label": "Jazyk:",
"keyboard.layout.label": "Rozložení:",
Expand Down
2 changes: 1 addition & 1 deletion packages/keybr-intl/translations/da.json
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@
"help.section6": "<h2>Effektiviteten af denne applikation</h2><p>Vi valgte et par eksempelprofiler for at vise dig, hvordan folk gør fremskridt med at lære berøringstastning, når de bruger denne applikation. Det er ægte, anonymiserede brugerprofiler. Forhåbentlig vil de inspirere dig til at blive ved med at lære!</p>",
"highScores.column.speed.label": "Skrivehastighed",
"highScores.column.user.label": "Bruger",
"keyboard.emulate.label": "Efterligne layout",
"keyboard.emulation.forward.label": "Efterligne layout",
"keyboard.geometry.label": "Geometri:",
"keyboard.language.label": "Sprog:",
"layouts.stats.bottomRowKeys.description": "Procentdel af taster, der er indtastet på Shift-rækken, jo færre jo bedre.",
Expand Down
4 changes: 2 additions & 2 deletions packages/keybr-intl/translations/de.json
Original file line number Diff line number Diff line change
Expand Up @@ -80,8 +80,8 @@
"highScores.column.score.label": "Punktestand",
"highScores.column.speed.label": "Geschwindigkeit",
"highScores.column.user.label": "Benutzer",
"keyboard.emulate.description": "Die Tastaturemulation ignoriert das in Ihrem System konfigurierte Tastaturlayout und ermöglicht es Ihnen, die ausgewählte Tastatur zu üben, unabhängig davon, wie Ihr System konfiguriert ist. Es ist praktischer, die Emulationsoption aktiviert zu lassen.",
"keyboard.emulate.label": "Layout emulieren",
"keyboard.emulation.forward.description": "Die Tastaturemulation ignoriert das in Ihrem System konfigurierte Tastaturlayout und ermöglicht es Ihnen, die ausgewählte Tastatur zu üben, unabhängig davon, wie Ihr System konfiguriert ist. Es ist praktischer, die Emulationsoption aktiviert zu lassen.",
"keyboard.emulation.forward.label": "Layout emulieren",
"keyboard.geometry.label": "Geometrie:",
"keyboard.language.label": "Sprache:",
"layouts.stats.bottomRowKeys.description": "Prozentualer Anteil der in der Umschaltzeile getippten Tasten, je weniger, desto besser.",
Expand Down
2 changes: 1 addition & 1 deletion packages/keybr-intl/translations/el.json
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@
"highScores.column.score.label": "Σκορ",
"highScores.column.speed.label": "Ταχύτητα πληκτρολόγησης",
"highScores.column.user.label": "Χρήστης",
"keyboard.emulate.label": "Εξομοίωση διάταξης",
"keyboard.emulation.forward.label": "Εξομοίωση διάταξης",
"keyboard.geometry.label": "Γεωμετρία:",
"keyboard.language.label": "Γλώσσα:",
"keyboard.layout.label": "Διάταξη:",
Expand Down
6 changes: 4 additions & 2 deletions packages/keybr-intl/translations/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -81,8 +81,10 @@
"highScores.column.score.label": "Score",
"highScores.column.speed.label": "Typing Speed",
"highScores.column.user.label": "User",
"keyboard.emulate.description": "Keyboard emulation ignores the keyboard layout configured in your system and allows you to practice the selected keyboard regardless of how your system is configured. It is more convenient to keep the emulation option enabled.",
"keyboard.emulate.label": "Emulate layout",
"keyboard.emulation.forward.description": "Keyboard emulation ignores the keyboard layout configured in your system and allows you to practice the selected keyboard regardless of how your system is configured. It is more convenient to keep the emulation option enabled.",
"keyboard.emulation.forward.label": "Emulate layout",
"keyboard.emulation.reverse.description": "Use this option if you have a hardware layout switcher on your keyboard, and you see that incorect keys are highlighted on the virtual keyboard.",
"keyboard.emulation.reverse.label": "Keyboard hardware emulates layout",
"keyboard.geometry.label": "Geometry:",
"keyboard.language.label": "Language:",
"keyboard.layout.label": "Layout:",
Expand Down
2 changes: 1 addition & 1 deletion packages/keybr-intl/translations/es.json
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@
"highScores.column.score.label": "Puntuación",
"highScores.column.speed.label": "Velocidad",
"highScores.column.user.label": "Usuario",
"keyboard.emulate.label": "Emular disposición",
"keyboard.emulation.forward.label": "Emular disposición",
"keyboard.geometry.label": "Geometría:",
"keyboard.language.label": "Idioma:",
"keyboard.layout.label": "Disposición:",
Expand Down
4 changes: 2 additions & 2 deletions packages/keybr-intl/translations/et.json
Original file line number Diff line number Diff line change
Expand Up @@ -81,8 +81,8 @@
"highScores.column.score.label": "Skoor",
"highScores.column.speed.label": "Tippimiskiirus",
"highScores.column.user.label": "Kasutaja",
"keyboard.emulate.description": "Klaviatuuri emulatsioon ignoreerib teie süsteemis konfigureeritud klaviatuuri paigutust ja võimaldab teil kasutada valitud klaviatuuri, olenemata sellest, kuidas teie süsteem on konfigureeritud. Mugavam on hoida emulatsiooni valik sisse lülitatud.",
"keyboard.emulate.label": "Paigutuse imiteerimine",
"keyboard.emulation.forward.description": "Klaviatuuri emulatsioon ignoreerib teie süsteemis konfigureeritud klaviatuuri paigutust ja võimaldab teil kasutada valitud klaviatuuri, olenemata sellest, kuidas teie süsteem on konfigureeritud. Mugavam on hoida emulatsiooni valik sisse lülitatud.",
"keyboard.emulation.forward.label": "Paigutuse imiteerimine",
"keyboard.geometry.label": "Geomeetria:",
"keyboard.language.label": "Keel:",
"keyboard.layout.label": "Paigutus:",
Expand Down
2 changes: 1 addition & 1 deletion packages/keybr-intl/translations/fa.json
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@
"highScores.column.score.label": "امتیاز",
"highScores.column.speed.label": "سرعت تایپ",
"highScores.column.user.label": "کاربر",
"keyboard.emulate.label": "شبیه‌ساری چیدمان",
"keyboard.emulation.forward.label": "شبیه‌ساری چیدمان",
"keyboard.geometry.label": "هندسه:",
"keyboard.language.label": "زبان:",
"keyboard.layout.label": "چیدمان:",
Expand Down
2 changes: 1 addition & 1 deletion packages/keybr-intl/translations/fr.json
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@
"highScores.column.score.label": "Note",
"highScores.column.speed.label": "Vitesse",
"highScores.column.user.label": "Utilisateur",
"keyboard.emulate.label": "Émuler la disposition",
"keyboard.emulation.forward.label": "Émuler la disposition",
"keyboard.geometry.label": "Géométrie:",
"keyboard.language.label": "Langue:",
"keyboard.layout.label": "Disposition:",
Expand Down
2 changes: 1 addition & 1 deletion packages/keybr-intl/translations/he.json
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@
"highScores.column.score.label": "ציון",
"highScores.column.speed.label": "מהירות הקלדה",
"highScores.column.user.label": "מִשׁתַמֵשׁ",
"keyboard.emulate.label": "חיקוי פריסה",
"keyboard.emulation.forward.label": "חיקוי פריסה",
"keyboard.geometry.label": "גֵאוֹמֶטרִיָה:",
"keyboard.language.label": "שפה:",
"keyboard.layout.label": "מַעֲרָך:",
Expand Down
2 changes: 1 addition & 1 deletion packages/keybr-intl/translations/hu.json
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@
"highScores.column.score.label": "Eredmény",
"highScores.column.speed.label": "Gépelési sebesség",
"highScores.column.user.label": "Felhasználó",
"keyboard.emulate.label": "A kiosztás szimulálása",
"keyboard.emulation.forward.label": "A kiosztás szimulálása",
"keyboard.geometry.label": "Geometria:",
"keyboard.language.label": "Nyelv:",
"keyboard.layout.label": "Kiosztás:",
Expand Down
2 changes: 1 addition & 1 deletion packages/keybr-intl/translations/it.json
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@
"highScores.column.score.label": "Punteggio",
"highScores.column.speed.label": "Velocità di battitura",
"highScores.column.user.label": "Utente",
"keyboard.emulate.label": "Emula layout",
"keyboard.emulation.forward.label": "Emula layout",
"keyboard.geometry.label": "Geometria:",
"keyboard.language.label": "Lingua:",
"layouts.stats.bottomRowKeys.description": "Percentuale di tasti digitati sulla riga Maiusc, un nomero basso è meglio.",
Expand Down
2 changes: 1 addition & 1 deletion packages/keybr-intl/translations/ja.json
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@
"highScores.column.score.label": "スコア",
"highScores.column.speed.label": "タイピング速度",
"highScores.column.user.label": "ユーザー",
"keyboard.emulate.label": "配列をエミュレートする",
"keyboard.emulation.forward.label": "配列をエミュレートする",
"keyboard.geometry.label": "形状:",
"keyboard.language.label": "言語:",
"keyboard.layout.label": "配列:",
Expand Down
2 changes: 1 addition & 1 deletion packages/keybr-intl/translations/ne.json
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@
"highScores.column.score.label": "स्कोर",
"highScores.column.speed.label": "टाइपिङ गति",
"highScores.column.user.label": "प्रयोगकर्ता",
"keyboard.emulate.label": "लेआउट अनुकरण गर्नुहोस्",
"keyboard.emulation.forward.label": "लेआउट अनुकरण गर्नुहोस्",
"keyboard.geometry.label": "ज्यामिति:",
"keyboard.language.label": "भाषा:",
"keyboard.layout.label": "लेआउट:",
Expand Down
2 changes: 1 addition & 1 deletion packages/keybr-intl/translations/nl.json
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@
"highScores.column.layout.label": "Indeling",
"highScores.column.speed.label": "Typsnelheid",
"highScores.column.user.label": "Gebruiker",
"keyboard.emulate.label": "Indeling emuleren",
"keyboard.emulation.forward.label": "Indeling emuleren",
"keyboard.geometry.label": "Geometrie:",
"keyboard.language.label": "Taal:",
"keyboard.layout.label": "Indeling:",
Expand Down
4 changes: 2 additions & 2 deletions packages/keybr-intl/translations/pl.json
Original file line number Diff line number Diff line change
Expand Up @@ -81,8 +81,8 @@
"highScores.column.score.label": "Wynik",
"highScores.column.speed.label": "Tempo",
"highScores.column.user.label": "Użytkownik",
"keyboard.emulate.description": "Emulacja klawiatury ignoruje układ klawiatury skonfigurowany w systemie i umożliwia ćwiczenie wybranej klawiatury niezależnie od konfiguracji systemu. Wygodniej jest mieć włączoną opcję emulacji.",
"keyboard.emulate.label": "Emuluj układ",
"keyboard.emulation.forward.description": "Emulacja klawiatury ignoruje układ klawiatury skonfigurowany w systemie i umożliwia ćwiczenie wybranej klawiatury niezależnie od konfiguracji systemu. Wygodniej jest mieć włączoną opcję emulacji.",
"keyboard.emulation.forward.label": "Emuluj układ",
"keyboard.geometry.label": "Geometria:",
"keyboard.language.label": "Język:",
"keyboard.layout.label": "Układ:",
Expand Down
2 changes: 1 addition & 1 deletion packages/keybr-intl/translations/pt-br.json
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@
"highScores.column.score.label": "Pontuação",
"highScores.column.speed.label": "Velocidade de Digitação",
"highScores.column.user.label": "Usuário",
"keyboard.emulate.label": "Layout simulado",
"keyboard.emulation.forward.label": "Layout simulado",
"keyboard.geometry.label": "Geometria:",
"keyboard.language.label": "Linguagem:",
"layouts.stats.bottomRowKeys.description": "Porcentagem de teclas digitadas na linha do Shift. Quanto menos, melhor.",
Expand Down
4 changes: 2 additions & 2 deletions packages/keybr-intl/translations/ru.json
Original file line number Diff line number Diff line change
Expand Up @@ -81,8 +81,8 @@
"highScores.column.score.label": "Баллы",
"highScores.column.speed.label": "Скорость",
"highScores.column.user.label": "Пользователь",
"keyboard.emulate.description": "Эмуляция клавиатуры игнорирует раскладку клавиатуры, настроенную в вашей системе, и позволяет вам практиковаться с выбранной клавиатурой независимо от того, как настроена ваша система. Удобнее оставлять эмуляцию включенной.",
"keyboard.emulate.label": "Эмулировать раскладку",
"keyboard.emulation.forward.description": "Эмуляция клавиатуры игнорирует раскладку клавиатуры, настроенную в вашей системе, и позволяет вам практиковаться с выбранной клавиатурой независимо от того, как настроена ваша система. Удобнее оставлять эмуляцию включенной.",
"keyboard.emulation.forward.label": "Эмулировать раскладку",
"keyboard.geometry.label": "Геометрия:",
"keyboard.language.label": "Язык:",
"keyboard.layout.label": "Раскладка:",
Expand Down
2 changes: 1 addition & 1 deletion packages/keybr-intl/translations/sv.json
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@
"highScores.column.score.label": "Poäng",
"highScores.column.speed.label": "Skrivhastighet",
"highScores.column.user.label": "Användare",
"keyboard.emulate.label": "Emulera layout",
"keyboard.emulation.forward.label": "Emulera layout",
"keyboard.geometry.label": "Geometri:",
"keyboard.language.label": "Språk:",
"layouts.stats.bottomRowKeys.description": "Procent av tangenter på Shiftraden, ju färre desto bättre.",
Expand Down
2 changes: 1 addition & 1 deletion packages/keybr-intl/translations/uk.json
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@
"highScores.column.score.label": "Бали",
"highScores.column.speed.label": "Швидкість",
"highScores.column.user.label": "Користувач",
"keyboard.emulate.label": "Емулювати розкладку",
"keyboard.emulation.forward.label": "Емулювати розкладку",
"keyboard.geometry.label": "Геометрія:",
"keyboard.language.label": "Мова:",
"keyboard.layout.label": "Розкладка:",
Expand Down
4 changes: 2 additions & 2 deletions packages/keybr-intl/translations/zh-hans.json
Original file line number Diff line number Diff line change
Expand Up @@ -80,8 +80,8 @@
"highScores.column.score.label": "分数",
"highScores.column.speed.label": "输入速度",
"highScores.column.user.label": "用户",
"keyboard.emulate.description": "键盘模拟会忽略系统配置的键盘布局,无论系统配置如何,您都可以练习所选键盘。启用模拟选项会更方便。",
"keyboard.emulate.label": "模拟布局",
"keyboard.emulation.forward.description": "键盘模拟会忽略系统配置的键盘布局,无论系统配置如何,您都可以练习所选键盘。启用模拟选项会更方便。",
"keyboard.emulation.forward.label": "模拟布局",
"keyboard.geometry.label": "样式:",
"keyboard.language.label": "语言:",
"keyboard.layout.label": "布局:",
Expand Down
21 changes: 20 additions & 1 deletion packages/keybr-keyboard/lib/settings.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import {
booleanProp,
enumProp,
itemProp,
type Settings,
xitemProp,
Expand All @@ -8,10 +9,28 @@ import { Geometry } from "./geometry.ts";
import { Language } from "./language.ts";
import { Layout } from "./layout.ts";

export enum Emulation {
/**
* No emulation.
*/
None = 10,
/**
* Assumes that the physical key locations are correct,
* fixes the character codes.
*/
Forward = 1,
/**
* Assumes that the character codes are correct,
* fixes the physical key locations.
* It reverses the effect of layout emulation in hardware.
*/
Reverse = 2,
}

export const keyboardProps = {
layout: xitemProp("keyboard.layout", Layout.ALL, Layout.EN_US),
geometry: itemProp("keyboard.geometry", Geometry.ALL, Geometry.ANSI_101),
emulate: booleanProp("keyboard.emulate", true),
emulation: enumProp("keyboard.emulation", Emulation, Emulation.Forward),
colors: booleanProp("keyboard.colors", true),
pointers: booleanProp("keyboard.pointers", true),
} as const;
Expand Down
Loading

0 comments on commit 473bf02

Please sign in to comment.