diff --git a/Conv.hs b/Conv.hs
new file mode 100644
--- /dev/null
+++ b/Conv.hs
@@ -0,0 +1,13 @@
+module Main where
+import Control.Applicative
+import Data.Char
+
+main :: IO ()
+main = interact (unlines . map process . lines)
+
+process :: String -> String
+process s = 
+    let (x:ys) = words s
+        s' :: Char 
+        s' = chr . read $ x 
+    in (s':' ':concat ys)
diff --git a/Data/Char/AsciiFlatten.hs b/Data/Char/AsciiFlatten.hs
new file mode 100644
--- /dev/null
+++ b/Data/Char/AsciiFlatten.hs
@@ -0,0 +1,852 @@
+module Data.Char.AsciiFlatten (
+  asciiFlattenCI
+) where
+
+-- | Flatten characters to lower-cased ASCII
+asciiFlattenCI :: Char -> Char
+asciiFlattenCI 'À' = 'a'
+asciiFlattenCI 'Á' = 'a'
+asciiFlattenCI 'Â' = 'a'
+asciiFlattenCI 'Ã' = 'a'
+asciiFlattenCI 'Ä' = 'a'
+asciiFlattenCI 'Å' = 'a'
+asciiFlattenCI 'à' = 'a'
+asciiFlattenCI 'á' = 'a'
+asciiFlattenCI 'â' = 'a'
+asciiFlattenCI 'ã' = 'a'
+asciiFlattenCI 'ä' = 'a'
+asciiFlattenCI 'å' = 'a'
+asciiFlattenCI 'Ā' = 'a'
+asciiFlattenCI 'ā' = 'a'
+asciiFlattenCI 'Ă' = 'a'
+asciiFlattenCI 'ă' = 'a'
+asciiFlattenCI '𐌀' = 'a'
+asciiFlattenCI 'Ą' = 'a'
+asciiFlattenCI 'ą' = 'a'
+asciiFlattenCI 'Ǎ' = 'a'
+asciiFlattenCI 'ǎ' = 'a'
+asciiFlattenCI 'Ǟ' = 'a'
+asciiFlattenCI 'ǟ' = 'a'
+asciiFlattenCI 'Ǡ' = 'a'
+asciiFlattenCI 'ǡ' = 'a'
+asciiFlattenCI 'Ǻ' = 'a'
+asciiFlattenCI 'ǻ' = 'a'
+asciiFlattenCI 'Ȁ' = 'a'
+asciiFlattenCI 'ȁ' = 'a'
+asciiFlattenCI 'Ȃ' = 'a'
+asciiFlattenCI 'ȃ' = 'a'
+asciiFlattenCI 'Ȧ' = 'a'
+asciiFlattenCI 'ȧ' = 'a'
+asciiFlattenCI 'Ⱥ' = 'a'
+asciiFlattenCI 'ɐ' = 'a'
+asciiFlattenCI 'Ӑ' = 'a'
+asciiFlattenCI 'ӑ' = 'a'
+asciiFlattenCI 'ᴬ' = 'a'
+asciiFlattenCI 'ᵃ' = 'a'
+asciiFlattenCI 'ᵄ' = 'a'
+asciiFlattenCI 'ᶏ' = 'a'
+asciiFlattenCI 'Ḁ' = 'a'
+asciiFlattenCI 'ḁ' = 'a'
+asciiFlattenCI 'ẚ' = 'a'
+asciiFlattenCI 'Ạ' = 'a'
+asciiFlattenCI 'ạ' = 'a'
+asciiFlattenCI 'Ả' = 'a'
+asciiFlattenCI 'ả' = 'a'
+asciiFlattenCI 'Ấ' = 'a'
+asciiFlattenCI 'ấ' = 'a'
+asciiFlattenCI 'Ầ' = 'a'
+asciiFlattenCI 'ầ' = 'a'
+asciiFlattenCI 'Ẩ' = 'a'
+asciiFlattenCI 'ẩ' = 'a'
+asciiFlattenCI 'Ẫ' = 'a'
+asciiFlattenCI 'ẫ' = 'a'
+asciiFlattenCI 'Ậ' = 'a'
+asciiFlattenCI 'ậ' = 'a'
+asciiFlattenCI 'Ắ' = 'a'
+asciiFlattenCI 'ắ' = 'a'
+asciiFlattenCI 'Ằ' = 'a'
+asciiFlattenCI 'ằ' = 'a'
+asciiFlattenCI 'Ẳ' = 'a'
+asciiFlattenCI 'ẳ' = 'a'
+asciiFlattenCI 'Ẵ' = 'a'
+asciiFlattenCI 'ẵ' = 'a'
+asciiFlattenCI 'Ặ' = 'a'
+asciiFlattenCI 'ặ' = 'a'
+asciiFlattenCI 'ₐ' = 'a'
+asciiFlattenCI 'ⱥ' = 'a'
+asciiFlattenCI 'ƀ' = 'b'
+asciiFlattenCI 'Ɓ' = 'b'
+asciiFlattenCI 'Ƃ' = 'b'
+asciiFlattenCI 'ƃ' = 'b'
+asciiFlattenCI 'Ƀ' = 'b'
+asciiFlattenCI 'ɓ' = 'b'
+asciiFlattenCI 'ʙ' = 'b'
+asciiFlattenCI 'ᛒ' = 'b'
+asciiFlattenCI 'ᴃ' = 'b'
+asciiFlattenCI 'ᴮ' = 'b'
+asciiFlattenCI 'ᴯ' = 'b'
+asciiFlattenCI 'ᵇ' = 'b'
+asciiFlattenCI 'ᵬ' = 'b'
+asciiFlattenCI 'ᶀ' = 'b'
+asciiFlattenCI 'Ḃ' = 'b'
+asciiFlattenCI 'ḃ' = 'b'
+asciiFlattenCI 'Ḅ' = 'b'
+asciiFlattenCI 'ḅ' = 'b'
+asciiFlattenCI 'Ḇ' = 'b'
+asciiFlattenCI 'ḇ' = 'b'
+asciiFlattenCI 'Ç' = 'c'
+asciiFlattenCI 'ç' = 'c'
+asciiFlattenCI 'Ć' = 'c'
+asciiFlattenCI 'ć' = 'c'
+asciiFlattenCI 'Ĉ' = 'c'
+asciiFlattenCI 'ĉ' = 'c'
+asciiFlattenCI 'Ċ' = 'c'
+asciiFlattenCI 'ċ' = 'c'
+asciiFlattenCI 'Č' = 'c'
+asciiFlattenCI 'č' = 'c'
+asciiFlattenCI 'Ƈ' = 'c'
+asciiFlattenCI 'ƈ' = 'c'
+asciiFlattenCI 'Ȼ' = 'c'
+asciiFlattenCI 'ȼ' = 'c'
+asciiFlattenCI 'ɕ' = 'c'
+asciiFlattenCI 'ʗ' = 'c'
+asciiFlattenCI 'ᶜ' = 'c'
+asciiFlattenCI 'ᶝ' = 'c'
+asciiFlattenCI 'Ḉ' = 'c'
+asciiFlattenCI 'ḉ' = 'c'
+asciiFlattenCI 'ℭ' = 'c'
+asciiFlattenCI 'ↄ' = 'c'
+asciiFlattenCI 'Ď' = 'd'
+asciiFlattenCI 'ď' = 'd'
+asciiFlattenCI 'Đ' = 'd'
+asciiFlattenCI 'đ' = 'd'
+asciiFlattenCI 'Ɖ' = 'd'
+asciiFlattenCI 'Ɗ' = 'd'
+asciiFlattenCI 'Ƌ' = 'd'
+asciiFlattenCI 'ƌ' = 'd'
+asciiFlattenCI 'ǅ' = 'd'
+asciiFlattenCI 'ǲ' = 'd'
+asciiFlattenCI 'ȡ' = 'd'
+asciiFlattenCI 'ɖ' = 'd'
+asciiFlattenCI 'ɗ' = 'd'
+asciiFlattenCI 'ᴅ' = 'd'
+asciiFlattenCI 'ᴰ' = 'd'
+asciiFlattenCI 'ᵈ' = 'd'
+asciiFlattenCI 'ᵭ' = 'd'
+asciiFlattenCI 'ᶁ' = 'd'
+asciiFlattenCI 'ᶑ' = 'd'
+asciiFlattenCI 'Ḋ' = 'd'
+asciiFlattenCI 'ḋ' = 'd'
+asciiFlattenCI 'Ḍ' = 'd'
+asciiFlattenCI 'ḍ' = 'd'
+asciiFlattenCI 'Ḏ' = 'd'
+asciiFlattenCI 'ḏ' = 'd'
+asciiFlattenCI 'Ḑ' = 'd'
+asciiFlattenCI 'ḑ' = 'd'
+asciiFlattenCI 'Ḓ' = 'd'
+asciiFlattenCI 'ḓ' = 'd'
+asciiFlattenCI 'È' = 'e'
+asciiFlattenCI 'É' = 'e'
+asciiFlattenCI 'Ê' = 'e'
+asciiFlattenCI 'Ë' = 'e'
+asciiFlattenCI 'è' = 'e'
+asciiFlattenCI 'é' = 'e'
+asciiFlattenCI 'ê' = 'e'
+asciiFlattenCI 'ë' = 'e'
+asciiFlattenCI 'Ē' = 'e'
+asciiFlattenCI 'ē' = 'e'
+asciiFlattenCI 'Ĕ' = 'e'
+asciiFlattenCI 'ĕ' = 'e'
+asciiFlattenCI 'Ė' = 'e'
+asciiFlattenCI 'ė' = 'e'
+asciiFlattenCI 'Ę' = 'e'
+asciiFlattenCI 'ę' = 'e'
+asciiFlattenCI 'Ě' = 'e'
+asciiFlattenCI 'ě' = 'e'
+asciiFlattenCI 'Ǝ' = 'e'
+asciiFlattenCI 'Ɛ' = 'e'
+asciiFlattenCI 'ǝ' = 'e'
+asciiFlattenCI 'Ȅ' = 'e'
+asciiFlattenCI 'ȅ' = 'e'
+asciiFlattenCI 'Ȇ' = 'e'
+asciiFlattenCI 'ȇ' = 'e'
+asciiFlattenCI 'Ȩ' = 'e'
+asciiFlattenCI 'ȩ' = 'e'
+asciiFlattenCI 'Ɇ' = 'e'
+asciiFlattenCI 'ɇ' = 'e'
+asciiFlattenCI 'ɘ' = 'e'
+asciiFlattenCI 'ɛ' = 'e'
+asciiFlattenCI 'ɜ' = 'e'
+asciiFlattenCI 'ɝ' = 'e'
+asciiFlattenCI 'ɞ' = 'e'
+asciiFlattenCI 'ʚ' = 'e'
+asciiFlattenCI 'ᴇ' = 'e'
+asciiFlattenCI 'ᴈ' = 'e'
+asciiFlattenCI 'ᴱ' = 'e'
+asciiFlattenCI 'ᴲ' = 'e'
+asciiFlattenCI 'ᵉ' = 'e'
+asciiFlattenCI 'ᵋ' = 'e'
+asciiFlattenCI 'ᵌ' = 'e'
+asciiFlattenCI 'ᶒ' = 'e'
+asciiFlattenCI 'ᶓ' = 'e'
+asciiFlattenCI 'ᶔ' = 'e'
+asciiFlattenCI 'ᶟ' = 'e'
+asciiFlattenCI 'Ḕ' = 'e'
+asciiFlattenCI 'ḕ' = 'e'
+asciiFlattenCI 'Ḗ' = 'e'
+asciiFlattenCI 'ḗ' = 'e'
+asciiFlattenCI 'Ḙ' = 'e'
+asciiFlattenCI 'ḙ' = 'e'
+asciiFlattenCI 'Ḛ' = 'e'
+asciiFlattenCI 'ḛ' = 'e'
+asciiFlattenCI 'Ḝ' = 'e'
+asciiFlattenCI 'ḝ' = 'e'
+asciiFlattenCI 'Ẹ' = 'e'
+asciiFlattenCI 'ẹ' = 'e'
+asciiFlattenCI 'Ẻ' = 'e'
+asciiFlattenCI 'ẻ' = 'e'
+asciiFlattenCI 'Ẽ' = 'e'
+asciiFlattenCI 'ẽ' = 'e'
+asciiFlattenCI 'Ế' = 'e'
+asciiFlattenCI 'ế' = 'e'
+asciiFlattenCI 'Ề' = 'e'
+asciiFlattenCI 'ề' = 'e'
+asciiFlattenCI 'Ể' = 'e'
+asciiFlattenCI 'ể' = 'e'
+asciiFlattenCI 'Ễ' = 'e'
+asciiFlattenCI 'ễ' = 'e'
+asciiFlattenCI 'Ệ' = 'e'
+asciiFlattenCI 'ệ' = 'e'
+asciiFlattenCI 'ₑ' = 'e'
+asciiFlattenCI 'Ƒ' = 'f'
+asciiFlattenCI 'ƒ' = 'f'
+asciiFlattenCI 'ᵮ' = 'f'
+asciiFlattenCI 'ᶂ' = 'f'
+asciiFlattenCI 'ᶠ' = 'f'
+asciiFlattenCI 'Ḟ' = 'f'
+asciiFlattenCI 'ḟ' = 'f'
+asciiFlattenCI 'Ĝ' = 'g'
+asciiFlattenCI 'ĝ' = 'g'
+asciiFlattenCI 'Ğ' = 'g'
+asciiFlattenCI 'ğ' = 'g'
+asciiFlattenCI 'Ġ' = 'g'
+asciiFlattenCI 'ġ' = 'g'
+asciiFlattenCI 'Ģ' = 'g'
+asciiFlattenCI 'ģ' = 'g'
+asciiFlattenCI 'Ɠ' = 'g'
+asciiFlattenCI 'Ǥ' = 'g'
+asciiFlattenCI 'ǥ' = 'g'
+asciiFlattenCI 'Ǧ' = 'g'
+asciiFlattenCI 'ǧ' = 'g'
+asciiFlattenCI 'Ǵ' = 'g'
+asciiFlattenCI 'ǵ' = 'g'
+asciiFlattenCI 'ɠ' = 'g'
+asciiFlattenCI 'ɡ' = 'g'
+asciiFlattenCI 'ɢ' = 'g'
+asciiFlattenCI 'ʛ' = 'g'
+asciiFlattenCI 'ᴳ' = 'g'
+asciiFlattenCI 'ᵍ' = 'g'
+asciiFlattenCI 'ᵷ' = 'g'
+asciiFlattenCI 'ᵹ' = 'g'
+asciiFlattenCI 'ᶃ' = 'g'
+asciiFlattenCI 'ᶢ' = 'g'
+asciiFlattenCI 'Ḡ' = 'g'
+asciiFlattenCI 'ḡ' = 'g'
+asciiFlattenCI 'Ĥ' = 'h'
+asciiFlattenCI 'ĥ' = 'h'
+asciiFlattenCI 'Ħ' = 'h'
+asciiFlattenCI 'ħ' = 'h'
+asciiFlattenCI 'Ȟ' = 'h'
+asciiFlattenCI 'ȟ' = 'h'
+asciiFlattenCI 'ɥ' = 'h'
+asciiFlattenCI 'ɦ' = 'h'
+asciiFlattenCI 'ʜ' = 'h'
+asciiFlattenCI 'ʮ' = 'h'
+asciiFlattenCI 'ʯ' = 'h'
+asciiFlattenCI 'ʰ' = 'h'
+asciiFlattenCI 'ʱ' = 'h'
+asciiFlattenCI 'ᴴ' = 'h'
+asciiFlattenCI 'ᶣ' = 'h'
+asciiFlattenCI 'Ḣ' = 'h'
+asciiFlattenCI 'ḣ' = 'h'
+asciiFlattenCI 'Ḥ' = 'h'
+asciiFlattenCI 'ḥ' = 'h'
+asciiFlattenCI 'Ḧ' = 'h'
+asciiFlattenCI 'ḧ' = 'h'
+asciiFlattenCI 'Ḩ' = 'h'
+asciiFlattenCI 'ḩ' = 'h'
+asciiFlattenCI 'Ḫ' = 'h'
+asciiFlattenCI 'ḫ' = 'h'
+asciiFlattenCI 'ẖ' = 'h'
+asciiFlattenCI 'ℌ' = 'h'
+asciiFlattenCI 'Ⱨ' = 'h'
+asciiFlattenCI 'ⱨ' = 'h'
+asciiFlattenCI 'Ⱶ' = 'h'
+asciiFlattenCI 'ⱶ' = 'h'
+asciiFlattenCI 'Ì' = 'i'
+asciiFlattenCI 'Í' = 'i'
+asciiFlattenCI 'Î' = 'i'
+asciiFlattenCI 'Ï' = 'i'
+asciiFlattenCI 'ì' = 'i'
+asciiFlattenCI 'í' = 'i'
+asciiFlattenCI 'î' = 'i'
+asciiFlattenCI 'ï' = 'i'
+asciiFlattenCI '𐌉' = 'i'
+asciiFlattenCI 'Ĩ' = 'i'
+asciiFlattenCI 'ĩ' = 'i'
+asciiFlattenCI 'Ī' = 'i'
+asciiFlattenCI 'ī' = 'i'
+asciiFlattenCI 'Ĭ' = 'i'
+asciiFlattenCI 'ĭ' = 'i'
+asciiFlattenCI 'Į' = 'i'
+asciiFlattenCI 'į' = 'i'
+asciiFlattenCI 'İ' = 'i'
+asciiFlattenCI 'ı' = 'i'
+asciiFlattenCI 'Ɨ' = 'i'
+asciiFlattenCI 'Ǐ' = 'i'
+asciiFlattenCI 'ǐ' = 'i'
+asciiFlattenCI 'Ȉ' = 'i'
+asciiFlattenCI 'ȉ' = 'i'
+asciiFlattenCI 'Ȋ' = 'i'
+asciiFlattenCI 'ȋ' = 'i'
+asciiFlattenCI 'ɨ' = 'i'
+asciiFlattenCI 'ɪ' = 'i'
+asciiFlattenCI 'Ѝ' = 'i'
+asciiFlattenCI 'И' = 'i'
+asciiFlattenCI 'Й' = 'i'
+asciiFlattenCI 'и' = 'i'
+asciiFlattenCI 'й' = 'i'
+asciiFlattenCI 'і' = 'i'
+asciiFlattenCI 'ᴉ' = 'i'
+asciiFlattenCI 'ᴵ' = 'i'
+asciiFlattenCI 'ᵎ' = 'i'
+asciiFlattenCI 'ᵢ' = 'i'
+asciiFlattenCI 'ᵻ' = 'i'
+asciiFlattenCI 'ᶖ' = 'i'
+asciiFlattenCI 'ᶤ' = 'i'
+asciiFlattenCI 'ᶦ' = 'i'
+asciiFlattenCI 'ᶧ' = 'i'
+asciiFlattenCI 'Ḭ' = 'i'
+asciiFlattenCI 'ḭ' = 'i'
+asciiFlattenCI 'Ḯ' = 'i'
+asciiFlattenCI 'ḯ' = 'i'
+asciiFlattenCI 'Ỉ' = 'i'
+asciiFlattenCI 'ỉ' = 'i'
+asciiFlattenCI 'Ị' = 'i'
+asciiFlattenCI 'ị' = 'i'
+asciiFlattenCI 'ⁱ' = 'i'
+asciiFlattenCI 'ℑ' = 'i'
+asciiFlattenCI 'Ĵ' = 'j'
+asciiFlattenCI 'ĵ' = 'j'
+asciiFlattenCI 'ǈ' = 'j'
+asciiFlattenCI 'ǋ' = 'j'
+asciiFlattenCI 'ǰ' = 'j'
+asciiFlattenCI 'ȷ' = 'j'
+asciiFlattenCI 'Ɉ' = 'j'
+asciiFlattenCI 'ɉ' = 'j'
+asciiFlattenCI 'ɟ' = 'j'
+asciiFlattenCI 'ʄ' = 'j'
+asciiFlattenCI 'ʝ' = 'j'
+asciiFlattenCI 'ʲ' = 'j'
+asciiFlattenCI 'ᴊ' = 'j'
+asciiFlattenCI 'ᴶ' = 'j'
+asciiFlattenCI 'ᶡ' = 'j'
+asciiFlattenCI 'ᶨ' = 'j'
+asciiFlattenCI 'Ķ' = 'k'
+asciiFlattenCI 'ķ' = 'k'
+asciiFlattenCI 'Ƙ' = 'k'
+asciiFlattenCI 'ƙ' = 'k'
+asciiFlattenCI 'Ǩ' = 'k'
+asciiFlattenCI 'ǩ' = 'k'
+asciiFlattenCI 'ʞ' = 'k'
+asciiFlattenCI 'ᴋ' = 'k'
+asciiFlattenCI 'ᴷ' = 'k'
+asciiFlattenCI 'ᵏ' = 'k'
+asciiFlattenCI 'ᶄ' = 'k'
+asciiFlattenCI 'Ḱ' = 'k'
+asciiFlattenCI 'ḱ' = 'k'
+asciiFlattenCI 'Ḳ' = 'k'
+asciiFlattenCI 'ḳ' = 'k'
+asciiFlattenCI 'Ḵ' = 'k'
+asciiFlattenCI 'ḵ' = 'k'
+asciiFlattenCI 'Ⱪ' = 'k'
+asciiFlattenCI 'ⱪ' = 'k'
+asciiFlattenCI 'Ĺ' = 'l'
+asciiFlattenCI 'ĺ' = 'l'
+asciiFlattenCI 'Ļ' = 'l'
+asciiFlattenCI 'ļ' = 'l'
+asciiFlattenCI 'Ľ' = 'l'
+asciiFlattenCI 'ľ' = 'l'
+asciiFlattenCI 'Ŀ' = 'l'
+asciiFlattenCI 'ŀ' = 'l'
+asciiFlattenCI 'Ł' = 'l'
+asciiFlattenCI 'ł' = 'l'
+asciiFlattenCI 'ƚ' = 'l'
+asciiFlattenCI 'ǈ' = 'l'
+asciiFlattenCI 'ȴ' = 'l'
+asciiFlattenCI 'Ƚ' = 'l'
+asciiFlattenCI 'ɫ' = 'l'
+asciiFlattenCI 'ɬ' = 'l'
+asciiFlattenCI 'ɭ' = 'l'
+asciiFlattenCI 'ʟ' = 'l'
+asciiFlattenCI 'ˡ' = 'l'
+asciiFlattenCI 'ᴌ' = 'l'
+asciiFlattenCI 'ᴸ' = 'l'
+asciiFlattenCI 'ᶅ' = 'l'
+asciiFlattenCI 'ᶩ' = 'l'
+asciiFlattenCI 'ᶪ' = 'l'
+asciiFlattenCI 'ᶫ' = 'l'
+asciiFlattenCI 'Ḷ' = 'l'
+asciiFlattenCI 'ḷ' = 'l'
+asciiFlattenCI 'Ḹ' = 'l'
+asciiFlattenCI 'ḹ' = 'l'
+asciiFlattenCI 'Ḻ' = 'l'
+asciiFlattenCI 'ḻ' = 'l'
+asciiFlattenCI 'Ḽ' = 'l'
+asciiFlattenCI 'ḽ' = 'l'
+asciiFlattenCI 'Ⱡ' = 'l'
+asciiFlattenCI 'ⱡ' = 'l'
+asciiFlattenCI 'Ɫ' = 'l'
+asciiFlattenCI 'Ɯ' = 'm'
+asciiFlattenCI 'ɯ' = 'm'
+asciiFlattenCI 'ɰ' = 'm'
+asciiFlattenCI 'ɱ' = 'm'
+asciiFlattenCI 'ᴍ' = 'm'
+asciiFlattenCI 'ᴟ' = 'm'
+asciiFlattenCI 'ᴹ' = 'm'
+asciiFlattenCI 'ᵐ' = 'm'
+asciiFlattenCI 'ᵚ' = 'm'
+asciiFlattenCI 'ᵯ' = 'm'
+asciiFlattenCI 'ᶆ' = 'm'
+asciiFlattenCI 'ᶬ' = 'm'
+asciiFlattenCI 'ᶭ' = 'm'
+asciiFlattenCI 'Ḿ' = 'm'
+asciiFlattenCI 'ḿ' = 'm'
+asciiFlattenCI 'Ṁ' = 'm'
+asciiFlattenCI 'ṁ' = 'm'
+asciiFlattenCI 'Ṃ' = 'm'
+asciiFlattenCI 'ṃ' = 'm'
+asciiFlattenCI 'Ñ' = 'n'
+asciiFlattenCI 'ñ' = 'n'
+asciiFlattenCI 'Ń' = 'n'
+asciiFlattenCI 'ń' = 'n'
+asciiFlattenCI 'Ņ' = 'n'
+asciiFlattenCI 'ņ' = 'n'
+asciiFlattenCI 'Ň' = 'n'
+asciiFlattenCI 'ň' = 'n'
+asciiFlattenCI 'ŉ' = 'n'
+asciiFlattenCI 'Ɲ' = 'n'
+asciiFlattenCI 'ƞ' = 'n'
+asciiFlattenCI 'ǋ' = 'n'
+asciiFlattenCI 'Ǹ' = 'n'
+asciiFlattenCI 'ǹ' = 'n'
+asciiFlattenCI 'Ƞ' = 'n'
+asciiFlattenCI 'ȵ' = 'n'
+asciiFlattenCI 'ɲ' = 'n'
+asciiFlattenCI 'ɳ' = 'n'
+asciiFlattenCI 'ɴ' = 'n'
+asciiFlattenCI 'ᴎ' = 'n'
+asciiFlattenCI 'ᴺ' = 'n'
+asciiFlattenCI 'ᴻ' = 'n'
+asciiFlattenCI 'ᵰ' = 'n'
+asciiFlattenCI 'ᶇ' = 'n'
+asciiFlattenCI 'ᶮ' = 'n'
+asciiFlattenCI 'ᶯ' = 'n'
+asciiFlattenCI 'ᶰ' = 'n'
+asciiFlattenCI 'Ṅ' = 'n'
+asciiFlattenCI 'ṅ' = 'n'
+asciiFlattenCI 'Ṇ' = 'n'
+asciiFlattenCI 'ṇ' = 'n'
+asciiFlattenCI 'Ṉ' = 'n'
+asciiFlattenCI 'ṉ' = 'n'
+asciiFlattenCI 'Ṋ' = 'n'
+asciiFlattenCI 'ṋ' = 'n'
+asciiFlattenCI 'ⁿ' = 'n'
+asciiFlattenCI 'Ò' = 'o'
+asciiFlattenCI 'Ó' = 'o'
+asciiFlattenCI 'Ô' = 'o'
+asciiFlattenCI 'Õ' = 'o'
+asciiFlattenCI 'Ö' = 'o'
+asciiFlattenCI 'Ø' = 'o'
+asciiFlattenCI 'ò' = 'o'
+asciiFlattenCI 'ó' = 'o'
+asciiFlattenCI 'ô' = 'o'
+asciiFlattenCI 'õ' = 'o'
+asciiFlattenCI 'ö' = 'o'
+asciiFlattenCI 'ø' = 'o'
+asciiFlattenCI '𐌏' = 'o'
+asciiFlattenCI 'Ō' = 'o'
+asciiFlattenCI 'ō' = 'o'
+asciiFlattenCI 'Ŏ' = 'o'
+asciiFlattenCI 'ŏ' = 'o'
+asciiFlattenCI 'Ő' = 'o'
+asciiFlattenCI 'ő' = 'o'
+asciiFlattenCI 'Ɔ' = 'o'
+asciiFlattenCI 'Ɵ' = 'o'
+asciiFlattenCI 'Ơ' = 'o'
+asciiFlattenCI 'ơ' = 'o'
+asciiFlattenCI 'Ǒ' = 'o'
+asciiFlattenCI 'ǒ' = 'o'
+asciiFlattenCI 'Ǫ' = 'o'
+asciiFlattenCI 'ǫ' = 'o'
+asciiFlattenCI 'Ǭ' = 'o'
+asciiFlattenCI 'ǭ' = 'o'
+asciiFlattenCI 'Ǿ' = 'o'
+asciiFlattenCI 'ǿ' = 'o'
+asciiFlattenCI 'Ȍ' = 'o'
+asciiFlattenCI 'ȍ' = 'o'
+asciiFlattenCI 'Ȏ' = 'o'
+asciiFlattenCI 'ȏ' = 'o'
+asciiFlattenCI 'Ȫ' = 'o'
+asciiFlattenCI 'ȫ' = 'o'
+asciiFlattenCI 'Ȭ' = 'o'
+asciiFlattenCI 'ȭ' = 'o'
+asciiFlattenCI 'Ȯ' = 'o'
+asciiFlattenCI 'ȯ' = 'o'
+asciiFlattenCI 'Ȱ' = 'o'
+asciiFlattenCI 'ȱ' = 'o'
+asciiFlattenCI 'ɔ' = 'o'
+asciiFlattenCI 'ɵ' = 'o'
+asciiFlattenCI 'о' = 'o'
+asciiFlattenCI 'Ӧ' = 'o'
+asciiFlattenCI 'ӧ' = 'o'
+asciiFlattenCI 'Ө' = 'o'
+asciiFlattenCI 'ө' = 'o'
+asciiFlattenCI 'Ӫ' = 'o'
+asciiFlattenCI 'ӫ' = 'o'
+asciiFlattenCI 'ᴏ' = 'o'
+asciiFlattenCI 'ᴐ' = 'o'
+asciiFlattenCI 'ᴑ' = 'o'
+asciiFlattenCI 'ᴒ' = 'o'
+asciiFlattenCI 'ᴓ' = 'o'
+asciiFlattenCI 'ᴖ' = 'o'
+asciiFlattenCI 'ᴗ' = 'o'
+asciiFlattenCI 'ᴼ' = 'o'
+asciiFlattenCI 'ᵒ' = 'o'
+asciiFlattenCI 'ᵓ' = 'o'
+asciiFlattenCI 'ᵔ' = 'o'
+asciiFlattenCI 'ᵕ' = 'o'
+asciiFlattenCI 'ᶗ' = 'o'
+asciiFlattenCI 'ᶱ' = 'o'
+asciiFlattenCI 'Ṍ' = 'o'
+asciiFlattenCI 'ṍ' = 'o'
+asciiFlattenCI 'Ṏ' = 'o'
+asciiFlattenCI 'ṏ' = 'o'
+asciiFlattenCI 'Ṑ' = 'o'
+asciiFlattenCI 'ṑ' = 'o'
+asciiFlattenCI 'Ṓ' = 'o'
+asciiFlattenCI 'ṓ' = 'o'
+asciiFlattenCI 'Ọ' = 'o'
+asciiFlattenCI 'ọ' = 'o'
+asciiFlattenCI 'Ỏ' = 'o'
+asciiFlattenCI 'ỏ' = 'o'
+asciiFlattenCI 'Ố' = 'o'
+asciiFlattenCI 'ố' = 'o'
+asciiFlattenCI 'Ồ' = 'o'
+asciiFlattenCI 'ồ' = 'o'
+asciiFlattenCI 'Ổ' = 'o'
+asciiFlattenCI 'ổ' = 'o'
+asciiFlattenCI 'Ỗ' = 'o'
+asciiFlattenCI 'ỗ' = 'o'
+asciiFlattenCI 'Ộ' = 'o'
+asciiFlattenCI 'ộ' = 'o'
+asciiFlattenCI 'Ớ' = 'o'
+asciiFlattenCI 'ớ' = 'o'
+asciiFlattenCI 'Ờ' = 'o'
+asciiFlattenCI 'ờ' = 'o'
+asciiFlattenCI 'Ở' = 'o'
+asciiFlattenCI 'ở' = 'o'
+asciiFlattenCI 'Ỡ' = 'o'
+asciiFlattenCI 'ỡ' = 'o'
+asciiFlattenCI 'Ợ' = 'o'
+asciiFlattenCI 'ợ' = 'o'
+asciiFlattenCI 'ₒ' = 'o'
+asciiFlattenCI 'Ⲟ' = 'o'
+asciiFlattenCI 'ⲟ' = 'o'
+asciiFlattenCI 'Ƥ' = 'p'
+asciiFlattenCI 'ƥ' = 'p'
+asciiFlattenCI 'ᴘ' = 'p'
+asciiFlattenCI 'ᴾ' = 'p'
+asciiFlattenCI 'ᵖ' = 'p'
+asciiFlattenCI 'ᵱ' = 'p'
+asciiFlattenCI 'ᵽ' = 'p'
+asciiFlattenCI 'ᶈ' = 'p'
+asciiFlattenCI 'Ṕ' = 'p'
+asciiFlattenCI 'ṕ' = 'p'
+asciiFlattenCI 'Ṗ' = 'p'
+asciiFlattenCI 'ṗ' = 'p'
+asciiFlattenCI 'Ᵽ' = 'p'
+asciiFlattenCI 'Ɋ' = 'q'
+asciiFlattenCI 'ɋ' = 'q'
+asciiFlattenCI 'ʠ' = 'q'
+asciiFlattenCI 'Ŕ' = 'r'
+asciiFlattenCI 'ŕ' = 'r'
+asciiFlattenCI 'Ŗ' = 'r'
+asciiFlattenCI 'ŗ' = 'r'
+asciiFlattenCI 'Ř' = 'r'
+asciiFlattenCI 'ř' = 'r'
+asciiFlattenCI 'Ȑ' = 'r'
+asciiFlattenCI 'ȑ' = 'r'
+asciiFlattenCI 'Ȓ' = 'r'
+asciiFlattenCI 'ȓ' = 'r'
+asciiFlattenCI 'Ɍ' = 'r'
+asciiFlattenCI 'ɍ' = 'r'
+asciiFlattenCI 'ɹ' = 'r'
+asciiFlattenCI 'ɺ' = 'r'
+asciiFlattenCI 'ɻ' = 'r'
+asciiFlattenCI 'ɼ' = 'r'
+asciiFlattenCI 'ɽ' = 'r'
+asciiFlattenCI 'ɾ' = 'r'
+asciiFlattenCI 'ɿ' = 'r'
+asciiFlattenCI 'ʀ' = 'r'
+asciiFlattenCI 'ʁ' = 'r'
+asciiFlattenCI 'ʳ' = 'r'
+asciiFlattenCI 'ʴ' = 'r'
+asciiFlattenCI 'ʵ' = 'r'
+asciiFlattenCI 'ʶ' = 'r'
+asciiFlattenCI 'ᴙ' = 'r'
+asciiFlattenCI 'ᴚ' = 'r'
+asciiFlattenCI 'ᴿ' = 'r'
+asciiFlattenCI 'ᵣ' = 'r'
+asciiFlattenCI 'ᵲ' = 'r'
+asciiFlattenCI 'ᵳ' = 'r'
+asciiFlattenCI 'ᶉ' = 'r'
+asciiFlattenCI '᷊' = 'r'
+asciiFlattenCI 'Ṙ' = 'r'
+asciiFlattenCI 'ṙ' = 'r'
+asciiFlattenCI 'Ṛ' = 'r'
+asciiFlattenCI 'ṛ' = 'r'
+asciiFlattenCI 'Ṝ' = 'r'
+asciiFlattenCI 'ṝ' = 'r'
+asciiFlattenCI 'Ṟ' = 'r'
+asciiFlattenCI 'ṟ' = 'r'
+asciiFlattenCI 'ℜ' = 'r'
+asciiFlattenCI 'Ɽ' = 'r'
+asciiFlattenCI 'ß' = 's'
+asciiFlattenCI 'Ś' = 's'
+asciiFlattenCI 'ś' = 's'
+asciiFlattenCI 'Ŝ' = 's'
+asciiFlattenCI 'ŝ' = 's'
+asciiFlattenCI 'Ş' = 's'
+asciiFlattenCI 'ş' = 's'
+asciiFlattenCI 'Š' = 's'
+asciiFlattenCI 'š' = 's'
+asciiFlattenCI 'ſ' = 's'
+asciiFlattenCI 'Ș' = 's'
+asciiFlattenCI 'ș' = 's'
+asciiFlattenCI 'ȿ' = 's'
+asciiFlattenCI 'ʂ' = 's'
+asciiFlattenCI 'ˢ' = 's'
+asciiFlattenCI 'ᵴ' = 's'
+asciiFlattenCI 'ᶊ' = 's'
+asciiFlattenCI 'ᶳ' = 's'
+asciiFlattenCI 'Ṡ' = 's'
+asciiFlattenCI 'ṡ' = 's'
+asciiFlattenCI 'Ṣ' = 's'
+asciiFlattenCI 'ṣ' = 's'
+asciiFlattenCI 'Ṥ' = 's'
+asciiFlattenCI 'ṥ' = 's'
+asciiFlattenCI 'Ṧ' = 's'
+asciiFlattenCI 'ṧ' = 's'
+asciiFlattenCI 'Ṩ' = 's'
+asciiFlattenCI 'ṩ' = 's'
+asciiFlattenCI 'ẛ' = 's'
+asciiFlattenCI 'Ţ' = 't'
+asciiFlattenCI 'ţ' = 't'
+asciiFlattenCI 'Ť' = 't'
+asciiFlattenCI 'ť' = 't'
+asciiFlattenCI 'Ŧ' = 't'
+asciiFlattenCI 'ŧ' = 't'
+asciiFlattenCI 'ƫ' = 't'
+asciiFlattenCI 'Ƭ' = 't'
+asciiFlattenCI 'ƭ' = 't'
+asciiFlattenCI 'Ʈ' = 't'
+asciiFlattenCI 'Ț' = 't'
+asciiFlattenCI 'ț' = 't'
+asciiFlattenCI 'ȶ' = 't'
+asciiFlattenCI 'Ⱦ' = 't'
+asciiFlattenCI 'ʇ' = 't'
+asciiFlattenCI 'ʈ' = 't'
+asciiFlattenCI 'ᴛ' = 't'
+asciiFlattenCI 'ᵀ' = 't'
+asciiFlattenCI 'ᵗ' = 't'
+asciiFlattenCI 'ᵵ' = 't'
+asciiFlattenCI 'ᶵ' = 't'
+asciiFlattenCI 'Ṫ' = 't'
+asciiFlattenCI 'ṫ' = 't'
+asciiFlattenCI 'Ṭ' = 't'
+asciiFlattenCI 'ṭ' = 't'
+asciiFlattenCI 'Ṯ' = 't'
+asciiFlattenCI 'ṯ' = 't'
+asciiFlattenCI 'Ṱ' = 't'
+asciiFlattenCI 'ṱ' = 't'
+asciiFlattenCI 'ẗ' = 't'
+asciiFlattenCI 'ⱦ' = 't'
+asciiFlattenCI 'Ù' = 'u'
+asciiFlattenCI 'Ú' = 'u'
+asciiFlattenCI 'Û' = 'u'
+asciiFlattenCI 'Ü' = 'u'
+asciiFlattenCI 'ù' = 'u'
+asciiFlattenCI 'ú' = 'u'
+asciiFlattenCI 'û' = 'u'
+asciiFlattenCI 'ü' = 'u'
+asciiFlattenCI '𐌖' = 'u'
+asciiFlattenCI 'Ũ' = 'u'
+asciiFlattenCI 'ũ' = 'u'
+asciiFlattenCI 'Ū' = 'u'
+asciiFlattenCI 'ū' = 'u'
+asciiFlattenCI 'Ŭ' = 'u'
+asciiFlattenCI 'ŭ' = 'u'
+asciiFlattenCI 'Ů' = 'u'
+asciiFlattenCI 'ů' = 'u'
+asciiFlattenCI 'Ű' = 'u'
+asciiFlattenCI 'ű' = 'u'
+asciiFlattenCI 'Ų' = 'u'
+asciiFlattenCI 'ų' = 'u'
+asciiFlattenCI 'Ư' = 'u'
+asciiFlattenCI 'ư' = 'u'
+asciiFlattenCI 'Ǔ' = 'u'
+asciiFlattenCI 'ǔ' = 'u'
+asciiFlattenCI 'Ǖ' = 'u'
+asciiFlattenCI 'ǖ' = 'u'
+asciiFlattenCI 'Ǘ' = 'u'
+asciiFlattenCI 'ǘ' = 'u'
+asciiFlattenCI 'Ǚ' = 'u'
+asciiFlattenCI 'ǚ' = 'u'
+asciiFlattenCI 'Ǜ' = 'u'
+asciiFlattenCI 'ǜ' = 'u'
+asciiFlattenCI 'Ȕ' = 'u'
+asciiFlattenCI 'ȕ' = 'u'
+asciiFlattenCI 'Ȗ' = 'u'
+asciiFlattenCI 'ȗ' = 'u'
+asciiFlattenCI 'Ʉ' = 'u'
+asciiFlattenCI 'ʉ' = 'u'
+asciiFlattenCI 'ᴜ' = 'u'
+asciiFlattenCI 'ᴝ' = 'u'
+asciiFlattenCI 'ᴞ' = 'u'
+asciiFlattenCI 'ᵁ' = 'u'
+asciiFlattenCI 'ᵘ' = 'u'
+asciiFlattenCI 'ᵙ' = 'u'
+asciiFlattenCI 'ᵤ' = 'u'
+asciiFlattenCI 'ᵾ' = 'u'
+asciiFlattenCI 'ᶙ' = 'u'
+asciiFlattenCI 'ᶶ' = 'u'
+asciiFlattenCI 'ᶸ' = 'u'
+asciiFlattenCI 'Ṳ' = 'u'
+asciiFlattenCI 'ṳ' = 'u'
+asciiFlattenCI 'Ṵ' = 'u'
+asciiFlattenCI 'ṵ' = 'u'
+asciiFlattenCI 'Ṷ' = 'u'
+asciiFlattenCI 'ṷ' = 'u'
+asciiFlattenCI 'Ṹ' = 'u'
+asciiFlattenCI 'ṹ' = 'u'
+asciiFlattenCI 'Ṻ' = 'u'
+asciiFlattenCI 'ṻ' = 'u'
+asciiFlattenCI 'Ụ' = 'u'
+asciiFlattenCI 'ụ' = 'u'
+asciiFlattenCI 'Ủ' = 'u'
+asciiFlattenCI 'ủ' = 'u'
+asciiFlattenCI 'Ứ' = 'u'
+asciiFlattenCI 'ứ' = 'u'
+asciiFlattenCI 'Ừ' = 'u'
+asciiFlattenCI 'ừ' = 'u'
+asciiFlattenCI 'Ử' = 'u'
+asciiFlattenCI 'ử' = 'u'
+asciiFlattenCI 'Ữ' = 'u'
+asciiFlattenCI 'ữ' = 'u'
+asciiFlattenCI 'Ự' = 'u'
+asciiFlattenCI 'ự' = 'u'
+asciiFlattenCI 'Ʋ' = 'v'
+asciiFlattenCI 'Ʌ' = 'v'
+asciiFlattenCI 'ʋ' = 'v'
+asciiFlattenCI 'ʌ' = 'v'
+asciiFlattenCI 'ᴠ' = 'v'
+asciiFlattenCI 'ᵛ' = 'v'
+asciiFlattenCI 'ᵥ' = 'v'
+asciiFlattenCI 'ᶌ' = 'v'
+asciiFlattenCI 'ᶹ' = 'v'
+asciiFlattenCI 'ᶺ' = 'v'
+asciiFlattenCI 'Ṽ' = 'v'
+asciiFlattenCI 'ṽ' = 'v'
+asciiFlattenCI 'Ṿ' = 'v'
+asciiFlattenCI 'ṿ' = 'v'
+asciiFlattenCI 'ⱴ' = 'v'
+asciiFlattenCI 'Ŵ' = 'w'
+asciiFlattenCI 'ŵ' = 'w'
+asciiFlattenCI 'ʍ' = 'w'
+asciiFlattenCI 'ʷ' = 'w'
+asciiFlattenCI 'ᴡ' = 'w'
+asciiFlattenCI 'ᵂ' = 'w'
+asciiFlattenCI 'Ẁ' = 'w'
+asciiFlattenCI 'ẁ' = 'w'
+asciiFlattenCI 'Ẃ' = 'w'
+asciiFlattenCI 'ẃ' = 'w'
+asciiFlattenCI 'Ẅ' = 'w'
+asciiFlattenCI 'ẅ' = 'w'
+asciiFlattenCI 'Ẇ' = 'w'
+asciiFlattenCI 'ẇ' = 'w'
+asciiFlattenCI 'Ẉ' = 'w'
+asciiFlattenCI 'ẉ' = 'w'
+asciiFlattenCI 'ẘ' = 'w'
+asciiFlattenCI 'ˣ' = 'x'
+asciiFlattenCI 'ᶍ' = 'x'
+asciiFlattenCI 'Ẋ' = 'x'
+asciiFlattenCI 'ẋ' = 'x'
+asciiFlattenCI 'Ẍ' = 'x'
+asciiFlattenCI 'ẍ' = 'x'
+asciiFlattenCI 'ₓ' = 'x'
+asciiFlattenCI 'Ý' = 'y'
+asciiFlattenCI 'ý' = 'y'
+asciiFlattenCI 'ÿ' = 'y'
+asciiFlattenCI 'Ŷ' = 'y'
+asciiFlattenCI 'ŷ' = 'y'
+asciiFlattenCI 'Ÿ' = 'y'
+asciiFlattenCI 'Ƴ' = 'y'
+asciiFlattenCI 'ƴ' = 'y'
+asciiFlattenCI 'Ȳ' = 'y'
+asciiFlattenCI 'ȳ' = 'y'
+asciiFlattenCI 'Ɏ' = 'y'
+asciiFlattenCI 'ɏ' = 'y'
+asciiFlattenCI 'ʎ' = 'y'
+asciiFlattenCI 'ʏ' = 'y'
+asciiFlattenCI 'ʸ' = 'y'
+asciiFlattenCI 'Ẏ' = 'y'
+asciiFlattenCI 'ẏ' = 'y'
+asciiFlattenCI 'ẙ' = 'y'
+asciiFlattenCI 'Ỳ' = 'y'
+asciiFlattenCI 'ỳ' = 'y'
+asciiFlattenCI 'Ỵ' = 'y'
+asciiFlattenCI 'ỵ' = 'y'
+asciiFlattenCI 'Ỷ' = 'y'
+asciiFlattenCI 'ỷ' = 'y'
+asciiFlattenCI 'Ỹ' = 'y'
+asciiFlattenCI 'ỹ' = 'y'
+asciiFlattenCI 'Ź' = 'z'
+asciiFlattenCI 'ź' = 'z'
+asciiFlattenCI 'Ż' = 'z'
+asciiFlattenCI 'ż' = 'z'
+asciiFlattenCI 'Ž' = 'z'
+asciiFlattenCI 'ž' = 'z'
+asciiFlattenCI 'Ƶ' = 'z'
+asciiFlattenCI 'ƶ' = 'z'
+asciiFlattenCI 'Ȥ' = 'z'
+asciiFlattenCI 'ȥ' = 'z'
+asciiFlattenCI 'ɀ' = 'z'
+asciiFlattenCI 'ʐ' = 'z'
+asciiFlattenCI 'ʑ' = 'z'
+asciiFlattenCI 'ᴢ' = 'z'
+asciiFlattenCI 'ᵶ' = 'z'
+asciiFlattenCI 'ᶎ' = 'z'
+asciiFlattenCI 'ᶻ' = 'z'
+asciiFlattenCI 'ᶼ' = 'z'
+asciiFlattenCI 'ᶽ' = 'z'
+asciiFlattenCI 'Ẑ' = 'z'
+asciiFlattenCI 'ẑ' = 'z'
+asciiFlattenCI 'Ẓ' = 'z'
+asciiFlattenCI 'ẓ' = 'z'
+asciiFlattenCI 'Ẕ' = 'z'
+asciiFlattenCI 'ẕ' = 'z'
+asciiFlattenCI 'ℨ' = 'z'
+asciiFlattenCI 'Ⱬ' = 'z'
+asciiFlattenCI 'ⱬ' = 'z'
+asciiFlattenCI x = x
diff --git a/LICENSE b/LICENSE
new file mode 100644
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,24 @@
+The MIT License (MIT)
+
+Copyright (c) 2016 Daniel Choi <dhchoi@gmail.com>
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+
+
diff --git a/Main.hs b/Main.hs
new file mode 100644
--- /dev/null
+++ b/Main.hs
@@ -0,0 +1,12 @@
+module Main where
+import Data.Char.AsciiFlatten
+import qualified Data.Text as T
+import qualified Data.Text.IO as T
+import Data.Char
+
+main :: IO ()
+main = 
+    T.getContents >>=
+    return . (T.map asciiFlattenCI) >>=
+    T.putStr
+
diff --git a/README.md b/README.md
new file mode 100644
--- /dev/null
+++ b/README.md
@@ -0,0 +1,46 @@
+# ascii-flatten
+
+This simple library provides a function to flatten non-ASCII European
+characters into nearest US-ASCII equivlent.
+
+See source for `Data.Char.AsciiFlatten` for the character conversions.
+
+The character translation table is derived from this URL:
+http://yob.id.au/2008/05/08/thinking-sphinx-and-unicode.html
+
+## Usage
+
+```haskell
+:m + Data.Char.AsciiFlatten
+...
+Ok, modules loaded: Data.Char.AsciiFlatten, Main.
+ghci> :m + Data.Char.AsciiFlatten 
+ghci> map asciiFlattenCI "café"
+"cafe"
+ghci> map asciiFlattenCI "Übermensch"
+"ubermensch"
+```
+
+Note that currently, all characters are flattened to lower case ASCII, because
+my source data only as case-insensitive mappings to lowercase ascii
+characters. If anyone wants to contribute case-sensitive conversion code
+mappings, please do.
+
+When performance matters, use 
+
+    Data.Text.map :: (Char -> Char) -> Text Text
+
+## Command line usage
+
+The package also installs a simple command line tool named `ascii-flatten` for
+use from the command line and in shell scripts:
+
+    $ echo café | ascii-flatten
+    cafe
+
+
+## Code generation
+
+The code for `asciiFlatten` is generated using the `build.sh` script in the
+project directory.
+
diff --git a/Setup.hs b/Setup.hs
new file mode 100644
--- /dev/null
+++ b/Setup.hs
@@ -0,0 +1,2 @@
+import Distribution.Simple
+main = defaultMain
diff --git a/ascii-flatten.cabal b/ascii-flatten.cabal
new file mode 100644
--- /dev/null
+++ b/ascii-flatten.cabal
@@ -0,0 +1,25 @@
+name:                ascii-flatten
+version:             0.1.0.0
+synopsis:            Flattens European non-ASCII characaters into ASCII
+homepage:            https://github.com/danchoi/ascii-flatten
+description:         Flattens European non-ASCII characaters into ASCII
+license:             MIT
+license-file:        LICENSE
+author:              Daniel Choi
+maintainer:          dhchoi@gmail.com
+copyright:           (c) 2016 Daniel Choi
+category:            Text
+build-type:          Simple
+cabal-version:       >=1.10
+
+library 
+  exposed-modules:     Data.Char.AsciiFlatten
+  build-depends:       base >=4.6 && <4.9
+  default-language:    Haskell2010
+
+executable ascii-flatten
+  main-is:             Main.hs
+  build-depends:       base >=4.6 && <4.9
+                     , ascii-flatten
+                     , text
+  default-language:    Haskell2010
diff --git a/build.sh b/build.sh
new file mode 100644
--- /dev/null
+++ b/build.sh
@@ -0,0 +1,7 @@
+#!/bin/bash
+
+# generates pattern matching code to inline into the module
+
+cat charset.txt | ./conv | runghc Conv.hs | awk -f genCode.awk
+
+
diff --git a/charset.txt b/charset.txt
new file mode 100644
--- /dev/null
+++ b/charset.txt
@@ -0,0 +1,845 @@
+00C0 a
+00C1 a
+00C2 a
+00C3 a
+00C4 a
+00C5 a
+00E0 a
+00E1 a
+00E2 a
+00E3 a
+00E4 a
+00E5 a
+0100 a
+0101 a
+0102 a
+0103 a
+010300 a
+0104 a
+0105 a
+01CD a
+01CE a
+01DE a
+01DF a
+01E0 a
+01E1 a
+01FA a
+01FB a
+0200 a
+0201 a
+0202 a
+0203 a
+0226 a
+0227 a
+023A a
+0250 a
+04D0 a
+04D1 a
+1D2C a
+1D43 a
+1D44 a
+1D8F a
+1E00 a
+1E01 a
+1E9A a
+1EA0 a
+1EA1 a
+1EA2 a
+1EA3 a
+1EA4 a
+1EA5 a
+1EA6 a
+1EA7 a
+1EA8 a
+1EA9 a
+1EAA a
+1EAB a
+1EAC a
+1EAD a
+1EAE a
+1EAF a
+1EB0 a
+1EB1 a
+1EB2 a
+1EB3 a
+1EB4 a
+1EB5 a
+1EB6 a
+1EB7 a
+2090 a
+2C65 a
+0180 b
+0181 b
+0182 b
+0183 b
+0243 b
+0253 b
+0299 b
+16D2 b
+1D03 b
+1D2E b
+1D2F b
+1D47 b
+1D6C b
+1D80 b
+1E02 b
+1E03 b
+1E04 b
+1E05 b
+1E06 b
+1E07 b
+00C7 c
+00E7 c
+0106 c
+0107 c
+0108 c
+0109 c
+010A c
+010B c
+010C c
+010D c
+0187 c
+0188 c
+023B c
+023C c
+0255 c
+0297 c
+1D9C c
+1D9D c
+1E08 c
+1E09 c
+212D c
+2184 c
+010E d
+010F d
+0110 d
+0111 d
+0189 d
+018A d
+018B d
+018C d
+01C5 d
+01F2 d
+0221 d
+0256 d
+0257 d
+1D05 d
+1D30 d
+1D48 d
+1D6D d
+1D81 d
+1D91 d
+1E0A d
+1E0B d
+1E0C d
+1E0D d
+1E0E d
+1E0F d
+1E10 d
+1E11 d
+1E12 d
+1E13 d
+00C8 e
+00C9 e
+00CA e
+00CB e
+00E8 e
+00E9 e
+00EA e
+00EB e
+0112 e
+0113 e
+0114 e
+0115 e
+0116 e
+0117 e
+0118 e
+0119 e
+011A e
+011B e
+018E e
+0190 e
+01DD e
+0204 e
+0205 e
+0206 e
+0207 e
+0228 e
+0229 e
+0246 e
+0247 e
+0258 e
+025B e
+025C e
+025D e
+025E e
+029A e
+1D07 e
+1D08 e
+1D31 e
+1D32 e
+1D49 e
+1D4B e
+1D4C e
+1D92 e
+1D93 e
+1D94 e
+1D9F e
+1E14 e
+1E15 e
+1E16 e
+1E17 e
+1E18 e
+1E19 e
+1E1A e
+1E1B e
+1E1C e
+1E1D e
+1EB8 e
+1EB9 e
+1EBA e
+1EBB e
+1EBC e
+1EBD e
+1EBE e
+1EBF e
+1EC0 e
+1EC1 e
+1EC2 e
+1EC3 e
+1EC4 e
+1EC5 e
+1EC6 e
+1EC7 e
+2091 e
+0191 f
+0192 f
+1D6E f
+1D82 f
+1DA0 f
+1E1E f
+1E1F f
+011C g
+011D g
+011E g
+011F g
+0120 g
+0121 g
+0122 g
+0123 g
+0193 g
+01E4 g
+01E5 g
+01E6 g
+01E7 g
+01F4 g
+01F5 g
+0260 g
+0261 g
+0262 g
+029B g
+1D33 g
+1D4D g
+1D77 g
+1D79 g
+1D83 g
+1DA2 g
+1E20 g
+1E21 g
+0124 h
+0125 h
+0126 h
+0127 h
+021E h
+021F h
+0265 h
+0266 h
+029C h
+02AE h
+02AF h
+02B0 h
+02B1 h
+1D34 h
+1DA3 h
+1E22 h
+1E23 h
+1E24 h
+1E25 h
+1E26 h
+1E27 h
+1E28 h
+1E29 h
+1E2A h
+1E2B h
+1E96 h
+210C h
+2C67 h
+2C68 h
+2C75 h
+2C76 h
+00CC i
+00CD i
+00CE i
+00CF i
+00EC i
+00ED i
+00EE i
+00EF i
+010309 i
+0128 i
+0129 i
+012A i
+012B i
+012C i
+012D i
+012E i
+012F i
+0130 i
+0131 i
+0197 i
+01CF i
+01D0 i
+0208 i
+0209 i
+020A i
+020B i
+0268 i
+026A i
+040D i
+0418 i
+0419 i
+0438 i
+0439 i
+0456 i
+1D09 i
+1D35 i
+1D4E i
+1D62 i
+1D7B i
+1D96 i
+1DA4 i
+1DA6 i
+1DA7 i
+1E2C i
+1E2D i
+1E2E i
+1E2F i
+1EC8 i
+1EC9 i
+1ECA i
+1ECB i
+2071 i
+2111 i
+0134 j
+0135 j
+01C8 j
+01CB j
+01F0 j
+0237 j
+0248 j
+0249 j
+025F j
+0284 j
+029D j
+02B2 j
+1D0A j
+1D36 j
+1DA1 j
+1DA8 j
+0136 k
+0137 k
+0198 k
+0199 k
+01E8 k
+01E9 k
+029E k
+1D0B k
+1D37 k
+1D4F k
+1D84 k
+1E30 k
+1E31 k
+1E32 k
+1E33 k
+1E34 k
+1E35 k
+2C69 k
+2C6A k
+0139 l
+013A l
+013B l
+013C l
+013D l
+013E l
+013F l
+0140 l
+0141 l
+0142 l
+019A l
+01C8 l
+0234 l
+023D l
+026B l
+026C l
+026D l
+029F l
+02E1 l
+1D0C l
+1D38 l
+1D85 l
+1DA9 l
+1DAA l
+1DAB l
+1E36 l
+1E37 l
+1E38 l
+1E39 l
+1E3A l
+1E3B l
+1E3C l
+1E3D l
+2C60 l
+2C61 l
+2C62 l
+019C m
+026F m
+0270 m
+0271 m
+1D0D m
+1D1F m
+1D39 m
+1D50 m
+1D5A m
+1D6F m
+1D86 m
+1DAC m
+1DAD m
+1E3E m
+1E3F m
+1E40 m
+1E41 m
+1E42 m
+1E43 m
+00D1 n
+00F1 n
+0143 n
+0144 n
+0145 n
+0146 n
+0147 n
+0148 n
+0149 n
+019D n
+019E n
+01CB n
+01F8 n
+01F9 n
+0220 n
+0235 n
+0272 n
+0273 n
+0274 n
+1D0E n
+1D3A n
+1D3B n
+1D70 n
+1D87 n
+1DAE n
+1DAF n
+1DB0 n
+1E44 n
+1E45 n
+1E46 n
+1E47 n
+1E48 n
+1E49 n
+1E4A n
+1E4B n
+207F n
+00D2 o
+00D3 o
+00D4 o
+00D5 o
+00D6 o
+00D8 o
+00F2 o
+00F3 o
+00F4 o
+00F5 o
+00F6 o
+00F8 o
+01030F o
+014C o
+014D o
+014E o
+014F o
+0150 o
+0151 o
+0186 o
+019F o
+01A0 o
+01A1 o
+01D1 o
+01D2 o
+01EA o
+01EB o
+01EC o
+01ED o
+01FE o
+01FF o
+020C o
+020D o
+020E o
+020F o
+022A o
+022B o
+022C o
+022D o
+022E o
+022F o
+0230 o
+0231 o
+0254 o
+0275 o
+043E o
+04E6 o
+04E7 o
+04E8 o
+04E9 o
+04EA o
+04EB o
+1D0F o
+1D10 o
+1D11 o
+1D12 o
+1D13 o
+1D16 o
+1D17 o
+1D3C o
+1D52 o
+1D53 o
+1D54 o
+1D55 o
+1D97 o
+1DB1 o
+1E4C o
+1E4D o
+1E4E o
+1E4F o
+1E50 o
+1E51 o
+1E52 o
+1E53 o
+1ECC o
+1ECD o
+1ECE o
+1ECF o
+1ED0 o
+1ED1 o
+1ED2 o
+1ED3 o
+1ED4 o
+1ED5 o
+1ED6 o
+1ED7 o
+1ED8 o
+1ED9 o
+1EDA o
+1EDB o
+1EDC o
+1EDD o
+1EDE o
+1EDF o
+1EE0 o
+1EE1 o
+1EE2 o
+1EE3 o
+2092 o
+2C9E o
+2C9F o
+01A4 p
+01A5 p
+1D18 p
+1D3E p
+1D56 p
+1D71 p
+1D7D p
+1D88 p
+1E54 p
+1E55 p
+1E56 p
+1E57 p
+2C63 p
+024A q
+024B q
+02A0 q
+0154 r
+0155 r
+0156 r
+0157 r
+0158 r
+0159 r
+0210 r
+0211 r
+0212 r
+0213 r
+024C r
+024D r
+0279 r
+027A r
+027B r
+027C r
+027D r
+027E r
+027F r
+0280 r
+0281 r
+02B3 r
+02B4 r
+02B5 r
+02B6 r
+1D19 r
+1D1A r
+1D3F r
+1D63 r
+1D72 r
+1D73 r
+1D89 r
+1DCA r
+1E58 r
+1E59 r
+1E5A r
+1E5B r
+1E5C r
+1E5D r
+1E5E r
+1E5F r
+211C r
+2C64 r
+00DF s
+015A s
+015B s
+015C s
+015D s
+015E s
+015F s
+0160 s
+0161 s
+017F s
+0218 s
+0219 s
+023F s
+0282 s
+02E2 s
+1D74 s
+1D8A s
+1DB3 s
+1E60 s
+1E61 s
+1E62 s
+1E63 s
+1E64 s
+1E65 s
+1E66 s
+1E67 s
+1E68 s
+1E69 s
+1E9B s
+0162 t
+0163 t
+0164 t
+0165 t
+0166 t
+0167 t
+01AB t
+01AC t
+01AD t
+01AE t
+021A t
+021B t
+0236 t
+023E t
+0287 t
+0288 t
+1D1B t
+1D40 t
+1D57 t
+1D75 t
+1DB5 t
+1E6A t
+1E6B t
+1E6C t
+1E6D t
+1E6E t
+1E6F t
+1E70 t
+1E71 t
+1E97 t
+2C66 t
+00D9 u
+00DA u
+00DB u
+00DC u
+00F9 u
+00FA u
+00FB u
+00FC u
+010316 u
+0168 u
+0169 u
+016A u
+016B u
+016C u
+016D u
+016E u
+016F u
+0170 u
+0171 u
+0172 u
+0173 u
+01AF u
+01B0 u
+01D3 u
+01D4 u
+01D5 u
+01D6 u
+01D7 u
+01D8 u
+01D9 u
+01DA u
+01DB u
+01DC u
+0214 u
+0215 u
+0216 u
+0217 u
+0244 u
+0289 u
+1D1C u
+1D1D u
+1D1E u
+1D41 u
+1D58 u
+1D59 u
+1D64 u
+1D7E u
+1D99 u
+1DB6 u
+1DB8 u
+1E72 u
+1E73 u
+1E74 u
+1E75 u
+1E76 u
+1E77 u
+1E78 u
+1E79 u
+1E7A u
+1E7B u
+1EE4 u
+1EE5 u
+1EE6 u
+1EE7 u
+1EE8 u
+1EE9 u
+1EEA u
+1EEB u
+1EEC u
+1EED u
+1EEE u
+1EEF u
+1EF0 u
+1EF1 u
+01B2 v
+0245 v
+028B v
+028C v
+1D20 v
+1D5B v
+1D65 v
+1D8C v
+1DB9 v
+1DBA v
+1E7C v
+1E7D v
+1E7E v
+1E7F v
+2C74 v
+0174 w
+0175 w
+028D w
+02B7 w
+1D21 w
+1D42 w
+1E80 w
+1E81 w
+1E82 w
+1E83 w
+1E84 w
+1E85 w
+1E86 w
+1E87 w
+1E88 w
+1E89 w
+1E98 w
+02E3 x
+1D8D x
+1E8A x
+1E8B x
+1E8C x
+1E8D x
+2093 x
+00DD y
+00FD y
+00FF y
+0176 y
+0177 y
+0178 y
+01B3 y
+01B4 y
+0232 y
+0233 y
+024E y
+024F y
+028E y
+028F y
+02B8 y
+1E8E y
+1E8F y
+1E99 y
+1EF2 y
+1EF3 y
+1EF4 y
+1EF5 y
+1EF6 y
+1EF7 y
+1EF8 y
+1EF9 y
+0179 z
+017A z
+017B z
+017C z
+017D z
+017E z
+01B5 z
+01B6 z
+0224 z
+0225 z
+0240 z
+0290 z
+0291 z
+1D22 z
+1D76 z
+1D8E z
+1DBB z
+1DBC z
+1DBD z
+1E90 z
+1E91 z
+1E92 z
+1E93 z
+1E94 z
+1E95 z
+2128 z
+2C6B z
+2C6C z
diff --git a/conv b/conv
new file mode 100644
--- /dev/null
+++ b/conv
@@ -0,0 +1,7 @@
+#!/usr/bin/env awk -f
+{
+cmd = "echo 'ibase=16; " $1 "'  |bc "
+cmd | getline charcode 
+close(cmd)
+print charcode " " $2
+}
diff --git a/genCode.awk b/genCode.awk
new file mode 100644
--- /dev/null
+++ b/genCode.awk
@@ -0,0 +1,7 @@
+#!/usr/bin/env awk -f
+$0 != "" {
+  print "asciiFlatten '" $1 "' = '" $2 "'"
+}
+END {
+  print "asciiFlatten x = x"
+}
diff --git a/stack.yaml b/stack.yaml
new file mode 100644
--- /dev/null
+++ b/stack.yaml
@@ -0,0 +1,35 @@
+# This file was automatically generated by stack init
+# For more information, see: http://docs.haskellstack.org/en/stable/yaml_configuration/
+
+# Specifies the GHC version and set of packages available (e.g., lts-3.5, nightly-2015-09-21, ghc-7.10.2)
+resolver: lts-5.16
+
+# Local packages, usually specified by relative directory name
+packages:
+- '.'
+# Packages to be pulled from upstream that are not in the resolver (e.g., acme-missiles-0.3)
+extra-deps: []
+
+# Override default flag values for local packages and extra-deps
+flags: {}
+
+# Extra package databases containing global packages
+extra-package-dbs: []
+
+# Control whether we use the GHC we find on the path
+# system-ghc: true
+
+# Require a specific version of stack, using version ranges
+# require-stack-version: -any # Default
+# require-stack-version: >= 1.0.0
+
+# Override the architecture used by stack, especially useful on Windows
+# arch: i386
+# arch: x86_64
+
+# Extra directories used by stack for building
+# extra-include-dirs: [/path/to/dir]
+# extra-lib-dirs: [/path/to/dir]
+
+# Allow a newer minor version of GHC than the snapshot specifies
+# compiler-check: newer-minor
