Sync to HEAD
[bpt/emacs.git] / lisp / language / ind-util.el
index d5478e1..80be2a9 100644 (file)
@@ -1,8 +1,8 @@
 ;;; ind-util.el --- Transliteration and Misc. Tools for Indian Languages -*- coding: iso-2022-7bit; -*-
 
-;; Copyright (C) 2001 Free Software Foundation, Inc.
+;; Copyright (C) 2001, 2003 Free Software Foundation, Inc.
 
-;; Maintainer:  KAWABATA, Taichi <batta@beige.ocn.ne.jp>
+;; Maintainer:  KAWABATA, Taichi <kawabata@m17n.org>
 ;; Keywords: multilingual, Indian, Devanagari
 
 ;; This file is part of GNU Emacs.
 
 (defun indian-regexp-of-hashtbl-keys (hashtbl)
   "Returns the regular expression of hashtable keys."
-  (let ((max-specpdl-size 1000))
-    (regexp-opt
-     (sort
-      (let (dummy)
-       (maphash (function (lambda (key val) (setq dummy (cons key dummy))))
-                hashtbl)
-       dummy)
-      (function (lambda (x y) (> (length x) (length y))))))))
+  (let (keys)
+    (maphash (lambda (key val) (push key keys)) hashtbl)
+    (regexp-opt keys)))
 
 (defvar indian-dev-base-table
   '(
     (;; VOWELS  (18)
      (?\e$,15E\e(B nil) (?\e$,15F\e(B ?\e$,15~\e(B) (?\e$,15G\e(B ?\e$,15\7f\e(B) (?\e$,15H\e(B ?\e$,16 \e(B) (?\e$,15I\e(B ?\e$,16!\e(B) (?\e$,15J\e(B ?\e$,16"\e(B)
-     (?\e$,15K\e(B ?\e$,16#\e(B) (?\e$,15L\e(B ?\e$,16$\e(B) (?\e$,15M\e(B ?\e$,16%\e(B) (?\e$,15N\e(B ?\e$,16&\e(B) (?\e$,15O\e(B ?\e$,16'\e(B) (?\e$,15P\e(B ?\e$,16(\e(B)
-     (?\e$,15Q\e(B ?\e$,16)\e(B) (?\e$,15R\e(B ?\e$,16*\e(B) (?\e$,15S\e(B ?\e$,16+\e(B) (?\e$,15T\e(B ?\e$,16,\e(B) (?\e$,16@\e(B ?\e$,16B\e(B) (?\e$,16A\e(B ?\e$,16C\e(B))
+     (?\e$,15K\e(B ?\e$,16#\e(B) (?\e$,15L\e(B ?\e$,16B\e(B) (?\e$,15M\e(B ?\e$,16%\e(B) (?\e$,15N\e(B ?\e$,16&\e(B) (?\e$,15O\e(B ?\e$,16'\e(B) (?\e$,15P\e(B ?\e$,16(\e(B)
+     (?\e$,15Q\e(B ?\e$,16)\e(B) (?\e$,15R\e(B ?\e$,16*\e(B) (?\e$,15S\e(B ?\e$,16+\e(B) (?\e$,15T\e(B ?\e$,16,\e(B) (?\e$,16@\e(B ?\e$,16$\e(B) (?\e$,16A\e(B ?\e$,16C\e(B))
     (;; CONSONANTS (currently 42, including special cases)
      ?\e$,15U\e(B ?\e$,15V\e(B ?\e$,15W\e(B ?\e$,15X\e(B ?\e$,15Y\e(B                  ;; GUTTRULS
      ?\e$,15Z\e(B ?\e$,15[\e(B ?\e$,15\\e(B ?\e$,15]\e(B ?\e$,15^\e(B                  ;; PALATALS
     (;; Inscript-extra (4)  (#, $, ^, *, ])
      "\e$,16-5p\e(B" "\e$,15p6-\e(B" "\e$,15d6-5p\e(B" "\e$,15v6-5p\e(B" "\e$,15|\e(B")))
 
-(defvar indian-pnj-base-table nil)
-(defvar indian-ori-base-table nil)
-(defvar indian-bng-base-table nil)
-(defvar indian-asm-base-table nil)
-(defvar indian-tlg-base-table nil)
-(defvar indian-knd-base-table nil)
-(defvar indian-mlm-base-table nil)
-(defvar indian-tml-base-table nil)
+;; Punjabi is also known as Gurmukhi.
+(defvar indian-pnj-base-table
+  '(
+    (;; VOWELS
+     (?\e$,18%\e(B nil) (?\e$,18&\e(B ?\e$,18^\e(B) (?\e$,18'\e(B ?\e$,18_\e(B) (?\e$,18(\e(B ?\e$,18`\e(B) (?\e$,18)\e(B ?\e$,18a\e(B) (?\e$,18*\e(B ?\e$,18b\e(B)
+     nil nil nil nil (?\e$,18/\e(B ?\e$,18g\e(B) (?\e$,180\e(B ?\e$,18h\e(B)
+     nil nil (?\e$,183\e(B ?\e$,18k\e(B) (?\e$,184\e(B ?\e$,18l\e(B) nil nil)
+    (;; CONSONANTS
+     ?\e$,185\e(B ?\e$,186\e(B ?\e$,187\e(B ?\e$,188\e(B ?\e$,189\e(B                  ;; GUTTRULS
+     ?\e$,18:\e(B ?\e$,18;\e(B ?\e$,18<\e(B ?\e$,18=\e(B ?\e$,18>\e(B                  ;; PALATALS
+     ?\e$,18?\e(B ?\e$,18@\e(B ?\e$,18A\e(B ?\e$,18B\e(B ?\e$,18C\e(B                  ;; CEREBRALS
+     ?\e$,18D\e(B ?\e$,18E\e(B ?\e$,18F\e(B ?\e$,18G\e(B ?\e$,18H\e(B nil              ;; DENTALS
+     ?\e$,18J\e(B ?\e$,18K\e(B ?\e$,18L\e(B ?\e$,18M\e(B ?\e$,18N\e(B                  ;; LABIALS
+     ?\e$,18O\e(B ?\e$,18P\e(B nil ?\e$,18R\e(B ?\e$,18S\e(B nil ?\e$,18U\e(B          ;; SEMIVOWELS
+     ?\e$,18V\e(B nil ?\e$,18X\e(B ?\e$,18Y\e(B                    ;; SIBILANTS
+     nil ?\e$,18y\e(B ?\e$,18z\e(B ?\e$,18{\e(B ?\e$,18|\e(B nil ?\e$,18~\e(B nil      ;; NUKTAS
+     "\e$,18<8m8>\e(B" nil)
+    (;; Misc Symbols (7)
+     nil ?\e$,18"\e(B nil nil ?\e$,18m\e(B nil nil) ;; ek onkar, etc.
+    (;; Digits
+     ?\e$,19&\e(B ?\e$,19'\e(B ?\e$,19(\e(B ?\e$,19)\e(B ?\e$,19*\e(B ?\e$,19+\e(B ?\e$,19,\e(B ?\e$,19-\e(B ?\e$,19.\e(B ?\e$,19/\e(B)
+    (;; Inscript-extra (4)  (#, $, ^, *, ])
+     "\e$,18m8P\e(B" "\e$,18P8m\e(B" "\e$,18D8m8P\e(B" "\e$,18V8m8P\e(B" "\e$,18\\e(B")))
+
+(defvar indian-gjr-base-table
+  '(
+    (;; VOWELS
+     (?\e$,19E\e(B nil) (?\e$,19F\e(B ?\e$,19~\e(B) (?\e$,19G\e(B ?\e$,19\7f\e(B) (?\e$,19H\e(B ?\e$,1: \e(B) (?\e$,19I\e(B ?\e$,1:!\e(B) (?\e$,19J\e(B ?\e$,1:"\e(B)
+     (?\e$,19K\e(B ?\e$,1:#\e(B) nil (?\e$,19M\e(B ?\e$,1:%\e(B) nil (?\e$,19O\e(B ?\e$,1:'\e(B) (?\e$,19P\e(B ?\e$,1:(\e(B)
+     (?\e$,19Q\e(B ?\e$,1:)\e(B) nil (?\e$,19S\e(B ?\e$,1:+\e(B) (?\e$,19T\e(B ?\e$,1:,\e(B) (?\e$,1:@\e(B ?\e$,1:$\e(B) nil)
+    (;; CONSONANTS
+     ?\e$,19U\e(B ?\e$,19V\e(B ?\e$,19W\e(B ?\e$,19X\e(B ?\e$,19Y\e(B                  ;; GUTTRULS
+     ?\e$,19Z\e(B ?\e$,19[\e(B ?\e$,19\\e(B ?\e$,19]\e(B ?\e$,19^\e(B                  ;; PALATALS
+     ?\e$,19_\e(B ?\e$,19`\e(B ?\e$,19a\e(B ?\e$,19b\e(B ?\e$,19c\e(B                  ;; CEREBRALS
+     ?\e$,19d\e(B ?\e$,19e\e(B ?\e$,19f\e(B ?\e$,19g\e(B ?\e$,19h\e(B nil              ;; DENTALS
+     ?\e$,19j\e(B ?\e$,19k\e(B ?\e$,19l\e(B ?\e$,19m\e(B ?\e$,19n\e(B                  ;; LABIALS
+     ?\e$,19o\e(B ?\e$,19p\e(B nil ?\e$,19r\e(B ?\e$,19s\e(B nil ?\e$,19u\e(B          ;; SEMIVOWELS
+     ?\e$,19v\e(B ?\e$,19w\e(B ?\e$,19x\e(B ?\e$,19y\e(B                    ;; SIBILANTS
+     nil nil nil nil nil nil nil nil      ;; NUKTAS
+     "\e$,19\:-9^\e(B" "\e$,19U:-9w\e(B")
+    (;; Misc Symbols (7)
+     ?\e$,19A\e(B ?\e$,19B\e(B ?\e$,19C\e(B ?\e$,19}\e(B ?\e$,1:-\e(B ?\e$,1:0\e(B nil)
+    (;; Digits
+     ?\e$,1:F\e(B ?\e$,1:G\e(B ?\e$,1:H\e(B ?\e$,1:I\e(B ?\e$,1:J\e(B ?\e$,1:K\e(B ?\e$,1:L\e(B ?\e$,1:M\e(B ?\e$,1:N\e(B ?\e$,1:O\e(B)
+    (;; Inscript-extra (4)  (#, $, ^, *, ])
+     "\e$,1:-9p\e(B" "\e$,19p:-\e(B" "\e$,19d:-9p\e(B" "\e$,19v:-9p\e(B" "\e$,19|\e(B")))
+
+(defvar indian-ori-base-table
+  '(
+    (;; VOWELS
+     (?\e$,1:e\e(B nil) (?\e$,1:f\e(B ?\e$,1;>\e(B) (?\e$,1:g\e(B ?\e$,1;?\e(B) (?\e$,1:h\e(B ?\e$,1;@\e(B) (?\e$,1:i\e(B ?\e$,1;A\e(B) (?\e$,1:j\e(B ?\e$,1;B\e(B)
+     (?\e$,1:k\e(B ?\e$,1;C\e(B) (?\e$,1:l\e(B nil) nil nil (?\e$,1:o\e(B ?\e$,1;G\e(B) (?\e$,1:p\e(B ?\e$,1;H\e(B)
+     nil nil (?\e$,1:s\e(B ?\e$,1;K\e(B) (?\e$,1:t\e(B ?\e$,1;L\e(B) (?\e$,1;`\e(B nil) (?\e$,1;a\e(B nil))
+    (;; CONSONANTS
+     ?\e$,1:u\e(B ?\e$,1:v\e(B ?\e$,1:w\e(B ?\e$,1:x\e(B ?\e$,1:y\e(B                  ;; GUTTRULS
+     ?\e$,1:z\e(B ?\e$,1:{\e(B ?\e$,1:|\e(B ?\e$,1:}\e(B ?\e$,1:~\e(B                  ;; PALATALS
+     ?\e$,1:\7f\e(B ?\e$,1; \e(B ?\e$,1;!\e(B ?\e$,1;"\e(B ?\e$,1;#\e(B                  ;; CEREBRALS
+     ?\e$,1;$\e(B ?\e$,1;%\e(B ?\e$,1;&\e(B ?\e$,1;'\e(B ?\e$,1;(\e(B nil              ;; DENTALS
+     ?\e$,1;*\e(B ?\e$,1;+\e(B ?\e$,1;,\e(B ?\e$,1;-\e(B ?\e$,1;.\e(B                  ;; LABIALS
+     ?\e$,1;/\e(B ?\e$,1;0\e(B nil ?\e$,1;2\e(B ?\e$,1;3\e(B nil nil          ;; SEMIVOWELS
+     ?\e$,1;6\e(B ?\e$,1;7\e(B ?\e$,1;8\e(B ?\e$,1;9\e(B                    ;; SIBILANTS
+     nil nil nil nil ?\e$,1;\\e(B ?\e$,1;]\e(B nil ?\e$,1;_\e(B      ;; NUKTAS
+     "\e$,1:|;M:~\e(B" "\e$,1:u;M;7\e(B")
+    (;; Misc Symbols
+     ?\e$,1:a\e(B ?\e$,1:b\e(B ?\e$,1:c\e(B ?\e$,1;=\e(B ?\e$,1;M\e(B nil nil)
+    (;; Digits
+     ?\e$,1;f\e(B ?\e$,1;g\e(B ?\e$,1;h\e(B ?\e$,1;i\e(B ?\e$,1;j\e(B ?\e$,1;k\e(B ?\e$,1;l\e(B ?\e$,1;m\e(B ?\e$,1;n\e(B ?\e$,1;o\e(B)
+    (;; Inscript-extra (4)  (#, $, ^, *, ])
+     "\e$,1;M;0\e(B" "\e$,1;0;M\e(B" "\e$,1;$;M;0\e(B" "\e$,1;6;M;0\e(B" "\e$,1;<\e(B")))
+
+(defvar indian-bng-base-table
+  '(
+    (;; VOWELS
+     (?\e$,16e\e(B nil) (?\e$,16f\e(B ?\e$,17>\e(B) (?\e$,16g\e(B ?\e$,17?\e(B) (?\e$,16h\e(B ?\e$,17@\e(B) (?\e$,16i\e(B ?\e$,17A\e(B) (?\e$,16j\e(B ?\e$,17B\e(B)
+     (?\e$,16k\e(B ?\e$,17C\e(B) (?\e$,16l\e(B ?\e$,17b\e(B) nil nil (?\e$,16o\e(B ?\e$,17G\e(B) (?\e$,16p\e(B ?\e$,17H\e(B)
+     nil nil (?\e$,16s\e(B ?\e$,17K\e(B) (?\e$,16t\e(B ?\e$,17L\e(B) (?\e$,17`\e(B ?\e$,17D\e(B) (?\e$,17a\e(B ?\e$,17c\e(B))
+    (;; CONSONANTS
+     ?\e$,16u\e(B ?\e$,16v\e(B ?\e$,16w\e(B ?\e$,16x\e(B ?\e$,16y\e(B                  ;; GUTTRULS
+     ?\e$,16z\e(B ?\e$,16{\e(B ?\e$,16|\e(B ?\e$,16}\e(B ?\e$,16~\e(B                  ;; PALATALS
+     ?\e$,16\7f\e(B ?\e$,17 \e(B ?\e$,17!\e(B ?\e$,17"\e(B ?\e$,17#\e(B                  ;; CEREBRALS
+     ?\e$,17$\e(B ?\e$,17%\e(B ?\e$,17&\e(B ?\e$,17'\e(B ?\e$,17(\e(B nil              ;; DENTALS
+     ?\e$,17*\e(B ?\e$,17+\e(B ?\e$,17,\e(B ?\e$,17-\e(B ?\e$,17.\e(B                  ;; LABIALS
+     ?\e$,17/\e(B ?\e$,170\e(B nil ?\e$,172\e(B nil nil nil          ;; SEMIVOWELS
+     ?\e$,176\e(B ?\e$,177\e(B ?\e$,178\e(B ?\e$,179\e(B                    ;; SIBILANTS
+     nil nil nil nil ?\e$,17\\e(B ?\e$,17]\e(B nil ?\e$,17_\e(B      ;; NUKTAS
+     "\e$,16|7M6~\e(B" "\e$,16u7M77\e(B")
+    (;; Misc Symbols
+     ?\e$,16a\e(B ?\e$,16b\e(B ?\e$,16c\e(B nil ?\e$,17M\e(B nil nil)
+    (;; Digits
+     ?\e$,17f\e(B ?\e$,17g\e(B ?\e$,17h\e(B ?\e$,17i\e(B ?\e$,17j\e(B ?\e$,17k\e(B ?\e$,17l\e(B ?\e$,17m\e(B ?\e$,17n\e(B ?\e$,17o\e(B)
+    (;; Inscript-extra (4)  (#, $, ^, *, ])
+     "\e$,17M70\e(B" "\e$,1707M\e(B" "\e$,17$7M70\e(B" "\e$,1767M70\e(B" "\e$,17<\e(B")))
+
+(defvar indian-asm-base-table
+  '(
+    (;; VOWELS
+     (?\e$,16e\e(B nil) (?\e$,16f\e(B ?\e$,17>\e(B) (?\e$,16g\e(B ?\e$,17?\e(B) (?\e$,16h\e(B ?\e$,17@\e(B) (?\e$,16i\e(B ?\e$,17A\e(B) (?\e$,16j\e(B ?\e$,17B\e(B)
+     (?\e$,16k\e(B ?\e$,17C\e(B) (?\e$,16l\e(B ?\e$,17b\e(B) nil nil (?\e$,16o\e(B ?\e$,17G\e(B) (?\e$,16p\e(B ?\e$,17H\e(B)
+     nil nil (?\e$,16s\e(B ?\e$,17K\e(B) (?\e$,16t\e(B ?\e$,17L\e(B) (?\e$,17`\e(B ?\e$,17D\e(B) (?\e$,17a\e(B ?\e$,17c\e(B))
+    (;; CONSONANTS
+     ?\e$,16u\e(B ?\e$,16v\e(B ?\e$,16w\e(B ?\e$,16x\e(B ?\e$,16y\e(B                  ;; GUTTRULS
+     ?\e$,16z\e(B ?\e$,16{\e(B ?\e$,16|\e(B ?\e$,16}\e(B ?\e$,16~\e(B                  ;; PALATALS
+     ?\e$,16\7f\e(B ?\e$,17 \e(B ?\e$,17!\e(B ?\e$,17"\e(B ?\e$,17#\e(B                  ;; CEREBRALS
+     ?\e$,17$\e(B ?\e$,17%\e(B ?\e$,17&\e(B ?\e$,17'\e(B ?\e$,17(\e(B nil              ;; DENTALS
+     ?\e$,17*\e(B ?\e$,17+\e(B ?\e$,17,\e(B ?\e$,17-\e(B ?\e$,17.\e(B                  ;; LABIALS
+     ?\e$,17/\e(B ?\e$,17p\e(B nil ?\e$,172\e(B nil nil ?\e$,17q\e(B          ;; SEMIVOWELS
+     ?\e$,176\e(B ?\e$,177\e(B ?\e$,178\e(B ?\e$,179\e(B                    ;; SIBILANTS
+     nil nil nil nil ?\e$,17\\e(B ?\e$,17]\e(B nil ?\e$,17_\e(B      ;; NUKTAS
+     "\e$,16|7M6~\e(B" "\e$,16u7M77\e(B")
+    (;; Misc Symbols
+     ?\e$,16a\e(B ?\e$,16b\e(B ?\e$,16c\e(B nil ?\e$,17M\e(B nil nil)
+    (;; Digits
+     ?\e$,17f\e(B ?\e$,17g\e(B ?\e$,17h\e(B ?\e$,17i\e(B ?\e$,17j\e(B ?\e$,17k\e(B ?\e$,17l\e(B ?\e$,17m\e(B ?\e$,17n\e(B ?\e$,17o\e(B)
+    (;; Inscript-extra (4)  (#, $, ^, *, ])
+     "\e$,17M7p\e(B" "\e$,17p7M\e(B" "\e$,17$7M7p\e(B" "\e$,1767M7p\e(B" "\e$,17<\e(B")))
+
+(defvar indian-tlg-base-table
+  '(
+    (;; VOWELS
+     (?\e$,1=E\e(B nil) (?\e$,1=F\e(B ?\e$,1=~\e(B) (?\e$,1=G\e(B ?\e$,1=\7f\e(B) (?\e$,1=H\e(B ?\e$,1> \e(B) (?\e$,1=I\e(B ?\e$,1>!\e(B) (?\e$,1=J\e(B ?\e$,1>"\e(B)
+     (?\e$,1=K\e(B ?\e$,1>#\e(B) (?\e$,1=L\e(B nil) nil (?\e$,1=O\e(B ?\e$,1>'\e(B) (?\e$,1=N\e(B ?\e$,1>&\e(B) (?\e$,1=P\e(B ?\e$,1>(\e(B)
+     nil (?\e$,1=S\e(B ?\e$,1>+\e(B) (?\e$,1=R\e(B ?\e$,1>*\e(B) (?\e$,1=T\e(B ?\e$,1>,\e(B) (?\e$,1>@\e(B ?\e$,1>$\e(B) (?\e$,1>A\e(B nil))
+    (;; CONSONANTS
+     ?\e$,1=U\e(B ?\e$,1=V\e(B ?\e$,1=W\e(B ?\e$,1=X\e(B ?\e$,1=Y\e(B                  ;; GUTTRULS
+     ?\e$,1=Z\e(B ?\e$,1=[\e(B ?\e$,1=\\e(B ?\e$,1=]\e(B ?\e$,1=^\e(B                  ;; PALATALS
+     ?\e$,1=_\e(B ?\e$,1=`\e(B ?\e$,1=a\e(B ?\e$,1=b\e(B ?\e$,1=c\e(B                  ;; CEREBRALS
+     ?\e$,1=d\e(B ?\e$,1=e\e(B ?\e$,1=f\e(B ?\e$,1=g\e(B ?\e$,1=h\e(B nil              ;; DENTALS
+     ?\e$,1=j\e(B ?\e$,1=k\e(B ?\e$,1=l\e(B ?\e$,1=m\e(B ?\e$,1=n\e(B                  ;; LABIALS
+     ?\e$,1=o\e(B ?\e$,1=p\e(B ?\e$,1=q\e(B ?\e$,1=r\e(B ?\e$,1=s\e(B nil ?\e$,1=u\e(B          ;; SEMIVOWELS
+     ?\e$,1=v\e(B ?\e$,1=w\e(B ?\e$,1=x\e(B ?\e$,1=y\e(B                    ;; SIBILANTS
+     nil nil nil nil nil nil nil nil      ;; NUKTAS
+     "\e$,1=\>-=^\e(B" "\e$,1=U>-=w\e(B")
+    (;; Misc Symbols
+     ?\e$,1=A\e(B ?\e$,1=B\e(B ?\e$,1=C\e(B nil ?\e$,1>-\e(B nil nil)
+    (;; Digits
+     ?\e$,1>F\e(B ?\e$,1>G\e(B ?\e$,1>H\e(B ?\e$,1>I\e(B ?\e$,1>J\e(B ?\e$,1>K\e(B ?\e$,1>L\e(B ?\e$,1>M\e(B ?\e$,1>N\e(B ?\e$,1>O\e(B)
+    (;; Inscript-extra (4)  (#, $, ^, *, ])
+     "\e$,1>-=p\e(B" "\e$,1=p>-\e(B" "\e$,1=d>-=p\e(B" "\e$,1=v>-=p\e(B" nil)))
+
+(defvar indian-knd-base-table
+  '(
+    (;; VOWELS
+     (?\e$,1>e\e(B nil) (?\e$,1>f\e(B ?\e$,1?>\e(B) (?\e$,1>g\e(B ?\e$,1??\e(B) (?\e$,1>h\e(B ?\e$,1?@\e(B) (?\e$,1>i\e(B ?\e$,1?A\e(B) (?\e$,1>j\e(B ?\e$,1?B\e(B)
+     (?\e$,1>k\e(B ?\e$,1?C\e(B) (?\e$,1>l\e(B nil) nil (?\e$,1>o\e(B ?\e$,1?G\e(B) (?\e$,1>n\e(B ?\e$,1?F\e(B) (?\e$,1>p\e(B ?\e$,1?H\e(B)
+     nil (?\e$,1>s\e(B ?\e$,1?K\e(B) (?\e$,1>r\e(B ?\e$,1?J\e(B) (?\e$,1>t\e(B ?\e$,1?L\e(B) (?\e$,1?`\e(B ?\e$,1?D\e(B) (?\e$,1?a\e(B nil))
+    (;; CONSONANTS
+     ?\e$,1>u\e(B ?\e$,1>v\e(B ?\e$,1>w\e(B ?\e$,1>x\e(B ?\e$,1>y\e(B                  ;; GUTTRULS
+     ?\e$,1>z\e(B ?\e$,1>{\e(B ?\e$,1>|\e(B ?\e$,1>}\e(B ?\e$,1>~\e(B                  ;; PALATALS
+     ?\e$,1>\7f\e(B ?\e$,1? \e(B ?\e$,1?!\e(B ?\e$,1?"\e(B ?\e$,1?#\e(B                  ;; CEREBRALS
+     ?\e$,1?$\e(B ?\e$,1?%\e(B ?\e$,1?&\e(B ?\e$,1?'\e(B ?\e$,1?(\e(B nil              ;; DENTALS
+     ?\e$,1?*\e(B ?\e$,1?+\e(B ?\e$,1?,\e(B ?\e$,1?-\e(B ?\e$,1?.\e(B                  ;; LABIALS
+     ?\e$,1?/\e(B ?\e$,1?0\e(B ?\e$,1?1\e(B ?\e$,1?2\e(B ?\e$,1?3\e(B nil ?\e$,1?5\e(B          ;; SEMIVOWELS
+     ?\e$,1?6\e(B ?\e$,1?7\e(B ?\e$,1?8\e(B ?\e$,1?9\e(B                    ;; SIBILANTS
+     nil nil nil nil nil nil ?\e$,1?^\e(B nil      ;; NUKTAS
+     "\e$,1>|?M>~\e(B" "\e$,1>u?M?7\e(B")
+    (;; Misc Symbols
+     nil ?\e$,1>b\e(B ?\e$,1>c\e(B nil ?\e$,1?M\e(B nil nil)
+    (;; Digits
+     ?\e$,1?f\e(B ?\e$,1?g\e(B ?\e$,1?h\e(B ?\e$,1?i\e(B ?\e$,1?j\e(B ?\e$,1?k\e(B ?\e$,1?l\e(B ?\e$,1?m\e(B ?\e$,1?n\e(B ?\e$,1?o\e(B)
+    (;; Inscript-extra (4)  (#, $, ^, *, ])
+     "\e$,1?M?0\e(B" "\e$,1?0?M\e(B" "\e$,1?$?M?0\e(B" "\e$,1?6?M?0\e(B" nil)))
+
+(defvar indian-mlm-base-table
+  '(
+    (;; VOWELS
+     (?\e$,1@%\e(B nil) (?\e$,1@&\e(B ?\e$,1@^\e(B) (?\e$,1@'\e(B ?\e$,1@_\e(B) (?\e$,1@(\e(B ?\e$,1@`\e(B) (?\e$,1@)\e(B ?\e$,1@a\e(B) (?\e$,1@*\e(B ?\e$,1@b\e(B)
+     (?\e$,1@+\e(B ?\e$,1@c\e(B) (?\e$,1@,\e(B nil) nil (?\e$,1@/\e(B ?\e$,1@g\e(B) (?\e$,1@.\e(B ?\e$,1@f\e(B) (?\e$,1@0\e(B ?\e$,1@h\e(B)
+     nil (?\e$,1@3\e(B ?\e$,1@k\e(B) (?\e$,1@2\e(B ?\e$,1@j\e(B) (?\e$,1@4\e(B ?\e$,1@l\e(B) nil nil)
+    (;; CONSONANTS
+     ?\e$,1@5\e(B ?\e$,1@6\e(B ?\e$,1@7\e(B ?\e$,1@8\e(B ?\e$,1@9\e(B                  ;; GUTTRULS
+     ?\e$,1@:\e(B ?\e$,1@;\e(B ?\e$,1@<\e(B ?\e$,1@=\e(B ?\e$,1@>\e(B                  ;; PALATALS
+     ?\e$,1@?\e(B ?\e$,1@@\e(B ?\e$,1@A\e(B ?\e$,1@B\e(B ?\e$,1@C\e(B                  ;; CEREBRALS
+     ?\e$,1@D\e(B ?\e$,1@E\e(B ?\e$,1@F\e(B ?\e$,1@G\e(B ?\e$,1@H\e(B nil              ;; DENTALS
+     ?\e$,1@J\e(B ?\e$,1@K\e(B ?\e$,1@L\e(B ?\e$,1@M\e(B ?\e$,1@N\e(B                  ;; LABIALS
+     ?\e$,1@O\e(B ?\e$,1@P\e(B ?\e$,1@Q\e(B ?\e$,1@R\e(B ?\e$,1@S\e(B ?\e$,1@T\e(B ?\e$,1@U\e(B          ;; SEMIVOWELS
+     ?\e$,1@V\e(B ?\e$,1@W\e(B ?\e$,1@X\e(B ?\e$,1@Y\e(B                    ;; SIBILANTS
+     nil nil nil nil nil nil nil nil      ;; NUKTAS
+     "\e$,1@<@m@>\e(B" "\e$,1@5@m@W\e(B")
+    (;; Misc Symbols
+     nil ?\e$,1@"\e(B ?\e$,1@#\e(B nil ?\e$,1@m\e(B nil nil)
+    (;; Digits
+     ?\e$,1A&\e(B ?\e$,1A'\e(B ?\e$,1A(\e(B ?\e$,1A)\e(B ?\e$,1A*\e(B ?\e$,1A+\e(B ?\e$,1A,\e(B ?\e$,1A-\e(B ?\e$,1A.\e(B ?\e$,1A/\e(B)
+    (;; Inscript-extra (4)  (#, $, ^, *, ])
+     "\e$,1@m@P\e(B" "\e$,1@P@m\e(B" "\e$,1@D@m@P\e(B" "\e$,1@V@m@P\e(B" nil)))
+
+(defvar indian-tml-base-table
+  '(
+    (;; VOWELS
+     (?\e$,1<%\e(B nil) (?\e$,1<&\e(B ?\e$,1<^\e(B) (?\e$,1<'\e(B ?\e$,1<_\e(B) (?\e$,1<(\e(B ?\e$,1<`\e(B) (?\e$,1<)\e(B ?\e$,1<a\e(B) (?\e$,1<*\e(B ?\e$,1<b\e(B)
+     nil nil nil (?\e$,1</\e(B ?\e$,1<g\e(B) (?\e$,1<.\e(B ?\e$,1<f\e(B) (?\e$,1<0\e(B ?\e$,1<h\e(B)
+     nil (?\e$,1<3\e(B ?\e$,1<k\e(B) (?\e$,1<2\e(B ?\e$,1<j\e(B) (?\e$,1<4\e(B ?\e$,1<l\e(B) nil nil)
+    (;; CONSONANTS
+     ?\e$,1<5\e(B nil nil nil ?\e$,1<9\e(B                  ;; GUTTRULS
+     ?\e$,1<:\e(B nil ?\e$,1<<\e(B nil ?\e$,1<>\e(B                  ;; PALATALS
+     ?\e$,1<?\e(B nil nil nil ?\e$,1<C\e(B                  ;; CEREBRALS
+     ?\e$,1<D\e(B nil nil nil ?\e$,1<H\e(B ?\e$,1<I\e(B              ;; DENTALS
+     ?\e$,1<J\e(B nil nil nil ?\e$,1<N\e(B                  ;; LABIALS
+     ?\e$,1<O\e(B ?\e$,1<P\e(B ?\e$,1<Q\e(B ?\e$,1<R\e(B ?\e$,1<S\e(B ?\e$,1<T\e(B ?\e$,1<U\e(B          ;; SEMIVOWELS
+     nil ?\e$,1<W\e(B ?\e$,1<X\e(B ?\e$,1<Y\e(B                    ;; SIBILANTS
+     nil nil nil nil nil nil nil nil      ;; NUKTAS
+     "\e$,1<<<m<>\e(B" "\e$,1<5<m<W\e(B")
+    (;; Misc Symbols
+     nil ?\e$,1<"\e(B ?\e$,1<#\e(B nil ?\e$,1<m\e(B nil nil)
+    (;; Digits
+     nil ?\e$,1='\e(B ?\e$,1=(\e(B ?\e$,1=)\e(B ?\e$,1=*\e(B ?\e$,1=+\e(B ?\e$,1=,\e(B ?\e$,1=-\e(B ?\e$,1=.\e(B ?\e$,1=/\e(B)
+    (;; Inscript-extra (4)  (#, $, ^, *, ])
+     "\e$,1<m<P\e(B" "\e$,1<P<m\e(B" "\e$,1<D<m<P\e(B" nil nil)))
 
 (defvar indian-base-table-to-language-alist
   '((indian-dev-base-table . "Devanagari")
   '(;; for encode/decode
     (;; vowels -- 18
      "a" ("aa" "A") "i" ("ii" "I") "u" ("uu" "U")
-     ("RRi" "R^i") ("LLi" "L^i") (".c" "e.c") nil "e" "ai"
-     "o.c"  nil   "o"   "au"  ("RRI" "R^I") ("LLI" "L^I"))
+     ("RRi" "R^i") ("LLi" "L^i") (".c" "e.c") "E" "e" "ai"
+     "o.c"  "O"   "o"   "au"  ("RRI" "R^I") ("LLI" "L^I"))
     (;; consonants -- 40
      "k"   "kh"  "g"   "gh"  ("~N" "N^")
      "ch" ("Ch" "chh") "j" "jh" ("~n" "JN")
@@ -198,10 +392,10 @@ FUNCTION will be called 15 times."
   (if seqrest
       (mapcar
        (lambda (x)
-        (apply
-         'mapthread
-         `(lambda (&rest y) (apply ',function x y))
-         seqrest))
+         (apply
+          'mapthread
+          `(lambda (&rest y) (apply ',function x y))
+          seqrest))
        seq1)
   (mapcar function seq1)))
 
@@ -215,10 +409,8 @@ FUNCTION will be called 15 times."
       (if (stringp trans-char) (setq trans-char (list trans-char)))
       (if (characterp char) (setq char (char-to-string char)))
       (puthash char (car trans-char) encode-hash)
-      (mapc
-       (lambda (trans)
-        (puthash trans char decode-hash))
-       trans-char))))
+      (dolist (trans trans-char)
+        (puthash trans char decode-hash)))))
 
 (defun indian--map (f l1 l2)
   (while l1
@@ -263,8 +455,8 @@ FUNCTION will be called 15 times."
 
 (defun indian-make-hash (table trans-table)
   "Indian Transliteration Hash for decode/encode"
-  (let* ((encode-hash (makehash 'equal))
-        (decode-hash (makehash 'equal))
+  (let* ((encode-hash (make-hash-table :test 'equal))
+        (decode-hash (make-hash-table :test 'equal))
         (hashtbls (cons encode-hash decode-hash))
         (vowels     (elt table 0))
         (consonants (elt table 1))
@@ -293,6 +485,41 @@ FUNCTION will be called 15 times."
   (indian-make-hash indian-dev-base-table
                          indian-aiba-table))
 
+(defvar indian-pnj-itrans-v5-hash
+  (indian-make-hash indian-pnj-base-table
+                         indian-itrans-v5-table))
+
+(defvar indian-gjr-itrans-v5-hash
+  (indian-make-hash indian-gjr-base-table
+                         indian-itrans-v5-table))
+
+(defvar indian-ori-itrans-v5-hash
+  (indian-make-hash indian-ori-base-table
+                         indian-itrans-v5-table))
+
+(defvar indian-bng-itrans-v5-hash
+  (indian-make-hash indian-bng-base-table
+                         indian-itrans-v5-table))
+
+(defvar indian-asm-itrans-v5-hash
+  (indian-make-hash indian-asm-base-table
+                         indian-itrans-v5-table))
+
+(defvar indian-tlg-itrans-v5-hash
+  (indian-make-hash indian-tlg-base-table
+                         indian-itrans-v5-table))
+
+(defvar indian-knd-itrans-v5-hash
+  (indian-make-hash indian-knd-base-table
+                         indian-itrans-v5-table))
+
+(defvar indian-mlm-itrans-v5-hash
+  (indian-make-hash indian-mlm-base-table
+                         indian-itrans-v5-table))
+
+(defvar indian-tml-itrans-v5-hash
+  (indian-make-hash indian-tml-base-table
+                         indian-itrans-v5-table))
 )
 
 (defmacro indian-translate-region (from to hashtable encode-p)
@@ -347,46 +574,10 @@ FUNCTION will be called 15 times."
 
 ;;; IS 13194 utilities
 
-;; The following provide conversion between IS 13194 (ISCII) and UCS.
-
-(defvar is13194-default-repertory 'devanagari)
-
-(defvar is13194-repertory-to-ucs-script
-  `((DEF ?\x40 ,is13194-default-repertory)
-    (RMN ?\x41 ,is13194-default-repertory)
-    (DEV ?\x42 devanagari)
-    (BNG ?\x43 bengali)
-    (TML ?\x44 tamil)
-    (TLG ?\x45 telugu)
-    (ASM ?\x46 bengali)
-    (ORI ?\x47 oriya)
-    (KND ?\x48 kannada)
-    (MLM ?\x49 malayalam)
-    (GJR ?\x4a gujarati)
-    (PNJ ?\x4b gurmukhi)))
-
-;; for guiding find-variable function.
-(defvar is13194-to-ucs-devanagari-hashtbl nil)
-(defvar is13194-to-ucs-devanagari-regexp nil)
-(defvar is13194-to-ucs-bengali-hashtbl nil)
-(defvar is13194-to-ucs-bengali-regexp nil)
-(defvar is13194-to-ucs-assamese-hashtbl nil)
-(defvar is13194-to-ucs-assamese-regexp nil)
-(defvar is13194-to-ucs-gurmukhi-hashtbl nil)
-(defvar is13194-to-ucs-gurmukhi-regexp nil)
-(defvar is13194-to-ucs-gujarati-hashtbl nil)
-(defvar is13194-to-ucs-gujarati-regexp nil)
-(defvar is13194-to-ucs-oriya-hashtbl nil)
-(defvar is13194-to-ucs-oriya-regexp nil)
-(defvar is13194-to-ucs-tamil-hashtbl nil)
-(defvar is13194-to-ucs-tamil-regexp nil)
-(defvar is13194-to-ucs-telugu-hashtbl nil)
-(defvar is13194-to-ucs-telugu-regexp nil)
-(defvar is13194-to-ucs-malayalam-hashtbl nil)
-(defvar is13194-to-ucs-malayalam-regexp nil)
+;; The followings provide conversion between IS 13194 (ISCII) and UCS.
 
 (let
-    ;;Unicode vs IS13194.  Only Devanagari is supported currently.
+    ;;Unicode vs IS13194  ;; only Devanagari is supported now.
     ((ucs-devanagari-to-is13194-alist
       '((?\x0900 . "[U+0900]")
        (?\x0901 . "\e(5!\e(B")
@@ -523,9 +714,10 @@ FUNCTION will be called 15 times."
      (ucs-oriya-to-is13194-alist nil)
      (ucs-tamil-to-is13194-alist nil)
      (ucs-telugu-to-is13194-alist nil)
-     (ucs-malayalam-to-is13194-alist nil))
+     (ucs-malayalam-to-is13194-alist nil)
+     (ucs-kannada-to-is13194-alist nil))
   (dolist (script '(devanagari bengali assamese gurmukhi gujarati
-                   oriya tamil telugu malayalam))
+                   oriya tamil telugu malayalam kannada))
    (let ((hashtable (intern (concat "is13194-to-ucs-"
                                    (symbol-name script) "-hashtbl" )))
         (regexp    (intern (concat "is13194-to-ucs-"
@@ -536,12 +728,50 @@ FUNCTION will be called 15 times."
        (put-char-code-property (car x) 'script script)
        (put-char-code-property (car x) 'iscii (cdr x))
        (puthash (cdr x) (char-to-string (car x)) (eval hashtable)))
-     (set regexp (indian-regexp-of-hashtbl-keys (eval hashtable))))))
+      (set regexp (indian-regexp-of-hashtbl-keys (eval hashtable))))))
+
+(defvar is13194-default-repertory 'devanagari)
+
+(defvar is13194-repertory-to-ucs-script
+  `((DEF ?\x40 ,is13194-default-repertory)
+    (RMN ?\x41 ,is13194-default-repertory)
+    (DEV ?\x42 devanagari)
+    (BNG ?\x43 bengali)
+    (TML ?\x44 tamil)
+    (TLG ?\x45 telugu)
+    (ASM ?\x46 bengali)
+    (ORI ?\x47 oriya)
+    (KND ?\x48 kannada)
+    (MLM ?\x49 malayalam)
+    (GJR ?\x4a gujarati)
+    (PNJ ?\x4b gurmukhi)))
+
+;; for guiding find-variable function.
+(defvar is13194-to-ucs-devanagari-hashtbl nil)
+(defvar is13194-to-ucs-devanagari-regexp nil)
+(defvar is13194-to-ucs-bengali-hashtbl nil)
+(defvar is13194-to-ucs-bengali-regexp nil)
+(defvar is13194-to-ucs-assamese-hashtbl nil)
+(defvar is13194-to-ucs-assamese-regexp nil)
+(defvar is13194-to-ucs-gurmukhi-hashtbl nil)
+(defvar is13194-to-ucs-gurmukhi-regexp nil)
+(defvar is13194-to-ucs-gujarati-hashtbl nil)
+(defvar is13194-to-ucs-gujarati-regexp nil)
+(defvar is13194-to-ucs-oriya-hashtbl nil)
+(defvar is13194-to-ucs-oriya-regexp nil)
+(defvar is13194-to-ucs-tamil-hashtbl nil)
+(defvar is13194-to-ucs-tamil-regexp nil)
+(defvar is13194-to-ucs-telugu-hashtbl nil)
+(defvar is13194-to-ucs-telugu-regexp nil)
+(defvar is13194-to-ucs-malayalam-hashtbl nil)
+(defvar is13194-to-ucs-malayalam-regexp nil)
+(defvar is13194-to-ucs-kannada-hashtbl nil)
+(defvar is13194-to-ucs-kannada-regexp nil)
 
 (defvar ucs-to-is13194-regexp
   ;; only Devanagari is supported now.
   (concat "[" (char-to-string #x0900)
-         "-" (char-to-string #x097f) "]")
+          "-" (char-to-string #x097f) "]")
   "Regexp that matches to conversion")
 
 (defun ucs-to-iscii-region (from to)
@@ -584,15 +814,19 @@ Returns new end position."
 
 ;;;###autoload
 (defun indian-compose-region (from to)
-  "Compose the region according to `composition-function-table'. "
+  "Compose the region according to `composition-function-table'."
   (interactive "r")
   (save-excursion
     (save-restriction
-      (let ((pos from) chars (max to))
+      (let ((pos from) newpos func (max to))
        (narrow-to-region from to)
        (while (< pos max)
-         (setq chars (compose-chars-after pos))
-         (if chars (setq pos (+ pos chars)) (setq pos (1+ pos))))))))
+         (setq func (aref composition-function-table (char-after pos)))
+         (if (fboundp func)
+             (setq newpos (funcall func pos nil)
+                   pos (if (and (integerp newpos) (> newpos pos))
+                           newpos (1+ pos)))
+           (setq pos (1+ pos))))))))
 
 ;;;###autoload
 (defun indian-compose-string (string)
@@ -629,332 +863,332 @@ Returns new end position."
 (defconst indian-2-colum-to-ucs
   '(
   ;;      0 1 2 3 4 5 6 7 8 9 a b c d e f
-  ;;2120   \e$(5!!!"!#!$!%!&!'!(!)!*!+!,!-!.!/\e(B
-  ("\e$(5!!\e(B" . "\e$,15A\e(B")
-  ("\e$(5!"\e(B" . "\e$,15B\e(B")
-  ("\e$(5!#\e(B" . "\e$,15C\e(B")
-  ("\e$(5!$\e(B" . "\e$,15E\e(B")
-  ("\e$(5!%\e(B" . "\e$,15F\e(B")
-  ("\e$(5!&\e(B" . "\e$,15G\e(B")
-  ("\e$(5!'\e(B" . "\e$,15H\e(B")
-  ("\e$(5!(\e(B" . "\e$,15I\e(B")
-  ("\e$(5!)\e(B" . "\e$,15J\e(B")
-  ("\e$(5!*\e(B" . "\e$,15K\e(B")
-  ("\e$(5!*"p\e(B" . "\e$,15p6#\e(B")
-  ("\e$(5!+\e(B" . "\e$,15N\e(B")
-  ("\e$(5!,\e(B" . "\e$,15O\e(B")
-  ("\e$(5!-\e(B" . "\e$,15P\e(B")
-  ("\e$(5!.\e(B" . "\e$,15M\e(B")
-  ("\e$(5!/\e(B" . "\e$,15R\e(B")
+  ;;2120   \e$(6!!!"!#!$!%!&!'!(!)!*!+!,!-!.!/\e(B
+  ("\e$(6!!\e(B" . "\e$,15A\e(B")
+  ("\e$(6!"\e(B" . "\e$,15B\e(B")
+  ("\e$(6!#\e(B" . "\e$,15C\e(B")
+  ("\e$(6!$\e(B" . "\e$,15E\e(B")
+  ("\e$(6!%\e(B" . "\e$,15F\e(B")
+  ("\e$(6!&\e(B" . "\e$,15G\e(B")
+  ("\e$(6!'\e(B" . "\e$,15H\e(B")
+  ("\e$(6!(\e(B" . "\e$,15I\e(B")
+  ("\e$(6!)\e(B" . "\e$,15J\e(B")
+  ("\e$(6!*\e(B" . "\e$,15K\e(B")
+  ("\e$(6!*"p\e(B" . "\e$,15p6#\e(B")
+  ("\e$(6!+\e(B" . "\e$,15N\e(B")
+  ("\e$(6!,\e(B" . "\e$,15O\e(B")
+  ("\e$(6!-\e(B" . "\e$,15P\e(B")
+  ("\e$(6!.\e(B" . "\e$,15M\e(B")
+  ("\e$(6!/\e(B" . "\e$,15R\e(B")
   ;;      0 1 2 3 4 5 6 7 8 9 a b c d e f
-  ;;2130 \e$(5!0!1!2!3!4!5!6!7!8!9!:!;!<!=!>!?\e(B
-  ("\e$(5!0\e(B" . "\e$,15S\e(B")
-  ("\e$(5!1\e(B" . "\e$,15T\e(B")
-  ("\e$(5!2\e(B" . "\e$,15Q\e(B")
-  ("\e$(5!3\e(B" . "\e$,15U\e(B")
-  ("\e$(5!4\e(B" . "\e$,15V\e(B")
-  ("\e$(5!5\e(B" . "\e$,15W\e(B")
-  ("\e$(5!6\e(B" . "\e$,15X\e(B")
-  ("\e$(5!7\e(B" . "\e$,15Y\e(B")
-  ("\e$(5!8\e(B" . "\e$,15Z\e(B")
-  ("\e$(5!9\e(B" . "\e$,15[\e(B")
-  ("\e$(5!:\e(B" . "\e$,15\\e(B")
-  ("\e$(5!;\e(B" . "\e$,15]\e(B")
-  ("\e$(5!<\e(B" . "\e$,15^\e(B")
-  ("\e$(5!=\e(B" . "\e$,15_\e(B")
-  ("\e$(5!>\e(B" . "\e$,15`\e(B")
-  ("\e$(5!?\e(B" . "\e$,15a\e(B")
+  ;;2130 \e$(6!0!1!2!3!4!5!6!7!8!9!:!;!<!=!>!?\e(B
+  ("\e$(6!0\e(B" . "\e$,15S\e(B")
+  ("\e$(6!1\e(B" . "\e$,15T\e(B")
+  ("\e$(6!2\e(B" . "\e$,15Q\e(B")
+  ("\e$(6!3\e(B" . "\e$,15U\e(B")
+  ("\e$(6!4\e(B" . "\e$,15V\e(B")
+  ("\e$(6!5\e(B" . "\e$,15W\e(B")
+  ("\e$(6!6\e(B" . "\e$,15X\e(B")
+  ("\e$(6!7\e(B" . "\e$,15Y\e(B")
+  ("\e$(6!8\e(B" . "\e$,15Z\e(B")
+  ("\e$(6!9\e(B" . "\e$,15[\e(B")
+  ("\e$(6!:\e(B" . "\e$,15\\e(B")
+  ("\e$(6!;\e(B" . "\e$,15]\e(B")
+  ("\e$(6!<\e(B" . "\e$,15^\e(B")
+  ("\e$(6!=\e(B" . "\e$,15_\e(B")
+  ("\e$(6!>\e(B" . "\e$,15`\e(B")
+  ("\e$(6!?\e(B" . "\e$,15a\e(B")
   ;;      0 1 2 3 4 5 6 7 8 9 a b c d e f
-  ;;2140 \e$(5!@!A!B!C!D!E!F!G!H!I!J!K!L!M!N!O\e(B
-  ("\e$(5!@\e(B" . "\e$,15b\e(B")
-  ("\e$(5!A\e(B" . "\e$,15c\e(B")
-  ("\e$(5!B\e(B" . "\e$,15d\e(B")
-  ("\e$(5!C\e(B" . "\e$,15e\e(B")
-  ("\e$(5!D\e(B" . "\e$,15f\e(B")
-  ("\e$(5!E\e(B" . "\e$,15g\e(B")
-  ("\e$(5!F\e(B" . "\e$,15h\e(B")
-  ("\e$(5!G\e(B" . "\e$,15i\e(B")
-  ("\e$(5!H\e(B" . "\e$,15j\e(B")
-  ("\e$(5!I\e(B" . "\e$,15k\e(B")
-  ("\e$(5!J\e(B" . "\e$,15l\e(B")
-  ("\e$(5!K\e(B" . "\e$,15m\e(B")
-  ("\e$(5!L\e(B" . "\e$,15n\e(B")
-  ("\e$(5!M\e(B" . "\e$,15o\e(B")
-  ("\e$(5!N\e(B" . "\e$,16?\e(B")
-  ("\e$(5!O\e(B" . "\e$,15p\e(B")
+  ;;2140 \e$(6!@!A!B!C!D!E!F!G!H!I!J!K!L!M!N!O\e(B
+  ("\e$(6!@\e(B" . "\e$,15b\e(B")
+  ("\e$(6!A\e(B" . "\e$,15c\e(B")
+  ("\e$(6!B\e(B" . "\e$,15d\e(B")
+  ("\e$(6!C\e(B" . "\e$,15e\e(B")
+  ("\e$(6!D\e(B" . "\e$,15f\e(B")
+  ("\e$(6!E\e(B" . "\e$,15g\e(B")
+  ("\e$(6!F\e(B" . "\e$,15h\e(B")
+  ("\e$(6!G\e(B" . "\e$,15i\e(B")
+  ("\e$(6!H\e(B" . "\e$,15j\e(B")
+  ("\e$(6!I\e(B" . "\e$,15k\e(B")
+  ("\e$(6!J\e(B" . "\e$,15l\e(B")
+  ("\e$(6!K\e(B" . "\e$,15m\e(B")
+  ("\e$(6!L\e(B" . "\e$,15n\e(B")
+  ("\e$(6!M\e(B" . "\e$,15o\e(B")
+  ("\e$(6!N\e(B" . "\e$,16?\e(B")
+  ("\e$(6!O\e(B" . "\e$,15p\e(B")
   ;;      0 1 2 3 4 5 6 7 8 9 a b c d e f
-  ;;2150 \e$(5!P!Q!R!S!T!U!V!W!X!Y!Z![!\!]!^!_\e(B
-  ("\e$(5!P\e(B" . "\e$,15q\e(B")
-  ("\e$(5!Q\e(B" . "\e$,15r\e(B")
-  ("\e$(5!R\e(B" . "\e$,15s\e(B")
-  ("\e$(5!S\e(B" . "\e$,15t\e(B")
-  ("\e$(5!T\e(B" . "\e$,15u\e(B")
-  ("\e$(5!U\e(B" . "\e$,15v\e(B")
-  ("\e$(5!V\e(B" . "\e$,15w\e(B")
-  ("\e$(5!W\e(B" . "\e$,15x\e(B")
-  ("\e$(5!X\e(B" . "\e$,15y\e(B")
-  ("\e$(5!Z\e(B" . "\e$,15~\e(B")
-  ("\e$(5![\e(B" . "\e$,15\7f\e(B")
-  ("\e$(5!\\e(B" . "\e$,16 \e(B")
-  ("\e$(5!]\e(B" . "\e$,16!\e(B")
-  ("\e$(5!^\e(B" . "\e$,16"\e(B")
-  ("\e$(5!_\e(B" . "\e$,16#\e(B")
+  ;;2150 \e$(6!P!Q!R!S!T!U!V!W!X!Y!Z![!\!]!^!_\e(B
+  ("\e$(6!P\e(B" . "\e$,15q\e(B")
+  ("\e$(6!Q\e(B" . "\e$,15r\e(B")
+  ("\e$(6!R\e(B" . "\e$,15s\e(B")
+  ("\e$(6!S\e(B" . "\e$,15t\e(B")
+  ("\e$(6!T\e(B" . "\e$,15u\e(B")
+  ("\e$(6!U\e(B" . "\e$,15v\e(B")
+  ("\e$(6!V\e(B" . "\e$,15w\e(B")
+  ("\e$(6!W\e(B" . "\e$,15x\e(B")
+  ("\e$(6!X\e(B" . "\e$,15y\e(B")
+  ("\e$(6!Z\e(B" . "\e$,15~\e(B")
+  ("\e$(6![\e(B" . "\e$,15\7f\e(B")
+  ("\e$(6!\\e(B" . "\e$,16 \e(B")
+  ("\e$(6!]\e(B" . "\e$,16!\e(B")
+  ("\e$(6!^\e(B" . "\e$,16"\e(B")
+  ("\e$(6!_\e(B" . "\e$,16#\e(B")
   ;;      0 1 2 3 4 5 6 7 8 9 a b c d e f
-  ;;2160 \e$(5!`!a!b!c!d!e!f!g!h!i!j!k!l!m!n!o\e(B
-  ("\e$(5!`\e(B" . "\e$,16&\e(B")
-  ("\e$(5!a\e(B" . "\e$,16'\e(B")
-  ("\e$(5!b\e(B" . "\e$,16(\e(B")
-  ("\e$(5!c\e(B" . "\e$,16%\e(B")
-  ("\e$(5!d\e(B" . "\e$,16*\e(B")
-  ("\e$(5!e\e(B" . "\e$,16+\e(B")
-  ("\e$(5!f\e(B" . "\e$,16,\e(B")
-  ("\e$(5!g\e(B" . "\e$,16)\e(B")
-  ("\e$(5!h\e(B" . "\e$,16-\e(B")
-  ("\e$(5!i\e(B" . "\e$,15|\e(B")
-  ("\e$(5!j\e(B" . "\e$,16D\e(B")
-  ("\e$(5!j!j\e(B" . "\e$,16E\e(B")
+  ;;2160 \e$(6!`!a!b!c!d!e!f!g!h!i!j!k!l!m!n!o\e(B
+  ("\e$(6!`\e(B" . "\e$,16&\e(B")
+  ("\e$(6!a\e(B" . "\e$,16'\e(B")
+  ("\e$(6!b\e(B" . "\e$,16(\e(B")
+  ("\e$(6!c\e(B" . "\e$,16%\e(B")
+  ("\e$(6!d\e(B" . "\e$,16*\e(B")
+  ("\e$(6!e\e(B" . "\e$,16+\e(B")
+  ("\e$(6!f\e(B" . "\e$,16,\e(B")
+  ("\e$(6!g\e(B" . "\e$,16)\e(B")
+  ("\e$(6!h\e(B" . "\e$,16-\e(B")
+  ("\e$(6!i\e(B" . "\e$,15|\e(B")
+  ("\e$(6!j\e(B" . "\e$,16D\e(B")
+  ("\e$(6!j!j\e(B" . "\e$,16E\e(B")
   ;;      0 1 2 3 4 5 6 7 8 9 a b c d e f
-  ;;2170 \e$(5!p!q!r!s!t!u!v!w!x!y!z!{!|!}!~\e(B
-  ("\e$(5!q\e(B" . "\e$,16F\e(B")
-  ("\e$(5!r\e(B" . "\e$,16G\e(B")
-  ("\e$(5!s\e(B" . "\e$,16H\e(B")
-  ("\e$(5!t\e(B" . "\e$,16I\e(B")
-  ("\e$(5!u\e(B" . "\e$,16J\e(B")
-  ("\e$(5!v\e(B" . "\e$,16K\e(B")
-  ("\e$(5!w\e(B" . "\e$,16L\e(B")
-  ("\e$(5!x\e(B" . "\e$,16M\e(B")
-  ("\e$(5!y\e(B" . "\e$,16N\e(B")
-  ("\e$(5!z\e(B" . "\e$,16O\e(B")
+  ;;2170 \e$(6!p!q!r!s!t!u!v!w!x!y!z!{!|!}!~\e(B
+  ("\e$(6!q\e(B" . "\e$,16F\e(B")
+  ("\e$(6!r\e(B" . "\e$,16G\e(B")
+  ("\e$(6!s\e(B" . "\e$,16H\e(B")
+  ("\e$(6!t\e(B" . "\e$,16I\e(B")
+  ("\e$(6!u\e(B" . "\e$,16J\e(B")
+  ("\e$(6!v\e(B" . "\e$,16K\e(B")
+  ("\e$(6!w\e(B" . "\e$,16L\e(B")
+  ("\e$(6!x\e(B" . "\e$,16M\e(B")
+  ("\e$(6!y\e(B" . "\e$,16N\e(B")
+  ("\e$(6!z\e(B" . "\e$,16O\e(B")
   ;;      0 1 2 3 4 5 6 7 8 9 a b c d e f
-  ;;2220   \e$(5"!"""#"$"%"&"'"(")"*"+","-"."/\e(B
-  ("\e$(5"!\e(B" . "\e$,16;6-5p\e(B")
-  ("\e$(5""\e(B" . "\e$,16>6-5p\e(B")
-  ("\e$(5"#\e(B" . "\e$,15U6-5p\e(B")
-  ("\e$(5"$\e(B" . "\e$,15W6-5p\e(B")
-  ("\e$(5"%\e(B" . "\e$,15d6-5p\e(B")
-  ("\e$(5"&\e(B" . "\e$,15j6-5p\e(B")
-  ("\e$(5"'\e(B" . "\e$,15k6-5p\e(B")
-  ("\e$(5")\e(B" . "\e$,15v6-5p\e(B")
-  ("\e$(5",\e(B" . "\e$,15p6!\e(B")
-  ("\e$(5"-\e(B" . "\e$,15p6"\e(B")
-  ("\e$(5".\e(B" . "\e$,15q6!\e(B")
-  ("\e$(5"/\e(B" . "\e$,15q6"\e(B")
+  ;;2220   \e$(6"!"""#"$"%"&"'"(")"*"+","-"."/\e(B
+  ("\e$(6"!\e(B" . "\e$,16;6-5p\e(B")
+  ("\e$(6""\e(B" . "\e$,16>6-5p\e(B")
+  ("\e$(6"#\e(B" . "\e$,15U6-5p\e(B")
+  ("\e$(6"$\e(B" . "\e$,15W6-5p\e(B")
+  ("\e$(6"%\e(B" . "\e$,15d6-5p\e(B")
+  ("\e$(6"&\e(B" . "\e$,15j6-5p\e(B")
+  ("\e$(6"'\e(B" . "\e$,15k6-5p\e(B")
+  ("\e$(6")\e(B" . "\e$,15v6-5p\e(B")
+  ("\e$(6",\e(B" . "\e$,15p6!\e(B")
+  ("\e$(6"-\e(B" . "\e$,15p6"\e(B")
+  ("\e$(6".\e(B" . "\e$,15q6!\e(B")
+  ("\e$(6"/\e(B" . "\e$,15q6"\e(B")
   ;;      0 1 2 3 4 5 6 7 8 9 a b c d e f
-  ;;2230 \e$(5"0"1"2"3"4"5"6"7"8"9":";"<"=">"?\e(B
-  ("\e$(5"3\e(B" . "\e$,15U6-\e(B")
-  ("\e$(5"4\e(B" . "\e$,15V6-\e(B")
-  ("\e$(5"5\e(B" . "\e$,15W6-\e(B")
-  ("\e$(5"6\e(B" . "\e$,15X6-\e(B")
-  ("\e$(5"8\e(B" . "\e$,15Z6-\e(B")
-  ("\e$(5"8"q\e(B" . "\e$,15Z6-5p6-\e(B")
-  ("\e$(5":\e(B" . "\e$,15\6-\e(B")
-  ("\e$(5";\e(B" . "\e$,15]6-\e(B")
-  ("\e$(5"<\e(B" . "\e$,15^6-\e(B")
-  ("\e$(5"<\e(B" . "\e$,15^6-\e(B")
+  ;;2230 \e$(6"0"1"2"3"4"5"6"7"8"9":";"<"=">"?\e(B
+  ("\e$(6"3\e(B" . "\e$,15U6-\e(B")
+  ("\e$(6"4\e(B" . "\e$,15V6-\e(B")
+  ("\e$(6"5\e(B" . "\e$,15W6-\e(B")
+  ("\e$(6"6\e(B" . "\e$,15X6-\e(B")
+  ("\e$(6"8\e(B" . "\e$,15Z6-\e(B")
+  ("\e$(6"8"q\e(B" . "\e$,15Z6-5p6-\e(B")
+  ("\e$(6":\e(B" . "\e$,15\6-\e(B")
+  ("\e$(6";\e(B" . "\e$,15]6-\e(B")
+  ("\e$(6"<\e(B" . "\e$,15^6-\e(B")
+  ("\e$(6"<\e(B" . "\e$,15^6-\e(B")
   ;;      0 1 2 3 4 5 6 7 8 9 a b c d e f
-  ;;2240 \e$(5"@"A"B"C"D"E"F"G"H"I"J"K"L"M"N"O\e(B
-  ("\e$(5"A\e(B" . "\e$,15c6-\e(B")
-  ("\e$(5"B\e(B" . "\e$,15d6-\e(B")
-  ("\e$(5"C\e(B" . "\e$,15e6-\e(B")
-  ("\e$(5"E\e(B" . "\e$,15g6-\e(B")
-  ("\e$(5"F\e(B" . "\e$,15h6-\e(B")
-  ("\e$(5"G\e(B" . "\e$,15i6-\e(B")
-  ("\e$(5"H\e(B" . "\e$,15j6-\e(B")
-  ("\e$(5"I\e(B" . "\e$,15k6-\e(B")
-  ("\e$(5"J\e(B" . "\e$,15l6-\e(B")
-  ("\e$(5"J\e(B" . "\e$,15l6-\e(B")
-  ("\e$(5"K\e(B" . "\e$,15m6-\e(B")
-  ("\e$(5"L\e(B" . "\e$,15n6-\e(B")
-  ("\e$(5"M\e(B" . "\e$,15o6-\e(B")
-  ("\e$(5"N\e(B" . "\e$,16?6-\e(B")
+  ;;2240 \e$(6"@"A"B"C"D"E"F"G"H"I"J"K"L"M"N"O\e(B
+  ("\e$(6"A\e(B" . "\e$,15c6-\e(B")
+  ("\e$(6"B\e(B" . "\e$,15d6-\e(B")
+  ("\e$(6"C\e(B" . "\e$,15e6-\e(B")
+  ("\e$(6"E\e(B" . "\e$,15g6-\e(B")
+  ("\e$(6"F\e(B" . "\e$,15h6-\e(B")
+  ("\e$(6"G\e(B" . "\e$,15i6-\e(B")
+  ("\e$(6"H\e(B" . "\e$,15j6-\e(B")
+  ("\e$(6"I\e(B" . "\e$,15k6-\e(B")
+  ("\e$(6"J\e(B" . "\e$,15l6-\e(B")
+  ("\e$(6"J\e(B" . "\e$,15l6-\e(B")
+  ("\e$(6"K\e(B" . "\e$,15m6-\e(B")
+  ("\e$(6"L\e(B" . "\e$,15n6-\e(B")
+  ("\e$(6"M\e(B" . "\e$,15o6-\e(B")
+  ("\e$(6"N\e(B" . "\e$,16?6-\e(B")
   ;;      0 1 2 3 4 5 6 7 8 9 a b c d e f
-  ;;2250 \e$(5"P"Q"R"S"T"U"V"W"X"Y"Z"["\"]"^"_\e(B
-  ("\e$(5"Q\e(B" . "\e$,15r6-\e(B")
-  ("\e$(5"R\e(B" . "\e$,15s6-\e(B")
-  ("\e$(5"S\e(B" . "\e$,15t6-\e(B")
-  ("\e$(5"T\e(B" . "\e$,15u6-\e(B")
-  ("\e$(5"U\e(B" . "\e$,15v6-\e(B")
-  ("\e$(5"V\e(B" . "\e$,15w6-\e(B")
-  ("\e$(5"W\e(B" . "\e$,15x6-\e(B")
-  ("\e$(5"]\e(B" . "\e$,16-5o\e(B")
+  ;;2250 \e$(6"P"Q"R"S"T"U"V"W"X"Y"Z"["\"]"^"_\e(B
+  ("\e$(6"Q\e(B" . "\e$,15r6-\e(B")
+  ("\e$(6"R\e(B" . "\e$,15s6-\e(B")
+  ("\e$(6"S\e(B" . "\e$,15t6-\e(B")
+  ("\e$(6"T\e(B" . "\e$,15u6-\e(B")
+  ("\e$(6"U\e(B" . "\e$,15v6-\e(B")
+  ("\e$(6"V\e(B" . "\e$,15w6-\e(B")
+  ("\e$(6"W\e(B" . "\e$,15x6-\e(B")
+  ("\e$(6"]\e(B" . "\e$,16-5o\e(B")
   ;;      0 1 2 3 4 5 6 7 8 9 a b c d e f
-  ;;2260 \e$(5"`"a"b"c"d"e"f"g"h"i"j"k"l"m"n"o\e(B
-  ("\e$(5"`\e(B" . "\e$,15W6-5p6-\e(B")
-  ("\e$(5"a\e(B" . "\e$,15X6-5h6-\e(B")
-  ("\e$(5"c\e(B" . "\e$,15d6-5d6-\e(B")
-  ("\e$(5"d\e(B" . "\e$,15d6-5p6-\e(B")
-  ("\e$(5"e\e(B" . "\e$,15g6-5h6-\e(B")
-  ("\e$(5"f\e(B" . "\e$,15g6-5p6-\e(B")
-  ("\e$(5"g\e(B" . "\e$,15j6-5d6-\e(B")
-  ("\e$(5"h\e(B" . "\e$,15v6-5Z6-\e(B")
-  ("\e$(5"i\e(B" . "\e$,15v6-5p6-\e(B")
-  ("\e$(5"j\e(B" . "\e$,15v6-5u6-\e(B")
-  ("\e$(5"k\e(B" . "\e$,15h6-5h6-\e(B")
-  ("\e$(5"l\e(B" . "\e$,15U6-5w6-\e(B")
-  ("\e$(5"m\e(B" . "\e$,15\6-5^6-\e(B")
+  ;;2260 \e$(6"`"a"b"c"d"e"f"g"h"i"j"k"l"m"n"o\e(B
+  ("\e$(6"`\e(B" . "\e$,15W6-5p6-\e(B")
+  ("\e$(6"a\e(B" . "\e$,15X6-5h6-\e(B")
+  ("\e$(6"c\e(B" . "\e$,15d6-5d6-\e(B")
+  ("\e$(6"d\e(B" . "\e$,15d6-5p6-\e(B")
+  ("\e$(6"e\e(B" . "\e$,15g6-5h6-\e(B")
+  ("\e$(6"f\e(B" . "\e$,15g6-5p6-\e(B")
+  ("\e$(6"g\e(B" . "\e$,15j6-5d6-\e(B")
+  ("\e$(6"h\e(B" . "\e$,15v6-5Z6-\e(B")
+  ("\e$(6"i\e(B" . "\e$,15v6-5p6-\e(B")
+  ("\e$(6"j\e(B" . "\e$,15v6-5u6-\e(B")
+  ("\e$(6"k\e(B" . "\e$,15h6-5h6-\e(B")
+  ("\e$(6"l\e(B" . "\e$,15U6-5w6-\e(B")
+  ("\e$(6"m\e(B" . "\e$,15\6-5^6-\e(B")
   ;;      0 1 2 3 4 5 6 7 8 9 a b c d e f
-  ;;2270 \e$(5"p"q"r"s"t"u"v"w"x"y"z"{"|"}"~\e(B
-  ("\e$(5"p\e(B" . "\e$,15p6-\e(B")
-  ("\e$(5"q\e(B" . "\e$,16-5p\e(B")
-  ("\e$(5"r\e(B" . "\e$,16-5p\e(B")
-  ("\e$(5"s\e(B" . "\e$,1686-\e(B")
-  ("\e$(5"t\e(B" . "\e$,1696-\e(B")
-  ("\e$(5"u\e(B" . "\e$,16:6-\e(B")
-  ("\e$(5"y\e(B" . "\e$,16>6-\e(B")
-  ("\e$(5"z\e(B" . "\e$,16;6-\e(B")
+  ;;2270 \e$(6"p"q"r"s"t"u"v"w"x"y"z"{"|"}"~\e(B
+  ("\e$(6"p\e(B" . "\e$,15p6-\e(B")
+  ("\e$(6"q\e(B" . "\e$,16-5p\e(B")
+  ("\e$(6"r\e(B" . "\e$,16-5p\e(B")
+  ("\e$(6"s\e(B" . "\e$,1686-\e(B")
+  ("\e$(6"t\e(B" . "\e$,1696-\e(B")
+  ("\e$(6"u\e(B" . "\e$,16:6-\e(B")
+  ("\e$(6"y\e(B" . "\e$,16>6-\e(B")
+  ("\e$(6"z\e(B" . "\e$,16;6-\e(B")
   ;;      0 1 2 3 4 5 6 7 8 9 a b c d e f
-  ;;2320   \e$(5#!#"###$#%#&#'#(#)#*#+#,#-#.#/\e(B
-  ("\e$(5#!\e(B" . "\e$,160\e(B")
-  ("\e$(5#&\e(B" . "\e$,15L\e(B")
-  ("\e$(5#&"p\e(B" . "\e$,15p6$\e(B")
-  ("\e$(5#'\e(B" . "\e$,16A\e(B")
-  ("\e$(5#'"p\e(B" . "\e$,15p6C\e(B")
-  ("\e$(5#*\e(B" . "\e$,16@\e(B")
-  ("\e$(5#*"p\e(B" . "\e$,15p6B\e(B")
+  ;;2320   \e$(6#!#"###$#%#&#'#(#)#*#+#,#-#.#/\e(B
+  ("\e$(6#!\e(B" . "\e$,160\e(B")
+  ("\e$(6#&\e(B" . "\e$,15L\e(B")
+  ("\e$(6#&"p\e(B" . "\e$,15p6$\e(B")
+  ("\e$(6#'\e(B" . "\e$,16A\e(B")
+  ("\e$(6#'"p\e(B" . "\e$,15p6C\e(B")
+  ("\e$(6#*\e(B" . "\e$,16@\e(B")
+  ("\e$(6#*"p\e(B" . "\e$,15p6B\e(B")
   ;;      0 1 2 3 4 5 6 7 8 9 a b c d e f
-  ;;2330 \e$(5#0#1#2#3#4#5#6#7#8#9#:#;#<#=#>#?\e(B
-  ("\e$(5#3\e(B" . "\e$,168\e(B")
-  ("\e$(5#4\e(B" . "\e$,169\e(B")
-  ("\e$(5#5\e(B" . "\e$,16:\e(B")
-  ("\e$(5#:\e(B" . "\e$,16;\e(B")
-  ("\e$(5#?\e(B" . "\e$,16<\e(B")
+  ;;2330 \e$(6#0#1#2#3#4#5#6#7#8#9#:#;#<#=#>#?\e(B
+  ("\e$(6#3\e(B" . "\e$,168\e(B")
+  ("\e$(6#4\e(B" . "\e$,169\e(B")
+  ("\e$(6#5\e(B" . "\e$,16:\e(B")
+  ("\e$(6#:\e(B" . "\e$,16;\e(B")
+  ("\e$(6#?\e(B" . "\e$,16<\e(B")
   ;;      0 1 2 3 4 5 6 7 8 9 a b c d e f
-  ;;2340 \e$(5#@#A#B#C#D#E#F#G#H#I#J#K#L#M#N#O\e(B
-  ("\e$(5#@\e(B" . "\e$,16=\e(B")
-  ("\e$(5#I\e(B" . "\e$,16>\e(B")
-  ("\e$(5#J\e(B" . "\e$,15}\e(B")
-  ("\e$(5#K\e(B" . "\e$,16$\e(B")
-  ("\e$(5#L\e(B" . "\e$,16B\e(B")
-  ("\e$(5#M\e(B" . "\e$,16C\e(B")
+  ;;2340 \e$(6#@#A#B#C#D#E#F#G#H#I#J#K#L#M#N#O\e(B
+  ("\e$(6#@\e(B" . "\e$,16=\e(B")
+  ("\e$(6#I\e(B" . "\e$,16>\e(B")
+  ("\e$(6#J\e(B" . "\e$,15}\e(B")
+  ("\e$(6#K\e(B" . "\e$,16$\e(B")
+  ("\e$(6#L\e(B" . "\e$,16B\e(B")
+  ("\e$(6#M\e(B" . "\e$,16C\e(B")
   ;;      0 1 2 3 4 5 6 7 8 9 a b c d e f
-  ;;2350 \e$(5#P#Q#R#S#T#U#V#W#X#Y#Z#[#\#]#^#_\e(B
-  ("\e$(5#P\e(B" . "\e$,15n6-5h\e(B")
-  ("\e$(5#Q\e(B" . "\e$,15n6-5r\e(B")
-  ("\e$(5#R\e(B" . "\e$,15y6#\e(B")
+  ;;2350 \e$(6#P#Q#R#S#T#U#V#W#X#Y#Z#[#\#]#^#_\e(B
+  ("\e$(6#P\e(B" . "\e$,15n6-5h\e(B")
+  ("\e$(6#Q\e(B" . "\e$,15n6-5r\e(B")
+  ("\e$(6#R\e(B" . "\e$,15y6#\e(B")
   ;;      0 1 2 3 4 5 6 7 8 9 a b c d e f
-  ;;2360 \e$(5#`#a#b#c#d#e#f#g#h#i#j#k#l#m#n#o\e(B
-  ("\e$(5#`\e(B" . "\e$,15r6-5r\e(B")
-  ("\e$(5#a\e(B" . "\e$,15u6-5h\e(B")
-  ("\e$(5#b\e(B" . "\e$,15u6-5u\e(B")
-  ("\e$(5#c\e(B" . "\e$,15v6-5Z\e(B")
-  ("\e$(5#d\e(B" . "\e$,15v6-5h\e(B")
-  ("\e$(5#e\e(B" . "\e$,15v6-5l\e(B")
-  ("\e$(5#f\e(B" . "\e$,15v6-5r\e(B")
-  ("\e$(5#g\e(B" . "\e$,15v6-5u\e(B")
-  ("\e$(5#h\e(B" . "\e$,15w6-5_6-5p6-5o\e(B")
-  ("\e$(5#i\e(B" . "\e$,15w6-5_6-5o\e(B")
-  ("\e$(5#j\e(B" . "\e$,15w6-5_6-5u\e(B")
-  ("\e$(5#k\e(B" . "\e$,15w6-5_\e(B")
-  ("\e$(5#l\e(B" . "\e$,15w6-5`\e(B")
-  ("\e$(5#m\e(B" . "\e$,15x6-5h\e(B")
-  ("\e$(5#n\e(B" . "\e$,15x6-5p\e(B")
+  ;;2360 \e$(6#`#a#b#c#d#e#f#g#h#i#j#k#l#m#n#o\e(B
+  ("\e$(6#`\e(B" . "\e$,15r6-5r\e(B")
+  ("\e$(6#a\e(B" . "\e$,15u6-5h\e(B")
+  ("\e$(6#b\e(B" . "\e$,15u6-5u\e(B")
+  ("\e$(6#c\e(B" . "\e$,15v6-5Z\e(B")
+  ("\e$(6#d\e(B" . "\e$,15v6-5h\e(B")
+  ("\e$(6#e\e(B" . "\e$,15v6-5l\e(B")
+  ("\e$(6#f\e(B" . "\e$,15v6-5r\e(B")
+  ("\e$(6#g\e(B" . "\e$,15v6-5u\e(B")
+  ("\e$(6#h\e(B" . "\e$,15w6-5_6-5p6-5o\e(B")
+  ("\e$(6#i\e(B" . "\e$,15w6-5_6-5o\e(B")
+  ("\e$(6#j\e(B" . "\e$,15w6-5_6-5u\e(B")
+  ("\e$(6#k\e(B" . "\e$,15w6-5_\e(B")
+  ("\e$(6#l\e(B" . "\e$,15w6-5`\e(B")
+  ("\e$(6#m\e(B" . "\e$,15x6-5h\e(B")
+  ("\e$(6#n\e(B" . "\e$,15x6-5p\e(B")
   ;;      0 1 2 3 4 5 6 7 8 9 a b c d e f
-  ;;2370 \e$(5#p#q#r#s#t#u#v#w#x#y#z#{#|#}#~\e(B
-  ("\e$(5#p\e(B" . "\e$,15y6-5c\e(B")
-  ("\e$(5#q\e(B" . "\e$,15y6-5h\e(B")
-  ("\e$(5#r\e(B" . "\e$,15y6-5n\e(B")
-  ("\e$(5#s\e(B" . "\e$,15y6-5o\e(B")
-  ("\e$(5#t\e(B" . "\e$,15y6-5p\e(B")
-  ("\e$(5#u\e(B" . "\e$,15y6-5r\e(B")
-  ("\e$(5#v\e(B" . "\e$,15y6-5u\e(B")
+  ;;2370 \e$(6#p#q#r#s#t#u#v#w#x#y#z#{#|#}#~\e(B
+  ("\e$(6#p\e(B" . "\e$,15y6-5c\e(B")
+  ("\e$(6#q\e(B" . "\e$,15y6-5h\e(B")
+  ("\e$(6#r\e(B" . "\e$,15y6-5n\e(B")
+  ("\e$(6#s\e(B" . "\e$,15y6-5o\e(B")
+  ("\e$(6#t\e(B" . "\e$,15y6-5p\e(B")
+  ("\e$(6#u\e(B" . "\e$,15y6-5r\e(B")
+  ("\e$(6#v\e(B" . "\e$,15y6-5u\e(B")
   ;;      0 1 2 3 4 5 6 7 8 9 a b c d e f
-  ;;2420   \e$(5$!$"$#$$$%$&$'$($)$*$+$,$-$.$/\e(B
-  ("\e$(5$!\e(B" . "\e$,15U6-5d6-5p6-5o\e(B")
-  ("\e$(5$"\e(B" . "\e$,15U6-5d6-5u\e(B")
-  ("\e$(5$#\e(B" . "\e$,15U6-5d6-5o\e(B")
-  ("\e$(5$$\e(B" . "\e$,15U6-5h6-5o\e(B")
-  ("\e$(5$%\e(B" . "\e$,15U6-5p6-5o\e(B")
-  ("\e$(5$&\e(B" . "\e$,15U6-5u6-5o\e(B")
-  ("\e$(5$'\e(B" . "\e$,15U6-5U\e(B")
-  ("\e$(5$(\e(B" . "\e$,15U6-5d\e(B")
-  ("\e$(5$)\e(B" . "\e$,15U6-5h\e(B")
-  ("\e$(5$*\e(B" . "\e$,15U6-5n\e(B")
-  ("\e$(5$+\e(B" . "\e$,15U6-5o\e(B")
-  ("\e$(5$,\e(B" . "\e$,15U6-5r\e(B")
-  ("\e$(5$-\e(B" . "\e$,15U6-5u\e(B")
-  ("\e$(5$.\e(B" . "\e$,15U6-5w\e(B")
-  ("\e$(5$/\e(B" . "\e$,15X6-5h\e(B")
+  ;;2420   \e$(6$!$"$#$$$%$&$'$($)$*$+$,$-$.$/\e(B
+  ("\e$(6$!\e(B" . "\e$,15U6-5d6-5p6-5o\e(B")
+  ("\e$(6$"\e(B" . "\e$,15U6-5d6-5u\e(B")
+  ("\e$(6$#\e(B" . "\e$,15U6-5d6-5o\e(B")
+  ("\e$(6$$\e(B" . "\e$,15U6-5h6-5o\e(B")
+  ("\e$(6$%\e(B" . "\e$,15U6-5p6-5o\e(B")
+  ("\e$(6$&\e(B" . "\e$,15U6-5u6-5o\e(B")
+  ("\e$(6$'\e(B" . "\e$,15U6-5U\e(B")
+  ("\e$(6$(\e(B" . "\e$,15U6-5d\e(B")
+  ("\e$(6$)\e(B" . "\e$,15U6-5h\e(B")
+  ("\e$(6$*\e(B" . "\e$,15U6-5n\e(B")
+  ("\e$(6$+\e(B" . "\e$,15U6-5o\e(B")
+  ("\e$(6$,\e(B" . "\e$,15U6-5r\e(B")
+  ("\e$(6$-\e(B" . "\e$,15U6-5u\e(B")
+  ("\e$(6$.\e(B" . "\e$,15U6-5w\e(B")
+  ("\e$(6$/\e(B" . "\e$,15X6-5h\e(B")
   ;;      0 1 2 3 4 5 6 7 8 9 a b c d e f
-  ;;2430 \e$(5$0$1$2$3$4$5$6$7$8$9$:$;$<$=$>$?\e(B
-  ("\e$(5$0\e(B" . "\e$,15Y6-5U6-5d6-5o\e(B")
-  ("\e$(5$1\e(B" . "\e$,15Y6-5U6-5w6-5u\e(B")
-  ("\e$(5$2\e(B" . "\e$,15Y6-5U6-5d\e(B")
-  ("\e$(5$3\e(B" . "\e$,15Y6-5U6-5w\e(B")
-  ("\e$(5$4\e(B" . "\e$,15Y6-5X6-5p\e(B")
-  ("\e$(5$5\e(B" . "\e$,15Y6-5U6-5o\e(B")
-  ("\e$(5$6\e(B" . "\e$,15Y6-5V6-5o\e(B")
-  ("\e$(5$7\e(B" . "\e$,15Y6-5W6-5o\e(B")
-  ("\e$(5$8\e(B" . "\e$,15Y6-5X6-5o\e(B")
-  ("\e$(5$9\e(B" . "\e$,15Y6-5U\e(B")
-  ("\e$(5$:\e(B" . "\e$,15Y6-5V\e(B")
-  ("\e$(5$;\e(B" . "\e$,15Y6-5W\e(B")
-  ("\e$(5$<\e(B" . "\e$,15Y6-5X\e(B")
-  ("\e$(5$=\e(B" . "\e$,15Y6-5Y\e(B")
-  ("\e$(5$>\e(B" . "\e$,15Y6-5h\e(B")
-  ("\e$(5$?\e(B" . "\e$,15Y6-5n\e(B")
+  ;;2430 \e$(6$0$1$2$3$4$5$6$7$8$9$:$;$<$=$>$?\e(B
+  ("\e$(6$0\e(B" . "\e$,15Y6-5U6-5d6-5o\e(B")
+  ("\e$(6$1\e(B" . "\e$,15Y6-5U6-5w6-5u\e(B")
+  ("\e$(6$2\e(B" . "\e$,15Y6-5U6-5d\e(B")
+  ("\e$(6$3\e(B" . "\e$,15Y6-5U6-5w\e(B")
+  ("\e$(6$4\e(B" . "\e$,15Y6-5X6-5p\e(B")
+  ("\e$(6$5\e(B" . "\e$,15Y6-5U6-5o\e(B")
+  ("\e$(6$6\e(B" . "\e$,15Y6-5V6-5o\e(B")
+  ("\e$(6$7\e(B" . "\e$,15Y6-5W6-5o\e(B")
+  ("\e$(6$8\e(B" . "\e$,15Y6-5X6-5o\e(B")
+  ("\e$(6$9\e(B" . "\e$,15Y6-5U\e(B")
+  ("\e$(6$:\e(B" . "\e$,15Y6-5V\e(B")
+  ("\e$(6$;\e(B" . "\e$,15Y6-5W\e(B")
+  ("\e$(6$<\e(B" . "\e$,15Y6-5X\e(B")
+  ("\e$(6$=\e(B" . "\e$,15Y6-5Y\e(B")
+  ("\e$(6$>\e(B" . "\e$,15Y6-5h\e(B")
+  ("\e$(6$?\e(B" . "\e$,15Y6-5n\e(B")
   ;;      0 1 2 3 4 5 6 7 8 9 a b c d e f
-  ;;2440 \e$(5$@$A$B$C$D$E$F$G$H$I$J$K$L$M$N$O\e(B
-  ("\e$(5$@\e(B" . "\e$,15Y6-5o\e(B")
-  ("\e$(5$A\e(B" . "\e$,15Z6-5Z\e(B")
-  ("\e$(5$B\e(B" . "\e$,15Z6-5^\e(B")
-  ("\e$(5$C\e(B" . "\e$,15[6-5o\e(B")
-  ("\e$(5$D\e(B" . "\e$,15\6-5p\e(B")
-  ("\e$(5$E\e(B" . "\e$,15\6-5^\e(B")
-  ("\e$(5$F\e(B" . "\e$,15^6-5Z\e(B")
-  ("\e$(5$G\e(B" . "\e$,15^6-5\\e(B")
-  ("\e$(5$H\e(B" . "\e$,15_6-5U\e(B")
-  ("\e$(5$I\e(B" . "\e$,15_6-5_\e(B")
-  ("\e$(5$J\e(B" . "\e$,15_6-5`\e(B")
-  ("\e$(5$K\e(B" . "\e$,15_6-5o\e(B")
-  ("\e$(5$L\e(B" . "\e$,15`6-5o\e(B")
-  ("\e$(5$M\e(B" . "\e$,15a6-5W6-5o\e(B")
-  ("\e$(5$N\e(B" . "\e$,15a6-5X6-5p\e(B")
-  ("\e$(5$O\e(B" . "\e$,15a6-5p6-5o\e(B")
+  ;;2440 \e$(6$@$A$B$C$D$E$F$G$H$I$J$K$L$M$N$O\e(B
+  ("\e$(6$@\e(B" . "\e$,15Y6-5o\e(B")
+  ("\e$(6$A\e(B" . "\e$,15Z6-5Z\e(B")
+  ("\e$(6$B\e(B" . "\e$,15Z6-5^\e(B")
+  ("\e$(6$C\e(B" . "\e$,15[6-5o\e(B")
+  ("\e$(6$D\e(B" . "\e$,15\6-5p\e(B")
+  ("\e$(6$E\e(B" . "\e$,15\6-5^\e(B")
+  ("\e$(6$F\e(B" . "\e$,15^6-5Z\e(B")
+  ("\e$(6$G\e(B" . "\e$,15^6-5\\e(B")
+  ("\e$(6$H\e(B" . "\e$,15_6-5U\e(B")
+  ("\e$(6$I\e(B" . "\e$,15_6-5_\e(B")
+  ("\e$(6$J\e(B" . "\e$,15_6-5`\e(B")
+  ("\e$(6$K\e(B" . "\e$,15_6-5o\e(B")
+  ("\e$(6$L\e(B" . "\e$,15`6-5o\e(B")
+  ("\e$(6$M\e(B" . "\e$,15a6-5W6-5o\e(B")
+  ("\e$(6$N\e(B" . "\e$,15a6-5X6-5p\e(B")
+  ("\e$(6$O\e(B" . "\e$,15a6-5p6-5o\e(B")
   ;;      0 1 2 3 4 5 6 7 8 9 a b c d e f
-  ;;2450 \e$(5$P$Q$R$S$T$U$V$W$X$Y$Z$[$\$]$^$_\e(B
-  ("\e$(5$P\e(B" . "\e$,15a6-5W\e(B")
-  ("\e$(5$Q\e(B" . "\e$,15a6-5X\e(B")
-  ("\e$(5$R\e(B" . "\e$,15a6-5a\e(B")
-  ("\e$(5$S\e(B" . "\e$,15a6-5n\e(B")
-  ("\e$(5$T\e(B" . "\e$,15a6-5o\e(B")
+  ;;2450 \e$(6$P$Q$R$S$T$U$V$W$X$Y$Z$[$\$]$^$_\e(B
+  ("\e$(6$P\e(B" . "\e$,15a6-5W\e(B")
+  ("\e$(6$Q\e(B" . "\e$,15a6-5X\e(B")
+  ("\e$(6$R\e(B" . "\e$,15a6-5a\e(B")
+  ("\e$(6$S\e(B" . "\e$,15a6-5n\e(B")
+  ("\e$(6$T\e(B" . "\e$,15a6-5o\e(B")
   ;;      0 1 2 3 4 5 6 7 8 9 a b c d e f
-  ;;2460 \e$(5$`$a$b$c$d$e$f$g$h$i$j$k$l$m$n$o\e(B
-  ("\e$(5$`\e(B" . "\e$,15b6-5o\e(B")
-  ("\e$(5$a\e(B" . "\e$,15d6-5d\e(B")
-  ("\e$(5$b\e(B" . "\e$,15d6-5h\e(B")
-  ("\e$(5$c\e(B" . "\e$,15f6-5f6-5o\e(B")
-  ("\e$(5$d\e(B" . "\e$,15f6-5g6-5o\e(B")
-  ("\e$(5$e\e(B" . "\e$,15f6-5m6-5o\e(B")
-  ("\e$(5$f\e(B" . "\e$,15f6-5p6-5o\e(B")
-  ("\e$(5$g\e(B" . "\e$,15f6-5u6-5o\e(B")
-  ("\e$(5$h\e(B" . "\e$,15f6-5W6-5p\e(B")
-  ("\e$(5$i\e(B" . "\e$,15f6-5X6-5p\e(B")
-  ("\e$(5$j\e(B" . "\e$,15f6-5f6-5u\e(B")
-  ("\e$(5$k\e(B" . "\e$,15f6-5g6-5u\e(B")
-  ("\e$(5$l\e(B" . "\e$,15f6-5W\e(B")
-  ("\e$(5$m\e(B" . "\e$,15f6-5X\e(B")
-  ("\e$(5$n\e(B" . "\e$,15f6-5f\e(B")
-  ("\e$(5$o\e(B" . "\e$,15f6-5g\e(B")
+  ;;2460 \e$(6$`$a$b$c$d$e$f$g$h$i$j$k$l$m$n$o\e(B
+  ("\e$(6$`\e(B" . "\e$,15b6-5o\e(B")
+  ("\e$(6$a\e(B" . "\e$,15d6-5d\e(B")
+  ("\e$(6$b\e(B" . "\e$,15d6-5h\e(B")
+  ("\e$(6$c\e(B" . "\e$,15f6-5f6-5o\e(B")
+  ("\e$(6$d\e(B" . "\e$,15f6-5g6-5o\e(B")
+  ("\e$(6$e\e(B" . "\e$,15f6-5m6-5o\e(B")
+  ("\e$(6$f\e(B" . "\e$,15f6-5p6-5o\e(B")
+  ("\e$(6$g\e(B" . "\e$,15f6-5u6-5o\e(B")
+  ("\e$(6$h\e(B" . "\e$,15f6-5W6-5p\e(B")
+  ("\e$(6$i\e(B" . "\e$,15f6-5X6-5p\e(B")
+  ("\e$(6$j\e(B" . "\e$,15f6-5f6-5u\e(B")
+  ("\e$(6$k\e(B" . "\e$,15f6-5g6-5u\e(B")
+  ("\e$(6$l\e(B" . "\e$,15f6-5W\e(B")
+  ("\e$(6$m\e(B" . "\e$,15f6-5X\e(B")
+  ("\e$(6$n\e(B" . "\e$,15f6-5f\e(B")
+  ("\e$(6$o\e(B" . "\e$,15f6-5g\e(B")
   ;;      0 1 2 3 4 5 6 7 8 9 a b c d e f
-  ;;2470 \e$(5$p$q$r$s$t$u$v$w$x$y$z${$|$}$~\e(B
-  ("\e$(5$p\e(B" . "\e$,15f6-5h\e(B")
-  ("\e$(5$q\e(B" . "\e$,15f6-5l\e(B")
-  ("\e$(5$r\e(B" . "\e$,15f6-5m\e(B")
-  ("\e$(5$s\e(B" . "\e$,15f6-5n\e(B")
-  ("\e$(5$t\e(B" . "\e$,15f6-5o\e(B")
-  ("\e$(5$u\e(B" . "\e$,15f6-5u\e(B")
-  ("\e$(5$v\e(B" . "\e$,15g6-5h\e(B")
-  ("\e$(5$w\e(B" . "\e$,15h6-5h\e(B")
-  ("\e$(5$x\e(B" . "\e$,15j6-5d\e(B")
-  ("\e$(5$y\e(B" . "\e$,15j6-5h\e(B")
-  ("\e$(5$z\e(B" . "\e$,15j6-5r\e(B")
-  ("\e$(5${\e(B" . "\e$,15l6-5h\e(B")
-  ("\e$(5$|\e(B" . "\e$,15l6-5l\e(B")
-  ("\e$(5$}\e(B" . "\e$,15l6-5u\e(B")
-  ("\e$(5$~\e(B" . "\e$,15m6-5h\e(B")))
+  ;;2470 \e$(6$p$q$r$s$t$u$v$w$x$y$z${$|$}$~\e(B
+  ("\e$(6$p\e(B" . "\e$,15f6-5h\e(B")
+  ("\e$(6$q\e(B" . "\e$,15f6-5l\e(B")
+  ("\e$(6$r\e(B" . "\e$,15f6-5m\e(B")
+  ("\e$(6$s\e(B" . "\e$,15f6-5n\e(B")
+  ("\e$(6$t\e(B" . "\e$,15f6-5o\e(B")
+  ("\e$(6$u\e(B" . "\e$,15f6-5u\e(B")
+  ("\e$(6$v\e(B" . "\e$,15g6-5h\e(B")
+  ("\e$(6$w\e(B" . "\e$,15h6-5h\e(B")
+  ("\e$(6$x\e(B" . "\e$,15j6-5d\e(B")
+  ("\e$(6$y\e(B" . "\e$,15j6-5h\e(B")
+  ("\e$(6$z\e(B" . "\e$,15j6-5r\e(B")
+  ("\e$(6${\e(B" . "\e$,15l6-5h\e(B")
+  ("\e$(6$|\e(B" . "\e$,15l6-5l\e(B")
+  ("\e$(6$}\e(B" . "\e$,15l6-5u\e(B")
+  ("\e$(6$~\e(B" . "\e$,15m6-5h\e(B")))
 
 (defconst indian-2-column-to-ucs-regexp
-  "\e$(5!j!j\e(B\\|\e$(5"8"q\e(B\\|[\e$(5#&#'!*#*\e(B]\e$(5"p\e(B\\|[\e$(5!!\e(B-\e$(5$~\e(B]")
+  "\e$(6!j!j\e(B\\|\e$(6"8"q\e(B\\|[\e$(6#&#'!*#*\e(B]\e$(6"p\e(B\\|[\e$(6!!\e(B-\e$(6$~\e(B]")
 
 (put 'indian-2-column-to-ucs-chartable 'char-table-extra-slots 1)
 (defconst indian-2-column-to-ucs-chartable
@@ -967,6 +1201,7 @@ Returns new end position."
     (set-char-table-extra-slot table 0 alist)
     table))
 
+;;;###autoload
 (defun indian-2-column-to-ucs-region (from to)
   "Convert old Emacs Devanagari characters to UCS."
   (interactive "r")
@@ -983,10 +1218,11 @@ Returns new end position."
            (if (= len 1)
                (setq subst (aref indian-2-column-to-ucs-chartable
                                  (char-after (match-beginning 0))))
-             (setq subst (assoc (match-string 0) alist)))
+             (setq subst (cdr (assoc (match-string 0) alist))))
            (replace-match (if subst subst "?"))))
        (indian-compose-region (point-min) (point-max))))))
 
 (provide 'ind-util)
 
+;;; arch-tag: 59aacd71-46c2-4cb3-bb26-e12bbad55545
 ;;; ind-util.el ends here