diff --git a/resources/public/img/github-logo-transparent.png b/resources/public/img/github-logo-transparent.png
new file mode 100644
index 0000000..6a37959
Binary files /dev/null and b/resources/public/img/github-logo-transparent.png differ
diff --git a/resources/public/index.html b/resources/public/index.html
index 478a611..350ba42 100644
--- a/resources/public/index.html
+++ b/resources/public/index.html
@@ -1,3 +1,4 @@
+
Tutor |
-
-
+ |
+
|
You |
-
-
+ |
+
|
-
-
+ |
+
|
@@ -104,42 +105,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"
Play
LTR |
-
- ਅ |
-
- ਆ |
-
- ਇ |
-
- ਈ |
-
- ਉ |
-
- ਊ |
-
- ਏ |
-
- ਐ |
-
- ਓ |
-
- ਔ |
-
- ਅੰ |
-
- ਆਂ |
+ ਅ |
+ ਆ |
+ ਇ |
+ ਈ |
+ ਉ |
+ ਊ |
+ ਏ |
+ ਐ |
+ ਓ |
+ ਔ |
+ ਅੰ |
+ ਆਂ |
Play
RTL |
@@ -148,42 +125,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"
Play
LTR |
-
- ਸ |
-
- ਸਾ |
-
- ਸਿ |
-
- ਸੀ |
-
- ਸੁ |
-
- ਸੂ |
-
- ਸੇ |
-
- ਸੈ |
-
- ਸੋ |
-
- ਸੌ |
-
- ਸੰ |
-
- ਸਾਂ |
+ ਸ |
+ ਸਾ |
+ ਸਿ |
+ ਸੀ |
+ ਸੁ |
+ ਸੂ |
+ ਸੇ |
+ ਸੈ |
+ ਸੋ |
+ ਸੌ |
+ ਸੰ |
+ ਸਾਂ |
Play
RTL |
@@ -192,42 +145,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"
Play
LTR |
-
- ਹ |
-
- ਹਾ |
-
- ਹਿ |
-
- ਹੀ |
-
- ਹੁ |
-
- ਹੂ |
-
- ਹੇ |
-
- ਹੈ |
-
- ਹੋ |
-
- ਹੌ |
-
- ਹੰ |
-
- ਹਾਂ |
+ ਹ |
+ ਹਾ |
+ ਹਿ |
+ ਹੀ |
+ ਹੁ |
+ ਹੂ |
+ ਹੇ |
+ ਹੈ |
+ ਹੋ |
+ ਹੌ |
+ ਹੰ |
+ ਹਾਂ |
Play
RTL |
@@ -236,42 +165,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"
Play
LTR |
-
- ਕ |
-
- ਕਾ |
-
- ਕਿ |
-
- ਕੀ |
-
- ਕੁ |
-
- ਕੂ |
-
- ਕੇ |
-
- ਕੈ |
-
- ਕੋ |
-
- ਕੌ |
-
- ਕੰ |
-
- ਕਾਂ |
+ ਕ |
+ ਕਾ |
+ ਕਿ |
+ ਕੀ |
+ ਕੁ |
+ ਕੂ |
+ ਕੇ |
+ ਕੈ |
+ ਕੋ |
+ ਕੌ |
+ ਕੰ |
+ ਕਾਂ |
Play
RTL |
@@ -280,42 +185,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"
Play
LTR |
-
- ਖ |
-
- ਖਾ |
-
- ਖਿ |
-
- ਖੀ |
-
- ਖੁ |
-
- ਖੂ |
-
- ਖੇ |
-
- ਖੈ |
-
- ਖੋ |
-
- ਖੌ |
-
- ਖੰ |
-
- ਖਾਂ |
+ ਖ |
+ ਖਾ |
+ ਖਿ |
+ ਖੀ |
+ ਖੁ |
+ ਖੂ |
+ ਖੇ |
+ ਖੈ |
+ ਖੋ |
+ ਖੌ |
+ ਖੰ |
+ ਖਾਂ |
Play
RTL |
@@ -324,42 +205,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"
Play
LTR |
-
- ਗ |
-
- ਗਾ |
-
- ਗਿ |
-
- ਗੀ |
-
- ਗੁ |
-
- ਗੂ |
-
- ਗੇ |
-
- ਗੈ |
-
- ਗੋ |
-
- ਗੌ |
-
- ਗੰ |
-
- ਗਾਂ |
+ ਗ |
+ ਗਾ |
+ ਗਿ |
+ ਗੀ |
+ ਗੁ |
+ ਗੂ |
+ ਗੇ |
+ ਗੈ |
+ ਗੋ |
+ ਗੌ |
+ ਗੰ |
+ ਗਾਂ |
Play
RTL |
@@ -368,42 +225,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"
Play
LTR |
-
- ਘ |
-
- ਘਾ |
-
- ਘਿ |
-
- ਘੀ |
-
- ਘੁ |
-
- ਘੂ |
-
- ਘੇ |
-
- ਘੈ |
-
- ਘੋ |
-
- ਘੌ |
-
- ਘੰ |
-
- ਘਾਂ |
+ ਘ |
+ ਘਾ |
+ ਘਿ |
+ ਘੀ |
+ ਘੁ |
+ ਘੂ |
+ ਘੇ |
+ ਘੈ |
+ ਘੋ |
+ ਘੌ |
+ ਘੰ |
+ ਘਾਂ |
Play
RTL |
@@ -412,42 +245,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"
Play
LTR |
-
- ਙ |
-
- ਙਾ |
-
- ਙਿ |
-
- ਙੀ |
-
- ਙੁ |
-
- ਙੂ |
-
- ਙੇ |
-
- ਙੈ |
-
- ਙੋ |
-
- ਙੌ |
-
- ਙੰ |
-
- ਙਾਂ |
+ ਙ |
+ ਙਾ |
+ ਙਿ |
+ ਙੀ |
+ ਙੁ |
+ ਙੂ |
+ ਙੇ |
+ ਙੈ |
+ ਙੋ |
+ ਙੌ |
+ ਙੰ |
+ ਙਾਂ |
Play
RTL |
@@ -456,42 +265,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"
Play
LTR |
-
- ਚ |
-
- ਚਾ |
-
- ਚਿ |
-
- ਚੀ |
-
- ਚੁ |
-
- ਚੂ |
-
- ਚੇ |
-
- ਚੈ |
-
- ਚੋ |
-
- ਚੌ |
-
- ਚੰ |
-
- ਚਾਂ |
+ ਚ |
+ ਚਾ |
+ ਚਿ |
+ ਚੀ |
+ ਚੁ |
+ ਚੂ |
+ ਚੇ |
+ ਚੈ |
+ ਚੋ |
+ ਚੌ |
+ ਚੰ |
+ ਚਾਂ |
Play
RTL |
@@ -500,42 +285,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"
Play
LTR |
-
- ਛ |
-
- ਛਾ |
-
- ਛਿ |
-
- ਛੀ |
-
- ਛੁ |
-
- ਛੂ |
-
- ਛੇ |
-
- ਛੈ |
-
- ਛੋ |
-
- ਛੌ |
-
- ਛੰ |
-
- ਛਾਂ |
+ ਛ |
+ ਛਾ |
+ ਛਿ |
+ ਛੀ |
+ ਛੁ |
+ ਛੂ |
+ ਛੇ |
+ ਛੈ |
+ ਛੋ |
+ ਛੌ |
+ ਛੰ |
+ ਛਾਂ |
Play
RTL |
@@ -544,42 +305,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"
Play
LTR |
-
- ਜ |
-
- ਜਾ |
-
- ਜਿ |
-
- ਜੀ |
-
- ਜੁ |
-
- ਜੂ |
-
- ਜੇ |
-
- ਜੈ |
-
- ਜੋ |
-
- ਜੌ |
-
- ਜੰ |
-
- ਜਾਂ |
+ ਜ |
+ ਜਾ |
+ ਜਿ |
+ ਜੀ |
+ ਜੁ |
+ ਜੂ |
+ ਜੇ |
+ ਜੈ |
+ ਜੋ |
+ ਜੌ |
+ ਜੰ |
+ ਜਾਂ |
Play
RTL |
@@ -588,42 +325,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"
Play
LTR |
-
- ਝ |
-
- ਝਾ |
-
- ਝਿ |
-
- ਝੀ |
-
- ਝੁ |
-
- ਝੂ |
-
- ਝੇ |
-
- ਝੈ |
-
- ਝੋ |
-
- ਝੌ |
-
- ਝੰ |
-
- ਝਾਂ |
+ ਝ |
+ ਝਾ |
+ ਝਿ |
+ ਝੀ |
+ ਝੁ |
+ ਝੂ |
+ ਝੇ |
+ ਝੈ |
+ ਝੋ |
+ ਝੌ |
+ ਝੰ |
+ ਝਾਂ |
Play
RTL |
@@ -632,42 +345,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"
Play
LTR |
-
- ਞ |
-
- ਞਾ |
-
- ਞਿ |
-
- ਞੀ |
-
- ਞੁ |
-
- ਞੂ |
-
- ਞੇ |
-
- ਞੈ |
-
- ਞੋ |
-
- ਞੌ |
-
- ਞੰ |
-
- ਞਾਂ |
+ ਞ |
+ ਞਾ |
+ ਞਿ |
+ ਞੀ |
+ ਞੁ |
+ ਞੂ |
+ ਞੇ |
+ ਞੈ |
+ ਞੋ |
+ ਞੌ |
+ ਞੰ |
+ ਞਾਂ |
Play
RTL |
@@ -676,42 +365,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"
Play
LTR |
-
- ਟ |
-
- ਟਾ |
-
- ਟਿ |
-
- ਟੀ |
-
- ਟੁ |
-
- ਟੂ |
-
- ਟੇ |
-
- ਟੈ |
-
- ਟੋ |
-
- ਟੌ |
-
- ਟੰ |
-
- ਟਾਂ |
+ ਟ |
+ ਟਾ |
+ ਟਿ |
+ ਟੀ |
+ ਟੁ |
+ ਟੂ |
+ ਟੇ |
+ ਟੈ |
+ ਟੋ |
+ ਟੌ |
+ ਟੰ |
+ ਟਾਂ |
Play
RTL |
@@ -720,42 +385,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"
Play
LTR |
-
- ਠ |
-
- ਠਾ |
-
- ਠਿ |
-
- ਠੀ |
-
- ਠੁ |
-
- ਠੂ |
-
- ਠੇ |
-
- ਠੈ |
-
- ਠੋ |
-
- ਠੌ |
-
- ਠੰ |
-
- ਠਾਂ |
+ ਠ |
+ ਠਾ |
+ ਠਿ |
+ ਠੀ |
+ ਠੁ |
+ ਠੂ |
+ ਠੇ |
+ ਠੈ |
+ ਠੋ |
+ ਠੌ |
+ ਠੰ |
+ ਠਾਂ |
Play
RTL |
@@ -764,42 +405,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"
Play
LTR |
-
- ਡ |
-
- ਡਾ |
-
- ਡਿ |
-
- ਡੀ |
-
- ਡੁ |
-
- ਡੂ |
-
- ਡੇ |
-
- ਡੈ |
-
- ਡੋ |
-
- ਡੌ |
-
- ਡੰ |
-
- ਡਾਂ |
+ ਡ |
+ ਡਾ |
+ ਡਿ |
+ ਡੀ |
+ ਡੁ |
+ ਡੂ |
+ ਡੇ |
+ ਡੈ |
+ ਡੋ |
+ ਡੌ |
+ ਡੰ |
+ ਡਾਂ |
Play
RTL |
@@ -808,42 +425,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"
Play
LTR |
-
- ਢ |
-
- ਢਾ |
-
- ਢਿ |
-
- ਢੀ |
-
- ਢੁ |
-
- ਢੂ |
-
- ਢੇ |
-
- ਢੈ |
-
- ਢੋ |
-
- ਢੌ |
-
- ਢੰ |
-
- ਢਾਂ |
+ ਢ |
+ ਢਾ |
+ ਢਿ |
+ ਢੀ |
+ ਢੁ |
+ ਢੂ |
+ ਢੇ |
+ ਢੈ |
+ ਢੋ |
+ ਢੌ |
+ ਢੰ |
+ ਢਾਂ |
Play
RTL |
@@ -852,42 +445,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"
Play
LTR |
-
- ਣ |
-
- ਣਾ |
-
- ਣਿ |
-
- ਣੀ |
-
- ਣੁ |
-
- ਣੂ |
-
- ਣੇ |
-
- ਣੈ |
-
- ਣੋ |
-
- ਣੌ |
-
- ਣੰ |
-
- ਣਾਂ |
+ ਣ |
+ ਣਾ |
+ ਣਿ |
+ ਣੀ |
+ ਣੁ |
+ ਣੂ |
+ ਣੇ |
+ ਣੈ |
+ ਣੋ |
+ ਣੌ |
+ ਣੰ |
+ ਣਾਂ |
Play
RTL |
@@ -896,42 +465,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"
Play
LTR |
-
- ਤ |
-
- ਤਾ |
-
- ਤਿ |
-
- ਤੀ |
-
- ਤੁ |
-
- ਤੂ |
-
- ਤੇ |
-
- ਤੈ |
-
- ਤੋ |
-
- ਤੌ |
-
- ਤੰ |
-
- ਤਾਂ |
+ ਤ |
+ ਤਾ |
+ ਤਿ |
+ ਤੀ |
+ ਤੁ |
+ ਤੂ |
+ ਤੇ |
+ ਤੈ |
+ ਤੋ |
+ ਤੌ |
+ ਤੰ |
+ ਤਾਂ |
Play
RTL |
@@ -940,42 +485,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"
Play
LTR |
-
- ਥ |
-
- ਥਾ |
-
- ਥਿ |
-
- ਥੀ |
-
- ਥੁ |
-
- ਥੂ |
-
- ਥੇ |
-
- ਥੈ |
-
- ਥੋ |
-
- ਥੌ |
-
- ਥੰ |
-
- ਥਾਂ |
+ ਥ |
+ ਥਾ |
+ ਥਿ |
+ ਥੀ |
+ ਥੁ |
+ ਥੂ |
+ ਥੇ |
+ ਥੈ |
+ ਥੋ |
+ ਥੌ |
+ ਥੰ |
+ ਥਾਂ |
Play
RTL |
@@ -984,42 +505,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"
Play
LTR |
-
- ਦ |
-
- ਦਾ |
-
- ਦਿ |
-
- ਦੀ |
-
- ਦੁ |
-
- ਦੂ |
-
- ਦੇ |
-
- ਦੈ |
-
- ਦੋ |
-
- ਦੌ |
-
- ਦੰ |
-
- ਦਾਂ |
+ ਦ |
+ ਦਾ |
+ ਦਿ |
+ ਦੀ |
+ ਦੁ |
+ ਦੂ |
+ ਦੇ |
+ ਦੈ |
+ ਦੋ |
+ ਦੌ |
+ ਦੰ |
+ ਦਾਂ |
Play
RTL |
@@ -1028,42 +525,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"
Play
LTR |
-
- ਧ |
-
- ਧਾ |
-
- ਧਿ |
-
- ਧੀ |
-
- ਧੁ |
-
- ਧੂ |
-
- ਧੇ |
-
- ਧੈ |
-
- ਧੋ |
-
- ਧੌ |
-
- ਧੰ |
-
- ਧਾਂ |
+ ਧ |
+ ਧਾ |
+ ਧਿ |
+ ਧੀ |
+ ਧੁ |
+ ਧੂ |
+ ਧੇ |
+ ਧੈ |
+ ਧੋ |
+ ਧੌ |
+ ਧੰ |
+ ਧਾਂ |
Play
RTL |
@@ -1072,42 +545,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"
Play
LTR |
-
- ਨ |
-
- ਨਾ |
-
- ਨਿ |
-
- ਨੀ |
-
- ਨੁ |
-
- ਨੂ |
-
- ਨੇ |
-
- ਨੈ |
-
- ਨੋ |
-
- ਨੌ |
-
- ਨੰ |
-
- ਨਾਂ |
+ ਨ |
+ ਨਾ |
+ ਨਿ |
+ ਨੀ |
+ ਨੁ |
+ ਨੂ |
+ ਨੇ |
+ ਨੈ |
+ ਨੋ |
+ ਨੌ |
+ ਨੰ |
+ ਨਾਂ |
Play
RTL |
@@ -1116,42 +565,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"
Play
LTR |
-
- ਪ |
-
- ਪਾ |
-
- ਪਿ |
-
- ਪੀ |
-
- ਪੁ |
-
- ਪੂ |
-
- ਪੇ |
-
- ਪੈ |
-
- ਪੋ |
-
- ਪੌ |
-
- ਪੰ |
-
- ਪਾਂ |
+ ਪ |
+ ਪਾ |
+ ਪਿ |
+ ਪੀ |
+ ਪੁ |
+ ਪੂ |
+ ਪੇ |
+ ਪੈ |
+ ਪੋ |
+ ਪੌ |
+ ਪੰ |
+ ਪਾਂ |
Play
RTL |
@@ -1160,42 +585,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"
Play
LTR |
-
- ਫ |
-
- ਫਾ |
-
- ਫਿ |
-
- ਫੀ |
-
- ਫੁ |
-
- ਫੂ |
-
- ਫੇ |
-
- ਫੈ |
-
- ਫੋ |
-
- ਫੌ |
-
- ਫੰ |
-
- ਫਾਂ |
+ ਫ |
+ ਫਾ |
+ ਫਿ |
+ ਫੀ |
+ ਫੁ |
+ ਫੂ |
+ ਫੇ |
+ ਫੈ |
+ ਫੋ |
+ ਫੌ |
+ ਫੰ |
+ ਫਾਂ |
Play
RTL |
@@ -1204,42 +605,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"
Play
LTR |
-
- ਬ |
-
- ਬਾ |
-
- ਬਿ |
-
- ਬੀ |
-
- ਬੁ |
-
- ਬੂ |
-
- ਬੇ |
-
- ਬੈ |
-
- ਬੋ |
-
- ਬੌ |
-
- ਬੰ |
-
- ਬਾਂ |
+ ਬ |
+ ਬਾ |
+ ਬਿ |
+ ਬੀ |
+ ਬੁ |
+ ਬੂ |
+ ਬੇ |
+ ਬੈ |
+ ਬੋ |
+ ਬੌ |
+ ਬੰ |
+ ਬਾਂ |
Play
RTL |
@@ -1248,42 +625,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"
Play
LTR |
-
- ਭ |
-
- ਭਾ |
-
- ਭਿ |
-
- ਭੀ |
-
- ਭੁ |
-
- ਭੂ |
-
- ਭੇ |
-
- ਭੈ |
-
- ਭੋ |
-
- ਭੌ |
-
- ਭੰ |
-
- ਭਾਂ |
+ ਭ |
+ ਭਾ |
+ ਭਿ |
+ ਭੀ |
+ ਭੁ |
+ ਭੂ |
+ ਭੇ |
+ ਭੈ |
+ ਭੋ |
+ ਭੌ |
+ ਭੰ |
+ ਭਾਂ |
Play
RTL |
@@ -1292,42 +645,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"
Play
LTR |
-
- ਮ |
-
- ਮਾ |
-
- ਮਿ |
-
- ਮੀ |
-
- ਮੁ |
-
- ਮੂ |
-
- ਮੇ |
-
- ਮੈ |
-
- ਮੋ |
-
- ਮੌ |
-
- ਮੰ |
-
- ਮਾਂ |
+ ਮ |
+ ਮਾ |
+ ਮਿ |
+ ਮੀ |
+ ਮੁ |
+ ਮੂ |
+ ਮੇ |
+ ਮੈ |
+ ਮੋ |
+ ਮੌ |
+ ਮੰ |
+ ਮਾਂ |
Play
RTL |
@@ -1336,42 +665,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"
Play
LTR |
-
- ਯ |
-
- ਯਾ |
-
- ਯਿ |
-
- ਯੀ |
-
- ਯੁ |
-
- ਯੂ |
-
- ਯੇ |
-
- ਯੈ |
-
- ਯੋ |
-
- ਯੌ |
-
- ਯੰ |
-
- ਯਾਂ |
+ ਯ |
+ ਯਾ |
+ ਯਿ |
+ ਯੀ |
+ ਯੁ |
+ ਯੂ |
+ ਯੇ |
+ ਯੈ |
+ ਯੋ |
+ ਯੌ |
+ ਯੰ |
+ ਯਾਂ |
Play
RTL |
@@ -1380,42 +685,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"
Play
LTR |
-
- ਰ |
-
- ਰਾ |
-
- ਰਿ |
-
- ਰੀ |
-
- ਰੁ |
-
- ਰੂ |
-
- ਰੇ |
-
- ਰੈ |
-
- ਰੋ |
-
- ਰੌ |
-
- ਰੰ |
-
- ਰਾਂ |
+ ਰ |
+ ਰਾ |
+ ਰਿ |
+ ਰੀ |
+ ਰੁ |
+ ਰੂ |
+ ਰੇ |
+ ਰੈ |
+ ਰੋ |
+ ਰੌ |
+ ਰੰ |
+ ਰਾਂ |
Play
RTL |
@@ -1424,42 +705,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"
Play
LTR |
-
- ਲ |
-
- ਲਾ |
-
- ਲਿ |
-
- ਲੀ |
-
- ਲੁ |
-
- ਲੂ |
-
- ਲੇ |
-
- ਲੈ |
-
- ਲੋ |
-
- ਲੌ |
-
- ਲੰ |
-
- ਲਾਂ |
+ ਲ |
+ ਲਾ |
+ ਲਿ |
+ ਲੀ |
+ ਲੁ |
+ ਲੂ |
+ ਲੇ |
+ ਲੈ |
+ ਲੋ |
+ ਲੌ |
+ ਲੰ |
+ ਲਾਂ |
Play
RTL |
@@ -1468,42 +725,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"
Play
LTR |
-
- ਵ |
-
- ਵਾ |
-
- ਵਿ |
-
- ਵੀ |
-
- ਵੁ |
-
- ਵੂ |
-
- ਵੇ |
-
- ਵੈ |
-
- ਵੋ |
-
- ਵੌ |
-
- ਵੰ |
-
- ਵਾਂ |
+ ਵ |
+ ਵਾ |
+ ਵਿ |
+ ਵੀ |
+ ਵੁ |
+ ਵੂ |
+ ਵੇ |
+ ਵੈ |
+ ਵੋ |
+ ਵੌ |
+ ਵੰ |
+ ਵਾਂ |
Play
RTL |
@@ -1512,42 +745,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"
Play
LTR |
-
- ੜ |
-
- ੜਾ |
-
- ੜਿ |
-
- ੜੀ |
-
- ੜੁ |
-
- ੜੂ |
-
- ੜੇ |
-
- ੜੈ |
-
- ੜੋ |
-
- ੜੌ |
-
- ੜੰ |
-
- ੜਾਂ |
+ ੜ |
+ ੜਾ |
+ ੜਿ |
+ ੜੀ |
+ ੜੁ |
+ ੜੂ |
+ ੜੇ |
+ ੜੈ |
+ ੜੋ |
+ ੜੌ |
+ ੜੰ |
+ ੜਾਂ |
Play
RTL |
@@ -1556,42 +765,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"
Play
LTR |
-
- ਸ਼ |
-
- ਸ਼ਾ |
-
- ਸ਼ਿ |
-
- ਸ਼ੀ |
-
- ਸ਼ੁ |
-
- ਸ਼ੂ |
-
- ਸ਼ੇ |
-
- ਸ਼ੈ |
-
- ਸ਼ੋ |
-
- ਸ਼ੌ |
-
- ਸ਼ੰ |
-
- ਸ਼ਾਂ |
+ ਸ਼ |
+ ਸ਼ਾ |
+ ਸ਼ਿ |
+ ਸ਼ੀ |
+ ਸ਼ੁ |
+ ਸ਼ੂ |
+ ਸ਼ੇ |
+ ਸ਼ੈ |
+ ਸ਼ੋ |
+ ਸ਼ੌ |
+ ਸ਼ੰ |
+ ਸ਼ਾਂ |
Play
RTL |
@@ -1600,41 +785,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"
Play
LTR |
-
- ਖ਼ |
-
- ਖ਼ਾ |
-
- ਖ਼ਿ |
-
- ਖ਼ੀ |
-
- ਖ਼ੁ |
-
- ਖ਼ੂ |
-
- ਖ਼ੇ |
-
- ਖ਼ੈ |
-
- ਖ਼ੋ |
-
- ਖ਼ੌ |
-
- ਖ਼ੰ |
- ਖ਼ਾਂ |
+ ਖ਼ |
+ ਖ਼ਾ |
+ ਖ਼ਿ |
+ ਖ਼ੀ |
+ ਖ਼ੁ |
+ ਖ਼ੂ |
+ ਖ਼ੇ |
+ ਖ਼ੈ |
+ ਖ਼ੋ |
+ ਖ਼ੌ |
+ ਖ਼ੰ |
+ ਖ਼ਾਂ |
Play
RTL |
@@ -1643,41 +805,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"
Play
LTR |
-
- ਗ਼ |
-
- ਗ਼ਾ |
-
- ਗ਼ਿ |
-
- ਗ਼ੀ |
-
- ਗ਼ੁ |
-
- ਗ਼ੂ |
-
- ਗ਼ੇ |
-
- ਗ਼ੈ |
-
- ਗ਼ੋ |
-
- ਗ਼ੌ |
-
- ਗ਼ੰ |
- ਗ਼ਾਂ |
+ ਗ਼ |
+ ਗ਼ਾ |
+ ਗ਼ਿ |
+ ਗ਼ੀ |
+ ਗ਼ੁ |
+ ਗ਼ੂ |
+ ਗ਼ੇ |
+ ਗ਼ੈ |
+ ਗ਼ੋ |
+ ਗ਼ੌ |
+ ਗ਼ੰ |
+ ਗ਼ਾਂ |
Play
RTL |
@@ -1686,42 +825,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"
Play
LTR |
-
- ਜ਼ |
-
- ਜ਼ਾ |
-
- ਜ਼ਿ |
-
- ਜ਼ੀ |
-
- ਜ਼ੁ |
-
- ਜ਼ੂ |
-
- ਜ਼ੇ |
-
- ਜ਼ੈ |
-
- ਜ਼ੋ |
-
- ਜ਼ੌ |
-
- ਜ਼ੰ |
-
- ਜ਼ਾਂ |
+ ਜ਼ |
+ ਜ਼ਾ |
+ ਜ਼ਿ |
+ ਜ਼ੀ |
+ ਜ਼ੁ |
+ ਜ਼ੂ |
+ ਜ਼ੇ |
+ ਜ਼ੈ |
+ ਜ਼ੋ |
+ ਜ਼ੌ |
+ ਜ਼ੰ |
+ ਜ਼ਾਂ |
Play
RTL |
@@ -1730,41 +845,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"
Play
LTR |
-
- ਫ਼ |
-
- ਫ਼ਾ |
-
- ਫ਼ਿ |
-
- ਫ਼ੀ |
-
- ਫ਼ੁ |
-
- ਫ਼ੂ |
-
- ਫ਼ੇ |
-
- ਫ਼ੈ |
-
- ਫ਼ੋ |
-
- ਫ਼ੌ |
-
- ਫ਼ੰ |
- ਫ਼ਾਂ |
+ ਫ਼ |
+ ਫ਼ਾ |
+ ਫ਼ਿ |
+ ਫ਼ੀ |
+ ਫ਼ੁ |
+ ਫ਼ੂ |
+ ਫ਼ੇ |
+ ਫ਼ੈ |
+ ਫ਼ੋ |
+ ਫ਼ੌ |
+ ਫ਼ੰ |
+ ਫ਼ਾਂ |
Play
RTL |
@@ -1773,41 +865,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"
Play
LTR |
-
- ਲ਼ |
-
- ਲ਼ਾ |
-
- ਲ਼ਿ |
-
- ਲ਼ੀ |
-
- ਲ਼ੁ |
-
- ਲ਼ੂ |
-
- ਲ਼ੇ |
-
- ਲ਼ੈ |
-
- ਲ਼ੋ |
-
- ਲ਼ੌ |
-
- ਲ਼ੰ |
- ਲ਼ਾਂ |
+ ਲ਼ |
+ ਲ਼ਾ |
+ ਲ਼ਿ |
+ ਲ਼ੀ |
+ ਲ਼ੁ |
+ ਲ਼ੂ |
+ ਲ਼ੇ |
+ ਲ਼ੈ |
+ ਲ਼ੋ |
+ ਲ਼ੌ |
+ ਲ਼ੰ |
+ ਲ਼ਾਂ |
Play
RTL |
@@ -1918,42 +987,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"
Play
LTR |
-
- ਅ |
-
- ਆ |
-
- ਇ |
-
- ਈ |
-
- ਉ |
-
- ਊ |
-
- ਏ |
-
- ਐ |
-
- ਓ |
-
- ਔ |
-
- ਅੰ |
-
- ਆਂ |
+ ਅ |
+ ਆ |
+ ਇ |
+ ਈ |
+ ਉ |
+ ਊ |
+ ਏ |
+ ਐ |
+ ਓ |
+ ਔ |
+ ਅੰ |
+ ਆਂ |
Play
RTL |
@@ -1962,42 +1007,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"
Play
LTR |
-
- ਸ |
-
- ਸਾ |
-
- ਸਿ |
-
- ਸੀ |
-
- ਸੁ |
-
- ਸੂ |
-
- ਸੇ |
-
- ਸੈ |
-
- ਸੋ |
-
- ਸੌ |
-
- ਸੰ |
-
- ਸਾਂ |
+ ਸ |
+ ਸਾ |
+ ਸਿ |
+ ਸੀ |
+ ਸੁ |
+ ਸੂ |
+ ਸੇ |
+ ਸੈ |
+ ਸੋ |
+ ਸੌ |
+ ਸੰ |
+ ਸਾਂ |
Play
RTL |
@@ -2006,42 +1027,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"
Play
LTR |
-
- ਹ |
-
- ਹਾ |
-
- ਹਿ |
-
- ਹੀ |
-
- ਹੁ |
-
- ਹੂ |
-
- ਹੇ |
-
- ਹੈ |
-
- ਹੋ |
-
- ਹੌ |
-
- ਹੰ |
-
- ਹਾਂ |
+ ਹ |
+ ਹਾ |
+ ਹਿ |
+ ਹੀ |
+ ਹੁ |
+ ਹੂ |
+ ਹੇ |
+ ਹੈ |
+ ਹੋ |
+ ਹੌ |
+ ਹੰ |
+ ਹਾਂ |
Play
RTL |
@@ -2050,42 +1047,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"
Play
LTR |
-
- ਕ |
-
- ਕਾ |
-
- ਕਿ |
-
- ਕੀ |
-
- ਕੁ |
-
- ਕੂ |
-
- ਕੇ |
-
- ਕੈ |
-
- ਕੋ |
-
- ਕੌ |
-
- ਕੰ |
-
- ਕਾਂ |
+ ਕ |
+ ਕਾ |
+ ਕਿ |
+ ਕੀ |
+ ਕੁ |
+ ਕੂ |
+ ਕੇ |
+ ਕੈ |
+ ਕੋ |
+ ਕੌ |
+ ਕੰ |
+ ਕਾਂ |
Play
RTL |
@@ -2094,42 +1067,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"
Play
LTR |
-
- ਖ |
-
- ਖਾ |
-
- ਖਿ |
-
- ਖੀ |
-
- ਖੁ |
-
- ਖੂ |
-
- ਖੇ |
-
- ਖੈ |
-
- ਖੋ |
-
- ਖੌ |
-
- ਖੰ |
-
- ਖਾਂ |
+ ਖ |
+ ਖਾ |
+ ਖਿ |
+ ਖੀ |
+ ਖੁ |
+ ਖੂ |
+ ਖੇ |
+ ਖੈ |
+ ਖੋ |
+ ਖੌ |
+ ਖੰ |
+ ਖਾਂ |
Play
RTL |
@@ -2138,42 +1087,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"
Play
LTR |
-
- ਗ |
-
- ਗਾ |
-
- ਗਿ |
-
- ਗੀ |
-
- ਗੁ |
-
- ਗੂ |
-
- ਗੇ |
-
- ਗੈ |
-
- ਗੋ |
-
- ਗੌ |
-
- ਗੰ |
-
- ਗਾਂ |
+ ਗ |
+ ਗਾ |
+ ਗਿ |
+ ਗੀ |
+ ਗੁ |
+ ਗੂ |
+ ਗੇ |
+ ਗੈ |
+ ਗੋ |
+ ਗੌ |
+ ਗੰ |
+ ਗਾਂ |
Play
RTL |
@@ -2182,42 +1107,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"
Play
LTR |
-
- ਘ |
-
- ਘਾ |
-
- ਘਿ |
-
- ਘੀ |
-
- ਘੁ |
-
- ਘੂ |
-
- ਘੇ |
-
- ਘੈ |
-
- ਘੋ |
-
- ਘੌ |
-
- ਘੰ |
-
- ਘਾਂ |
+ ਘ |
+ ਘਾ |
+ ਘਿ |
+ ਘੀ |
+ ਘੁ |
+ ਘੂ |
+ ਘੇ |
+ ਘੈ |
+ ਘੋ |
+ ਘੌ |
+ ਘੰ |
+ ਘਾਂ |
Play
RTL |
@@ -2226,42 +1127,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"
Play
LTR |
-
- ਙ |
-
- ਙਾ |
-
- ਙਿ |
-
- ਙੀ |
-
- ਙੁ |
-
- ਙੂ |
-
- ਙੇ |
-
- ਙੈ |
-
- ਙੋ |
-
- ਙੌ |
-
- ਙੰ |
-
- ਙਾਂ |
+ ਙ |
+ ਙਾ |
+ ਙਿ |
+ ਙੀ |
+ ਙੁ |
+ ਙੂ |
+ ਙੇ |
+ ਙੈ |
+ ਙੋ |
+ ਙੌ |
+ ਙੰ |
+ ਙਾਂ |
Play
RTL |
@@ -2270,42 +1147,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"
Play
LTR |
-
- ਚ |
-
- ਚਾ |
-
- ਚਿ |
-
- ਚੀ |
-
- ਚੁ |
-
- ਚੂ |
-
- ਚੇ |
-
- ਚੈ |
-
- ਚੋ |
-
- ਚੌ |
-
- ਚੰ |
-
- ਚਾਂ |
+ ਚ |
+ ਚਾ |
+ ਚਿ |
+ ਚੀ |
+ ਚੁ |
+ ਚੂ |
+ ਚੇ |
+ ਚੈ |
+ ਚੋ |
+ ਚੌ |
+ ਚੰ |
+ ਚਾਂ |
Play
RTL |
@@ -2314,42 +1167,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"
Play
LTR |
-
- ਛ |
-
- ਛਾ |
-
- ਛਿ |
-
- ਛੀ |
-
- ਛੁ |
-
- ਛੂ |
-
- ਛੇ |
-
- ਛੈ |
-
- ਛੋ |
-
- ਛੌ |
-
- ਛੰ |
-
- ਛਾਂ |
+ ਛ |
+ ਛਾ |
+ ਛਿ |
+ ਛੀ |
+ ਛੁ |
+ ਛੂ |
+ ਛੇ |
+ ਛੈ |
+ ਛੋ |
+ ਛੌ |
+ ਛੰ |
+ ਛਾਂ |
Play
RTL |
@@ -2358,42 +1187,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"
Play
LTR |
-
- ਜ |
-
- ਜਾ |
-
- ਜਿ |
-
- ਜੀ |
-
- ਜੁ |
-
- ਜੂ |
-
- ਜੇ |
-
- ਜੈ |
-
- ਜੋ |
-
- ਜੌ |
-
- ਜੰ |
-
- ਜਾਂ |
+ ਜ |
+ ਜਾ |
+ ਜਿ |
+ ਜੀ |
+ ਜੁ |
+ ਜੂ |
+ ਜੇ |
+ ਜੈ |
+ ਜੋ |
+ ਜੌ |
+ ਜੰ |
+ ਜਾਂ |
Play
RTL |
@@ -2402,42 +1207,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"
Play
LTR |
-
- ਝ |
-
- ਝਾ |
-
- ਝਿ |
-
- ਝੀ |
-
- ਝੁ |
-
- ਝੂ |
-
- ਝੇ |
-
- ਝੈ |
-
- ਝੋ |
-
- ਝੌ |
-
- ਝੰ |
-
- ਝਾਂ |
+ ਝ |
+ ਝਾ |
+ ਝਿ |
+ ਝੀ |
+ ਝੁ |
+ ਝੂ |
+ ਝੇ |
+ ਝੈ |
+ ਝੋ |
+ ਝੌ |
+ ਝੰ |
+ ਝਾਂ |
Play
RTL |
@@ -2446,42 +1227,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"
Play
LTR |
-
- ਞ |
-
- ਞਾ |
-
- ਞਿ |
-
- ਞੀ |
-
- ਞੁ |
-
- ਞੂ |
-
- ਞੇ |
-
- ਞੈ |
-
- ਞੋ |
-
- ਞੌ |
-
- ਞੰ |
-
- ਞਾਂ |
+ ਞ |
+ ਞਾ |
+ ਞਿ |
+ ਞੀ |
+ ਞੁ |
+ ਞੂ |
+ ਞੇ |
+ ਞੈ |
+ ਞੋ |
+ ਞੌ |
+ ਞੰ |
+ ਞਾਂ |
Play
RTL |
@@ -2490,42 +1247,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"
Play
LTR |
-
- ਟ |
-
- ਟਾ |
-
- ਟਿ |
-
- ਟੀ |
-
- ਟੁ |
-
- ਟੂ |
-
- ਟੇ |
-
- ਟੈ |
-
- ਟੋ |
-
- ਟੌ |
-
- ਟੰ |
-
- ਟਾਂ |
+ ਟ |
+ ਟਾ |
+ ਟਿ |
+ ਟੀ |
+ ਟੁ |
+ ਟੂ |
+ ਟੇ |
+ ਟੈ |
+ ਟੋ |
+ ਟੌ |
+ ਟੰ |
+ ਟਾਂ |
Play
RTL |
@@ -2534,42 +1267,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"
Play
LTR |
-
- ਠ |
-
- ਠਾ |
-
- ਠਿ |
-
- ਠੀ |
-
- ਠੁ |
-
- ਠੂ |
-
- ਠੇ |
-
- ਠੈ |
-
- ਠੋ |
-
- ਠੌ |
-
- ਠੰ |
-
- ਠਾਂ |
+ ਠ |
+ ਠਾ |
+ ਠਿ |
+ ਠੀ |
+ ਠੁ |
+ ਠੂ |
+ ਠੇ |
+ ਠੈ |
+ ਠੋ |
+ ਠੌ |
+ ਠੰ |
+ ਠਾਂ |
Play
RTL |
@@ -2578,42 +1287,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"
Play
LTR |
-
- ਡ |
-
- ਡਾ |
-
- ਡਿ |
-
- ਡੀ |
-
- ਡੁ |
-
- ਡੂ |
-
- ਡੇ |
-
- ਡੈ |
-
- ਡੋ |
-
- ਡੌ |
-
- ਡੰ |
-
- ਡਾਂ |
+ ਡ |
+ ਡਾ |
+ ਡਿ |
+ ਡੀ |
+ ਡੁ |
+ ਡੂ |
+ ਡੇ |
+ ਡੈ |
+ ਡੋ |
+ ਡੌ |
+ ਡੰ |
+ ਡਾਂ |
Play
RTL |
@@ -2622,42 +1307,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"
Play
LTR |
-
- ਢ |
-
- ਢਾ |
-
- ਢਿ |
-
- ਢੀ |
-
- ਢੁ |
-
- ਢੂ |
-
- ਢੇ |
-
- ਢੈ |
-
- ਢੋ |
-
- ਢੌ |
-
- ਢੰ |
-
- ਢਾਂ |
+ ਢ |
+ ਢਾ |
+ ਢਿ |
+ ਢੀ |
+ ਢੁ |
+ ਢੂ |
+ ਢੇ |
+ ਢੈ |
+ ਢੋ |
+ ਢੌ |
+ ਢੰ |
+ ਢਾਂ |
Play
RTL |
@@ -2666,42 +1327,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"
Play
LTR |
-
- ਣ |
-
- ਣਾ |
-
- ਣਿ |
-
- ਣੀ |
-
- ਣੁ |
-
- ਣੂ |
-
- ਣੇ |
-
- ਣੈ |
-
- ਣੋ |
-
- ਣੌ |
-
- ਣੰ |
-
- ਣਾਂ |
+ ਣ |
+ ਣਾ |
+ ਣਿ |
+ ਣੀ |
+ ਣੁ |
+ ਣੂ |
+ ਣੇ |
+ ਣੈ |
+ ਣੋ |
+ ਣੌ |
+ ਣੰ |
+ ਣਾਂ |
Play
RTL |
@@ -2710,42 +1347,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"
Play
LTR |
-
- ਤ |
-
- ਤਾ |
-
- ਤਿ |
-
- ਤੀ |
-
- ਤੁ |
-
- ਤੂ |
-
- ਤੇ |
-
- ਤੈ |
-
- ਤੋ |
-
- ਤੌ |
-
- ਤੰ |
-
- ਤਾਂ |
+ ਤ |
+ ਤਾ |
+ ਤਿ |
+ ਤੀ |
+ ਤੁ |
+ ਤੂ |
+ ਤੇ |
+ ਤੈ |
+ ਤੋ |
+ ਤੌ |
+ ਤੰ |
+ ਤਾਂ |
Play
RTL |
@@ -2754,42 +1367,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"
Play
LTR |
-
- ਥ |
-
- ਥਾ |
-
- ਥਿ |
-
- ਥੀ |
-
- ਥੁ |
-
- ਥੂ |
-
- ਥੇ |
-
- ਥੈ |
-
- ਥੋ |
-
- ਥੌ |
-
- ਥੰ |
-
- ਥਾਂ |
+ ਥ |
+ ਥਾ |
+ ਥਿ |
+ ਥੀ |
+ ਥੁ |
+ ਥੂ |
+ ਥੇ |
+ ਥੈ |
+ ਥੋ |
+ ਥੌ |
+ ਥੰ |
+ ਥਾਂ |
Play
RTL |
@@ -2798,42 +1387,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"
Play
LTR |
-
- ਦ |
-
- ਦਾ |
-
- ਦਿ |
-
- ਦੀ |
-
- ਦੁ |
-
- ਦੂ |
-
- ਦੇ |
-
- ਦੈ |
-
- ਦੋ |
-
- ਦੌ |
-
- ਦੰ |
-
- ਦਾਂ |
+ ਦ |
+ ਦਾ |
+ ਦਿ |
+ ਦੀ |
+ ਦੁ |
+ ਦੂ |
+ ਦੇ |
+ ਦੈ |
+ ਦੋ |
+ ਦੌ |
+ ਦੰ |
+ ਦਾਂ |
Play
RTL |
@@ -2842,42 +1407,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"
Play
LTR |
-
- ਧ |
-
- ਧਾ |
-
- ਧਿ |
-
- ਧੀ |
-
- ਧੁ |
-
- ਧੂ |
-
- ਧੇ |
-
- ਧੈ |
-
- ਧੋ |
-
- ਧੌ |
-
- ਧੰ |
-
- ਧਾਂ |
+ ਧ |
+ ਧਾ |
+ ਧਿ |
+ ਧੀ |
+ ਧੁ |
+ ਧੂ |
+ ਧੇ |
+ ਧੈ |
+ ਧੋ |
+ ਧੌ |
+ ਧੰ |
+ ਧਾਂ |
Play
RTL |
@@ -2886,42 +1427,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"
Play
LTR |
-
- ਨ |
-
- ਨਾ |
-
- ਨਿ |
-
- ਨੀ |
-
- ਨੁ |
-
- ਨੂ |
-
- ਨੇ |
-
- ਨੈ |
-
- ਨੋ |
-
- ਨੌ |
-
- ਨੰ |
-
- ਨਾਂ |
+ ਨ |
+ ਨਾ |
+ ਨਿ |
+ ਨੀ |
+ ਨੁ |
+ ਨੂ |
+ ਨੇ |
+ ਨੈ |
+ ਨੋ |
+ ਨੌ |
+ ਨੰ |
+ ਨਾਂ |
Play
RTL |
@@ -2930,42 +1447,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"
Play
LTR |
-
- ਪ |
-
- ਪਾ |
-
- ਪਿ |
-
- ਪੀ |
-
- ਪੁ |
-
- ਪੂ |
-
- ਪੇ |
-
- ਪੈ |
-
- ਪੋ |
-
- ਪੌ |
-
- ਪੰ |
-
- ਪਾਂ |
+ ਪ |
+ ਪਾ |
+ ਪਿ |
+ ਪੀ |
+ ਪੁ |
+ ਪੂ |
+ ਪੇ |
+ ਪੈ |
+ ਪੋ |
+ ਪੌ |
+ ਪੰ |
+ ਪਾਂ |
Play
RTL |
@@ -2974,42 +1467,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"
Play
LTR |
-
- ਫ |
-
- ਫਾ |
-
- ਫਿ |
-
- ਫੀ |
-
- ਫੁ |
-
- ਫੂ |
-
- ਫੇ |
-
- ਫੈ |
-
- ਫੋ |
-
- ਫੌ |
-
- ਫੰ |
-
- ਫਾਂ |
+ ਫ |
+ ਫਾ |
+ ਫਿ |
+ ਫੀ |
+ ਫੁ |
+ ਫੂ |
+ ਫੇ |
+ ਫੈ |
+ ਫੋ |
+ ਫੌ |
+ ਫੰ |
+ ਫਾਂ |
Play
RTL |
@@ -3018,42 +1487,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"
Play
LTR |
-
- ਬ |
-
- ਬਾ |
-
- ਬਿ |
-
- ਬੀ |
-
- ਬੁ |
-
- ਬੂ |
-
- ਬੇ |
-
- ਬੈ |
-
- ਬੋ |
-
- ਬੌ |
-
- ਬੰ |
-
- ਬਾਂ |
+ ਬ |
+ ਬਾ |
+ ਬਿ |
+ ਬੀ |
+ ਬੁ |
+ ਬੂ |
+ ਬੇ |
+ ਬੈ |
+ ਬੋ |
+ ਬੌ |
+ ਬੰ |
+ ਬਾਂ |
Play
RTL |
@@ -3062,42 +1507,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"
Play
LTR |
-
- ਭ |
-
- ਭਾ |
-
- ਭਿ |
-
- ਭੀ |
-
- ਭੁ |
-
- ਭੂ |
-
- ਭੇ |
-
- ਭੈ |
-
- ਭੋ |
-
- ਭੌ |
-
- ਭੰ |
-
- ਭਾਂ |
+ ਭ |
+ ਭਾ |
+ ਭਿ |
+ ਭੀ |
+ ਭੁ |
+ ਭੂ |
+ ਭੇ |
+ ਭੈ |
+ ਭੋ |
+ ਭੌ |
+ ਭੰ |
+ ਭਾਂ |
Play
RTL |
@@ -3106,42 +1527,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"
Play
LTR |
-
- ਮ |
-
- ਮਾ |
-
- ਮਿ |
-
- ਮੀ |
-
- ਮੁ |
-
- ਮੂ |
-
- ਮੇ |
-
- ਮੈ |
-
- ਮੋ |
-
- ਮੌ |
-
- ਮੰ |
-
- ਮਾਂ |
+ ਮ |
+ ਮਾ |
+ ਮਿ |
+ ਮੀ |
+ ਮੁ |
+ ਮੂ |
+ ਮੇ |
+ ਮੈ |
+ ਮੋ |
+ ਮੌ |
+ ਮੰ |
+ ਮਾਂ |
Play
RTL |
@@ -3150,42 +1547,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"
Play
LTR |
-
- ਯ |
-
- ਯਾ |
-
- ਯਿ |
-
- ਯੀ |
-
- ਯੁ |
-
- ਯੂ |
-
- ਯੇ |
-
- ਯੈ |
-
- ਯੋ |
-
- ਯੌ |
-
- ਯੰ |
-
- ਯਾਂ |
+ ਯ |
+ ਯਾ |
+ ਯਿ |
+ ਯੀ |
+ ਯੁ |
+ ਯੂ |
+ ਯੇ |
+ ਯੈ |
+ ਯੋ |
+ ਯੌ |
+ ਯੰ |
+ ਯਾਂ |
Play
RTL |
@@ -3194,42 +1567,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"
Play
LTR |
-
- ਰ |
-
- ਰਾ |
-
- ਰਿ |
-
- ਰੀ |
-
- ਰੁ |
-
- ਰੂ |
-
- ਰੇ |
-
- ਰੈ |
-
- ਰੋ |
-
- ਰੌ |
-
- ਰੰ |
-
- ਰਾਂ |
+ ਰ |
+ ਰਾ |
+ ਰਿ |
+ ਰੀ |
+ ਰੁ |
+ ਰੂ |
+ ਰੇ |
+ ਰੈ |
+ ਰੋ |
+ ਰੌ |
+ ਰੰ |
+ ਰਾਂ |
Play
RTL |
@@ -3238,42 +1587,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"
Play
LTR |
-
- ਲ |
-
- ਲਾ |
-
- ਲਿ |
-
- ਲੀ |
-
- ਲੁ |
-
- ਲੂ |
-
- ਲੇ |
-
- ਲੈ |
-
- ਲੋ |
-
- ਲੌ |
-
- ਲੰ |
-
- ਲਾਂ |
+ ਲ |
+ ਲਾ |
+ ਲਿ |
+ ਲੀ |
+ ਲੁ |
+ ਲੂ |
+ ਲੇ |
+ ਲੈ |
+ ਲੋ |
+ ਲੌ |
+ ਲੰ |
+ ਲਾਂ |
Play
RTL |
@@ -3282,42 +1607,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"
Play
LTR |
-
- ਵ |
-
- ਵਾ |
-
- ਵਿ |
-
- ਵੀ |
-
- ਵੁ |
-
- ਵੂ |
-
- ਵੇ |
-
- ਵੈ |
-
- ਵੋ |
-
- ਵੌ |
-
- ਵੰ |
-
- ਵਾਂ |
+ ਵ |
+ ਵਾ |
+ ਵਿ |
+ ਵੀ |
+ ਵੁ |
+ ਵੂ |
+ ਵੇ |
+ ਵੈ |
+ ਵੋ |
+ ਵੌ |
+ ਵੰ |
+ ਵਾਂ |
Play
RTL |
@@ -3326,42 +1627,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"
Play
LTR |
-
- ੜ |
-
- ੜਾ |
-
- ੜਿ |
-
- ੜੀ |
-
- ੜੁ |
-
- ੜੂ |
-
- ੜੇ |
-
- ੜੈ |
-
- ੜੋ |
-
- ੜੌ |
-
- ੜੰ |
-
- ੜਾਂ |
+ ੜ |
+ ੜਾ |
+ ੜਿ |
+ ੜੀ |
+ ੜੁ |
+ ੜੂ |
+ ੜੇ |
+ ੜੈ |
+ ੜੋ |
+ ੜੌ |
+ ੜੰ |
+ ੜਾਂ |
Play
RTL |
@@ -3370,42 +1647,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"
Play
LTR |
-
- ਸ਼ |
-
- ਸ਼ਾ |
-
- ਸ਼ਿ |
-
- ਸ਼ੀ |
-
- ਸ਼ੁ |
-
- ਸ਼ੂ |
-
- ਸ਼ੇ |
-
- ਸ਼ੈ |
-
- ਸ਼ੋ |
-
- ਸ਼ੌ |
-
- ਸ਼ੰ |
-
- ਸ਼ਾਂ |
+ ਸ਼ |
+ ਸ਼ਾ |
+ ਸ਼ਿ |
+ ਸ਼ੀ |
+ ਸ਼ੁ |
+ ਸ਼ੂ |
+ ਸ਼ੇ |
+ ਸ਼ੈ |
+ ਸ਼ੋ |
+ ਸ਼ੌ |
+ ਸ਼ੰ |
+ ਸ਼ਾਂ |
Play
RTL |
@@ -3414,41 +1667,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"
Play
LTR |
-
- ਖ਼ |
-
- ਖ਼ਾ |
-
- ਖ਼ਿ |
-
- ਖ਼ੀ |
-
- ਖ਼ੁ |
-
- ਖ਼ੂ |
-
- ਖ਼ੇ |
-
- ਖ਼ੈ |
-
- ਖ਼ੋ |
-
- ਖ਼ੌ |
-
- ਖ਼ੰ |
- ਖ਼ਾਂ |
+ ਖ਼ |
+ ਖ਼ਾ |
+ ਖ਼ਿ |
+ ਖ਼ੀ |
+ ਖ਼ੁ |
+ ਖ਼ੂ |
+ ਖ਼ੇ |
+ ਖ਼ੈ |
+ ਖ਼ੋ |
+ ਖ਼ੌ |
+ ਖ਼ੰ |
+ ਖ਼ਾਂ |
Play
RTL |
@@ -3457,41 +1687,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"
Play
LTR |
-
- ਗ਼ |
-
- ਗ਼ਾ |
-
- ਗ਼ਿ |
-
- ਗ਼ੀ |
-
- ਗ਼ੁ |
-
- ਗ਼ੂ |
-
- ਗ਼ੇ |
-
- ਗ਼ੈ |
-
- ਗ਼ੋ |
-
- ਗ਼ੌ |
-
- ਗ਼ੰ |
- ਗ਼ਾਂ |
+ ਗ਼ |
+ ਗ਼ਾ |
+ ਗ਼ਿ |
+ ਗ਼ੀ |
+ ਗ਼ੁ |
+ ਗ਼ੂ |
+ ਗ਼ੇ |
+ ਗ਼ੈ |
+ ਗ਼ੋ |
+ ਗ਼ੌ |
+ ਗ਼ੰ |
+ ਗ਼ਾਂ |
Play
RTL |
@@ -3500,42 +1707,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"
Play
LTR |
-
- ਜ਼ |
-
- ਜ਼ਾ |
-
- ਜ਼ਿ |
-
- ਜ਼ੀ |
-
- ਜ਼ੁ |
-
- ਜ਼ੂ |
-
- ਜ਼ੇ |
-
- ਜ਼ੈ |
-
- ਜ਼ੋ |
-
- ਜ਼ੌ |
-
- ਜ਼ੰ |
-
- ਜ਼ਾਂ |
+ ਜ਼ |
+ ਜ਼ਾ |
+ ਜ਼ਿ |
+ ਜ਼ੀ |
+ ਜ਼ੁ |
+ ਜ਼ੂ |
+ ਜ਼ੇ |
+ ਜ਼ੈ |
+ ਜ਼ੋ |
+ ਜ਼ੌ |
+ ਜ਼ੰ |
+ ਜ਼ਾਂ |
Play
RTL |
@@ -3544,41 +1727,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"
Play
LTR |
-
- ਫ਼ |
-
- ਫ਼ਾ |
-
- ਫ਼ਿ |
-
- ਫ਼ੀ |
-
- ਫ਼ੁ |
-
- ਫ਼ੂ |
-
- ਫ਼ੇ |
-
- ਫ਼ੈ |
-
- ਫ਼ੋ |
-
- ਫ਼ੌ |
-
- ਫ਼ੰ |
- ਫ਼ਾਂ |
+ ਫ਼ |
+ ਫ਼ਾ |
+ ਫ਼ਿ |
+ ਫ਼ੀ |
+ ਫ਼ੁ |
+ ਫ਼ੂ |
+ ਫ਼ੇ |
+ ਫ਼ੈ |
+ ਫ਼ੋ |
+ ਫ਼ੌ |
+ ਫ਼ੰ |
+ ਫ਼ਾਂ |
Play
RTL |
@@ -3587,41 +1747,18 @@ src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"
Play
LTR |
-
- ਲ਼ |
-
- ਲ਼ਾ |
-
- ਲ਼ਿ |
-
- ਲ਼ੀ |
-
- ਲ਼ੁ |
-
- ਲ਼ੂ |
-
- ਲ਼ੇ |
-
- ਲ਼ੈ |
-
- ਲ਼ੋ |
-
- ਲ਼ੌ |
-
- ਲ਼ੰ |
- ਲ਼ਾਂ |
+ ਲ਼ |
+ ਲ਼ਾ |
+ ਲ਼ਿ |
+ ਲ਼ੀ |
+ ਲ਼ੁ |
+ ਲ਼ੂ |
+ ਲ਼ੇ |
+ ਲ਼ੈ |
+ ਲ਼ੋ |
+ ਲ਼ੌ |
+ ਲ਼ੰ |
+ ਲ਼ਾਂ |
Play
RTL |
diff --git a/resources/public/scripts/muharni.js b/resources/public/scripts/muharni.js
new file mode 100644
index 0000000..ab42548
--- /dev/null
+++ b/resources/public/scripts/muharni.js
@@ -0,0 +1,82 @@
+/**
+ * muharni.js
+ *
+ * Custom JavaScript functions, some dependent on JQuery, used in the `muharni`
+ * page.
+ */
+
+/**
+ * An array for client side sound recordings made by the student. We don't
+ * strictly need one for each short and long character, but it will give a
+ * better experience for people who really get into it.
+ *
+ * There are two tables each of 39 rows and 12 columns, but we're going to
+ * pack both tables into the same array. So the long sounds will be rows 1
+ * to 39 inclusive, and the short from 41 to 79 inclusive.
+ */
+const studentSounds = Array(80).fill(0).map(x => Array(13).fill(null));
+
+
+
+function recordStudentSound() {
+ if (currentCell) {
+ $('#record-student').css('background-color', 'green');
+ navigator.mediaDevices.getUserMedia({ audio: true })
+ .then(stream => {
+ const mediaRecorder = new MediaRecorder(stream);
+ mediaRecorder.start();
+
+ const audioChunks = [];
+
+ mediaRecorder.addEventListener("dataavailable", event => {
+ audioChunks.push(event.data);
+ });
+
+ setTimeout(() => {
+ mediaRecorder.stop();
+ if (audioChunks.length > 0) {
+ studentSounds[currentCell.row][currentCell.col] = new Blob(audioChunks);
+ $('#play-student').prop('disabled', false);
+ }
+ $('#record-student').css('background-color', 'red');
+
+ }, 3000);
+ });
+ }
+}
+
+/**
+ * If a student sound has been recorded for the current cell, play it.
+ */
+function playStudentSound() {
+ if (currentCell) {
+ if (studentSounds[currentCell.row][currentCell.col] != null) {
+ new Audio(URL.createObjectURL(studentSounds[currentCell.row][currentCell.col])).play();
+ }
+ }
+}
+
+
+$(document).ready(function() {
+ $(".entry").on("click", function(e) {
+ let cellId = e.currentTarget ? e.currentTarget.id : null;
+
+ if (cellId)
+ {
+ $("#popup").css({
+ 'left': e.pageX,
+ 'top': e.pageY
+ });
+
+ $("#character").text(e.currentTarget.innerText);
+
+ $("#play-tutor").off("click"); /* trying to remove any previous click handler */
+ $("#play-tutor").on("click", function(e){
+ let audioUrl = "audio/" + cellId.slice(1) + ".mp3";
+ new Audio( audioUrl).play();
+ });
+
+ $("#popup").show();
+ }
+ });
+})
\ No newline at end of file
diff --git a/resources/public/style.css b/resources/public/style.css
index 5ad6215..33c7a14 100644
--- a/resources/public/style.css
+++ b/resources/public/style.css
@@ -50,4 +50,5 @@ th {
position: absolute;
display: none;
background-color: whitesmoke;
+ z-index: 10;
}
\ No newline at end of file
diff --git a/src/muharni/construct.clj b/src/muharni/construct.clj
index 0d3ff99..96a2551 100644
--- a/src/muharni/construct.clj
+++ b/src/muharni/construct.clj
@@ -83,25 +83,28 @@
"Emit a table cell describing one entry from entries with either the
long or short audio clip available on click. "
[^Integer row ^Integer col ^Boolean long?]
- (let [audio (format
- "audio/%02d%s.mp3"
- (inc row)
- ((columns col) (if long? :upper-latin :lower-latin)))
+ (let [r (inc row)
+ c ((columns col) (if long? :upper-latin :lower-latin))
+ audio (format "audio/%02d%s.mp3" r c)
char ((entries row) col)]
(vector :td {:class "entry"
-
- :onclick (format
- "showPopup( '%s', '%s', '%s', '%s')"
- (if long? row (+ row 40))
- col
- char
- audio)}
+ :id (format "%s%02d%s" (if long? "l" "s") r c)
+ ;; :onclick (format
+ ;; "showPopup( '%s', '%s', '%s', '%s')"
+ ;; (if long? row (+ row 40))
+ ;; col
+ ;; char
+ ;; audio)
+ }
;; (audio row col long?)
- char)))
+ char)))
;; (entry-cell 3 4 true)
(defn all-entries-cell
+ "Return a table cell which plays the sound for all entries in the specified
+ `row`, concatenated from left to right if `ltr?` is true else right to left,
+ and playing long recordings if `long?` is true else short recordings."
[^Integer row ^Boolean ltr? ^Boolean long?]
[:td {:class "play-row"
:onclick (format "new Audio('audio/%s%s%02d_MP3WRAP.mp3').play();"
@@ -112,6 +115,8 @@
(defn entries-row
+ "Return a table row for the specified `row` number for long recordings if
+ `long?` is true else short recordings."
[^Integer row ^Boolean long?]
(apply vector
(concat [:tr]
@@ -122,9 +127,10 @@
;; (entries-row 3 true)
(defn col-header-cell
- [^Integer col]
+ "Return a header cell for the indicated `column`."
+ [^Integer column]
(vector :th
- (:name (columns col))))
+ (:name (columns column))))
(defn col-headers-row
[]
@@ -136,19 +142,21 @@
;; (col-headers-row)
(defn play-column-row
+ "Return a table row of cells which play concatenated sounds for each column,
+ concatenating from top to bottom is `ttb?` is true, else bottom to top, and
+ playing long recordings if `long?` is true else short recordings."
[^Boolean ttb? ^Boolean long?]
(apply vector
(concat [:tr]
[[:td]]
(map #(vector
:td {:class "play-column"
- :onclick
+ :onclick
(format
- "new Audio('audio/%s%s%s_MP3WRAP.mp3').play();"
- (if ttb? "ttb" "btt")
- (if long? "long" "short")
- ((columns %) (if long? :upper-latin :lower-latin)))
- }
+ "new Audio('audio/%s%s%s_MP3WRAP.mp3').play();"
+ (if ttb? "ttb" "btt")
+ (if long? "long" "short")
+ ((columns %) (if long? :upper-latin :lower-latin)))}
(str "Play " (if ttb? "down" "up")))
(range (count columns)))
[[:td]])))
@@ -156,6 +164,8 @@
;; (play-column-row true true)
(defn table
+ "Lay out a muharni table, playing long recordings if `long?` is true else
+ short recordings."
[^Boolean long?]
(apply
vector
@@ -171,6 +181,7 @@
;; (table true)
(defn page
+ "Construct the complete muharni tables page."
[title]
[:html
[:head
@@ -183,19 +194,19 @@
:src "scripts/muharni.js"}]
[:title (str title)]]
[:body {:id "body"}
- [:div {:id "popup"
+ [:div {:id "popup"
:onmouseout "hidePopup();"
:style "display: none; border: thin solid gray; width: 10%"}
[:p {:id "character" :style "text-align: center; margin: 0; font-size: 4em;"} "?"]
[:table {:id "controls" :summary "Controls for audio playback and recording"}
[:tr
[:th "Tutor"]
- [:td {:id "play-tutor"} [:button {:onclick "playTutorSound();"}
+ [:td [:button {:id "play-tutor"}
"►"]]]
[:tr
[:th "You"]
- [:td {:id "play-student"} [:button {:onclick "playStudentSound();"} "►"]]
- [:td {:id "record-stop"} [:button {:onclick "recordStudentSound();"} "⏺"]]]]]
+ [:td [:button {:id "play-student"} "►"]]
+ [:td [:button {:id "record-stop"} "⏺"]]]]]
[:h1 (str title)]
[:button {:onclick "var l = document.getElementById('long');
var s = document.getElementById('short');
@@ -223,9 +234,7 @@
[:a {:href "https://github.com/simon-brooke/muharni"} "GitHub"]]]]])
(defn tidy-page
- "Reads HTML as a string, emits cleaned-up HTML as a string. This is not yet
- working with HTML as produced by Hiccup, since Hiccup is currently
- entitifying single quotes within (JavaScript) strings."
+ "Reads HTML from `page` as a string, returns cleaned-up HTML as a string."
[^String page]
(let [tidy (Tidy.)
props (doto (Properties.)
@@ -239,14 +248,13 @@
;; (set! (. config indentContent) true)
;; (set! (. config smartIndent) true)
(doto (.getConfiguration tidy) (.addProps props) (.adjust))
- (.parse tidy (input-stream (.getBytes page))
+ ;; NOTE: Hiccup is currently entitifying single quotes within
+ ;; (JavaScript) strings. This is NOT desirable behaviour!
+ (.parse tidy (input-stream (.getBytes (s/replace page #"\'" "'")))
output)
- (.toString output)))
+ (str "\n" (.toString output))))
(spit "resources/public/index.html"
(tidy-page
- (s/replace
- (str (html
- ;;{:escape-strings? false}
- (page "Muharni table")))
- #"\'" "'")))
+ (str (html
+ (page "Muharni table")))))