summaryrefslogtreecommitdiff
path: root/language/chinese/CJK/cjk-4.8.4/utils
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /language/chinese/CJK/cjk-4.8.4/utils
Initial commit
Diffstat (limited to 'language/chinese/CJK/cjk-4.8.4/utils')
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/Bg5conv/bg5conv.1110
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/Bg5conv/bg5conv.c33
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/Bg5conv/bg5conv.w121
-rwxr-xr-xlanguage/chinese/CJK/cjk-4.8.4/utils/Bg5conv/bg5latex43
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/Bg5conv/bg5latex.bat3
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/Bg5conv/bg5latex.cmd44
-rwxr-xr-xlanguage/chinese/CJK/cjk-4.8.4/utils/Bg5conv/bg5pdflatex43
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/CEFconv/cef5conv.1127
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/CEFconv/cef5conv.c135
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/CEFconv/cef5conv.w237
-rwxr-xr-xlanguage/chinese/CJK/cjk-4.8.4/utils/CEFconv/cef5latex43
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/CEFconv/cef5ltx.bat3
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/CEFconv/cef5ltx.cmd46
-rwxr-xr-xlanguage/chinese/CJK/cjk-4.8.4/utils/CEFconv/cef5pdflatex43
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/CEFconv/cefconv.1117
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/CEFconv/cefconv.c127
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/CEFconv/cefconv.w221
-rwxr-xr-xlanguage/chinese/CJK/cjk-4.8.4/utils/CEFconv/ceflatex43
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/CEFconv/ceflatex.bat3
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/CEFconv/ceflatex.cmd46
-rwxr-xr-xlanguage/chinese/CJK/cjk-4.8.4/utils/CEFconv/cefpdflatex43
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/CEFconv/cefsconv.1127
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/CEFconv/cefsconv.c135
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/CEFconv/cefsconv.w240
-rwxr-xr-xlanguage/chinese/CJK/cjk-4.8.4/utils/CEFconv/cefslatex43
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/CEFconv/cefsltx.bat3
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/CEFconv/cefsltx.cmd46
-rwxr-xr-xlanguage/chinese/CJK/cjk-4.8.4/utils/CEFconv/cefspdflatex43
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/SJISconv/sjisconv.1110
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/SJISconv/sjisconv.c33
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/SJISconv/sjisconv.w123
-rwxr-xr-xlanguage/chinese/CJK/cjk-4.8.4/utils/SJISconv/sjislatex43
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/SJISconv/sjisltx.bat3
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/SJISconv/sjisltx.cmd44
-rwxr-xr-xlanguage/chinese/CJK/cjk-4.8.4/utils/SJISconv/sjispdflatex43
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/cjklatex/cjklatex.c293
-rwxr-xr-xlanguage/chinese/CJK/cjk-4.8.4/utils/extconv/bg5+latex43
-rwxr-xr-xlanguage/chinese/CJK/cjk-4.8.4/utils/extconv/bg5+pdflatex43
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/extconv/bg5pltx.bat3
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/extconv/bg5pltx.cmd44
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/extconv/extconv.1111
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/extconv/extconv.c34
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/extconv/extconv.w122
-rwxr-xr-xlanguage/chinese/CJK/cjk-4.8.4/utils/extconv/gbklatex43
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/extconv/gbklatex.bat3
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/extconv/gbklatex.cmd44
-rwxr-xr-xlanguage/chinese/CJK/cjk-4.8.4/utils/extconv/gbkpdflatex43
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/f_name.bat205
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/Makefile.gnu127
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/Makefile.in127
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/README2
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/c-auto.h39
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/cfg/README10
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/cfg/b5ka12.cfg28
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/cfg/b5kr12.cfg30
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/cfg/b5so12.cfg31
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/cfg/c1so12.cfg28
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/cfg/c2so12.cfg28
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/cfg/c3so12.cfg28
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/cfg/c4so12.cfg28
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/cfg/c5so12.cfg28
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/cfg/c6so12.cfg28
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/cfg/c7so12.cfg28
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/cfg/csso12.cfg28
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/cfg/gsfs14.cfg27
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/cfg/j2so12.cfg30
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/cfg/jsso12.cfg28
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/cfg/ksso17.cfg27
-rwxr-xr-xlanguage/chinese/CJK/cjk-4.8.4/utils/hbf2gf/config.guess1438
-rwxr-xr-xlanguage/chinese/CJK/cjk-4.8.4/utils/hbf2gf/config.sub1810
-rwxr-xr-xlanguage/chinese/CJK/cjk-4.8.4/utils/hbf2gf/configure5088
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/configure.ac131
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/dvidrv.btm352
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/emdir.c109
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/emdir.h25
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/emtexdir.c405
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/emtexdir.h57
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/hbf.c1494
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/hbf.h215
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/hbf2gf.1718
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/hbf2gf.c2250
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/hbf2gf.def3
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/hbf2gf.w2816
-rwxr-xr-xlanguage/chinese/CJK/cjk-4.8.4/utils/hbf2gf/install-sh501
-rwxr-xr-xlanguage/chinese/CJK/cjk-4.8.4/utils/hbf2gf/mkinstalldirs162
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/scripts/teTeX-0.4/MakeTeXPK.diff63
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/scripts/teTeX-0.4/MakeTeXTFM.diff28
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/scripts/web2c-6.1/MakeTeXPK.diff75
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/scripts/web2c-6.1/README1
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/scripts/web2c-7.0/MakeTeXPK.diff67
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/scripts/web2c-7.0/MakeTeXTFM.diff36
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/scripts/web2c-7.1/MakeTeXPK.diff72
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/scripts/web2c-7.1/MakeTeXTFM.diff36
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/scripts/web2c-7.2/mktexpk.diff72
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/scripts/web2c-7.2/mktextfm.diff36
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/lisp/cjkspace.el102
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/lisp/cjktilde.el111
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/lisp/emacs/cjk-enc.el1162
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/lisp/emacs/thai-word.el11052
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/lisp/mule-2.3/cjk-enc.el625
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/pyhyphen/pinyin.c480
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/pyhyphen/pinyin.ldf62
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/pyhyphen/pinyin.tr52
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/pyhyphen/pyhyph.tex236
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/pyhyphen/pytest.tex51
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/subfonts/clonevf.pl122
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/subfonts/hlatex2agl.pl477
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/subfonts/makefdx.pl340
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/subfonts/sfd2uni.pl348
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/subfonts/subfonts.pe95
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/subfonts/uni2sfd.pl312
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/subfonts/vertical.pe108
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/subfonts/vertref.pe121
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/thaifont/texmf/dvips/garuda-c90/config.garuda-c901
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/thaifont/texmf/dvips/norasi-c90/config.norasi-c901
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/thaifont/texmf/fonts/enc/dvips/thai/c90.enc334
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/thaifont/texmf/fonts/map/dvips/garuda-c90/garuda-c90.map4
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/thaifont/texmf/fonts/map/dvips/norasi-c90/norasi-c90.map4
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/thaifont/texmf/fonts/tfm/public/garuda-c90/fgdb8z.tfmbin0 -> 3660 bytes
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/thaifont/texmf/fonts/tfm/public/garuda-c90/fgdbo8z.tfmbin0 -> 3912 bytes
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/thaifont/texmf/fonts/tfm/public/garuda-c90/fgdo8z.tfmbin0 -> 3832 bytes
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/thaifont/texmf/fonts/tfm/public/garuda-c90/fgdr8z.tfmbin0 -> 3580 bytes
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/thaifont/texmf/fonts/tfm/public/norasi-c90/ftnb8z.tfmbin0 -> 6412 bytes
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/thaifont/texmf/fonts/tfm/public/norasi-c90/ftnbi8z.tfmbin0 -> 6640 bytes
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/thaifont/texmf/fonts/tfm/public/norasi-c90/ftni8z.tfmbin0 -> 6664 bytes
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/thaifont/texmf/fonts/tfm/public/norasi-c90/ftnr8z.tfmbin0 -> 6424 bytes
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/thaifont/tools/INSTALL333
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/thaifont/tools/c90.etx2346
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/thaifont/tools/c90.mtx42
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/thaifont/tools/dbtt-old/config.dbtt-old1
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/thaifont/tools/dbtt-old/dbtt-old-alias.etx46
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/thaifont/tools/dbtt-old/dbtt-old-alias.mtx36
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/thaifont/tools/dbtt-old/dbtt-old-alias.tex139
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/thaifont/tools/dbtt-old/dbtt-old.fontinst78
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/thaifont/tools/dbtt-old/dbtt-old.map4
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/thaifont/tools/garuda-c90.fontinst77
-rw-r--r--language/chinese/CJK/cjk-4.8.4/utils/thaifont/tools/norasi-c90.fontinst85
137 files changed, 41875 insertions, 0 deletions
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/Bg5conv/bg5conv.1 b/language/chinese/CJK/cjk-4.8.4/utils/Bg5conv/bg5conv.1
new file mode 100644
index 0000000000..a9e83901cf
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/Bg5conv/bg5conv.1
@@ -0,0 +1,110 @@
+.\" man page for bg5conv
+.\" Copyright (C) 1994-2015 Werner Lemberg <wl@gnu.org>
+.\"
+.\" This program is free software; you can redistribute it and/or modify
+.\" it under the terms of the GNU General Public License as published by
+.\" the Free Software Foundation; either version 2 of the License, or
+.\" (at your option) any later version.
+.\"
+.\" This program is distributed in the hope that it will be useful,
+.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+.\" GNU General Public License for more details.
+.\"
+.\" You should have received a copy of the GNU General Public License
+.\" along with this program in doc/COPYING; if not, write to the Free
+.\" Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+.\" MA 02110-1301 USA
+.
+.TH BG5CONV 1 18-Apr-2015 "CJK Version 4.8.4"
+.
+.\" ====
+.\" ==== macro definitions
+.\" ====
+.
+.\" here we define \TeX for troff and nroff
+.if t .ds TX \fRT\\h'-0.1667m'\\v'0.20v'E\\v'-0.20v'\\h'-0.125m'X\fP
+.if n .ds TX TeX
+.
+.\" and here the same for \LaTeX
+.if t \{\
+.ie '\*(.T'dvi' \
+.ds LX \fRL\h'-0.36m'\v'-0.15v'\s-3A\s0\h'-0.15m'\v'0.15v'\fP\*(TX
+.el .ds LX \fRL\h'-0.36m'\v'-0.22v'\s-2A\s0\h'-0.15m'\v'0.22v'\fP\*(TX
+.\}
+.if n .ds LX LaTeX
+.
+.\" \LaTeXe
+.\" note that we need \vareps for TeX instead of \eps which can only be
+.\" accessed with the \N escape sequence (in the Math Italic font)
+.if t \{\
+.ie '\*(.T'dvi' .ds LE \*(LX\h'0.15m'2\v'0.20v'\f(MI\N'34'\fP\v'-0.20v'
+.el .ds LE \*(LX\h'0.15m'2\v'0.20v'\(*e\v'-0.20v'
+.\}
+.if n .ds LE LaTeX\ 2e
+.
+.\" a typewriter font
+.if t \{\
+.de C
+\fC\\$1\fP\\$2
+..
+.\}
+.if n \{\
+.de C
+\\$1\\$2
+..
+.\}
+.
+.\" ====
+.\" ==== end of macro definitions
+.\" ====
+.
+.
+.
+.SH NAME
+bg5conv \- convert a TeX document in Big\ 5 encoding into `preprocessed'
+form.
+.
+.
+.SH SYNOPSIS
+.B bg5conv
+<
+.I infile
+>
+.I outfile
+.
+.
+.SH DESCRIPTION
+Big\ 5 encoding for traditional Chinese uses the characters
+.C { ,
+.C } ,
+and
+.C \e
+which have special meanings in \*(TX
+documents.
+.PP
+After processing a \*(LE
+document which contains Big\ 5 characters with
+.B bg5conv
+you need not care about these special characters.
+.PP
+This filter is part of the
+.B CJK
+macro package for \*(LE.
+.
+.
+.SH "SEE ALSO"
+.BR \%sjisconv (1),
+.BR \%cefconv (1),
+.BR cef5conv (1),
+.BR \%cefsconv (1),
+.BR \%extconv (1),
+.br
+the
+.B CJK
+documentation files.
+.
+.
+.SH AUTHOR
+Werner Lemberg
+.C <wl@gnu.org>
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/Bg5conv/bg5conv.c b/language/chinese/CJK/cjk-4.8.4/utils/Bg5conv/bg5conv.c
new file mode 100644
index 0000000000..b745e6a97f
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/Bg5conv/bg5conv.c
@@ -0,0 +1,33 @@
+#define banner \
+"bg5conv (CJK ver. 4.8.4)" \
+
+/*2:*/
+#line 94 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/Bg5conv/bg5conv.w"
+
+#include <stdio.h>
+#include <stdlib.h>
+
+
+int main(int argc,char*argv[])
+{int ch;
+
+fprintf(stdout,"\\def\\CJKpreproc{%s}",banner);
+
+ch= fgetc(stdin);
+
+while(!feof(stdin))
+{if(ch>=0xA1&&ch<=0xFE)
+{fprintf(stdout,"\177%c\177",ch);
+
+ch= fgetc(stdin);
+if(!feof(stdin))
+fprintf(stdout,"%d\177",ch);
+}
+else
+fputc(ch,stdout);
+
+ch= fgetc(stdin);
+}
+exit(EXIT_SUCCESS);
+return 0;
+}/*:2*/
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/Bg5conv/bg5conv.w b/language/chinese/CJK/cjk-4.8.4/utils/Bg5conv/bg5conv.w
new file mode 100644
index 0000000000..13165032d6
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/Bg5conv/bg5conv.w
@@ -0,0 +1,121 @@
+% This is the cweb file bg5conv.w of the CJK Package Ver. 4.8.4 18-Apr-2015
+
+% Copyright (C) 1994-2015 Werner Lemberg <wl@@gnu.org>
+%
+% This program is free software; you can redistribute it and/or modify
+% it under the terms of the GNU General Public License as published by
+% the Free Software Foundation; either version 2 of the License, or
+% (at your option) any later version.
+%
+% This program is distributed in the hope that it will be useful,
+% but WITHOUT ANY WARRANTY; without even the implied warranty of
+% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+% GNU General Public License for more details.
+%
+% You should have received a copy of the GNU General Public License
+% along with this program in doc/COPYING; if not, write to the Free
+% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+% MA 02110-1301 USA
+
+% To print this CWEB file you should (but not must) use the CWEAVE of the
+% c2cweb-package (found at the CTAN archives, e.g. ftp.dante.de) and then say
+%
+% cweave +a bg5conv.w
+%
+% This (fully compatible) CWEAVE can transform CWEB-files with alternative
+% output rules (look at the position of braces below!) the author (it's me
+% too :-) prefer. Otherwise this file will be formatted traditionally.
+
+\def\title{bg5conv (CJK Version 4.8.4)}
+
+\def\topofcontents{
+ \null\vfill
+ \centerline{\titlefont The {\ttitlefont bg5conv} program}
+ \vskip 20pt
+ \centerline{(CJK Version 4.8.4)}
+ \vfill}
+
+\def\botofcontents{
+ \vfill
+ \noindent
+ Copyright \copyright\ 1996, 1998 by Werner Lemberg
+ \bigskip\noindent
+ Permission is granted to make and distribute verbatim copies of this
+ document provided that the copyright notice and this permission notice
+ are preserved on all copies.
+
+ \smallskip\noindent
+ Permission is granted to copy and distribute modified versions of this
+ document under the conditions for verbatim copying, provided that the
+ entire resulting derived work is distributed under the terms of a
+ permission notice identical to this one.}
+
+\pageno=\contentspagenumber \advance\pageno by 1
+\let\maybe=\iftrue
+\fullpageheight=240mm
+\pageheight=223mm
+\pagewidth=158mm
+\setpage
+\frenchspacing
+
+\noinx
+\nosecs
+\nocon
+
+@* Function and Use.
+This small program will convert Big~5 encoded Chinese characters into a
+`preprocessed' form. The need of this program arises from the fact that this
+encoding uses the characters `\.{\\}', `\.{\{}', and `\.{\}}' which have
+special meanings in \TeX.
+
+Use this program as a filter:
+
+\hskip 2em \.{bg5conv < input\_file > output\_file}
+
+
+@* The program.
+The only function of this program is to replace all occurrences of Big 5
+encoded characters \.{XY} (\.{X} and \.{Y} are the first and the second byte
+of the character) with
+\.{\char94 \char94 7fX\char94 \char94 7fZZZ\char94 \char94 7f}, where
+\.{ZZZ} represents the second byte as a decimal number. \.{0x7F} is used as
+an active character and delimiter.
+
+Additionally we define a \TeX\ macro at the very beginning to signal a
+preprocessed file.
+
+The following code is very simple. No error detection is done because \TeX\
+which will see the output of \.{bg5conv} complains loudly if something is
+wrong.
+
+@d banner
+"bg5conv (CJK ver. 4.8.4)"
+
+@c
+#include <stdio.h>
+#include <stdlib.h>@#
+
+
+int main(int argc, char *argv[])
+ {int ch;
+
+ fprintf(stdout, "\\def\\CJKpreproc{%s}", banner);@#
+
+ ch = fgetc(stdin);@#
+
+ while(!feof(stdin))
+ {if(ch >= 0xA1 && ch <= 0xFE)
+ {fprintf(stdout, "\177%c\177", ch);@#
+
+ ch = fgetc(stdin);
+ if(!feof(stdin))
+ fprintf(stdout, "%d\177", ch);
+ }
+ else
+ fputc(ch, stdout);@#
+
+ ch = fgetc(stdin);
+ }
+ exit(EXIT_SUCCESS);
+ return 0; /* never reached */
+ }
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/Bg5conv/bg5latex b/language/chinese/CJK/cjk-4.8.4/utils/Bg5conv/bg5latex
new file mode 100755
index 0000000000..2540f9524d
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/Bg5conv/bg5latex
@@ -0,0 +1,43 @@
+#! /bin/sh
+
+# Copyright (C) 1994-2015 Werner Lemberg <wl@gnu.org>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program in doc/COPYING; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301 USA
+
+n=1
+argv=
+
+# get last argument
+while test 1 -lt $#; do
+ eval argv$n=\$1
+ argv="$argv \"\$argv$n\""
+ n=`expr $n + 1`
+ shift
+done
+
+# replace extension with .cjk or append .cjk if there is no extension
+tex=$1
+case $tex in
+""|*.cjk)
+ echo >&2 "Usage: $0 [options] latex-file"
+ exit 1;;
+*)
+ aux=`expr "X$tex" : 'X\(.*\)\.[^/]*$' \| "X$tex" : 'X\(.*\)'`.cjk;;
+esac
+
+bg5conv < "$tex" > "$aux" && eval latex "$argv" "\$aux"
+
+# EOF
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/Bg5conv/bg5latex.bat b/language/chinese/CJK/cjk-4.8.4/utils/Bg5conv/bg5latex.bat
new file mode 100644
index 0000000000..91e7dfd857
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/Bg5conv/bg5latex.bat
@@ -0,0 +1,3 @@
+call f_name %1
+bg5conv < %1 > %fd%%fp%%fn%.cjk
+latex %fd%%fu%%fn%.cjk
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/Bg5conv/bg5latex.cmd b/language/chinese/CJK/cjk-4.8.4/utils/Bg5conv/bg5latex.cmd
new file mode 100644
index 0000000000..facf871970
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/Bg5conv/bg5latex.cmd
@@ -0,0 +1,44 @@
+/*----------------------------------------------------------------------*\
+ bg5latex.cmd
+
+ This file is part of the CJK macro package for LaTeX2e ver. 4.8.4
+
+ Copyright (C) 1994-2015 Wonkoo Kim <wkim+@pitt.edu>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program in doc/COPYING; if not, write to the Free
+ Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+ MA 02110-1301 USA
+
+ Wonkoo Kim (wkim+@pitt.edu), September 2, 1996
+\*----------------------------------------------------------------------*/
+
+Call RxFuncAdd 'SysLoadFuncs', 'RexxUtil', 'SysLoadFuncs'
+Call SysLoadFuncs
+
+parse arg file
+
+drive = filespec('drive', file)
+path = filespec('path', file)
+fname = filespec('name', file)
+m = lastpos('.', fname)
+if (m = 0) then m = length(fname) + 1
+cjkfile = drive||path||delstr(fname, m)||'.cjk'
+
+'bg5conv <' file '>' cjkfile
+
+ucjkfile = translate(cjkfile,'/','\')
+if stream(cjkfile, 'C', 'QUERY EXISTS') \= '' then
+ 'call latex.cmd' ucjkfile
+
+/* End of bg5latex.cmd */
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/Bg5conv/bg5pdflatex b/language/chinese/CJK/cjk-4.8.4/utils/Bg5conv/bg5pdflatex
new file mode 100755
index 0000000000..9adacad3a6
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/Bg5conv/bg5pdflatex
@@ -0,0 +1,43 @@
+#! /bin/sh
+
+# Copyright (C) 1994-2015 Werner Lemberg <wl@gnu.org>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program in doc/COPYING; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301 USA
+
+n=1
+argv=
+
+# get last argument
+while test 1 -lt $#; do
+ eval argv$n=\$1
+ argv="$argv \"\$argv$n\""
+ n=`expr $n + 1`
+ shift
+done
+
+# replace extension with .cjk or append .cjk if there is no extension
+tex=$1
+case $tex in
+""|*.cjk)
+ echo >&2 "Usage: $0 [options] pdflatex-file"
+ exit 1;;
+*)
+ aux=`expr "X$tex" : 'X\(.*\)\.[^/]*$' \| "X$tex" : 'X\(.*\)'`.cjk;;
+esac
+
+bg5conv < "$tex" > "$aux" && eval pdflatex "$argv" "\$aux"
+
+# EOF
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/CEFconv/cef5conv.1 b/language/chinese/CJK/cjk-4.8.4/utils/CEFconv/cef5conv.1
new file mode 100644
index 0000000000..d04c527102
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/CEFconv/cef5conv.1
@@ -0,0 +1,127 @@
+.\" man page for cef5conv
+.\" Copyright (C) 1994-2015 Werner Lemberg <wl@gnu.org>
+.\"
+.\" This program is free software; you can redistribute it and/or modify
+.\" it under the terms of the GNU General Public License as published by
+.\" the Free Software Foundation; either version 2 of the License, or
+.\" (at your option) any later version.
+.\"
+.\" This program is distributed in the hope that it will be useful,
+.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+.\" GNU General Public License for more details.
+.\"
+.\" You should have received a copy of the GNU General Public License
+.\" along with this program in doc/COPYING; if not, write to the Free
+.\" Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+.\" MA 02110-1301 USA
+.
+.TH CEF5CONV 1 18-Apr-2015 "CJK Version 4.8.4"
+.
+.\" ====
+.\" ==== macro definitions
+.\" ====
+.
+.\" here we define \TeX for troff and nroff
+.if t .ds TX \fRT\\h'-0.1667m'\\v'0.20v'E\\v'-0.20v'\\h'-0.125m'X\fP
+.if n .ds TX TeX
+.
+.\" and here the same for \LaTeX
+.if t \{\
+.ie '\*(.T'dvi' \
+.ds LX \fRL\h'-0.36m'\v'-0.15v'\s-3A\s0\h'-0.15m'\v'0.15v'\fP\*(TX
+.el .ds LX \fRL\h'-0.36m'\v'-0.22v'\s-2A\s0\h'-0.15m'\v'0.22v'\fP\*(TX
+.\}
+.if n .ds LX LaTeX
+.
+.\" \LaTeXe
+.\" note that we need \vareps for TeX instead of \eps which can only be
+.\" accessed with the \N escape sequence (in the Math Italic font)
+.if t \{\
+.ie '\*(.T'dvi' .ds LE \*(LX\h'0.15m'2\v'0.20v'\f(MI\N'34'\fP\v'-0.20v'
+.el .ds LE \*(LX\h'0.15m'2\v'0.20v'\(*e\v'-0.20v'
+.\}
+.if n .ds LE LaTeX\ 2e
+.
+.\" a typewriter font
+.if t \{\
+.de C
+\fC\\$1\fP
+..
+.\}
+.if n \{\
+.de C
+\\$1
+..
+.\}
+.
+.\" ====
+.\" ==== end of macro definitions
+.\" ====
+.
+.
+.
+.SH NAME
+cef5conv \- convert a TeX document in Big\ 5 encoding containing CEF macros
+into `preprocessed' form.
+.
+.
+.SH SYNOPSIS
+.B cef5conv
+<
+.I infile
+>
+.I outfile
+.
+.
+.SH DESCRIPTION
+The
+.B Chinese Encoding Framework
+.RB ( CEF )
+developed by Christian Wittern
+.C <cwittern@conline.central.de>
+makes it possible to include CJK characters in various encodings using the
+SGML macros
+.B &CX-aabb;
+for Big\ 5 and CNS encoding and
+.B &U-aabb;
+for Unicode
+.RB ( X
+denotes a number between 0 and 7; 0 represents Big\ 5 encoding, 1-7 CNS
+encoding planes 1-7.
+.B aabb
+is either a decimal or hexadecimal number).
+.PP
+.B cef5conv
+converts the CEF macros of a Big\ 5 encoded document together with the Big\
+5 encoding itself into a form which can directly processed with \*(LE.
+It is identical to
+.IP
+.B bg5conv
+<
+.I infile
+|
+.B cefconv
+>
+.I outfile
+.PP
+This filter is part of the
+.B CJK
+macro package for \*(LE.
+.
+.
+.SH "SEE ALSO"
+.BR \%sjisconv (1),
+.BR bg5conv (1),
+.BR \%cefconv (1),
+.BR \%cefsconv (1),
+.BR \%extconv (1),
+.br
+the
+.B CJK
+documentation files.
+.
+.
+.SH AUTHOR
+Werner Lemberg
+.C <wl@gnu.org>
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/CEFconv/cef5conv.c b/language/chinese/CJK/cjk-4.8.4/utils/CEFconv/cef5conv.c
new file mode 100644
index 0000000000..46228a1f5d
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/CEFconv/cef5conv.c
@@ -0,0 +1,135 @@
+#define banner \
+"cef5conv (CJK ver. 4.8.4)" \
+
+/*2:*/
+#line 108 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/CEFconv/cef5conv.w"
+
+#include <ctype.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+
+int main(int argc,char*argv[])
+{int ch,i;
+unsigned char in[16];
+unsigned char out[32];
+unsigned char*inp,*outp;
+
+fprintf(stdout,"\\def\\CNSpreproc{%s}",banner);
+
+ch= fgetc(stdin);
+
+while(!feof(stdin))
+{if(ch>=0xA1&&ch<=0xFE)
+{fprintf(stdout,"\177%c\177",ch);
+
+ch= fgetc(stdin);
+if(!feof(stdin))
+fprintf(stdout,"%d\177",ch);
+}
+else if(ch=='&')
+
+{inp= in;
+outp= out;
+*inp= ch;
+*(++inp)= fgetc(stdin);
+
+if(*inp=='C'&&!feof(stdin))
+{*(++inp)= fgetc(stdin);
+if(*inp=='0'&&!feof(stdin))
+{*(outp++)= 'B';
+*(outp++)= 'g';
+*(outp++)= '5';
+}
+else if(*inp>='1'&&*inp<='7'&&!feof(stdin))
+{*(outp++)= 'C';
+*(outp++)= 'N';
+*(outp++)= 'S';
+*(outp++)= *inp;
+}
+else if((*inp=='X'||*inp=='Y')&&!feof(stdin))
+{*(outp++)= 'C';
+*(outp++)= 'E';
+*(outp++)= 'F';
+*(outp++)= *inp;
+}
+else
+goto no_macro;
+}
+else if(*inp=='U'&&!feof(stdin))
+{*(outp++)= 'U';
+*(outp++)= 'T';
+*(outp++)= 'F';
+*(outp++)= '8';
+}
+else
+goto no_macro;
+
+*(++inp)= fgetc(stdin);
+if(*inp!='-'||feof(stdin))
+goto no_macro;
+
+*(outp++)= '\177';
+*(outp++)= '\177';
+*(outp++)= '\"';
+*(outp++)= '0';
+
+*(++inp)= fgetc(stdin);
+if(isxdigit(*inp)&&*inp<0x80&&!feof(stdin))
+*(outp++)= toupper(*inp);
+else
+goto no_macro;
+
+*(++inp)= fgetc(stdin);
+if(isxdigit(*inp)&&*inp<0x80&&!feof(stdin))
+*(outp++)= toupper(*inp);
+else
+goto no_macro;
+
+*(outp++)= '\177';
+*(outp++)= '\"';
+*(outp++)= '0';
+
+*(++inp)= fgetc(stdin);
+if(isxdigit(*inp)&&*inp<0x80&&!feof(stdin))
+*(outp++)= toupper(*inp);
+else
+goto no_macro;
+
+*(++inp)= fgetc(stdin);
+if(isxdigit(*inp)&&*inp<0x80&&!feof(stdin))
+*(outp++)= toupper(*inp);
+else
+goto no_macro;
+
+*(outp++)= '\177';
+*outp= '\0';
+
+*(++inp)= fgetc(stdin);
+if(*inp!=';'||feof(stdin))
+goto no_macro;
+
+outp= out;
+fprintf(stdout,"\17772\177");
+while(*outp)
+fputc(*(outp++),stdout);
+
+ch= fgetc(stdin);
+continue;
+
+no_macro:
+ch= *inp;
+i= inp-in;
+inp= in;
+while(i--)
+fputc(*(inp++),stdout);
+continue;
+}
+else
+fputc(ch,stdout);
+
+ch= fgetc(stdin);
+}
+exit(EXIT_SUCCESS);
+return 0;
+}/*:2*/
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/CEFconv/cef5conv.w b/language/chinese/CJK/cjk-4.8.4/utils/CEFconv/cef5conv.w
new file mode 100644
index 0000000000..575ba253ae
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/CEFconv/cef5conv.w
@@ -0,0 +1,237 @@
+% This is the cweb file cef5conv.w of the CJK Package Ver. 4.8.4 18-Apr-2015
+
+% Copyright (C) 1994-2015 Werner Lemberg <wl@@gnu.org>
+%
+% This program is free software; you can redistribute it and/or modify
+% it under the terms of the GNU General Public License as published by
+% the Free Software Foundation; either version 2 of the License, or
+% (at your option) any later version.
+%
+% This program is distributed in the hope that it will be useful,
+% but WITHOUT ANY WARRANTY; without even the implied warranty of
+% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+% GNU General Public License for more details.
+%
+% You should have received a copy of the GNU General Public License
+% along with this program in doc/COPYING; if not, write to the Free
+% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+% MA 02110-1301 USA
+
+% To print this CWEB file you should (but not must) use the CWEAVE of the
+% c2cweb-package (found at the CTAN archives, e.g. ftp.dante.de) and then say
+%
+% cweave +a cef5conv.w
+%
+% This (fully compatible) CWEAVE can transform CWEB-files with alternative
+% output rules (look at the position of braces below!) the author (it's me
+% too :-) prefer. Otherwise this file will be formatted traditionally.
+
+\def\title{cef5conv (CJK Version 4.8.4)}
+
+\def\topofcontents{
+ \null\vfill
+ \centerline{\titlefont The {\ttitlefont cef5conv} program}
+ \vskip 20pt
+ \centerline{(CJK Version 4.8.4)}
+ \vfill}
+
+\def\botofcontents{
+ \vfill
+ \noindent
+ Copyright \copyright\ 1996, 1998, 2002 by Werner Lemberg
+ \bigskip\noindent
+ Permission is granted to make and distribute verbatim copies of this
+ document provided that the copyright notice and this permission notice
+ are preserved on all copies.
+
+ \smallskip\noindent
+ Permission is granted to copy and distribute modified versions of this
+ document under the conditions for verbatim copying, provided that the
+ entire resulting derived work is distributed under the terms of a
+ permission notice identical to this one.}
+
+\pageno=\contentspagenumber \advance\pageno by 1
+\let\maybe=\iftrue
+\fullpageheight=240mm
+\pageheight=223mm
+\pagewidth=158mm
+\setpage
+\frenchspacing
+
+\noinx
+\nosecs
+\nocon
+
+@* Function and Use.
+This small program will convert Big~5 encoding with CNS encoded Chinese
+characters using the {\it Chinese Encoding Framework (CEF)} into a
+`preprocessed' form. The need of this program arises from the fact that
+Big~5 encoding uses the characters `\.{\\}', `\.{\{}', and `\.{\}}' which
+have special meanings in \TeX.
+
+Use this program as a filter:
+
+\hskip 2em \.{cef5conv < input\_file > output\_file}
+
+
+@* The program.
+In contrast to \.{cefconv} two tasks will be executed:
+
+Replacing all occurrences of Big~5 encoded characters \.{XY} (\.{X} and
+\.{Y} are the first and the second byte of the character) with
+\.{\char94 \char94 7fX\char94 \char94 7fZZZ\char94 \char94 7f}, where
+\.{ZZZ} represents the second byte as a decimal number. \.{0x7F} is used as
+a control character and a delimiter.
+
+Replacing CEF macros of the form \.{\&xx-yyzz;} (\.{xx} can be C1--C7 for
+the CNS planes 1--7, C0 for Big~5 encoding, an encoding CX reserved for
+IRIZ, a private encoding CY, and U for Unicode encoding; \.{yyzz} is a
+hexadecimal representation of the code point in this plane) with
+\medskip
+\quad\.{\char94 \char94 7f72\char94 \char94 7fXX\char94 \char94 7f%
+\char94 \char94 7f"0yy\char94 \char94 7f"0zz\char94 \char94 7f}\quad.
+\medskip
+\.{XX} is the corresponding CJK encoding of \.{xx}; the number `72'
+specifies a macro in the file \.{MULEenc.sty} which further processes this
+representation -- it is automatically loaded by the \.{CJK} package.
+
+Additionally we define a \TeX\ macro at the very beginning to signal a
+preprocessed file.
+
+The following code is very simple. No error detection is done because \TeX\
+which will see the output of \.{cef5conv} complains loudly if something is
+wrong.
+
+@d banner
+"cef5conv (CJK ver. 4.8.4)"
+
+@c
+#include <ctype.h>
+#include <stdio.h>
+#include <stdlib.h>@#
+
+
+int main(int argc, char *argv[])
+ {int ch, i;
+ unsigned char in[16];
+ unsigned char out[32];
+ unsigned char *inp, *outp;
+
+ fprintf(stdout, "\\def\\CNSpreproc{%s}", banner);@#
+
+ ch = fgetc(stdin);@#
+
+ while(!feof(stdin))
+ {if(ch >= 0xA1 && ch <= 0xFE)
+ {fprintf(stdout, "\177%c\177", ch);@#
+
+ ch = fgetc(stdin);
+ if(!feof(stdin))
+ fprintf(stdout, "%d\177", ch);
+ }
+ else if(ch == '&')
+ /* the macro test is hardcoded to make things simple */
+ {inp = in;
+ outp = out;
+ *inp = ch;
+ *(++inp) = fgetc(stdin);@#
+
+ if(*inp == 'C' && !feof(stdin))
+ {*(++inp) = fgetc(stdin);
+ if(*inp == '0' && !feof(stdin))
+ {*(outp++) = 'B';
+ *(outp++) = 'g';
+ *(outp++) = '5';
+ }
+ else if(*inp >= '1' && *inp <= '7' && !feof(stdin))
+ {*(outp++) = 'C';
+ *(outp++) = 'N';
+ *(outp++) = 'S';
+ *(outp++) = *inp;
+ }
+ else if((*inp == 'X' || *inp == 'Y') && !feof(stdin))
+ {*(outp++) = 'C';
+ *(outp++) = 'E';
+ *(outp++) = 'F';
+ *(outp++) = *inp;
+ }
+ else
+ goto no_macro;
+ }
+ else if(*inp == 'U' && !feof(stdin))
+ {*(outp++) = 'U';
+ *(outp++) = 'T';
+ *(outp++) = 'F';
+ *(outp++) = '8';
+ }
+ else
+ goto no_macro;@#
+
+ *(++inp) = fgetc(stdin);
+ if(*inp != '-' || feof(stdin))
+ goto no_macro;@#
+
+ *(outp++) = '\177';
+ *(outp++) = '\177';
+ *(outp++) = '\"';
+ *(outp++) = '0';@#
+
+ *(++inp) = fgetc(stdin);
+ if(isxdigit(*inp) && *inp < 0x80 && !feof(stdin))
+ *(outp++) = toupper(*inp);
+ else
+ goto no_macro;@#
+
+ *(++inp) = fgetc(stdin);
+ if(isxdigit(*inp) && *inp < 0x80 && !feof(stdin))
+ *(outp++) = toupper(*inp);
+ else
+ goto no_macro;@#
+
+ *(outp++) = '\177';
+ *(outp++) = '\"';
+ *(outp++) = '0';@#
+
+ *(++inp) = fgetc(stdin);
+ if(isxdigit(*inp) && *inp < 0x80 && !feof(stdin))
+ *(outp++) = toupper(*inp);
+ else
+ goto no_macro;@#
+
+ *(++inp) = fgetc(stdin);
+ if(isxdigit(*inp) && *inp < 0x80 && !feof(stdin))
+ *(outp++) = toupper(*inp);
+ else
+ goto no_macro;@#
+
+ *(outp++) = '\177';
+ *outp = '\0';@#
+
+ *(++inp) = fgetc(stdin);
+ if(*inp != ';' || feof(stdin))
+ goto no_macro;@#
+
+ outp = out;
+ fprintf(stdout, "\17772\177");
+ while(*outp)
+ fputc(*(outp++), stdout);@#
+
+ ch = fgetc(stdin);
+ continue;@#
+
+no_macro:
+ ch = *inp;
+ i = inp - in;
+ inp = in;
+ while(i--)
+ fputc(*(inp++), stdout);
+ continue;
+ }
+ else
+ fputc(ch, stdout);@#
+
+ ch = fgetc(stdin);
+ }
+ exit(EXIT_SUCCESS);
+ return 0; /* never reached */
+ }
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/CEFconv/cef5latex b/language/chinese/CJK/cjk-4.8.4/utils/CEFconv/cef5latex
new file mode 100755
index 0000000000..1b51a711d1
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/CEFconv/cef5latex
@@ -0,0 +1,43 @@
+#! /bin/sh
+
+# Copyright (C) 1994-2015 Werner Lemberg <wl@gnu.org>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program in doc/COPYING; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301 USA
+
+n=1
+argv=
+
+# get last argument
+while test 1 -lt $#; do
+ eval argv$n=\$1
+ argv="$argv \"\$argv$n\""
+ n=`expr $n + 1`
+ shift
+done
+
+# replace extension with .cjk or append .cjk if there is no extension
+tex=$1
+case $tex in
+""|*.cjk)
+ echo >&2 "Usage: $0 [options] latex-file"
+ exit 1;;
+*)
+ aux=`expr "X$tex" : 'X\(.*\)\.[^/]*$' \| "X$tex" : 'X\(.*\)'`.cjk;;
+esac
+
+cef5conv < "$tex" > "$aux" && eval latex "$argv" "\$aux"
+
+# EOF
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/CEFconv/cef5ltx.bat b/language/chinese/CJK/cjk-4.8.4/utils/CEFconv/cef5ltx.bat
new file mode 100644
index 0000000000..187485301f
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/CEFconv/cef5ltx.bat
@@ -0,0 +1,3 @@
+call f_name %1
+cef5conv < %1 > %fd%%fp%%fn%.cjk
+latex %fd%%fu%%fn%.cjk
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/CEFconv/cef5ltx.cmd b/language/chinese/CJK/cjk-4.8.4/utils/CEFconv/cef5ltx.cmd
new file mode 100644
index 0000000000..f089e831c6
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/CEFconv/cef5ltx.cmd
@@ -0,0 +1,46 @@
+/*----------------------------------------------------------------------*\
+ cef5ltx.cmd
+
+ This file is part of the CJK macro package for LaTeX2e ver. 4.8.4
+
+ This file is part of the CJK macro package for LaTeX2e ver. 4.8.4
+
+ Copyright (C) 1994-2015 Wonkoo Kim <wkim+@pitt.edu>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program in doc/COPYING; if not, write to the Free
+ Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+ MA 02110-1301 USA
+
+ Wonkoo Kim (wkim+@pitt.edu), September 2, 1996
+\*----------------------------------------------------------------------*/
+
+Call RxFuncAdd 'SysLoadFuncs', 'RexxUtil', 'SysLoadFuncs'
+Call SysLoadFuncs
+
+parse arg file
+
+drive = filespec('drive', file)
+path = filespec('path', file)
+fname = filespec('name', file)
+m = lastpos('.', fname)
+if (m = 0) then m = length(fname) + 1
+cjkfile = drive||path||delstr(fname, m)||'.cjk'
+
+'cef5conv <' file '>' cjkfile
+
+ucjkfile = translate(cjkfile,'/','\')
+if stream(cjkfile, 'C', 'QUERY EXISTS') \= '' then
+ 'call latex.cmd' ucjkfile
+
+/* End of cef5ltx.cmd */
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/CEFconv/cef5pdflatex b/language/chinese/CJK/cjk-4.8.4/utils/CEFconv/cef5pdflatex
new file mode 100755
index 0000000000..1ae7b5953e
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/CEFconv/cef5pdflatex
@@ -0,0 +1,43 @@
+#! /bin/sh
+
+# Copyright (C) 1994-2015 Werner Lemberg <wl@gnu.org>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program in doc/COPYING; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301 USA
+
+n=1
+argv=
+
+# get last argument
+while test 1 -lt $#; do
+ eval argv$n=\$1
+ argv="$argv \"\$argv$n\""
+ n=`expr $n + 1`
+ shift
+done
+
+# replace extension with .cjk or append .cjk if there is no extension
+tex=$1
+case $tex in
+""|*.cjk)
+ echo >&2 "Usage: $0 [options] pdflatex-file"
+ exit 1;;
+*)
+ aux=`expr "X$tex" : 'X\(.*\)\.[^/]*$' \| "X$tex" : 'X\(.*\)'`.cjk;;
+esac
+
+cef5conv < "$tex" > "$aux" && eval pdflatex "$argv" "\$aux"
+
+# EOF
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/CEFconv/cefconv.1 b/language/chinese/CJK/cjk-4.8.4/utils/CEFconv/cefconv.1
new file mode 100644
index 0000000000..7be7fae6ba
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/CEFconv/cefconv.1
@@ -0,0 +1,117 @@
+.\" man page for cefconv
+.\" Copyright (C) 1994-2015 Werner Lemberg <wl@gnu.org>
+.\"
+.\" This program is free software; you can redistribute it and/or modify
+.\" it under the terms of the GNU General Public License as published by
+.\" the Free Software Foundation; either version 2 of the License, or
+.\" (at your option) any later version.
+.\"
+.\" This program is distributed in the hope that it will be useful,
+.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+.\" GNU General Public License for more details.
+.\"
+.\" You should have received a copy of the GNU General Public License
+.\" along with this program in doc/COPYING; if not, write to the Free
+.\" Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+.\" MA 02110-1301 USA
+.
+.TH CEFCONV 1 18-Apr-2015 "CJK Version 4.8.4"
+.
+.\" ====
+.\" ==== macro definitions
+.\" ====
+.
+.\" here we define \TeX for troff and nroff
+.if t .ds TX \fRT\\h'-0.1667m'\\v'0.20v'E\\v'-0.20v'\\h'-0.125m'X\fP
+.if n .ds TX TeX
+.
+.\" and here the same for \LaTeX
+.if t \{\
+.ie '\*(.T'dvi' \
+.ds LX \fRL\h'-0.36m'\v'-0.15v'\s-3A\s0\h'-0.15m'\v'0.15v'\fP\*(TX
+.el .ds LX \fRL\h'-0.36m'\v'-0.22v'\s-2A\s0\h'-0.15m'\v'0.22v'\fP\*(TX
+.\}
+.if n .ds LX LaTeX
+.
+.\" \LaTeXe
+.\" note that we need \vareps for TeX instead of \eps which can only be
+.\" accessed with the \N escape sequence (in the Math Italic font)
+.if t \{\
+.ie '\*(.T'dvi' .ds LE \*(LX\h'0.15m'2\v'0.20v'\f(MI\N'34'\fP\v'-0.20v'
+.el .ds LE \*(LX\h'0.15m'2\v'0.20v'\(*e\v'-0.20v'
+.\}
+.if n .ds LE LaTeX\ 2e
+.
+.\" a typewriter font
+.if t \{\
+.de C
+\fC\\$1\fP
+..
+.\}
+.if n \{\
+.de C
+\\$1
+..
+.\}
+.
+.\" ====
+.\" ==== end of macro definitions
+.\" ====
+.
+.
+.
+.SH NAME
+cefconv \- convert a TeX document containing CEF macros into `preprocessed'
+form.
+.
+.
+.SH SYNOPSIS
+.B cefconv
+<
+.I infile
+>
+.I outfile
+.
+.
+.SH DESCRIPTION
+The
+.B Chinese Encoding Framework
+.RB ( CEF )
+developed by Christian Wittern
+.C <cwittern@conline.central.de>
+makes it possible to include CJK characters in various encodings using the
+SGML macros
+.B &CX-aabb;
+for Big\ 5 and CNS encoding and
+.B &U-aabb;
+for Unicode
+.RB ( X
+denotes a number between 0 and 7; 0 represents Big\ 5 encoding, 1-7 CNS
+encoding planes 1-7.
+.B aabb
+is either a decimal or hexadecimal number)
+.PP
+.B \%cefconv
+converts the CEF macros into a form which can directly processed with \*(LE.
+.PP
+This filter is part of the
+.B CJK
+macro package for \*(LE.
+.
+.
+.SH "SEE ALSO"
+.BR \%sjisconv (1),
+.BR bg5conv (1),
+.BR cef5conv (1),
+.BR \%cefsconv (1),
+.BR \%extconv (1),
+.br
+the
+.B CJK
+documentation files.
+.
+.
+.SH AUTHOR
+Werner Lemberg
+.C <wl@gnu.org>
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/CEFconv/cefconv.c b/language/chinese/CJK/cjk-4.8.4/utils/CEFconv/cefconv.c
new file mode 100644
index 0000000000..967672e793
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/CEFconv/cefconv.c
@@ -0,0 +1,127 @@
+#define banner \
+"cefconv (CJK ver. 4.8.4)" \
+
+/*2:*/
+#line 100 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/CEFconv/cefconv.w"
+
+#include <ctype.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+
+int main(int argc,char*argv[])
+{int ch,i;
+unsigned char in[16];
+unsigned char out[32];
+unsigned char*inp,*outp;
+
+fprintf(stdout,"\\def\\CNSpreproc{%s}",banner);
+
+ch= fgetc(stdin);
+
+while(!feof(stdin))
+{if(ch=='&')
+{inp= in;
+outp= out;
+*inp= ch;
+*(++inp)= fgetc(stdin);
+
+if(*inp=='C'&&!feof(stdin))
+{*(++inp)= fgetc(stdin);
+if(*inp=='0'&&!feof(stdin))
+{*(outp++)= 'B';
+*(outp++)= 'g';
+*(outp++)= '5';
+}
+else if(*inp>='1'&&*inp<='7'&&!feof(stdin))
+{*(outp++)= 'C';
+*(outp++)= 'N';
+*(outp++)= 'S';
+*(outp++)= *inp;
+}
+else if((*inp=='X'||*inp=='Y')&&!feof(stdin))
+{*(outp++)= 'C';
+*(outp++)= 'E';
+*(outp++)= 'F';
+*(outp++)= *inp;
+}
+else
+goto no_macro;
+}
+else if(*inp=='U'&&!feof(stdin))
+{*(outp++)= 'U';
+*(outp++)= 'T';
+*(outp++)= 'F';
+*(outp++)= '8';
+}
+else
+goto no_macro;
+
+*(++inp)= fgetc(stdin);
+if(*inp!='-'||feof(stdin))
+goto no_macro;
+
+*(outp++)= '\177';
+*(outp++)= '\177';
+*(outp++)= '\"';
+*(outp++)= '0';
+
+*(++inp)= fgetc(stdin);
+if(isxdigit(*inp)&&*inp<0x80&&!feof(stdin))
+*(outp++)= toupper(*inp);
+else
+goto no_macro;
+
+*(++inp)= fgetc(stdin);
+if(isxdigit(*inp)&&*inp<0x80&&!feof(stdin))
+*(outp++)= toupper(*inp);
+else
+goto no_macro;
+
+*(outp++)= '\177';
+*(outp++)= '\"';
+*(outp++)= '0';
+
+*(++inp)= fgetc(stdin);
+if(isxdigit(*inp)&&*inp<0x80&&!feof(stdin))
+*(outp++)= toupper(*inp);
+else
+goto no_macro;
+
+*(++inp)= fgetc(stdin);
+if(isxdigit(*inp)&&*inp<0x80&&!feof(stdin))
+*(outp++)= toupper(*inp);
+else
+goto no_macro;
+
+*(outp++)= '\177';
+*outp= '\0';
+
+*(++inp)= fgetc(stdin);
+if(*inp!=';'||feof(stdin))
+goto no_macro;
+
+outp= out;
+fprintf(stdout,"\17772\177");
+while(*outp)
+fputc(*(outp++),stdout);
+
+ch= fgetc(stdin);
+continue;
+
+no_macro:
+ch= *inp;
+i= inp-in;
+inp= in;
+while(i--)
+fputc(*(inp++),stdout);
+continue;
+}
+else
+fputc(ch,stdout);
+
+ch= fgetc(stdin);
+}
+exit(EXIT_SUCCESS);
+return 0;
+}/*:2*/
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/CEFconv/cefconv.w b/language/chinese/CJK/cjk-4.8.4/utils/CEFconv/cefconv.w
new file mode 100644
index 0000000000..142a5d862b
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/CEFconv/cefconv.w
@@ -0,0 +1,221 @@
+% This is the cweb file cefconv.w of the CJK Package Ver. 4.8.4 18-Apr-2015
+
+% Copyright (C) 1994-2015 Werner Lemberg <wl@@gnu.org>
+%
+% This program is free software; you can redistribute it and/or modify
+% it under the terms of the GNU General Public License as published by
+% the Free Software Foundation; either version 2 of the License, or
+% (at your option) any later version.
+%
+% This program is distributed in the hope that it will be useful,
+% but WITHOUT ANY WARRANTY; without even the implied warranty of
+% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+% GNU General Public License for more details.
+%
+% You should have received a copy of the GNU General Public License
+% along with this program in doc/COPYING; if not, write to the Free
+% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+% MA 02110-1301 USA
+
+% To print this CWEB file you should (but not must) use the CWEAVE of the
+% c2cweb-package (found at the CTAN archives, e.g. ftp.dante.de) and then say
+%
+% cweave +a cefconv.w
+%
+% This (fully compatible) CWEAVE can transform CWEB-files with alternative
+% output rules (look at the position of braces below!) the author (it's me
+% too :-) prefer. Otherwise this file will be formatted traditionally.
+
+\def\title{cefconv (CJK Version 4.8.4)}
+
+\def\topofcontents{
+ \null\vfill
+ \centerline{\titlefont The {\ttitlefont cefconv} program}
+ \vskip 20pt
+ \centerline{(CJK Version 4.8.4)}
+ \vfill}
+
+\def\botofcontents{
+ \vfill
+ \noindent
+ Copyright \copyright\ 1996, 1998, 2002 by Werner Lemberg
+ \bigskip\noindent
+ Permission is granted to make and distribute verbatim copies of this
+ document provided that the copyright notice and this permission notice
+ are preserved on all copies.
+
+ \smallskip\noindent
+ Permission is granted to copy and distribute modified versions of this
+ document under the conditions for verbatim copying, provided that the
+ entire resulting derived work is distributed under the terms of a
+ permission notice identical to this one.}
+
+\pageno=\contentspagenumber \advance\pageno by 1
+\let\maybe=\iftrue
+\fullpageheight=240mm
+\pageheight=223mm
+\pagewidth=158mm
+\setpage
+\frenchspacing
+
+\noinx
+\nosecs
+\nocon
+
+@* Function and Use.
+This small program will convert EUC encoding with CNS encoded Chinese
+characters using the {\it Chinese Encoding Framework (CEF)} into a
+`preprocessed' form, expanding the CEF macros.
+
+Use this program as a filter:
+
+\hskip 2em \.{cefconv < input\_file > output\_file}
+
+
+@* The program.
+In contrast to \.{cef5conv} or \.{cefsconv}, only one task will be executed:
+
+Replacing CEF macros of the form \.{\&xx-yyzz;} (\.{xx} can be C1--C7 for
+the CNS planes 1--7, C0 for Big~5 encoding, an encoding CX reserved for
+IRIZ, a private encoding CY, and U for Unicode encoding; \.{yyzz} is a
+hexadecimal representation of the code point in this plane) with
+\medskip
+\quad\.{\char94 \char94 7f72\char94 \char94 7fXX\char94 \char94 7f%
+\char94 \char94 7f"0yy\char94 \char94 7f"0zz\char94 \char94 7f}\quad.
+\medskip
+\.{XX} is the corresponding CJK encoding of \.{xx}; the number `72'
+specifies a macro in the file \.{MULEenc.sty} which further processes this
+representation -- it is automatically loaded by the \.{CJK} package.
+
+Additionally we define an empty \TeX\ macro at the very beginning to signal
+a preprocessed file.
+
+The following code is very simple. No error detection is done because \TeX\
+which will see the output of \.{cefconv} complains loudly if something is
+wrong.
+
+@d banner
+"cefconv (CJK ver. 4.8.4)"
+
+@c
+#include <ctype.h>
+#include <stdio.h>
+#include <stdlib.h>@#
+
+
+int main(int argc, char *argv[])
+ {int ch, i;
+ unsigned char in[16];
+ unsigned char out[32];
+ unsigned char *inp, *outp;
+
+ fprintf(stdout, "\\def\\CNSpreproc{%s}", banner);@#
+
+ ch = fgetc(stdin);@#
+
+ while(!feof(stdin))
+ {if(ch == '&') /* the macro test is hardcoded to make things simple */
+ {inp = in;
+ outp = out;
+ *inp = ch;
+ *(++inp) = fgetc(stdin);@#
+
+ if(*inp == 'C' && !feof(stdin))
+ {*(++inp) = fgetc(stdin);
+ if(*inp == '0' && !feof(stdin))
+ {*(outp++) = 'B';
+ *(outp++) = 'g';
+ *(outp++) = '5';
+ }
+ else if(*inp >= '1' && *inp <= '7' && !feof(stdin))
+ {*(outp++) = 'C';
+ *(outp++) = 'N';
+ *(outp++) = 'S';
+ *(outp++) = *inp;
+ }
+ else if((*inp == 'X' || *inp == 'Y') && !feof(stdin))
+ {*(outp++) = 'C';
+ *(outp++) = 'E';
+ *(outp++) = 'F';
+ *(outp++) = *inp;
+ }
+ else
+ goto no_macro;
+ }
+ else if(*inp == 'U' && !feof(stdin))
+ {*(outp++) = 'U';
+ *(outp++) = 'T';
+ *(outp++) = 'F';
+ *(outp++) = '8';
+ }
+ else
+ goto no_macro;@#
+
+ *(++inp) = fgetc(stdin);
+ if(*inp != '-' || feof(stdin))
+ goto no_macro;@#
+
+ *(outp++) = '\177';
+ *(outp++) = '\177';
+ *(outp++) = '\"';
+ *(outp++) = '0';@#
+
+ *(++inp) = fgetc(stdin);
+ if(isxdigit(*inp) && *inp < 0x80 && !feof(stdin))
+ *(outp++) = toupper(*inp);
+ else
+ goto no_macro;@#
+
+ *(++inp) = fgetc(stdin);
+ if(isxdigit(*inp) && *inp < 0x80 && !feof(stdin))
+ *(outp++) = toupper(*inp);
+ else
+ goto no_macro;@#
+
+ *(outp++) = '\177';
+ *(outp++) = '\"';
+ *(outp++) = '0';@#
+
+ *(++inp) = fgetc(stdin);
+ if(isxdigit(*inp) && *inp < 0x80 && !feof(stdin))
+ *(outp++) = toupper(*inp);
+ else
+ goto no_macro;@#
+
+ *(++inp) = fgetc(stdin);
+ if(isxdigit(*inp) && *inp < 0x80 && !feof(stdin))
+ *(outp++) = toupper(*inp);
+ else
+ goto no_macro;@#
+
+ *(outp++) = '\177';
+ *outp = '\0';@#
+
+ *(++inp) = fgetc(stdin);
+ if(*inp != ';' || feof(stdin))
+ goto no_macro;@#
+
+ outp = out;
+ fprintf(stdout, "\17772\177");
+ while(*outp)
+ fputc(*(outp++), stdout);@#
+
+ ch = fgetc(stdin);
+ continue;@#
+
+no_macro:
+ ch = *inp;
+ i = inp - in;
+ inp = in;
+ while(i--)
+ fputc(*(inp++), stdout);
+ continue;
+ }
+ else
+ fputc(ch, stdout);@#
+
+ ch = fgetc(stdin);
+ }
+ exit(EXIT_SUCCESS);
+ return 0; /* never reached */
+ }
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/CEFconv/ceflatex b/language/chinese/CJK/cjk-4.8.4/utils/CEFconv/ceflatex
new file mode 100755
index 0000000000..79bcd8abe3
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/CEFconv/ceflatex
@@ -0,0 +1,43 @@
+#! /bin/sh
+
+# Copyright (C) 1994-2015 Werner Lemberg <wl@gnu.org>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program in doc/COPYING; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301 USA
+
+n=1
+argv=
+
+# get last argument
+while test 1 -lt $#; do
+ eval argv$n=\$1
+ argv="$argv \"\$argv$n\""
+ n=`expr $n + 1`
+ shift
+done
+
+# replace extension with .cjk or append .cjk if there is no extension
+tex=$1
+case $tex in
+""|*.cjk)
+ echo >&2 "Usage: $0 [options] latex-file"
+ exit 1;;
+*)
+ aux=`expr "X$tex" : 'X\(.*\)\.[^/]*$' \| "X$tex" : 'X\(.*\)'`.cjk;;
+esac
+
+cefconv < "$tex" > "$aux" && eval latex "$argv" "\$aux"
+
+# EOF
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/CEFconv/ceflatex.bat b/language/chinese/CJK/cjk-4.8.4/utils/CEFconv/ceflatex.bat
new file mode 100644
index 0000000000..ba5925a6df
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/CEFconv/ceflatex.bat
@@ -0,0 +1,3 @@
+call f_name %1
+cefconv < %1 > %fd%%fp%%fn%.cjk
+latex %fd%%fu%%fn%.cjk
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/CEFconv/ceflatex.cmd b/language/chinese/CJK/cjk-4.8.4/utils/CEFconv/ceflatex.cmd
new file mode 100644
index 0000000000..dcc3183431
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/CEFconv/ceflatex.cmd
@@ -0,0 +1,46 @@
+/*----------------------------------------------------------------------*\
+ ceflatex.cmd
+
+ This file is part of the CJK macro package for LaTeX2e ver. 4.8.4
+
+ This file is part of the CJK macro package for LaTeX2e ver. 4.8.4
+
+ Copyright (C) 1994-2015 Wonkoo Kim <wkim+@pitt.edu>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program in doc/COPYING; if not, write to the Free
+ Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+ MA 02110-1301 USA
+
+ Wonkoo Kim (wkim+@pitt.edu), September 2, 1996
+\*----------------------------------------------------------------------*/
+
+Call RxFuncAdd 'SysLoadFuncs', 'RexxUtil', 'SysLoadFuncs'
+Call SysLoadFuncs
+
+parse arg file
+
+drive = filespec('drive', file)
+path = filespec('path', file)
+fname = filespec('name', file)
+m = lastpos('.', fname)
+if (m = 0) then m = length(fname) + 1
+cjkfile = drive||path||delstr(fname, m)||'.cjk'
+
+'cefconv <' file '>' cjkfile
+
+ucjkfile = translate(cjkfile,'/','\')
+if stream(cjkfile, 'C', 'QUERY EXISTS') \= '' then
+ 'call latex.cmd' ucjkfile
+
+/* End of ceflatex.cmd */
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/CEFconv/cefpdflatex b/language/chinese/CJK/cjk-4.8.4/utils/CEFconv/cefpdflatex
new file mode 100755
index 0000000000..c1b776cffd
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/CEFconv/cefpdflatex
@@ -0,0 +1,43 @@
+#! /bin/sh
+
+# Copyright (C) 1994-2015 Werner Lemberg <wl@gnu.org>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program in doc/COPYING; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301 USA
+
+n=1
+argv=
+
+# get last argument
+while test 1 -lt $#; do
+ eval argv$n=\$1
+ argv="$argv \"\$argv$n\""
+ n=`expr $n + 1`
+ shift
+done
+
+# replace extension with .cjk or append .cjk if there is no extension
+tex=$1
+case $tex in
+""|*.cjk)
+ echo >&2 "Usage: $0 [options] pdflatex-file"
+ exit 1;;
+*)
+ aux=`expr "X$tex" : 'X\(.*\)\.[^/]*$' \| "X$tex" : 'X\(.*\)'`.cjk;;
+esac
+
+cefconv < "$tex" > "$aux" && eval pdflatex "$argv" "\$aux"
+
+# EOF
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/CEFconv/cefsconv.1 b/language/chinese/CJK/cjk-4.8.4/utils/CEFconv/cefsconv.1
new file mode 100644
index 0000000000..4c38133298
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/CEFconv/cefsconv.1
@@ -0,0 +1,127 @@
+.\" man page for cefsconv
+.\" Copyright (C) 1994-2015 Werner Lemberg <wl@gnu.org>
+.\"
+.\" This program is free software; you can redistribute it and/or modify
+.\" it under the terms of the GNU General Public License as published by
+.\" the Free Software Foundation; either version 2 of the License, or
+.\" (at your option) any later version.
+.\"
+.\" This program is distributed in the hope that it will be useful,
+.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+.\" GNU General Public License for more details.
+.\"
+.\" You should have received a copy of the GNU General Public License
+.\" along with this program in doc/COPYING; if not, write to the Free
+.\" Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+.\" MA 02110-1301 USA
+.
+.TH CEFSCONV 1 18-Apr-2015 "CJK Version 4.8.4"
+.
+.\" ====
+.\" ==== macro definitions
+.\" ====
+.
+.\" here we define \TeX for troff and nroff
+.if t .ds TX \fRT\\h'-0.1667m'\\v'0.20v'E\\v'-0.20v'\\h'-0.125m'X\fP
+.if n .ds TX TeX
+.
+.\" and here the same for \LaTeX
+.if t \{\
+.ie '\*(.T'dvi' \
+.ds LX \fRL\h'-0.36m'\v'-0.15v'\s-3A\s0\h'-0.15m'\v'0.15v'\fP\*(TX
+.el .ds LX \fRL\h'-0.36m'\v'-0.22v'\s-2A\s0\h'-0.15m'\v'0.22v'\fP\*(TX
+.\}
+.if n .ds LX LaTeX
+.
+.\" \LaTeXe
+.\" note that we need \vareps for TeX instead of \eps which can only be
+.\" accessed with the \N escape sequence (in the Math Italic font)
+.if t \{\
+.ie '\*(.T'dvi' .ds LE \*(LX\h'0.15m'2\v'0.20v'\f(MI\N'34'\fP\v'-0.20v'
+.el .ds LE \*(LX\h'0.15m'2\v'0.20v'\(*e\v'-0.20v'
+.\}
+.if n .ds LE LaTeX\ 2e
+.
+.\" a typewriter font
+.if t \{\
+.de C
+\fC\\$1\fP
+..
+.\}
+.if n \{\
+.de C
+\\$1
+..
+.\}
+.
+.\" ====
+.\" ==== end of macro definitions
+.\" ====
+.
+.
+.
+.SH NAME
+cefsconv \- convert a TeX document in SJIS encoding containing CEF macros
+into `preprocessed' form.
+.
+.
+.SH SYNOPSIS
+.B cefsconv
+<
+.I infile
+>
+.I outfile
+.
+.
+.SH DESCRIPTION
+The
+.B Chinese Encoding Framework
+.RB ( CEF )
+developed by Christian Wittern
+.C <cwittern@conline.central.de>
+makes it possible to include CJK characters in various encodings using the
+SGML macros
+.B &CX-aabb;
+for Big\ 5 and CNS encoding and
+.B &U-aabb;
+for Unicode
+.RB ( X
+denotes a number between 0 and 7; 0 represents Big\ 5 encoding, 1-7 CNS
+encoding planes 1-7.
+.B aabb
+is either a decimal or hexadecimal number).
+.PP
+.B \%cefsconv
+converts the CEF macros of a SJIS encoded document together with the SJIS
+encoding itself into a form which can directly processed with \*(LE.
+It is identical to
+.IP
+.B sjisconv
+<
+.I infile
+|
+.B cefconv
+>
+.I outfile
+.PP
+This filter is part of the
+.B CJK
+macro package for \*(LE.
+.
+.
+.SH "SEE ALSO"
+.BR \%sjisconv (1),
+.BR bg5conv (1),
+.BR \%cefconv (1),
+.BR cef5conv (1),
+.BR \%extconv (1),
+.br
+the
+.B CJK
+documentation files.
+.
+.
+.SH AUTHOR
+Werner Lemberg
+.C <wl@gnu.org>
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/CEFconv/cefsconv.c b/language/chinese/CJK/cjk-4.8.4/utils/CEFconv/cefsconv.c
new file mode 100644
index 0000000000..bd4a701ffc
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/CEFconv/cefsconv.c
@@ -0,0 +1,135 @@
+#define banner \
+"cefsconv (CJK ver. 4.8.4)" \
+
+/*2:*/
+#line 111 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/CEFconv/cefsconv.w"
+
+#include <ctype.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+
+int main(int argc,char*argv[])
+{int ch,i;
+unsigned char in[16];
+unsigned char out[32];
+unsigned char*inp,*outp;
+
+fprintf(stdout,"\\def\\CNSpreproc{%s}",banner);
+
+ch= fgetc(stdin);
+
+while(!feof(stdin))
+{if((ch>=0x81&&ch<=0x9F)||(ch>=0xE0&&ch<=0xEF))
+{fprintf(stdout,"\177%c\177",ch);
+
+ch= fgetc(stdin);
+if(!feof(stdin))
+fprintf(stdout,"%d\177",ch);
+}
+else if(ch=='&')
+
+{inp= in;
+outp= out;
+*inp= ch;
+*(++inp)= fgetc(stdin);
+
+if(*inp=='C'&&!feof(stdin))
+{*(++inp)= fgetc(stdin);
+if(*inp=='0'&&!feof(stdin))
+{*(outp++)= 'B';
+*(outp++)= 'g';
+*(outp++)= '5';
+}
+else if(*inp>='1'&&*inp<='7'&&!feof(stdin))
+{*(outp++)= 'C';
+*(outp++)= 'N';
+*(outp++)= 'S';
+*(outp++)= *inp;
+}
+else if((*inp=='X'||*inp=='Y')&&!feof(stdin))
+{*(outp++)= 'C';
+*(outp++)= 'E';
+*(outp++)= 'F';
+*(outp++)= *inp;
+}
+else
+goto no_macro;
+}
+else if(*inp=='U'&&!feof(stdin))
+{*(outp++)= 'U';
+*(outp++)= 'T';
+*(outp++)= 'F';
+*(outp++)= '8';
+}
+else
+goto no_macro;
+
+*(++inp)= fgetc(stdin);
+if(*inp!='-'||feof(stdin))
+goto no_macro;
+
+*(outp++)= '\177';
+*(outp++)= '\177';
+*(outp++)= '\"';
+*(outp++)= '0';
+
+*(++inp)= fgetc(stdin);
+if(isxdigit(*inp)&&*inp<0x80&&!feof(stdin))
+*(outp++)= toupper(*inp);
+else
+goto no_macro;
+
+*(++inp)= fgetc(stdin);
+if(isxdigit(*inp)&&*inp<0x80&&!feof(stdin))
+*(outp++)= toupper(*inp);
+else
+goto no_macro;
+
+*(outp++)= '\177';
+*(outp++)= '\"';
+*(outp++)= '0';
+
+*(++inp)= fgetc(stdin);
+if(isxdigit(*inp)&&*inp<0x80&&!feof(stdin))
+*(outp++)= toupper(*inp);
+else
+goto no_macro;
+
+*(++inp)= fgetc(stdin);
+if(isxdigit(*inp)&&*inp<0x80&&!feof(stdin))
+*(outp++)= toupper(*inp);
+else
+goto no_macro;
+
+*(outp++)= '\177';
+*outp= '\0';
+
+*(++inp)= fgetc(stdin);
+if(*inp!=';'||feof(stdin))
+goto no_macro;
+
+outp= out;
+fprintf(stdout,"\17772\177");
+while(*outp)
+fputc(*(outp++),stdout);
+
+ch= fgetc(stdin);
+continue;
+
+no_macro:
+ch= *inp;
+i= inp-in;
+inp= in;
+while(i--)
+fputc(*(inp++),stdout);
+continue;
+}
+else
+fputc(ch,stdout);
+
+ch= fgetc(stdin);
+}
+exit(EXIT_SUCCESS);
+return 0;
+}/*:2*/
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/CEFconv/cefsconv.w b/language/chinese/CJK/cjk-4.8.4/utils/CEFconv/cefsconv.w
new file mode 100644
index 0000000000..7e033f34ea
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/CEFconv/cefsconv.w
@@ -0,0 +1,240 @@
+% This is the cweb file cefsconv.w of the CJK Package Ver. 4.8.4 18-Apr-2015
+
+% Copyright (C) 1994-2015 Werner Lemberg <wl@@gnu.org>
+%
+% This program is free software; you can redistribute it and/or modify
+% it under the terms of the GNU General Public License as published by
+% the Free Software Foundation; either version 2 of the License, or
+% (at your option) any later version.
+%
+% This program is distributed in the hope that it will be useful,
+% but WITHOUT ANY WARRANTY; without even the implied warranty of
+% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+% GNU General Public License for more details.
+%
+% You should have received a copy of the GNU General Public License
+% along with this program in doc/COPYING; if not, write to the Free
+% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+% MA 02110-1301 USA
+
+% To print this CWEB file you should (but not must) use the CWEAVE of the
+% c2cweb-package (found at the CTAN archives, e.g. ftp.dante.de) and then say
+%
+% cweave +a cefsconv.w
+%
+% This (fully compatible) CWEAVE can transform CWEB-files with alternative
+% output rules (look at the position of braces below!) the author (it's me
+% too :-) prefer. Otherwise this file will be formatted traditionally.
+
+\def\title{cefsconv (CJK Version 4.8.4)}
+
+\def\topofcontents{
+ \null\vfill
+ \centerline{\titlefont The {\ttitlefont cefsconv} program}
+ \vskip 20pt
+ \centerline{(CJK Version 4.8.4)}
+ \vfill}
+
+\def\botofcontents{
+ \vfill
+ \noindent
+ Copyright \copyright\ 1996, 1998 by Werner Lemberg
+ \bigskip\noindent
+ Permission is granted to make and distribute verbatim copies of this
+ document provided that the copyright notice and this permission notice
+ are preserved on all copies.
+
+ \smallskip\noindent
+ Permission is granted to copy and distribute modified versions of this
+ document under the conditions for verbatim copying, provided that the
+ entire resulting derived work is distributed under the terms of a
+ permission notice identical to this one.}
+
+\pageno=\contentspagenumber \advance\pageno by 1
+\let\maybe=\iftrue
+\fullpageheight=240mm
+\pageheight=223mm
+\pagewidth=158mm
+\setpage
+\frenchspacing
+
+\noinx
+\nosecs
+\nocon
+
+@* Function and Use.
+This small program will convert SJIS encoding with CNS encoded Chinese
+characters using the {\it Chinese Encoding Framework (CEF)} into a
+`preprocessed' form. The need of this program arises from the fact that
+SJIS encoding uses the characters `\.{\\}', `\.{\{}', and `\.{\}}' which
+have special meanings in \TeX.
+
+Use this program as a filter:
+
+\hskip 2em \.{cefsconv < input\_file > output\_file}
+
+
+@* The program.
+In contrast to \.{cefconv} two tasks will be executed:
+
+Replacing all occurrences of two byte SJIS encoded characters \.{XY} with
+\.{\char94 \char94 7fX\char94 \char94 7fZZZ\char94 \char94 7f} (\.{X} and
+\.{Y} are the first and the second byte of the character; \.{ZZZ} represents
+the second byte as a decimal number).
+
+Replacing CEF macros of the form \.{\&xx-yyzz;} (\.{xx} can be C1--C7 for
+the CNS planes 1--7, C0 for Big~5 encoding, an encoding CX reserved for
+IRIZ, a private encoding CY, and U for Unicode encoding; \.{yyzz} is a
+hexadecimal representation of the code point in this plane) with
+\medskip
+\quad\.{\char94 \char94 7f72\char94 \char94 7fXX\char94 \char94 7f%
+\char94 \char94 7f"0yy\char94 \char94 7f"0zz\char94 \char94 7f}\quad.
+\medskip
+\.{XX} is the corresponding CJK encoding of \.{xx}; the number `72'
+specifies a macro in the file \.{MULEenc.sty} which further processes this
+representation -- it is necessary to explicitly load this file with
+\.{\\usepackage}.
+
+Additionally we define a \TeX\ macro at the very beginning to signal a
+preprocessed file.
+
+The following code is very simple. No error detection is done because \TeX\
+which will see the output of \.{cefsconv} complains loudly if something is
+wrong.
+
+Note that the user-defined character area of SJIS (with the first bytes in
+the range 0xF0--0xFC) is not supported because it is not portable.
+
+@d banner
+"cefsconv (CJK ver. 4.8.4)"
+
+@c
+#include <ctype.h>
+#include <stdio.h>
+#include <stdlib.h>@#
+
+
+int main(int argc, char *argv[])
+ {int ch, i;
+ unsigned char in[16];
+ unsigned char out[32];
+ unsigned char *inp, *outp;
+
+ fprintf(stdout, "\\def\\CNSpreproc{%s}", banner);@#
+
+ ch = fgetc(stdin);@#
+
+ while(!feof(stdin))
+ {if((ch >= 0x81 && ch <= 0x9F) || (ch >= 0xE0 && ch <= 0xEF))
+ {fprintf(stdout, "\177%c\177", ch);@#
+
+ ch = fgetc(stdin);
+ if(!feof(stdin))
+ fprintf(stdout, "%d\177", ch);
+ }
+ else if(ch == '&')
+ /* the macro test is hardcoded to make things simple */
+ {inp = in;
+ outp = out;
+ *inp = ch;
+ *(++inp) = fgetc(stdin);@#
+
+ if(*inp == 'C' && !feof(stdin))
+ {*(++inp) = fgetc(stdin);
+ if(*inp == '0' && !feof(stdin))
+ {*(outp++) = 'B';
+ *(outp++) = 'g';
+ *(outp++) = '5';
+ }
+ else if(*inp >= '1' && *inp <= '7' && !feof(stdin))
+ {*(outp++) = 'C';
+ *(outp++) = 'N';
+ *(outp++) = 'S';
+ *(outp++) = *inp;
+ }
+ else if((*inp == 'X' || *inp == 'Y') && !feof(stdin))
+ {*(outp++) = 'C';
+ *(outp++) = 'E';
+ *(outp++) = 'F';
+ *(outp++) = *inp;
+ }
+ else
+ goto no_macro;
+ }
+ else if(*inp == 'U' && !feof(stdin))
+ {*(outp++) = 'U';
+ *(outp++) = 'T';
+ *(outp++) = 'F';
+ *(outp++) = '8';
+ }
+ else
+ goto no_macro;@#
+
+ *(++inp) = fgetc(stdin);
+ if(*inp != '-' || feof(stdin))
+ goto no_macro;@#
+
+ *(outp++) = '\177';
+ *(outp++) = '\177';
+ *(outp++) = '\"';
+ *(outp++) = '0';@#
+
+ *(++inp) = fgetc(stdin);
+ if(isxdigit(*inp) && *inp < 0x80 && !feof(stdin))
+ *(outp++) = toupper(*inp);
+ else
+ goto no_macro;@#
+
+ *(++inp) = fgetc(stdin);
+ if(isxdigit(*inp) && *inp < 0x80 && !feof(stdin))
+ *(outp++) = toupper(*inp);
+ else
+ goto no_macro;@#
+
+ *(outp++) = '\177';
+ *(outp++) = '\"';
+ *(outp++) = '0';@#
+
+ *(++inp) = fgetc(stdin);
+ if(isxdigit(*inp) && *inp < 0x80 && !feof(stdin))
+ *(outp++) = toupper(*inp);
+ else
+ goto no_macro;@#
+
+ *(++inp) = fgetc(stdin);
+ if(isxdigit(*inp) && *inp < 0x80 && !feof(stdin))
+ *(outp++) = toupper(*inp);
+ else
+ goto no_macro;@#
+
+ *(outp++) = '\177';
+ *outp = '\0';@#
+
+ *(++inp) = fgetc(stdin);
+ if(*inp != ';' || feof(stdin))
+ goto no_macro;@#
+
+ outp = out;
+ fprintf(stdout, "\17772\177");
+ while(*outp)
+ fputc(*(outp++), stdout);@#
+
+ ch = fgetc(stdin);
+ continue;@#
+
+no_macro:
+ ch = *inp;
+ i = inp - in;
+ inp = in;
+ while(i--)
+ fputc(*(inp++), stdout);
+ continue;
+ }
+ else
+ fputc(ch, stdout);@#
+
+ ch = fgetc(stdin);
+ }
+ exit(EXIT_SUCCESS);
+ return 0; /* never reached */
+ }
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/CEFconv/cefslatex b/language/chinese/CJK/cjk-4.8.4/utils/CEFconv/cefslatex
new file mode 100755
index 0000000000..3d3daa175b
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/CEFconv/cefslatex
@@ -0,0 +1,43 @@
+#! /bin/sh
+
+# Copyright (C) 1994-2015 Werner Lemberg <wl@gnu.org>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program in doc/COPYING; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301 USA
+
+n=1
+argv=
+
+# get last argument
+while test 1 -lt $#; do
+ eval argv$n=\$1
+ argv="$argv \"\$argv$n\""
+ n=`expr $n + 1`
+ shift
+done
+
+# replace extension with .cjk or append .cjk if there is no extension
+tex=$1
+case $tex in
+""|*.cjk)
+ echo >&2 "Usage: $0 [options] latex-file"
+ exit 1;;
+*)
+ aux=`expr "X$tex" : 'X\(.*\)\.[^/]*$' \| "X$tex" : 'X\(.*\)'`.cjk;;
+esac
+
+cefsconv < "$tex" > "$aux" && eval latex "$argv" "\$aux"
+
+# EOF
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/CEFconv/cefsltx.bat b/language/chinese/CJK/cjk-4.8.4/utils/CEFconv/cefsltx.bat
new file mode 100644
index 0000000000..662ef9e3af
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/CEFconv/cefsltx.bat
@@ -0,0 +1,3 @@
+call f_name %1
+cefsconv < %1 > %fd%%fp%%fn%.cjk
+latex %fd%%fu%%fn%.cjk
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/CEFconv/cefsltx.cmd b/language/chinese/CJK/cjk-4.8.4/utils/CEFconv/cefsltx.cmd
new file mode 100644
index 0000000000..7150e8aad1
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/CEFconv/cefsltx.cmd
@@ -0,0 +1,46 @@
+/*----------------------------------------------------------------------*\
+ cefsltx.cmd
+
+ This file is part of the CJK macro package for LaTeX2e ver. 4.8.4
+
+ This file is part of the CJK macro package for LaTeX2e ver. 4.8.4
+
+ Copyright (C) 1994-2015 Wonkoo Kim <wkim+@pitt.edu>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program in doc/COPYING; if not, write to the Free
+ Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+ MA 02110-1301 USA
+
+ Wonkoo Kim (wkim+@pitt.edu), September 2, 1996
+\*----------------------------------------------------------------------*/
+
+Call RxFuncAdd 'SysLoadFuncs', 'RexxUtil', 'SysLoadFuncs'
+Call SysLoadFuncs
+
+parse arg file
+
+drive = filespec('drive', file)
+path = filespec('path', file)
+fname = filespec('name', file)
+m = lastpos('.', fname)
+if (m = 0) then m = length(fname) + 1
+cjkfile = drive||path||delstr(fname, m)||'.cjk'
+
+'cefsconv <' file '>' cjkfile
+
+ucjkfile = translate(cjkfile,'/','\')
+if stream(cjkfile, 'C', 'QUERY EXISTS') \= '' then
+ 'call latex.cmd' ucjkfile
+
+/* End of cefsltx.cmd */
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/CEFconv/cefspdflatex b/language/chinese/CJK/cjk-4.8.4/utils/CEFconv/cefspdflatex
new file mode 100755
index 0000000000..ed981d4dfb
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/CEFconv/cefspdflatex
@@ -0,0 +1,43 @@
+#! /bin/sh
+
+# Copyright (C) 1994-2015 Werner Lemberg <wl@gnu.org>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program in doc/COPYING; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301 USA
+
+n=1
+argv=
+
+# get last argument
+while test 1 -lt $#; do
+ eval argv$n=\$1
+ argv="$argv \"\$argv$n\""
+ n=`expr $n + 1`
+ shift
+done
+
+# replace extension with .cjk or append .cjk if there is no extension
+tex=$1
+case $tex in
+""|*.cjk)
+ echo >&2 "Usage: $0 [options] latex-file"
+ exit 1;;
+*)
+ aux=`expr "X$tex" : 'X\(.*\)\.[^/]*$' \| "X$tex" : 'X\(.*\)'`.cjk;;
+esac
+
+cefsconv < "$tex" > "$aux" && eval pdflatex "$argv" "\$aux"
+
+# EOF
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/SJISconv/sjisconv.1 b/language/chinese/CJK/cjk-4.8.4/utils/SJISconv/sjisconv.1
new file mode 100644
index 0000000000..c385eb616d
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/SJISconv/sjisconv.1
@@ -0,0 +1,110 @@
+.\" man page for sjisconv
+.\" Copyright (C) 1994-2015 Werner Lemberg <wl@gnu.org>
+.\"
+.\" This program is free software; you can redistribute it and/or modify
+.\" it under the terms of the GNU General Public License as published by
+.\" the Free Software Foundation; either version 2 of the License, or
+.\" (at your option) any later version.
+.\"
+.\" This program is distributed in the hope that it will be useful,
+.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+.\" GNU General Public License for more details.
+.\"
+.\" You should have received a copy of the GNU General Public License
+.\" along with this program in doc/COPYING; if not, write to the Free
+.\" Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+.\" MA 02110-1301 USA
+.
+.TH SJISCONV 1 18-Apr-2015 "CJK Version 4.8.4"
+.
+.\" ====
+.\" ==== macro definitions
+.\" ====
+.
+.\" here we define \TeX for troff and nroff
+.if t .ds TX \fRT\\h'-0.1667m'\\v'0.20v'E\\v'-0.20v'\\h'-0.125m'X\fP
+.if n .ds TX TeX
+.
+.\" and here the same for \LaTeX
+.if t \{\
+.ie '\*(.T'dvi' \
+.ds LX \fRL\h'-0.36m'\v'-0.15v'\s-3A\s0\h'-0.15m'\v'0.15v'\fP\*(TX
+.el .ds LX \fRL\h'-0.36m'\v'-0.22v'\s-2A\s0\h'-0.15m'\v'0.22v'\fP\*(TX
+.\}
+.if n .ds LX LaTeX
+.
+.\" \LaTeXe
+.\" note that we need \vareps for TeX instead of \eps which can only be
+.\" accessed with the \N escape sequence (in the Math Italic font)
+.if t \{\
+.ie '\*(.T'dvi' .ds LE \*(LX\h'0.15m'2\v'0.20v'\f(MI\N'34'\fP\v'-0.20v'
+.el .ds LE \*(LX\h'0.15m'2\v'0.20v'\(*e\v'-0.20v'
+.\}
+.if n .ds LE LaTeX\ 2e
+.
+.\" a typewriter font
+.if t \{\
+.de C
+\fC\\$1\fP\\$2
+..
+.\}
+.if n \{\
+.de C
+\\$1\\$2
+..
+.\}
+.
+.\" ====
+.\" ==== end of macro definitions
+.\" ====
+.
+.
+.
+.SH NAME
+sjisconv \- convert a TeX document in SJIS encoding into `preprocessed'
+form.
+.
+.
+.SH SYNOPSIS
+.B sjisconv
+<
+.I infile
+>
+.I outfile
+.
+.
+.SH DESCRIPTION
+SJIS encoding for Japanese uses the characters
+.C { ,
+.C } ,
+and
+.C \e
+which have special meanings in \*(TX
+documents.
+.PP
+After processing a \*(LE
+document which contains SJIS characters with
+.B \%sjisconv
+you need not care about these special characters.
+.PP
+This filter is part of the
+.B CJK
+macro package for \*(LE.
+.
+.
+.SH "SEE ALSO"
+.BR bg5conv (1),
+.BR \%cefconv (1),
+.BR cef5conv (1),
+.BR \%cefsconv (1),
+.BR \%extconv (1),
+.br
+the
+.B CJK
+documentation files.
+.
+.
+.SH AUTHOR
+Werner Lemberg
+.C <wl@gnu.org>
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/SJISconv/sjisconv.c b/language/chinese/CJK/cjk-4.8.4/utils/SJISconv/sjisconv.c
new file mode 100644
index 0000000000..af121e555d
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/SJISconv/sjisconv.c
@@ -0,0 +1,33 @@
+#define banner \
+"sjisconv (CJK ver. 4.8.4)" \
+
+/*2:*/
+#line 96 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/SJISconv/sjisconv.w"
+
+#include <stdio.h>
+#include <stdlib.h>
+
+
+int main(int argc,char*argv[])
+{int ch;
+
+fprintf(stdout,"\\def\\CJKpreproc{%s}",banner);
+
+ch= fgetc(stdin);
+
+while(!feof(stdin))
+{if((ch>=0x81&&ch<=0x9F)||(ch>=0xE0&&ch<=0xEF))
+{fprintf(stdout,"\177%c\177",ch);
+
+ch= fgetc(stdin);
+if(!feof(stdin))
+fprintf(stdout,"%d\177",ch);
+}
+else
+fputc(ch,stdout);
+
+ch= fgetc(stdin);
+}
+exit(EXIT_SUCCESS);
+return 0;
+}/*:2*/
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/SJISconv/sjisconv.w b/language/chinese/CJK/cjk-4.8.4/utils/SJISconv/sjisconv.w
new file mode 100644
index 0000000000..c1044cf36d
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/SJISconv/sjisconv.w
@@ -0,0 +1,123 @@
+% This is the cweb file sjisconv.w of the CJK Package Ver. 4.8.4 18-Apr-2015
+
+% Copyright (C) 1994-2015 Werner Lemberg <wl@@gnu.org>
+%
+% This program is free software; you can redistribute it and/or modify
+% it under the terms of the GNU General Public License as published by
+% the Free Software Foundation; either version 2 of the License, or
+% (at your option) any later version.
+%
+% This program is distributed in the hope that it will be useful,
+% but WITHOUT ANY WARRANTY; without even the implied warranty of
+% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+% GNU General Public License for more details.
+%
+% You should have received a copy of the GNU General Public License
+% along with this program in doc/COPYING; if not, write to the Free
+% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+% MA 02110-1301 USA
+
+% To print this CWEB file you should (but not must) use the CWEAVE of the
+% c2cweb-package (found at the CTAN archives, e.g. ftp.dante.de) and then say
+%
+% cweave +a sjisconv.w
+%
+% This (fully compatible) CWEAVE can transform CWEB-files with alternative
+% output rules (look at the position of braces below!) the author (it's me
+% too :-) prefer. Otherwise this file will be formatted traditionally.
+
+\def\title{sjisconv (CJK Version 4.8.4)}
+
+\def\topofcontents{
+ \null\vfill
+ \centerline{\titlefont The {\ttitlefont sjisconv} program}
+ \vskip 20pt
+ \centerline{(CJK Version 4.8.4)}
+ \vfill}
+
+\def\botofcontents{
+ \vfill
+ \noindent
+ Copyright \copyright\ 1996, 1998 by Werner Lemberg
+ \bigskip\noindent
+ Permission is granted to make and distribute verbatim copies of this
+ document provided that the copyright notice and this permission notice
+ are preserved on all copies.
+
+ \smallskip\noindent
+ Permission is granted to copy and distribute modified versions of this
+ document under the conditions for verbatim copying, provided that the
+ entire resulting derived work is distributed under the terms of a
+ permission notice identical to this one.}
+
+\pageno=\contentspagenumber \advance\pageno by 1
+\let\maybe=\iftrue
+\fullpageheight=240mm
+\pageheight=223mm
+\pagewidth=158mm
+\setpage
+\frenchspacing
+
+\noinx
+\nosecs
+\nocon
+
+@* Function and Use.
+This small program will convert SJIS encoded Japanese characters into a
+`preprocessed' form. The need of this program arises from the fact that this
+encoding uses the characters `\.{\\}', `\.{\{}', and `\.{\}}' which have
+special meanings in \TeX.
+
+Use this program as a filter:
+
+\hskip 2em \.{sjisconv < input\_file > output\_file}
+
+
+@* The program.
+The only function of this program is to replace all occurrences of SJIS
+encoded two byte characters \.{XY} with
+\.{\char94 \char94 7fX\char94 \char94 7fZZZ\char94 \char94 7f} (\.{X}
+and \.{Y} are the first and the second byte of the character; \.{ZZZ}
+represents the second byte as a decimal number).
+
+Additionally we define a \TeX\ macro at the very beginning to signal a
+preprocessed file.
+
+The following code is very simple. No error detection is done because \TeX\
+which will see the output of \.{sjisconv} complains loudly if something is
+wrong.
+
+Note that the user-defined character area of SJIS (with the first bytes in
+the range 0xF0--0xFC) is not supported because it is not portable.
+
+@d banner
+"sjisconv (CJK ver. 4.8.4)"
+
+@c
+#include <stdio.h>
+#include <stdlib.h>@#
+
+
+int main(int argc, char *argv[])
+ {int ch;
+
+ fprintf(stdout, "\\def\\CJKpreproc{%s}", banner);@#
+
+ ch = fgetc(stdin);@#
+
+ while(!feof(stdin))
+ {if((ch >= 0x81 && ch <= 0x9F) || (ch >= 0xE0 && ch <= 0xEF))
+ {fprintf(stdout, "\177%c\177", ch);@#
+
+ ch = fgetc(stdin);
+ if(!feof(stdin))
+ fprintf(stdout, "%d\177", ch);
+ }
+ else
+ fputc(ch, stdout);@#
+
+ ch = fgetc(stdin);
+ }
+ exit(EXIT_SUCCESS);
+ return 0; /* never reached */
+ }
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/SJISconv/sjislatex b/language/chinese/CJK/cjk-4.8.4/utils/SJISconv/sjislatex
new file mode 100755
index 0000000000..b1086cba76
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/SJISconv/sjislatex
@@ -0,0 +1,43 @@
+#! /bin/sh
+
+# Copyright (C) 1994-2015 Werner Lemberg <wl@gnu.org>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program in doc/COPYING; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301 USA
+
+n=1
+argv=
+
+# get last argument
+while test 1 -lt $#; do
+ eval argv$n=\$1
+ argv="$argv \"\$argv$n\""
+ n=`expr $n + 1`
+ shift
+done
+
+# replace extension with .cjk or append .cjk if there is no extension
+tex=$1
+case $tex in
+""|*.cjk)
+ echo >&2 "Usage: $0 [options] latex-file"
+ exit 1;;
+*)
+ aux=`expr "X$tex" : 'X\(.*\)\.[^/]*$' \| "X$tex" : 'X\(.*\)'`.cjk;;
+esac
+
+sjisconv < "$tex" > "$aux" && eval latex "$argv" "\$aux"
+
+# EOF
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/SJISconv/sjisltx.bat b/language/chinese/CJK/cjk-4.8.4/utils/SJISconv/sjisltx.bat
new file mode 100644
index 0000000000..5702c113bd
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/SJISconv/sjisltx.bat
@@ -0,0 +1,3 @@
+call f_name %1
+sjisconv < %1 > %fd%%fp%%fn%.cjk
+latex %fd%%fu%%fn%.cjk
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/SJISconv/sjisltx.cmd b/language/chinese/CJK/cjk-4.8.4/utils/SJISconv/sjisltx.cmd
new file mode 100644
index 0000000000..2ff4e03e54
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/SJISconv/sjisltx.cmd
@@ -0,0 +1,44 @@
+/*----------------------------------------------------------------------*\
+ sjisltx.cmd
+
+ This file is part of the CJK macro package for LaTeX2e ver. 4.8.4
+
+ Copyright (C) 1994-2015 Wonkoo Kim <wkim+@pitt.edu>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program in doc/COPYING; if not, write to the Free
+ Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+ MA 02110-1301 USA
+
+ Wonkoo Kim (wkim+@pitt.edu), September 2, 1996
+\*----------------------------------------------------------------------*/
+
+Call RxFuncAdd 'SysLoadFuncs', 'RexxUtil', 'SysLoadFuncs'
+Call SysLoadFuncs
+
+parse arg file
+
+drive = filespec('drive', file)
+path = filespec('path', file)
+fname = filespec('name', file)
+m = lastpos('.', fname)
+if (m = 0) then m = length(fname) + 1
+cjkfile = drive||path||delstr(fname, m)||'.cjk'
+
+'sjisconv <' file '>' cjkfile
+
+ucjkfile = translate(cjkfile,'/','\')
+if stream(cjkfile, 'C', 'QUERY EXISTS') \= '' then
+ 'call latex.cmd' ucjkfile
+
+/* End of sjisltx.cmd */
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/SJISconv/sjispdflatex b/language/chinese/CJK/cjk-4.8.4/utils/SJISconv/sjispdflatex
new file mode 100755
index 0000000000..651570da7f
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/SJISconv/sjispdflatex
@@ -0,0 +1,43 @@
+#! /bin/sh
+
+# Copyright (C) 1994-2015 Werner Lemberg <wl@gnu.org>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program in doc/COPYING; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301 USA
+
+n=1
+argv=
+
+# get last argument
+while test 1 -lt $#; do
+ eval argv$n=\$1
+ argv="$argv \"\$argv$n\""
+ n=`expr $n + 1`
+ shift
+done
+
+# replace extension with .cjk or append .cjk if there is no extension
+tex=$1
+case $tex in
+""|*.cjk)
+ echo >&2 "Usage: $0 [options] latex-file"
+ exit 1;;
+*)
+ aux=`expr "X$tex" : 'X\(.*\)\.[^/]*$' \| "X$tex" : 'X\(.*\)'`.cjk;;
+esac
+
+sjisconv < "$tex" > "$aux" && eval pdflatex "$argv" "\$aux"
+
+# EOF
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/cjklatex/cjklatex.c b/language/chinese/CJK/cjk-4.8.4/utils/cjklatex/cjklatex.c
new file mode 100644
index 0000000000..678c1dd3a8
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/cjklatex/cjklatex.c
@@ -0,0 +1,293 @@
+/*
+ Purpose: call LATEX after preprocessing of the .tex file by
+ the cjk conversion tool. The old f_name.bat script
+ is not working anymore.
+ Author : F. Popineau <Fabrice.Popineau@supelec.fr>
+ Date : <29/06/2001>
+*/
+
+#ifndef LATEX
+#define LATEX "latex"
+#endif
+
+/*
+ Copyright (C) 2001-2015 F. Popineau <Fabrice.Popineau@supelec.fr>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program in doc/COPYING; if not, write to the Free
+ Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+ MA 02110-1301 USA
+*/
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <kpathsea/config.h>
+#include <kpathsea/lib.h>
+#include <kpathsea/getopt.h>
+
+static const char *cjklatex_version_string = "1.0";
+
+static const char *usage_str[] = {
+ "Usage: %s OPTIONS FILE\n",
+ "Calls `" LATEX "' on FILE after conversion by the filter\n",
+ "specified by OPTIONS.\n",
+ "--conv=bg5\tfor traditional Chinese, encoding Big 5,\n",
+ "--conv=cef\tfor Chinese Encoding Framework, encoding CEF,\n",
+ "--conv=cef5\tidem CEF, also converts Big5 characters,\n",
+ "--conv=cefs\tidem CEF, also converts SJIS characters,\n",
+ "--conv=gbk\tfor Chinese, encoding GBK,\n",
+ "--conv=sjis\tfor Japanese, SJIS encoding.",
+ "\nAlternatively, for compatibility with the previous DOS batch files,\n",
+ "you can also copy this program to any of the following names:\n",
+ "bg5" LATEX ".exe, cef5" LATEX ".exe, cef" LATEX ".exe, cefs" LATEX ".exe,\n",
+ "gbk" LATEX ".exe and sjis" LATEX ".exe .\n",
+ "Then running one of these programs will be identical to specify\n",
+ "the corresponding option.\n",
+ "\nAdditional options:\n",
+ "--verbose\tbe a bit more verbose about what is happening,\n",
+ "--nocleanup\tdo not remove intermediate files,\n",
+ "--latex=engine\tuse `engine' instead of `" LATEX "' to process the file.\n",
+ NULL
+};
+
+static char *progname = NULL;
+
+static struct _conv_table {
+ const char *progname;
+ const char *processor;
+} CJKtable[] = {
+ { "cjk" LATEX, "" },
+ { "bg5" LATEX, "bg5conv" },
+ { "cef" LATEX, "cefconv" },
+ { "cef5" LATEX, "cef5conv" },
+ { "cefs" LATEX, "cefsconv" },
+ { "gbk" LATEX, "extconv" },
+ { "sjis" LATEX, "sjisconv" }
+};
+
+#define PROGRAM_IS(p) FILESTRCASEEQ (p, progname)
+#define ARGUMENT_IS(a) STREQ (long_options[option_index].name, a)
+
+static int program_number = -1;
+static int opt_verbose = 0;
+static int opt_nocleanup = 0;
+static char *texname, *cjkname, *texengine;
+
+static struct option long_options [] = {
+ { "debug", 1, 0, 0},
+ { "help", 0, 0, 0},
+ { "version", 0, 0, 0},
+ { "verbose", 0, 0, 0},
+ { "nocleanup", 0, 0, 0},
+ { "latex", 1, 0, 0},
+ { "conv", 1, 0, 0},
+ {0, 0, 0, 0}
+};
+
+static BOOL sigint_handler(DWORD dwCtrlType)
+{
+ /* Fix me : there is a problem if a system() command is running.
+ We should wait for the son process to be interrupted.
+ Only way I can think of to do that : rewrite system() based on
+ spawn() with parsing of the command line and set a global pid
+ Next cwait(pid) in the HandlerRoutine.
+ */
+
+ /* This is not that good, but else we would need to wait for
+ the child processes to finish ! */
+ Sleep(250);
+
+ fprintf(stderr, "Sending Ctrl+Break!\n");
+ GenerateConsoleCtrlEvent(CTRL_BREAK_EVENT, 0);
+
+ if (! opt_nocleanup)
+ unlink(cjkname);
+
+ exit(1);
+
+ return FALSE; /* return value obligatory */
+}
+
+static void usage(void)
+{
+ int i;
+ fprintf(stderr, "CJK" LATEX " version %s\n", cjklatex_version_string);
+ fprintf(stderr,usage_str[0], progname );
+ fputs("\n", stderr);
+ for(i = 1; usage_str[i]; ++i)
+ fputs(usage_str[i], stderr);
+}
+
+static int do_process(const char *processor, const char *filename)
+{
+ char *ext, *p;
+ char cmd[_MAX_PATH*3];
+ DWORD dwFA;
+ int ret;
+
+ if (strlen(filename) > 4 && _strnicmp(filename + strlen(filename) - 4, ".tex", 4) == 0) {
+ texname = xstrdup(filename);
+ }
+ else {
+ texname = concat(filename, ".tex");
+ }
+ for (p = texname; p && *p; p++)
+ *p = (*p == '\\' ? '/' : *p);
+
+ dwFA = GetFileAttributes(texname);
+ if (dwFA == 0xFFFFFFFF || (dwFA & FILE_ATTRIBUTE_DIRECTORY)) {
+ fprintf(stderr, "%s: %s is an invalid input file.\n",
+ progname, texname);
+ ret = 1;
+ }
+ else {
+ cjkname = xstrdup(texname);
+ ext = strrchr(cjkname, '.');
+ assert(ext != NULL);
+ strcpy(cjkname + (ext - cjkname), ".cjk");
+
+ sprintf(cmd, "%s < %s > %s", processor, texname, cjkname);
+ if (opt_verbose)
+ fprintf(stderr, "%s: running command `%s'.\n", progname, cmd);
+ ret = system(cmd);
+ if (ret == 0) {
+ sprintf(cmd, "%s %s", texengine, cjkname);
+ if (opt_verbose)
+ fprintf(stderr, "%s: running command `%s'.\n", progname, cmd);
+ ret = system(cmd);
+ if (! opt_nocleanup)
+ unlink(cjkname);
+ }
+ }
+
+ free(texname);
+ free(cjkname);
+
+ return ret;
+}
+
+int main(int argc, char *argv[])
+{
+ int g; /* getopt return code */
+ int i;
+ int option_index;
+ char *filename;
+
+ if (!progname)
+ progname = argv[0];
+
+ kpse_set_program_name (progname, NULL);
+ progname = kpse_program_name;
+
+ for (i = 0; i < sizeof(CJKtable)/sizeof(CJKtable[0]) && program_number < 0; i++) {
+ if (STREQ(progname, CJKtable[i].progname)
+#if 0
+ || (STREQ(progname, CJKtable[i].progname)
+ && STREQ(progname+strlen(CJKtable[i].progname), ".exe"))
+#endif
+ ) {
+ program_number = i;
+ }
+ }
+
+ if (program_number == -1) {
+ fprintf(stderr, "%s: this program has been incorrecty copied to the name %s.\n", progname, progname);
+ usage();
+ exit(1);
+ }
+
+ for(;;) {
+ g = getopt_long_only (argc, argv, "", long_options, &option_index);
+
+ if (g == EOF)
+ break;
+
+ if (g == '?') {
+ usage(); /* Unknown option. */
+ exit(1);
+ }
+
+ /* assert (g == 0); */ /* We have no short option names. */
+ /*
+ FIXME : try 'mktexpk --mfmode --bdpi 600 ...'
+ */
+ if (ARGUMENT_IS ("debug")) {
+ kpathsea_debug |= atoi (optarg);
+ }
+ else if (ARGUMENT_IS ("help")) {
+ usage();
+ exit(0);
+ }
+ else if (ARGUMENT_IS ("verbose")) {
+ opt_verbose = 1;
+ }
+ else if (ARGUMENT_IS ("nocleanup")) {
+ opt_nocleanup = 1;
+ }
+ else if (ARGUMENT_IS ("latex")) {
+ texengine = xstrdup(optarg);
+ }
+ else if (ARGUMENT_IS ("version")) {
+ fprintf(stderr, "%s of %s.\n", progname, cjklatex_version_string);
+ exit(0);
+ }
+ else if (PROGRAM_IS("cjk" LATEX)) {
+ if (ARGUMENT_IS("conv")) {
+ for (i = 1; i < sizeof(CJKtable)/sizeof(CJKtable[0]) && program_number <= 0; i++) {
+ if (STRNEQ(optarg, CJKtable[i].progname, strlen(optarg))) {
+ program_number = i;
+ }
+ }
+ }
+ }
+ }
+
+ /* shifting options from argv[] list */
+ for (i = 1; optind < argc; i++, optind++)
+ argv[i] = argv[optind];
+ argv[i] = NULL;
+
+ argc = i;
+
+ if (argc < 2) {
+ fprintf (stderr, "%s: Missing argument(s).\nTry `%s --help' for more information.\n", progname, kpse_program_name);
+ exit(1);
+ }
+
+ if (argc > 2) {
+ fprintf(stderr, "%s: Extra arguments", progname);
+ for (i = 2; i < argc; i++)
+ fprintf (stderr, " \"%s\"", argv[i]);
+ fprintf (stderr, "\nTry `%s --help' for more information.\n",
+ kpse_program_name);
+ exit(1);
+ }
+
+ SetConsoleCtrlHandler((PHANDLER_ROUTINE)sigint_handler, TRUE);
+
+ filename = xstrdup(argv[1]);
+
+ assert(program_number > 0);
+
+ if (! texengine) {
+ texengine = xstrdup(LATEX);
+ }
+
+ do_process(CJKtable[program_number].processor, filename);
+
+ free(filename);
+ free(texengine);
+
+ return 0;
+}
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/extconv/bg5+latex b/language/chinese/CJK/cjk-4.8.4/utils/extconv/bg5+latex
new file mode 100755
index 0000000000..82e706a44f
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/extconv/bg5+latex
@@ -0,0 +1,43 @@
+#! /bin/sh
+
+# Copyright (C) 1994-2015 Werner Lemberg <wl@gnu.org>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program in doc/COPYING; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301 USA
+
+n=1
+argv=
+
+# get last argument
+while test 1 -lt $#; do
+ eval argv$n=\$1
+ argv="$argv \"\$argv$n\""
+ n=`expr $n + 1`
+ shift
+done
+
+# replace extension with .cjk or append .cjk if there is no extension
+tex=$1
+case $tex in
+""|*.cjk)
+ echo >&2 "Usage: $0 [options] latex-file"
+ exit 1;;
+*)
+ aux=`expr "X$tex" : 'X\(.*\)\.[^/]*$' \| "X$tex" : 'X\(.*\)'`.cjk;;
+esac
+
+extconv < "$tex" > "$aux" && eval latex "$argv" "\$aux"
+
+# EOF
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/extconv/bg5+pdflatex b/language/chinese/CJK/cjk-4.8.4/utils/extconv/bg5+pdflatex
new file mode 100755
index 0000000000..16377e9dc1
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/extconv/bg5+pdflatex
@@ -0,0 +1,43 @@
+#! /bin/sh
+
+# Copyright (C) 1994-2015 Werner Lemberg <wl@gnu.org>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program in doc/COPYING; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301 USA
+
+n=1
+argv=
+
+# get last argument
+while test 1 -lt $#; do
+ eval argv$n=\$1
+ argv="$argv \"\$argv$n\""
+ n=`expr $n + 1`
+ shift
+done
+
+# replace extension with .cjk or append .cjk if there is no extension
+tex=$1
+case $tex in
+""|*.cjk)
+ echo >&2 "Usage: $0 [options] pdflatex-file"
+ exit 1;;
+*)
+ aux=`expr "X$tex" : 'X\(.*\)\.[^/]*$' \| "X$tex" : 'X\(.*\)'`.cjk;;
+esac
+
+extconv < "$tex" > "$aux" && eval pdflatex "$argv" "\$aux"
+
+# EOF
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/extconv/bg5pltx.bat b/language/chinese/CJK/cjk-4.8.4/utils/extconv/bg5pltx.bat
new file mode 100644
index 0000000000..ccc6c76acd
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/extconv/bg5pltx.bat
@@ -0,0 +1,3 @@
+call f_name %1
+extconv < %1 > %fd%%fp%%fn%.cjk
+latex %fd%%fu%%fn%.cjk
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/extconv/bg5pltx.cmd b/language/chinese/CJK/cjk-4.8.4/utils/extconv/bg5pltx.cmd
new file mode 100644
index 0000000000..69a9495208
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/extconv/bg5pltx.cmd
@@ -0,0 +1,44 @@
+/*----------------------------------------------------------------------*\
+ bg5pltx.cmd
+
+ This file is part of the CJK macro package for LaTeX2e ver. 4.8.4
+
+ Copyright (C) 1994-2015 Wonkoo Kim <wkim+@pitt.edu>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program in doc/COPYING; if not, write to the Free
+ Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+ MA 02110-1301 USA
+
+ Wonkoo Kim (wkim+@pitt.edu), September 2, 1996
+\*----------------------------------------------------------------------*/
+
+Call RxFuncAdd 'SysLoadFuncs', 'RexxUtil', 'SysLoadFuncs'
+Call SysLoadFuncs
+
+parse arg file
+
+drive = filespec('drive', file)
+path = filespec('path', file)
+fname = filespec('name', file)
+m = lastpos('.', fname)
+if (m = 0) then m = length(fname) + 1
+cjkfile = drive||path||delstr(fname, m)||'.cjk'
+
+'extconv <' file '>' cjkfile
+
+ucjkfile = translate(cjkfile,'/','\')
+if stream(cjkfile, 'C', 'QUERY EXISTS') \= '' then
+ 'call latex.cmd' ucjkfile
+
+/* End of bg5pltx.cmd */
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/extconv/extconv.1 b/language/chinese/CJK/cjk-4.8.4/utils/extconv/extconv.1
new file mode 100644
index 0000000000..1ef4b011d8
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/extconv/extconv.1
@@ -0,0 +1,111 @@
+.\" man page for bg5conv
+.\"
+.\" Copyright (C) 1994-2015 Werner Lemberg <wl@gnu.org>
+.\"
+.\" This program is free software; you can redistribute it and/or modify
+.\" it under the terms of the GNU General Public License as published by
+.\" the Free Software Foundation; either version 2 of the License, or
+.\" (at your option) any later version.
+.\"
+.\" This program is distributed in the hope that it will be useful,
+.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+.\" GNU General Public License for more details.
+.\"
+.\" You should have received a copy of the GNU General Public License
+.\" along with this program in doc/COPYING; if not, write to the Free
+.\" Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+.\" MA 02110-1301 USA
+.
+.TH EXTCONV 1 18-Apr-2015 "CJK Version 4.8.4"
+.
+.\" ====
+.\" ==== macro definitions
+.\" ====
+.
+.\" here we define \TeX for troff and nroff
+.if t .ds TX \fRT\\h'-0.1667m'\\v'0.20v'E\\v'-0.20v'\\h'-0.125m'X\fP
+.if n .ds TX TeX
+.
+.\" and here the same for \LaTeX
+.if t \{\
+.ie '\*(.T'dvi' \
+.ds LX \fRL\h'-0.36m'\v'-0.15v'\s-3A\s0\h'-0.15m'\v'0.15v'\fP\*(TX
+.el .ds LX \fRL\h'-0.36m'\v'-0.22v'\s-2A\s0\h'-0.15m'\v'0.22v'\fP\*(TX
+.\}
+.if n .ds LX LaTeX
+.
+.\" \LaTeXe
+.\" note that we need \vareps for TeX instead of \eps which can only be
+.\" accessed with the \N escape sequence (in the Math Italic font)
+.if t \{\
+.ie '\*(.T'dvi' .ds LE \*(LX\h'0.15m'2\v'0.20v'\f(MI\N'34'\fP\v'-0.20v'
+.el .ds LE \*(LX\h'0.15m'2\v'0.20v'\(*e\v'-0.20v'
+.\}
+.if n .ds LE LaTeX\ 2e
+.
+.\" a typewriter font
+.if t \{\
+.de C
+\fC\\$1\fP\\$2
+..
+.\}
+.if n \{\
+.de C
+\\$1\\$2
+..
+.\}
+.
+.\" ====
+.\" ==== end of macro definitions
+.\" ====
+.
+.
+.
+.SH NAME
+extconv \- convert a TeX document in either Big\ 5+ or GBK encoding into
+`preprocessed' form.
+.
+.
+.SH SYNOPSIS
+.B extconv
+<
+.I infile
+>
+.I outfile
+.
+.
+.SH DESCRIPTION
+Big\ 5+ and GBK encodings use the characters
+.C { ,
+.C } ,
+and
+.C \e
+which have special meanings in \*(TX
+documents.
+.PP
+After processing a \*(LE
+document which contains such characters with
+.B \%extconv
+you need not care about these special characters.
+.PP
+This filter is part of the
+.B CJK
+macro package for \*(LE.
+.
+.
+.SH "SEE ALSO"
+.BR bg5conv (1),
+.BR \%sjisconv (1),
+.BR \%cefconv (1),
+.BR cef5conv (1),
+.BR \%cefsconv (1),
+.br
+the
+.B CJK
+documentation files.
+.
+.
+.SH AUTHOR
+Werner Lemberg
+.C <wl@gnu.org>
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/extconv/extconv.c b/language/chinese/CJK/cjk-4.8.4/utils/extconv/extconv.c
new file mode 100644
index 0000000000..fdba62551c
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/extconv/extconv.c
@@ -0,0 +1,34 @@
+#define banner \
+"extconv (CJK ver. 4.8.4)" \
+
+/*2:*/
+#line 94 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/extconv/extconv.w"
+
+#include <stdio.h>
+#include <stdlib.h>
+
+
+int main(int argc,char*argv[])
+{int ch;
+
+
+fprintf(stdout,"\\def\\CJKpreproc{%s}",banner);
+
+ch= fgetc(stdin);
+
+while(!feof(stdin))
+{if(ch>=0x81&&ch<=0xFE)
+{fprintf(stdout,"\177%c\177",ch);
+
+ch= fgetc(stdin);
+if(!feof(stdin))
+fprintf(stdout,"%d\177",ch);
+}
+else
+fputc(ch,stdout);
+
+ch= fgetc(stdin);
+}
+exit(EXIT_SUCCESS);
+return 0;
+}/*:2*/
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/extconv/extconv.w b/language/chinese/CJK/cjk-4.8.4/utils/extconv/extconv.w
new file mode 100644
index 0000000000..019976889b
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/extconv/extconv.w
@@ -0,0 +1,122 @@
+% This is the cweb file extconv.w of the CJK Package Ver. 4.8.4 18-Apr-2015
+
+% Copyright (C) 1994-2015 Werner Lemberg <wl@@gnu.org>
+%
+% This program is free software; you can redistribute it and/or modify
+% it under the terms of the GNU General Public License as published by
+% the Free Software Foundation; either version 2 of the License, or
+% (at your option) any later version.
+%
+% This program is distributed in the hope that it will be useful,
+% but WITHOUT ANY WARRANTY; without even the implied warranty of
+% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+% GNU General Public License for more details.
+%
+% You should have received a copy of the GNU General Public License
+% along with this program in doc/COPYING; if not, write to the Free
+% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+% MA 02110-1301 USA
+
+% To print this CWEB file you should (but not must) use the CWEAVE of the
+% c2cweb-package (found at the CTAN archives, e.g. ftp.dante.de) and then say
+%
+% cweave +a extconv.w
+%
+% This (fully compatible) CWEAVE can transform CWEB-files with alternative
+% output rules (look at the position of braces below!) the author (it's me
+% too :-) prefer. Otherwise this file will be formatted traditionally.
+
+\def\title{extconv (CJK Version 4.8.4)}
+
+\def\topofcontents{
+ \null\vfill
+ \centerline{\titlefont The {\ttitlefont extconv} program}
+ \vskip 20pt
+ \centerline{(CJK Version 4.8.4)}
+ \vfill}
+
+\def\botofcontents{
+ \vfill
+ \noindent
+ Copyright \copyright\ 1996, 1998 by Werner Lemberg
+ \bigskip\noindent
+ Permission is granted to make and distribute verbatim copies of this
+ document provided that the copyright notice and this permission notice
+ are preserved on all copies.
+
+ \smallskip\noindent
+ Permission is granted to copy and distribute modified versions of this
+ document under the conditions for verbatim copying, provided that the
+ entire resulting derived work is distributed under the terms of a
+ permission notice identical to this one.}
+
+\pageno=\contentspagenumber \advance\pageno by 1
+\let\maybe=\iftrue
+\fullpageheight=240mm
+\pageheight=223mm
+\pagewidth=158mm
+\setpage
+\frenchspacing
+
+\noinx
+\nosecs
+\nocon
+
+@* Function and Use.
+This small program will convert Big~5+ or GBK encoded Chinese characters
+into a `preprocessed' form. The need of this program arises from the fact
+that these two encodings use the characters `\.{\\}', `\.{\{}', and `\.{\}}'
+which have special meanings in \TeX.
+
+Use this program as a filter:
+
+\hskip 2em \.{extconv < input\_file > output\_file}
+
+
+@* The program.
+The only function of this program is to replace all occurrences of Big~5+
+and GBK encoded characters \.{XY} (\.{X} and \.{Y} are the first and the
+second byte of the character) with
+\.{\char94 \char94 7fX\char94 \char94 7fZZZ\char94 \char94 7f}, where \.{ZZZ}
+represents the second byte as a decimal number. \.{0x7F} is used as an active
+character and delimiter.
+
+Additionally we define a \TeX\ macro at the very beginning to signal a
+preprocessed file.
+
+The following code is very simple. No error detection is done because \TeX\
+which will see the output of \.{extconv} complains loudly if something is
+wrong.
+
+@d banner
+"extconv (CJK ver. 4.8.4)"
+
+@c
+#include <stdio.h>
+#include <stdlib.h>@#
+
+
+int main(int argc, char *argv[])
+ {int ch;
+
+
+ fprintf(stdout, "\\def\\CJKpreproc{%s}", banner);@#
+
+ ch = fgetc(stdin);@#
+
+ while(!feof(stdin))
+ {if(ch >= 0x81 && ch <= 0xFE)
+ {fprintf(stdout, "\177%c\177", ch);@#
+
+ ch = fgetc(stdin);
+ if(!feof(stdin))
+ fprintf(stdout, "%d\177", ch);
+ }
+ else
+ fputc(ch, stdout);@#
+
+ ch = fgetc(stdin);
+ }
+ exit(EXIT_SUCCESS);
+ return 0; /* never reached */
+ }
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/extconv/gbklatex b/language/chinese/CJK/cjk-4.8.4/utils/extconv/gbklatex
new file mode 100755
index 0000000000..82e706a44f
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/extconv/gbklatex
@@ -0,0 +1,43 @@
+#! /bin/sh
+
+# Copyright (C) 1994-2015 Werner Lemberg <wl@gnu.org>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program in doc/COPYING; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301 USA
+
+n=1
+argv=
+
+# get last argument
+while test 1 -lt $#; do
+ eval argv$n=\$1
+ argv="$argv \"\$argv$n\""
+ n=`expr $n + 1`
+ shift
+done
+
+# replace extension with .cjk or append .cjk if there is no extension
+tex=$1
+case $tex in
+""|*.cjk)
+ echo >&2 "Usage: $0 [options] latex-file"
+ exit 1;;
+*)
+ aux=`expr "X$tex" : 'X\(.*\)\.[^/]*$' \| "X$tex" : 'X\(.*\)'`.cjk;;
+esac
+
+extconv < "$tex" > "$aux" && eval latex "$argv" "\$aux"
+
+# EOF
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/extconv/gbklatex.bat b/language/chinese/CJK/cjk-4.8.4/utils/extconv/gbklatex.bat
new file mode 100644
index 0000000000..ccc6c76acd
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/extconv/gbklatex.bat
@@ -0,0 +1,3 @@
+call f_name %1
+extconv < %1 > %fd%%fp%%fn%.cjk
+latex %fd%%fu%%fn%.cjk
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/extconv/gbklatex.cmd b/language/chinese/CJK/cjk-4.8.4/utils/extconv/gbklatex.cmd
new file mode 100644
index 0000000000..9bd1237934
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/extconv/gbklatex.cmd
@@ -0,0 +1,44 @@
+/*----------------------------------------------------------------------*\
+ gbklatex.cmd
+
+ This file is part of the CJK macro package for LaTeX2e ver. 4.8.4
+
+ Copyright (C) 1994-2015 Wonkoo Kim <wkim+@pitt.edu>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program in doc/COPYING; if not, write to the Free
+ Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+ MA 02110-1301 USA
+
+ Wonkoo Kim (wkim+@pitt.edu), September 2, 1996
+\*----------------------------------------------------------------------*/
+
+Call RxFuncAdd 'SysLoadFuncs', 'RexxUtil', 'SysLoadFuncs'
+Call SysLoadFuncs
+
+parse arg file
+
+drive = filespec('drive', file)
+path = filespec('path', file)
+fname = filespec('name', file)
+m = lastpos('.', fname)
+if (m = 0) then m = length(fname) + 1
+cjkfile = drive||path||delstr(fname, m)||'.cjk'
+
+'extconv <' file '>' cjkfile
+
+ucjkfile = translate(cjkfile,'/','\')
+if stream(cjkfile, 'C', 'QUERY EXISTS') \= '' then
+ 'call latex.cmd' ucjkfile
+
+/* End of gbklatex.cmd */
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/extconv/gbkpdflatex b/language/chinese/CJK/cjk-4.8.4/utils/extconv/gbkpdflatex
new file mode 100755
index 0000000000..16377e9dc1
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/extconv/gbkpdflatex
@@ -0,0 +1,43 @@
+#! /bin/sh
+
+# Copyright (C) 1994-2015 Werner Lemberg <wl@gnu.org>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program in doc/COPYING; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301 USA
+
+n=1
+argv=
+
+# get last argument
+while test 1 -lt $#; do
+ eval argv$n=\$1
+ argv="$argv \"\$argv$n\""
+ n=`expr $n + 1`
+ shift
+done
+
+# replace extension with .cjk or append .cjk if there is no extension
+tex=$1
+case $tex in
+""|*.cjk)
+ echo >&2 "Usage: $0 [options] pdflatex-file"
+ exit 1;;
+*)
+ aux=`expr "X$tex" : 'X\(.*\)\.[^/]*$' \| "X$tex" : 'X\(.*\)'`.cjk;;
+esac
+
+extconv < "$tex" > "$aux" && eval pdflatex "$argv" "\$aux"
+
+# EOF
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/f_name.bat b/language/chinese/CJK/cjk-4.8.4/utils/f_name.bat
new file mode 100644
index 0000000000..70e6e69ce9
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/f_name.bat
@@ -0,0 +1,205 @@
+@echo off
+:4dosCheck
+ if "%@eval[2+2]"=="4" loadbtm on
+:Start
+ if [%1]==[] goto Usage
+ if [%1]==[/?] goto Help
+ if [%2]==[] goto InputCheck
+REM
+REM This file is called F_NAME.BAT per default. Call it whatever you like.
+REM
+REM You need enough free environment space for this batch file.
+REM If there's not enough free space, f_name.bat will give you a warning.
+REM
+REM While f_name.bat tries to test your free environment space, you'll
+REM probably need to check your config.sys for the following line:
+REM
+REM SHELL=C:\DOS\COMMAND.COM C:\DOS\ /E:1024 /p
+REM
+REM The '/E:1024' sets your environment space - it will probably need to
+REM be 1024 or higher (unless you're really economical with env-space).
+REM
+REM If you are not sure about free space, set fp and fn with long dummy
+REM strings in autoexec.bat to get enough free space, eg.:
+REM
+REM set fp=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+REM set fu=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+REM set fn=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+REM set fd=xx
+REM set fe=xxxx
+REM
+REM Using dummy strings is necessary if you're going to execute
+REM f_name.bat from a second command shell, eg. from Norton Commander.
+REM In this case the total length reserved for f_name.bat should be up
+REM to 192 bytes. My suggestion is, let the strings for fp, fu, and fn count
+REM up to 186 bytes (eg. 62 each).
+REM
+REM Some releases of DOS (eg. some beta-releases/pre-releases of DOS 6.0
+REM and some older DOS releases) does not support the batchcommand 'NOT'.
+REM If you're still using such a release you cannot use this batchfile
+REM since it uses this batchcommand.
+REM
+REM Please also note that f_name.bat cannot work properly if filespec is
+REM longer than around 38 (? I don't know the exact length) characters. If
+REM filespec is long, f_name.bat will fail at 'for %%x in ... do if ...'
+REM lines. The result of error is fairly unpredictable as DOS will try to
+REM execute with a truncated batch command line. So, please use the
+REM batch file for short filespecs (< 38??). (On my DOS 6.22 using
+REM strings above 38 chars gives me an endless loop, Claus Futtrup).
+REM
+REM For large batchfiles it is usually an advantage to use a
+REM 'batch-compiler', which will convert the .bat file into a .com or
+REM .exe file. With f_name.bat this could probably speed it up many
+REM times, but it has not been possible to find a batch-compiler, which
+REM will compile this batchfile. The compilers PWR14G.ZIP and
+REM BAT2EX15.ZIP have been tested without success.
+REM
+REM This modified release is more solid when it comes to garbage input, it
+REM is provided with help option, additional documentation and additional
+REM checking for sufficient environment space and now remove the temporary
+REM environment settings (P, Q, R, S, T) at the bottom of the batchfile. The
+REM structure is changed a bit, but the basic still is made by Wonkoo Kim.
+REM
+REM Please do not distribute this file without the above documentation
+REM included in the batch-file. If you change the file please add your
+REM name as a "modifier" as done below + document your changes. We do
+REM not intend to hold a copyright, though. You may use, misuse or abuse
+REM this batchfile as you see fit.
+REM
+REM This file is provided to you on a free basis. The author/modifiers
+REM do not want to be hold responsible to whatever this batchfile is
+REM doing. Use of this batchfile is entirely at your own risk.
+REM
+REM Wonkoo Kim (wkim+@pitt.edu), August 11, 1995
+REM Modified by Claus Futtrup (odie@csek.iprod.auc.dk), August 23. 1995
+REM Modified by Werner Lemberg (wl@gnu.org), Jan. 10. 1996
+REM to run this batch file under 4DOS too (replacing all %%f with %%x
+REM and doubling the speed with the LOADBTM ON command)
+REM Modified by Werner Lemberg (wl@gnu.org), Aug. 31. 1996
+REM to return unix-like paths additionally in the variable %fu%;
+REM the batch file will now parse e.g. \a.b\ correctly as a directory.
+REM
+:Usage
+ echo.
+ echo Usage: %0 filespec
+ echo.
+ echo Returns: fd (drive), fp (path), fu (unix path), fn (name), fe (extension)
+ echo.
+ echo Type %0 /? for additional help
+ echo %0 is made by Wonkoo Kim, modified by C. Futtrup and W. Lemberg.
+ echo.
+ goto END
+:Help
+ cls
+ echo %0 -- extracts the drive, path, name, and ext from file-path-name.
+ echo.
+ echo Return envs: FD (drive), FP (path), FU (unix path), FN (name), FE (ext)
+ echo Temp envs: P, Q, R, S, T
+ echo.
+ echo INPUT FILE fd fp fn fe
+ echo ------------------ --------- --------- --------- ---------
+ echo abc abc
+ echo abc.tex abc .tex
+ echo c:\abc.tex c: \ abc .tex
+ echo c:tmp\abc.tex c: tmp\ abc .tex
+ echo c:\tmp\abc.tex c: \tmp\ abc .tex
+ echo c:tmp\tex\abc.tex c: tmp\tex\ abc .tex
+ echo c:\tmp\tex\abc.tex c: \tmp\tex\ abc .tex
+ echo.
+ echo Please note this file isn't blazing fast + it needs a lot
+ echo of environment space. See comments in %0 for more info.
+ echo.
+ echo Wonkoo Kim (wkim+@pitt.edu), August 11, 1995
+ echo Modified by Claus Futtrup (odie@csek.iprod.auc.dk), August 23. 1995
+ echo Modified by Werner Lemberg (wl@gnu.org), Aug 31. 1996
+ goto END
+:InputCheck
+ for %%x in (%1) do if "%%x"=="%1" goto Okay
+ echo *** ERROR: Please do not use wildcards in input file name.
+ goto END
+:Okay
+ set p=
+ set r=
+ set fp=
+ set fu=
+ set fe=
+ set fn=%1
+ set s=XXXXXXXX%fn%
+ set t=%fn%
+ set s=
+ if [%t%]==[%1] goto GetDrive
+:EnvErr
+ echo *** ERROR: Not enough environment space!
+ echo *** See documentation at top of file '%0'
+ goto END
+:GetDrive
+ for %%x in (/%t%) do set fn=%%x
+ for %%x in (/%t%) do if not [%%x]==[%fn%] set fd=%%x
+ if [%fn%]==[:] goto DriveOnly
+ set t=%fn%
+ for %%x in (/%t%) do set fn=%%x
+ if [:%fn%]==[%t%] goto DriveFound
+ set fd=
+ set fn=%1
+ goto GetPath
+:DriveOnly
+ set fn=
+:DriveFound
+ set fd=%fd%:
+:GetPath
+ set s=%fn%
+:PathLoop
+ set t=%s%
+ for %%x in (/%t%) do set s=%%x
+ set q=
+ for %%x in (/%t%) do if not [%%x]==[%s%] set q=%%x
+ if "\%s%"=="%t%" goto Separator
+ set p=%p%%q%
+ set r=%r%%q%
+ if [%s%]==[%t%] goto PathCheck
+ goto PathLoop
+:Separator
+ set fn=%s%
+ set p=%p%\
+ set r=%r%/
+ set fp=%p%
+ set fu=%r%
+ goto PathLoop
+:PathCheck
+ if [%s%]==[\] goto NoFilename
+ if not [%fn%]==[\] goto GetExt
+ set fp=\
+ set fu=/
+ set fn=
+ goto Done
+:NoFilename
+ set fp=%p%\
+ set fu=%r%/
+ set fn=
+ goto Done
+:GetExt
+ set s=%fn%
+ set fe=%fn%
+ set fn=
+:ExtLoop
+ set t=%fe%
+ for %%x in (/%t%) do set fe=%%x
+ if ".%fe%"=="%t%" goto ExtFound
+ if [%fe%]==[%t%] goto NoExt
+ for %%x in (/%t%) do if not [%%x]==[%fe%] set fn=%fn%%%x
+ goto ExtLoop
+:ExtFound
+ set fe=.%fe%
+ goto Done
+:NoExt
+ if not [%fe%]==[.] set fn=%s%
+ set fe=
+:Done
+ echo DRIVE=%fd% PATH=%fp% UNIX_PATH=%fu% NAME=%fn% EXT=%fe%
+:END
+ set p=
+ set q=
+ set r=
+ set s=
+ set t=
+
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/Makefile.gnu b/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/Makefile.gnu
new file mode 100644
index 0000000000..1248c4f508
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/Makefile.gnu
@@ -0,0 +1,127 @@
+# This file is part of the CJK package Version 4.8.4 (18-Apr-2015)
+
+# Copyright (C) 1994-2015 Werner Lemberg <wl@gnu.org>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program in doc/COPYING; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301 USA
+
+# GNU Makefile for hbf2gf
+
+.PHONY: default all debug documentation clean \
+ do_all
+
+.CAUTIOUS: hbf2gf.c
+
+default:
+ @echo " say "
+ @echo ". "
+ @echo " make TARGET OS=SYSTEM "
+ @echo ". "
+ @echo " SYSTEM can be one of the following: "
+ @echo ". "
+ @echo " os2 bound (emx) "
+ @echo " dos (djgpp) "
+ @echo ". "
+ @echo " TARGET can be one of the following: "
+ @echo ". "
+ @echo " all debug "
+ @echo " documentation (needs cweave package)"
+ @echo " clean "
+
+ifdef OS
+
+ # default values (bound executables built with emx)
+ FS = msdos
+ CC = gcc -Wall -O -DHAVE_EMTEXDIR
+ LIB =
+ O = .o
+ EXE = .exe
+ RM = del
+
+ ifeq ($(OS),os2)
+ FS = msdos
+ CC = gcc -Wall -Zomf -Zmtd -O -DHAVE_EMTEXDIR
+ LIB = hbf2gf.def
+ O = .obj
+ EXE = .exe
+ RM = del
+ endif
+
+ ifeq ($(OS),dos)
+ FS = msdos
+ CC = gcc -Wall -O -DHAVE_EMTEXDIR
+ LIB =
+ O = .o
+ EXE = .exe
+ RM = del
+ endif
+
+
+ %$O: %.c
+ $(CC) $(CFLAGS) -c -D$(FS) -o $@ $<
+
+ %.c: %.w %.ch
+ $(CTANGLE) $^ $@
+ %.c: %.w
+ $(CTANGLE) $<
+
+ %.tex: %.w %.ch
+ $(CWEAVE) +ai $^ $@
+ %.tex: %.w
+ $(CWEAVE) +ai $<
+
+ %.dvi: %.tex
+ $(TEX) $*
+
+
+ all:
+ $(MAKE) -f Makefile.gnu do_all CFLAGS=-s
+
+ debug:
+ $(MAKE) -f Makefile.gnu do_all CFLAGS=-g
+
+ # this builds the .dvi-file
+ documentation: hbf2gf.dvi
+
+ # remove the unnecessary files;
+ clean:
+ -$(RM) *.scn
+ -$(RM) *.toc
+ -$(RM) *.idx
+ -$(RM) *.log
+ -$(RM) *.o
+
+
+ do_all: hbf2gf$(EXE)
+
+ hbf2gf$(EXE): hbf2gf$O hbf$O emdir$O emtexdir$O
+ ifeq ($(OS),dos)
+ $(CC) $(CFLAGS) -o $(basename $@) $^
+ strip $(basename $@)
+ coff2exe $(basename $@)
+ -del $(basename $@)
+ else
+ $(CC) $(CFLAGS) -o $@ $^ $(LIB)
+ endif
+
+ hbf$O: hbf.c hbf.h
+ emdir$O: emdir.c emdir.h
+ emtexdir$O: emtexdir.c emtexdir.h emdir.h
+
+else # ifdef OS
+
+ all debug documentation clean: default
+
+endif
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/Makefile.in b/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/Makefile.in
new file mode 100644
index 0000000000..937d5d6f81
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/Makefile.in
@@ -0,0 +1,127 @@
+# Makefile for hbf2gf -- wl@gnu.org
+
+# Copyright (C) 1994-2015 Werner Lemberg <wl@gnu.org>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program in doc/COPYING; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301 USA
+
+VPATH = @srcdir@
+srcdir = @srcdir@
+
+prefix = @prefix@
+exec_prefix = @exec_prefix@
+libdir = @libdir@
+bindir = @bindir@
+mandir = @mandir@
+
+RM = @RM@
+RMF = @RM@ -f
+
+TEX = tex
+CTANGLE = ctangle
+CWEAVE = cweave
+
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+
+CC = @CC@
+CPP = @CPP@
+
+MKINSTALLDIRS = $(srcdir)/mkinstalldirs
+
+CFLAGS = @CFLAGS@
+CPPFLAGS = @CPPFLAGS@ @DEFS@ @no_strdup@ -Dunix
+MY_CFLAGS = $(CFLAGS) $(CPPFLAGS) @XX_CFLAGS@
+LDFLAGS = @LDFLAGS@ @LIBS@
+
+SRC = hbf2gf.c $(srcdir)/hbf.c
+OBJ = hbf2gf.o hbf.o
+
+
+.SUFFIXES: .dvi .tex .w
+
+
+.w.c:
+ $(CTANGLE) $<
+.c.o:
+ $(CC) -c $(MY_CFLAGS) $<
+
+.w.tex:
+ $(CWEAVE) +ai $<
+
+.tex.dvi:
+ $(TEX) $<
+
+
+
+PROGRAMS = hbf2gf
+
+default all: $(PROGRAMS)
+
+hbf2gf.c: $(srcdir)/hbf2gf.w
+
+hbf2gf: $(OBJ)
+ $(CC) $(MY_CFLAGS) -o hbf2gf $(OBJ) $(LDFLAGS)
+
+documentation: hbf2gf.dvi
+
+install: $(PROGRAMS)
+ $(MKINSTALLDIRS) $(bindir) $(mandir)/man1
+ for P in $(PROGRAMS) ; do \
+ $(INSTALL_PROGRAM) $$P $(bindir)/$$P ; \
+ $(INSTALL_DATA) $(srcdir)/$$P.1 $(mandir)/man1 ; \
+ done
+
+uninstall:
+ -for P in $(PROGRAMS) ; do \
+ $(RMF) $(bindir)/$$P ; \
+ $(RMF) $(mandir)/man1/$$P.1 ; \
+ done
+
+clean: do_clean
+
+distclean: do_clean
+ -$(RMF) dep.end $(PROGRAMS) *.dvi
+ -$(RMF) *~ *.orig core *.core
+ -$(RMF) config.cache config.log config.status Makefile
+
+do_clean:
+ -$(RMF) *.o
+ -$(RMF) *.scn *.toc *.idx *.log
+
+maintainer-clean: distclean
+ -$(RMF) hbf2gf.c
+
+depend: $(SRC)
+ (echo '/^#.* PUT NO STUFF BELOW/,$$d'; echo w; echo q) | \
+ ed - Makefile
+ echo '# Dependencies generated by make depend: PUT NO STUFF BELOW' \
+ >> Makefile
+ for file in $(SRC) ; do \
+ $(CPP) $(CPPFLAGS) $$file | \
+ sed -n -e 's|^# [1-9][0-9]* "\([^/].*\.h\)".*|\1|p' \
+ -e 's|^# [1-9][0-9]* "\($(srcdir)/.*\.h\)".*|\1|p' | \
+ sed -e 's|/\./|.|g' -e "s/^/`basename $$file .c`.o: /" ; \
+ done | \
+ sort -u | \
+ awk '{ if (LINE == 1) \
+ { line = last = $$1 } \
+ else if ($$1 != last) \
+ { print line ; line = last = $$1 } \
+ line = line " " $$2 } \
+ END { print line }' >> Makefile
+
+# Dependencies generated by make depend: PUT NO STUFF BELOW
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/README b/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/README
new file mode 100644
index 0000000000..a7de0ec140
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/README
@@ -0,0 +1,2 @@
+Additional installation documentation can be found in the files `INSTALL'
+(in the top directory) and `doc/hbf2gf.txt'.
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/c-auto.h b/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/c-auto.h
new file mode 100644
index 0000000000..0bdbc5f782
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/c-auto.h
@@ -0,0 +1,39 @@
+/*
+ * c-auto.h
+ *
+ * This file is part of the CJK package ver 4.8.4 18-Apr-2015
+ *
+ */
+
+/*
+ Copyright (C) 1994-2015 Werner Lemberg <wl@gnu.org>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program in doc/COPYING; if not, write to the Free
+ Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+ MA 02110-1301 USA
+ */
+
+#ifndef C_AUTO_H
+#define C_AUTO_H
+
+/*
+ * We need to get kpathsea's configuration file.
+ */
+
+#include "kpathsea/c-auto.h"
+
+#endif /* C_AUTO_H */
+
+
+/* end */
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/cfg/README b/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/cfg/README
new file mode 100644
index 0000000000..689d59e739
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/cfg/README
@@ -0,0 +1,10 @@
+In this directory you find some hbf2gf configuration files for common CJK
+bitmap fonts.
+
+No paths are specified for the HBF files -- under web2c you should add the
+path for these fonts to the `MISCFONTS' variable in texmf.cnf; under emTeX
+you should set the environment variable `HBFONTS'.
+
+The font paths used here in the config files of this directory are TDS
+compliant; only the `HBF_TARGET' environment variable is used (an example
+would be `set HBF_TARGET=/usr/local/TeX/texmf/fonts').
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/cfg/b5ka12.cfg b/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/cfg/b5ka12.cfg
new file mode 100644
index 0000000000..f5c142f023
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/cfg/b5ka12.cfg
@@ -0,0 +1,28 @@
+
+hbf_header ntukai48.hbf
+mag_x 1
+threshold 128
+comment Big 5 normal 48x48 pixel font scaled and adapted to 12pt
+
+design_size 12
+
+x_offset 2
+y_offset -12
+
+nmb_files -1
+
+output_name b5ka12
+
+checksum 123456789
+
+dpi_x 300
+
+pk_files no
+tfm_files yes
+
+ long_extension no
+
+coding codingscheme Big 5 encoded TeX text
+
+pk_directory $HBF_TARGET/pk/modeless/ntu/b5ka12/
+tfm_directory $HBF_TARGET/tfm/ntu/b5ka12/
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/cfg/b5kr12.cfg b/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/cfg/b5kr12.cfg
new file mode 100644
index 0000000000..9d9da2c1a2
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/cfg/b5kr12.cfg
@@ -0,0 +1,30 @@
+
+hbf_header ntukai48.hbf
+mag_x 1
+threshold 128
+comment Big 5 normal 48x48 pixel font rotated, scaled and adapted to 12pt
+
+design_size 12
+
+x_offset 2
+y_offset -10
+
+rotation yes
+
+nmb_files -1
+
+output_name b5kr12
+
+checksum 123456789
+
+dpi_x 300
+
+pk_files no
+tfm_files yes
+
+ long_extension no
+
+coding codingscheme Big 5 encoded TeX text
+
+pk_directory $HBF_TARGET/pk/modeless/ntu/b5kr12/
+tfm_directory $HBF_TARGET/tfm/ntu/b5kr12/
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/cfg/b5so12.cfg b/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/cfg/b5so12.cfg
new file mode 100644
index 0000000000..dc0bcd9fbf
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/cfg/b5so12.cfg
@@ -0,0 +1,31 @@
+
+hbf_header et24.hbf
+mag_x 2.076
+threshold 128
+comment fanti songti 24x24 pixel font magnified and adapted for 12pt
+
+design_size 12.0
+
+x_offset 3
+y_offset -8
+
+nmb_files -1
+
+output_name b5so12
+
+checksum 123456789
+
+dpi_x 300
+
+tfm_files yes
+pk_files no
+
+coding codingscheme Big 5 encoded TeX text
+
+pk_directory $HBF_TARGET/pk/modeless/eten/b5so12/
+tfm_directory $HBF_TARGET/tfm/eten/b5so12/
+
+ rm_command del
+ cp_command copy
+ long_extension no
+ job_extension .cmd
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/cfg/c1so12.cfg b/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/cfg/c1so12.cfg
new file mode 100644
index 0000000000..de5b32b3ef
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/cfg/c1so12.cfg
@@ -0,0 +1,28 @@
+
+hbf_header cns40-1.hbf
+mag_x 1
+threshold 128
+comment CNS plane 1 song 40x40 pixel font scaled and adapted to 12pt
+
+design_size 12.0
+
+x_offset 2
+y_offset -8
+
+nmb_files -1
+
+output_name c1so12
+
+checksum 123456789
+
+dpi_x 300
+
+pk_files no
+tfm_files yes
+
+ long_extension no
+
+coding codingscheme CNS plane 1 encoded TeX text
+
+pk_directory $HBF_TARGET/pk/modeless/cns/c1so12/
+tfm_directory $HBF_TARGET/tfm/cns/c1so12/
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/cfg/c2so12.cfg b/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/cfg/c2so12.cfg
new file mode 100644
index 0000000000..969af8fae1
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/cfg/c2so12.cfg
@@ -0,0 +1,28 @@
+
+hbf_header cns40-2.hbf
+mag_x 1
+threshold 128
+comment CNS plane 2 song 40x40 pixel font scaled and adapted to 12pt
+
+design_size 12.0
+
+x_offset 2
+y_offset -8
+
+nmb_files -1
+
+output_name c2so12
+
+checksum 123456789
+
+dpi_x 300
+
+pk_files no
+tfm_files yes
+
+ long_extension no
+
+coding codingscheme CNS plane 2 encoded TeX text
+
+pk_directory $HBF_TARGET/pk/modeless/cns/c2so12/
+tfm_directory $HBF_TARGET/tfm/cns/c2so12/
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/cfg/c3so12.cfg b/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/cfg/c3so12.cfg
new file mode 100644
index 0000000000..0e65768ee5
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/cfg/c3so12.cfg
@@ -0,0 +1,28 @@
+
+hbf_header cns40-3.hbf
+mag_x 1
+threshold 128
+comment CNS plane 3 song 40x40 pixel font scaled and adapted to 12pt
+
+design_size 12.0
+
+x_offset 2
+y_offset -8
+
+nmb_files -1
+
+output_name c3so12
+
+checksum 123456789
+
+dpi_x 300
+
+pk_files no
+tfm_files yes
+
+ long_extension no
+
+coding codingscheme CNS plane 3 encoded TeX text
+
+pk_directory $HBF_TARGET/pk/modeless/cns/c3so12/
+tfm_directory $HBF_TARGET/tfm/cns/c3so12/
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/cfg/c4so12.cfg b/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/cfg/c4so12.cfg
new file mode 100644
index 0000000000..8ea3a8b270
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/cfg/c4so12.cfg
@@ -0,0 +1,28 @@
+
+hbf_header cns40-4.hbf
+mag_x 1
+threshold 128
+comment CNS plane 4 song 40x40 pixel font scaled and adapted to 12pt
+
+design_size 12.0
+
+x_offset 2
+y_offset -8
+
+nmb_files -1
+
+output_name c4so12
+
+checksum 123456789
+
+dpi_x 300
+
+pk_files no
+tfm_files yes
+
+ long_extension no
+
+coding codingscheme CNS plane 4 encoded TeX text
+
+pk_directory $HBF_TARGET/pk/modeless/cns/c4so12/
+tfm_directory $HBF_TARGET/tfm/cns/c4so12/
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/cfg/c5so12.cfg b/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/cfg/c5so12.cfg
new file mode 100644
index 0000000000..1b81c90a0d
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/cfg/c5so12.cfg
@@ -0,0 +1,28 @@
+
+hbf_header cns40-5.hbf
+mag_x 1
+threshold 128
+comment CNS plane 5 song 40x40 pixel font scaled and adapted to 12pt
+
+design_size 12.0
+
+x_offset 2
+y_offset -8
+
+nmb_files -1
+
+output_name c5so12
+
+checksum 123456789
+
+dpi_x 300
+
+pk_files no
+tfm_files yes
+
+ long_extension no
+
+coding codingscheme CNS plane 5 encoded TeX text
+
+pk_directory $HBF_TARGET/pk/modeless/cns/c5so12/
+tfm_directory $HBF_TARGET/tfm/cns/c5so12/
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/cfg/c6so12.cfg b/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/cfg/c6so12.cfg
new file mode 100644
index 0000000000..5b9c912ce5
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/cfg/c6so12.cfg
@@ -0,0 +1,28 @@
+
+hbf_header cns40-6.hbf
+mag_x 1
+threshold 128
+comment CNS plane 6 song 40x40 pixel font scaled and adapted to 12pt
+
+design_size 12.0
+
+x_offset 2
+y_offset -8
+
+nmb_files -1
+
+output_name c6so12
+
+checksum 123456789
+
+dpi_x 300
+
+pk_files no
+tfm_files yes
+
+ long_extension no
+
+coding codingscheme CNS plane 6 encoded TeX text
+
+pk_directory $HBF_TARGET/pk/modeless/cns/c6so12/
+tfm_directory $HBF_TARGET/tfm/cns/c6so12/
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/cfg/c7so12.cfg b/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/cfg/c7so12.cfg
new file mode 100644
index 0000000000..051b260142
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/cfg/c7so12.cfg
@@ -0,0 +1,28 @@
+
+hbf_header cns40-7.hbf
+mag_x 1
+threshold 128
+comment CNS plane 7 song 40x40 pixel font scaled and adapted to 12pt
+
+design_size 12.0
+
+x_offset 2
+y_offset -8
+
+nmb_files -1
+
+output_name c7so12
+
+checksum 123456789
+
+dpi_x 300
+
+pk_files no
+tfm_files yes
+
+ long_extension no
+
+coding codingscheme CNS plane 7 encoded TeX text
+
+pk_directory $HBF_TARGET/pk/modeless/cns/c7so12/
+tfm_directory $HBF_TARGET/tfm/cns/c7so12/
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/cfg/csso12.cfg b/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/cfg/csso12.cfg
new file mode 100644
index 0000000000..9ad91b0c57
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/cfg/csso12.cfg
@@ -0,0 +1,28 @@
+
+hbf_header cns40-b5.hbf
+mag_x 1
+threshold 128
+comment CNS song 40x40 pixel font (Bg5 encoded) scaled and adapted to 12pt
+
+design_size 12.0
+
+x_offset 2
+y_offset -8
+
+nmb_files -1
+
+output_name csso12
+
+checksum 123456789
+
+dpi_x 300
+
+pk_files no
+tfm_files yes
+
+ long_extension no
+
+coding codingscheme Big 5 encoded TeX text
+
+pk_directory $HBF_TARGET/pk/modeless/cns/csso12/
+tfm_directory $HBF_TARGET/tfm/cns/csso12/
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/cfg/gsfs14.cfg b/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/cfg/gsfs14.cfg
new file mode 100644
index 0000000000..4b397aca46
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/cfg/gsfs14.cfg
@@ -0,0 +1,27 @@
+
+hbf_header jfs56.hbf
+mag_x 1
+threshold 128
+comment jianti fansongti 56x56 pixel font scaled and adapted to 14.4pt
+
+design_size 14.4
+
+y_offset -13
+
+nmb_files -1
+
+output_name gsfs14
+
+checksum 123456789
+
+dpi_x 300
+
+pk_files no
+tfm_files yes
+
+ long_extension no
+
+coding codingscheme GuoBiao encoded TeX text
+
+pk_directory $HBF_TARGET/pk/modeless/ccdos/gsfs14/
+tfm_directory $HBF_TARGET/tfm/ccdos/gsfs14/
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/cfg/j2so12.cfg b/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/cfg/j2so12.cfg
new file mode 100644
index 0000000000..7e0d70b5c0
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/cfg/j2so12.cfg
@@ -0,0 +1,30 @@
+
+hbf_header jisksp40.hbf
+mag_x 1.0
+threshold 128
+comment supplemental kanji normal 40x40 pixel font scaled and adapted to 12pt
+
+design_size 12
+
+min_char 0x2121
+
+x_offset 2
+y_offset -7
+
+nmb_files -1
+
+output_name j2so12
+
+checksum 123456789
+
+dpi_x 300
+
+pk_files no
+tfm_files yes
+
+ long_extension no
+
+coding codingscheme JIS2 encoded TeX text
+
+pk_directory $HBF_TARGET/pk/modeless/jisx0212/j2so12/
+tfm_directory $HBF_TARGET/tfm/jisx0212/j2so12/
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/cfg/jsso12.cfg b/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/cfg/jsso12.cfg
new file mode 100644
index 0000000000..9bdfc7b1e8
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/cfg/jsso12.cfg
@@ -0,0 +1,28 @@
+
+hbf_header kanji48.hbf
+mag_x 0.83
+threshold 128
+comment kanji normal 48x48 pixel font scaled and adapted to 12pt
+
+design_size 12
+
+x_offset 2
+y_offset -7
+
+nmb_files -1
+
+output_name jsso12
+
+checksum 123456789
+
+dpi_x 300
+
+pk_files no
+tfm_files yes
+
+ long_extension no
+
+coding codingscheme JIS encoded TeX text
+
+pk_directory $HBF_TARGET/pk/modeless/jisx0208/jsso12/
+tfm_directory $HBF_TARGET/tfm/jisx0208/jsso12/
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/cfg/ksso17.cfg b/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/cfg/ksso17.cfg
new file mode 100644
index 0000000000..c82f7e7eee
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/cfg/ksso17.cfg
@@ -0,0 +1,27 @@
+
+hbf_header hanja65.hbf
+mag_x 1
+threshold 128
+comment hanja normal 65x65 pixel font scaled and adapted to 17.28pt
+
+design_size 17.28
+
+y_offset -16
+
+nmb_files -1
+
+output_name ksso17
+
+checksum 123456789
+
+dpi_x 300
+
+pk_files no
+tfm_files yes
+
+ long_extension no
+
+coding codingscheme KS encoded TeX text
+
+pk_directory $HBF_TARGET/pk/modeless/ksc5601/ksso17/
+tfm_directory $HBF_TARGET/tfm/ksc5601/ksso17/
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/config.guess b/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/config.guess
new file mode 100755
index 0000000000..f7eb141e75
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/config.guess
@@ -0,0 +1,1438 @@
+#! /bin/sh
+# Attempt to guess a canonical system name.
+# Copyright 1992-2015 Free Software Foundation, Inc.
+
+timestamp='2015-03-04'
+
+# This file is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, see <http://www.gnu.org/licenses/>.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that
+# program. This Exception is an additional permission under section 7
+# of the GNU General Public License, version 3 ("GPLv3").
+#
+# Originally written by Per Bothner; maintained since 2000 by Ben Elliston.
+#
+# You can get the latest version of this script from:
+# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
+#
+# Please send patches to <config-patches@gnu.org>.
+
+
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION]
+
+Output the configuration name of the system \`$me' is run on.
+
+Operation modes:
+ -h, --help print this help, then exit
+ -t, --time-stamp print date of last modification, then exit
+ -v, --version print version number, then exit
+
+Report bugs and patches to <config-patches@gnu.org>."
+
+version="\
+GNU config.guess ($timestamp)
+
+Originally written by Per Bothner.
+Copyright 1992-2015 Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions. There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+ case $1 in
+ --time-stamp | --time* | -t )
+ echo "$timestamp" ; exit ;;
+ --version | -v )
+ echo "$version" ; exit ;;
+ --help | --h* | -h )
+ echo "$usage"; exit ;;
+ -- ) # Stop option processing
+ shift; break ;;
+ - ) # Use stdin as input.
+ break ;;
+ -* )
+ echo "$me: invalid option $1$help" >&2
+ exit 1 ;;
+ * )
+ break ;;
+ esac
+done
+
+if test $# != 0; then
+ echo "$me: too many arguments$help" >&2
+ exit 1
+fi
+
+trap 'exit 1' 1 2 15
+
+# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
+# compiler to aid in system detection is discouraged as it requires
+# temporary files to be created and, as you can see below, it is a
+# headache to deal with in a portable fashion.
+
+# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
+# use `HOST_CC' if defined, but it is deprecated.
+
+# Portable tmp directory creation inspired by the Autoconf team.
+
+set_cc_for_build='
+trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
+trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
+: ${TMPDIR=/tmp} ;
+ { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
+ { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
+ { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
+ { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
+dummy=$tmp/dummy ;
+tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
+case $CC_FOR_BUILD,$HOST_CC,$CC in
+ ,,) echo "int x;" > $dummy.c ;
+ for c in cc gcc c89 c99 ; do
+ if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
+ CC_FOR_BUILD="$c"; break ;
+ fi ;
+ done ;
+ if test x"$CC_FOR_BUILD" = x ; then
+ CC_FOR_BUILD=no_compiler_found ;
+ fi
+ ;;
+ ,,*) CC_FOR_BUILD=$CC ;;
+ ,*,*) CC_FOR_BUILD=$HOST_CC ;;
+esac ; set_cc_for_build= ;'
+
+# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
+# (ghazi@noc.rutgers.edu 1994-08-24)
+if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
+ PATH=$PATH:/.attbin ; export PATH
+fi
+
+UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
+UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
+UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
+UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
+
+case "${UNAME_SYSTEM}" in
+Linux|GNU|GNU/*)
+ # If the system lacks a compiler, then just pick glibc.
+ # We could probably try harder.
+ LIBC=gnu
+
+ eval $set_cc_for_build
+ cat <<-EOF > $dummy.c
+ #include <features.h>
+ #if defined(__UCLIBC__)
+ LIBC=uclibc
+ #elif defined(__dietlibc__)
+ LIBC=dietlibc
+ #else
+ LIBC=gnu
+ #endif
+ EOF
+ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`
+ ;;
+esac
+
+# Note: order is significant - the case branches are not exclusive.
+
+case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
+ *:NetBSD:*:*)
+ # NetBSD (nbsd) targets should (where applicable) match one or
+ # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*,
+ # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently
+ # switched to ELF, *-*-netbsd* would select the old
+ # object file format. This provides both forward
+ # compatibility and a consistent mechanism for selecting the
+ # object file format.
+ #
+ # Note: NetBSD doesn't particularly care about the vendor
+ # portion of the name. We always set it to "unknown".
+ sysctl="sysctl -n hw.machine_arch"
+ UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \
+ /sbin/$sysctl 2>/dev/null || \
+ /usr/sbin/$sysctl 2>/dev/null || \
+ echo unknown)`
+ case "${UNAME_MACHINE_ARCH}" in
+ armeb) machine=armeb-unknown ;;
+ arm*) machine=arm-unknown ;;
+ sh3el) machine=shl-unknown ;;
+ sh3eb) machine=sh-unknown ;;
+ sh5el) machine=sh5le-unknown ;;
+ earmv*)
+ arch=`echo ${UNAME_MACHINE_ARCH} | sed -e 's,^e\(armv[0-9]\).*$,\1,'`
+ endian=`echo ${UNAME_MACHINE_ARCH} | sed -ne 's,^.*\(eb\)$,\1,p'`
+ machine=${arch}${endian}-unknown
+ ;;
+ *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
+ esac
+ # The Operating System including object format, if it has switched
+ # to ELF recently, or will in the future.
+ case "${UNAME_MACHINE_ARCH}" in
+ arm*|earm*|i386|m68k|ns32k|sh3*|sparc|vax)
+ eval $set_cc_for_build
+ if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
+ | grep -q __ELF__
+ then
+ # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
+ # Return netbsd for either. FIX?
+ os=netbsd
+ else
+ os=netbsdelf
+ fi
+ ;;
+ *)
+ os=netbsd
+ ;;
+ esac
+ # Determine ABI tags.
+ case "${UNAME_MACHINE_ARCH}" in
+ earm*)
+ expr='s/^earmv[0-9]/-eabi/;s/eb$//'
+ abi=`echo ${UNAME_MACHINE_ARCH} | sed -e "$expr"`
+ ;;
+ esac
+ # The OS release
+ # Debian GNU/NetBSD machines have a different userland, and
+ # thus, need a distinct triplet. However, they do not need
+ # kernel version information, so it can be replaced with a
+ # suitable tag, in the style of linux-gnu.
+ case "${UNAME_VERSION}" in
+ Debian*)
+ release='-gnu'
+ ;;
+ *)
+ release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
+ ;;
+ esac
+ # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
+ # contains redundant information, the shorter form:
+ # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
+ echo "${machine}-${os}${release}${abi}"
+ exit ;;
+ *:Bitrig:*:*)
+ UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
+ echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE}
+ exit ;;
+ *:OpenBSD:*:*)
+ UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
+ echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
+ exit ;;
+ *:ekkoBSD:*:*)
+ echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
+ exit ;;
+ *:SolidBSD:*:*)
+ echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE}
+ exit ;;
+ macppc:MirBSD:*:*)
+ echo powerpc-unknown-mirbsd${UNAME_RELEASE}
+ exit ;;
+ *:MirBSD:*:*)
+ echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
+ exit ;;
+ alpha:OSF1:*:*)
+ case $UNAME_RELEASE in
+ *4.0)
+ UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
+ ;;
+ *5.*)
+ UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
+ ;;
+ esac
+ # According to Compaq, /usr/sbin/psrinfo has been available on
+ # OSF/1 and Tru64 systems produced since 1995. I hope that
+ # covers most systems running today. This code pipes the CPU
+ # types through head -n 1, so we only detect the type of CPU 0.
+ ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1`
+ case "$ALPHA_CPU_TYPE" in
+ "EV4 (21064)")
+ UNAME_MACHINE="alpha" ;;
+ "EV4.5 (21064)")
+ UNAME_MACHINE="alpha" ;;
+ "LCA4 (21066/21068)")
+ UNAME_MACHINE="alpha" ;;
+ "EV5 (21164)")
+ UNAME_MACHINE="alphaev5" ;;
+ "EV5.6 (21164A)")
+ UNAME_MACHINE="alphaev56" ;;
+ "EV5.6 (21164PC)")
+ UNAME_MACHINE="alphapca56" ;;
+ "EV5.7 (21164PC)")
+ UNAME_MACHINE="alphapca57" ;;
+ "EV6 (21264)")
+ UNAME_MACHINE="alphaev6" ;;
+ "EV6.7 (21264A)")
+ UNAME_MACHINE="alphaev67" ;;
+ "EV6.8CB (21264C)")
+ UNAME_MACHINE="alphaev68" ;;
+ "EV6.8AL (21264B)")
+ UNAME_MACHINE="alphaev68" ;;
+ "EV6.8CX (21264D)")
+ UNAME_MACHINE="alphaev68" ;;
+ "EV6.9A (21264/EV69A)")
+ UNAME_MACHINE="alphaev69" ;;
+ "EV7 (21364)")
+ UNAME_MACHINE="alphaev7" ;;
+ "EV7.9 (21364A)")
+ UNAME_MACHINE="alphaev79" ;;
+ esac
+ # A Pn.n version is a patched version.
+ # A Vn.n version is a released version.
+ # A Tn.n version is a released field test version.
+ # A Xn.n version is an unreleased experimental baselevel.
+ # 1.2 uses "1.2" for uname -r.
+ echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ # Reset EXIT trap before exiting to avoid spurious non-zero exit code.
+ exitcode=$?
+ trap '' 0
+ exit $exitcode ;;
+ Alpha\ *:Windows_NT*:*)
+ # How do we know it's Interix rather than the generic POSIX subsystem?
+ # Should we change UNAME_MACHINE based on the output of uname instead
+ # of the specific Alpha model?
+ echo alpha-pc-interix
+ exit ;;
+ 21064:Windows_NT:50:3)
+ echo alpha-dec-winnt3.5
+ exit ;;
+ Amiga*:UNIX_System_V:4.0:*)
+ echo m68k-unknown-sysv4
+ exit ;;
+ *:[Aa]miga[Oo][Ss]:*:*)
+ echo ${UNAME_MACHINE}-unknown-amigaos
+ exit ;;
+ *:[Mm]orph[Oo][Ss]:*:*)
+ echo ${UNAME_MACHINE}-unknown-morphos
+ exit ;;
+ *:OS/390:*:*)
+ echo i370-ibm-openedition
+ exit ;;
+ *:z/VM:*:*)
+ echo s390-ibm-zvmoe
+ exit ;;
+ *:OS400:*:*)
+ echo powerpc-ibm-os400
+ exit ;;
+ arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
+ echo arm-acorn-riscix${UNAME_RELEASE}
+ exit ;;
+ arm*:riscos:*:*|arm*:RISCOS:*:*)
+ echo arm-unknown-riscos
+ exit ;;
+ SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
+ echo hppa1.1-hitachi-hiuxmpp
+ exit ;;
+ Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
+ # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
+ if test "`(/bin/universe) 2>/dev/null`" = att ; then
+ echo pyramid-pyramid-sysv3
+ else
+ echo pyramid-pyramid-bsd
+ fi
+ exit ;;
+ NILE*:*:*:dcosx)
+ echo pyramid-pyramid-svr4
+ exit ;;
+ DRS?6000:unix:4.0:6*)
+ echo sparc-icl-nx6
+ exit ;;
+ DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
+ case `/usr/bin/uname -p` in
+ sparc) echo sparc-icl-nx7; exit ;;
+ esac ;;
+ s390x:SunOS:*:*)
+ echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit ;;
+ sun4H:SunOS:5.*:*)
+ echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit ;;
+ sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
+ echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit ;;
+ i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
+ echo i386-pc-auroraux${UNAME_RELEASE}
+ exit ;;
+ i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
+ eval $set_cc_for_build
+ SUN_ARCH="i386"
+ # If there is a compiler, see if it is configured for 64-bit objects.
+ # Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
+ # This test works for both compilers.
+ if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+ if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
+ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
+ grep IS_64BIT_ARCH >/dev/null
+ then
+ SUN_ARCH="x86_64"
+ fi
+ fi
+ echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit ;;
+ sun4*:SunOS:6*:*)
+ # According to config.sub, this is the proper way to canonicalize
+ # SunOS6. Hard to guess exactly what SunOS6 will be like, but
+ # it's likely to be more like Solaris than SunOS4.
+ echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit ;;
+ sun4*:SunOS:*:*)
+ case "`/usr/bin/arch -k`" in
+ Series*|S4*)
+ UNAME_RELEASE=`uname -v`
+ ;;
+ esac
+ # Japanese Language versions have a version number like `4.1.3-JL'.
+ echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
+ exit ;;
+ sun3*:SunOS:*:*)
+ echo m68k-sun-sunos${UNAME_RELEASE}
+ exit ;;
+ sun*:*:4.2BSD:*)
+ UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
+ test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
+ case "`/bin/arch`" in
+ sun3)
+ echo m68k-sun-sunos${UNAME_RELEASE}
+ ;;
+ sun4)
+ echo sparc-sun-sunos${UNAME_RELEASE}
+ ;;
+ esac
+ exit ;;
+ aushp:SunOS:*:*)
+ echo sparc-auspex-sunos${UNAME_RELEASE}
+ exit ;;
+ # The situation for MiNT is a little confusing. The machine name
+ # can be virtually everything (everything which is not
+ # "atarist" or "atariste" at least should have a processor
+ # > m68000). The system name ranges from "MiNT" over "FreeMiNT"
+ # to the lowercase version "mint" (or "freemint"). Finally
+ # the system name "TOS" denotes a system which is actually not
+ # MiNT. But MiNT is downward compatible to TOS, so this should
+ # be no problem.
+ atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
+ echo m68k-atari-mint${UNAME_RELEASE}
+ exit ;;
+ atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
+ echo m68k-atari-mint${UNAME_RELEASE}
+ exit ;;
+ *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
+ echo m68k-atari-mint${UNAME_RELEASE}
+ exit ;;
+ milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
+ echo m68k-milan-mint${UNAME_RELEASE}
+ exit ;;
+ hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
+ echo m68k-hades-mint${UNAME_RELEASE}
+ exit ;;
+ *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
+ echo m68k-unknown-mint${UNAME_RELEASE}
+ exit ;;
+ m68k:machten:*:*)
+ echo m68k-apple-machten${UNAME_RELEASE}
+ exit ;;
+ powerpc:machten:*:*)
+ echo powerpc-apple-machten${UNAME_RELEASE}
+ exit ;;
+ RISC*:Mach:*:*)
+ echo mips-dec-mach_bsd4.3
+ exit ;;
+ RISC*:ULTRIX:*:*)
+ echo mips-dec-ultrix${UNAME_RELEASE}
+ exit ;;
+ VAX*:ULTRIX*:*:*)
+ echo vax-dec-ultrix${UNAME_RELEASE}
+ exit ;;
+ 2020:CLIX:*:* | 2430:CLIX:*:*)
+ echo clipper-intergraph-clix${UNAME_RELEASE}
+ exit ;;
+ mips:*:*:UMIPS | mips:*:*:RISCos)
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+#ifdef __cplusplus
+#include <stdio.h> /* for printf() prototype */
+ int main (int argc, char *argv[]) {
+#else
+ int main (argc, argv) int argc; char *argv[]; {
+#endif
+ #if defined (host_mips) && defined (MIPSEB)
+ #if defined (SYSTYPE_SYSV)
+ printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
+ #endif
+ #if defined (SYSTYPE_SVR4)
+ printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
+ #endif
+ #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
+ printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
+ #endif
+ #endif
+ exit (-1);
+ }
+EOF
+ $CC_FOR_BUILD -o $dummy $dummy.c &&
+ dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` &&
+ SYSTEM_NAME=`$dummy $dummyarg` &&
+ { echo "$SYSTEM_NAME"; exit; }
+ echo mips-mips-riscos${UNAME_RELEASE}
+ exit ;;
+ Motorola:PowerMAX_OS:*:*)
+ echo powerpc-motorola-powermax
+ exit ;;
+ Motorola:*:4.3:PL8-*)
+ echo powerpc-harris-powermax
+ exit ;;
+ Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
+ echo powerpc-harris-powermax
+ exit ;;
+ Night_Hawk:Power_UNIX:*:*)
+ echo powerpc-harris-powerunix
+ exit ;;
+ m88k:CX/UX:7*:*)
+ echo m88k-harris-cxux7
+ exit ;;
+ m88k:*:4*:R4*)
+ echo m88k-motorola-sysv4
+ exit ;;
+ m88k:*:3*:R3*)
+ echo m88k-motorola-sysv3
+ exit ;;
+ AViiON:dgux:*:*)
+ # DG/UX returns AViiON for all architectures
+ UNAME_PROCESSOR=`/usr/bin/uname -p`
+ if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
+ then
+ if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
+ [ ${TARGET_BINARY_INTERFACE}x = x ]
+ then
+ echo m88k-dg-dgux${UNAME_RELEASE}
+ else
+ echo m88k-dg-dguxbcs${UNAME_RELEASE}
+ fi
+ else
+ echo i586-dg-dgux${UNAME_RELEASE}
+ fi
+ exit ;;
+ M88*:DolphinOS:*:*) # DolphinOS (SVR3)
+ echo m88k-dolphin-sysv3
+ exit ;;
+ M88*:*:R3*:*)
+ # Delta 88k system running SVR3
+ echo m88k-motorola-sysv3
+ exit ;;
+ XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
+ echo m88k-tektronix-sysv3
+ exit ;;
+ Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
+ echo m68k-tektronix-bsd
+ exit ;;
+ *:IRIX*:*:*)
+ echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
+ exit ;;
+ ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
+ echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id
+ exit ;; # Note that: echo "'`uname -s`'" gives 'AIX '
+ i*86:AIX:*:*)
+ echo i386-ibm-aix
+ exit ;;
+ ia64:AIX:*:*)
+ if [ -x /usr/bin/oslevel ] ; then
+ IBM_REV=`/usr/bin/oslevel`
+ else
+ IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+ fi
+ echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
+ exit ;;
+ *:AIX:2:3)
+ if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+ #include <sys/systemcfg.h>
+
+ main()
+ {
+ if (!__power_pc())
+ exit(1);
+ puts("powerpc-ibm-aix3.2.5");
+ exit(0);
+ }
+EOF
+ if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy`
+ then
+ echo "$SYSTEM_NAME"
+ else
+ echo rs6000-ibm-aix3.2.5
+ fi
+ elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
+ echo rs6000-ibm-aix3.2.4
+ else
+ echo rs6000-ibm-aix3.2
+ fi
+ exit ;;
+ *:AIX:*:[4567])
+ IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
+ if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
+ IBM_ARCH=rs6000
+ else
+ IBM_ARCH=powerpc
+ fi
+ if [ -x /usr/bin/lslpp ] ; then
+ IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc |
+ awk -F: '{ print $3 }' | sed s/[0-9]*$/0/`
+ else
+ IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+ fi
+ echo ${IBM_ARCH}-ibm-aix${IBM_REV}
+ exit ;;
+ *:AIX:*:*)
+ echo rs6000-ibm-aix
+ exit ;;
+ ibmrt:4.4BSD:*|romp-ibm:BSD:*)
+ echo romp-ibm-bsd4.4
+ exit ;;
+ ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and
+ echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to
+ exit ;; # report: romp-ibm BSD 4.3
+ *:BOSX:*:*)
+ echo rs6000-bull-bosx
+ exit ;;
+ DPX/2?00:B.O.S.:*:*)
+ echo m68k-bull-sysv3
+ exit ;;
+ 9000/[34]??:4.3bsd:1.*:*)
+ echo m68k-hp-bsd
+ exit ;;
+ hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
+ echo m68k-hp-bsd4.4
+ exit ;;
+ 9000/[34678]??:HP-UX:*:*)
+ HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+ case "${UNAME_MACHINE}" in
+ 9000/31? ) HP_ARCH=m68000 ;;
+ 9000/[34]?? ) HP_ARCH=m68k ;;
+ 9000/[678][0-9][0-9])
+ if [ -x /usr/bin/getconf ]; then
+ sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
+ sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
+ case "${sc_cpu_version}" in
+ 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
+ 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
+ 532) # CPU_PA_RISC2_0
+ case "${sc_kernel_bits}" in
+ 32) HP_ARCH="hppa2.0n" ;;
+ 64) HP_ARCH="hppa2.0w" ;;
+ '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20
+ esac ;;
+ esac
+ fi
+ if [ "${HP_ARCH}" = "" ]; then
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+
+ #define _HPUX_SOURCE
+ #include <stdlib.h>
+ #include <unistd.h>
+
+ int main ()
+ {
+ #if defined(_SC_KERNEL_BITS)
+ long bits = sysconf(_SC_KERNEL_BITS);
+ #endif
+ long cpu = sysconf (_SC_CPU_VERSION);
+
+ switch (cpu)
+ {
+ case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
+ case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
+ case CPU_PA_RISC2_0:
+ #if defined(_SC_KERNEL_BITS)
+ switch (bits)
+ {
+ case 64: puts ("hppa2.0w"); break;
+ case 32: puts ("hppa2.0n"); break;
+ default: puts ("hppa2.0"); break;
+ } break;
+ #else /* !defined(_SC_KERNEL_BITS) */
+ puts ("hppa2.0"); break;
+ #endif
+ default: puts ("hppa1.0"); break;
+ }
+ exit (0);
+ }
+EOF
+ (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
+ test -z "$HP_ARCH" && HP_ARCH=hppa
+ fi ;;
+ esac
+ if [ ${HP_ARCH} = "hppa2.0w" ]
+ then
+ eval $set_cc_for_build
+
+ # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
+ # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler
+ # generating 64-bit code. GNU and HP use different nomenclature:
+ #
+ # $ CC_FOR_BUILD=cc ./config.guess
+ # => hppa2.0w-hp-hpux11.23
+ # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
+ # => hppa64-hp-hpux11.23
+
+ if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
+ grep -q __LP64__
+ then
+ HP_ARCH="hppa2.0w"
+ else
+ HP_ARCH="hppa64"
+ fi
+ fi
+ echo ${HP_ARCH}-hp-hpux${HPUX_REV}
+ exit ;;
+ ia64:HP-UX:*:*)
+ HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+ echo ia64-hp-hpux${HPUX_REV}
+ exit ;;
+ 3050*:HI-UX:*:*)
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+ #include <unistd.h>
+ int
+ main ()
+ {
+ long cpu = sysconf (_SC_CPU_VERSION);
+ /* The order matters, because CPU_IS_HP_MC68K erroneously returns
+ true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct
+ results, however. */
+ if (CPU_IS_PA_RISC (cpu))
+ {
+ switch (cpu)
+ {
+ case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
+ case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
+ case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
+ default: puts ("hppa-hitachi-hiuxwe2"); break;
+ }
+ }
+ else if (CPU_IS_HP_MC68K (cpu))
+ puts ("m68k-hitachi-hiuxwe2");
+ else puts ("unknown-hitachi-hiuxwe2");
+ exit (0);
+ }
+EOF
+ $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` &&
+ { echo "$SYSTEM_NAME"; exit; }
+ echo unknown-hitachi-hiuxwe2
+ exit ;;
+ 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
+ echo hppa1.1-hp-bsd
+ exit ;;
+ 9000/8??:4.3bsd:*:*)
+ echo hppa1.0-hp-bsd
+ exit ;;
+ *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
+ echo hppa1.0-hp-mpeix
+ exit ;;
+ hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
+ echo hppa1.1-hp-osf
+ exit ;;
+ hp8??:OSF1:*:*)
+ echo hppa1.0-hp-osf
+ exit ;;
+ i*86:OSF1:*:*)
+ if [ -x /usr/sbin/sysversion ] ; then
+ echo ${UNAME_MACHINE}-unknown-osf1mk
+ else
+ echo ${UNAME_MACHINE}-unknown-osf1
+ fi
+ exit ;;
+ parisc*:Lites*:*:*)
+ echo hppa1.1-hp-lites
+ exit ;;
+ C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
+ echo c1-convex-bsd
+ exit ;;
+ C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
+ if getsysinfo -f scalar_acc
+ then echo c32-convex-bsd
+ else echo c2-convex-bsd
+ fi
+ exit ;;
+ C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
+ echo c34-convex-bsd
+ exit ;;
+ C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
+ echo c38-convex-bsd
+ exit ;;
+ C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
+ echo c4-convex-bsd
+ exit ;;
+ CRAY*Y-MP:*:*:*)
+ echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit ;;
+ CRAY*[A-Z]90:*:*:*)
+ echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
+ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
+ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
+ -e 's/\.[^.]*$/.X/'
+ exit ;;
+ CRAY*TS:*:*:*)
+ echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit ;;
+ CRAY*T3E:*:*:*)
+ echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit ;;
+ CRAY*SV1:*:*:*)
+ echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit ;;
+ *:UNICOS/mp:*:*)
+ echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit ;;
+ F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
+ FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+ FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
+ echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+ exit ;;
+ 5000:UNIX_System_V:4.*:*)
+ FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+ FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
+ echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+ exit ;;
+ i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
+ echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
+ exit ;;
+ sparc*:BSD/OS:*:*)
+ echo sparc-unknown-bsdi${UNAME_RELEASE}
+ exit ;;
+ *:BSD/OS:*:*)
+ echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
+ exit ;;
+ *:FreeBSD:*:*)
+ UNAME_PROCESSOR=`/usr/bin/uname -p`
+ case ${UNAME_PROCESSOR} in
+ amd64)
+ echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+ *)
+ echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+ esac
+ exit ;;
+ i*:CYGWIN*:*)
+ echo ${UNAME_MACHINE}-pc-cygwin
+ exit ;;
+ *:MINGW64*:*)
+ echo ${UNAME_MACHINE}-pc-mingw64
+ exit ;;
+ *:MINGW*:*)
+ echo ${UNAME_MACHINE}-pc-mingw32
+ exit ;;
+ *:MSYS*:*)
+ echo ${UNAME_MACHINE}-pc-msys
+ exit ;;
+ i*:windows32*:*)
+ # uname -m includes "-pc" on this system.
+ echo ${UNAME_MACHINE}-mingw32
+ exit ;;
+ i*:PW*:*)
+ echo ${UNAME_MACHINE}-pc-pw32
+ exit ;;
+ *:Interix*:*)
+ case ${UNAME_MACHINE} in
+ x86)
+ echo i586-pc-interix${UNAME_RELEASE}
+ exit ;;
+ authenticamd | genuineintel | EM64T)
+ echo x86_64-unknown-interix${UNAME_RELEASE}
+ exit ;;
+ IA64)
+ echo ia64-unknown-interix${UNAME_RELEASE}
+ exit ;;
+ esac ;;
+ [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
+ echo i${UNAME_MACHINE}-pc-mks
+ exit ;;
+ 8664:Windows_NT:*)
+ echo x86_64-pc-mks
+ exit ;;
+ i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
+ # How do we know it's Interix rather than the generic POSIX subsystem?
+ # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
+ # UNAME_MACHINE based on the output of uname instead of i386?
+ echo i586-pc-interix
+ exit ;;
+ i*:UWIN*:*)
+ echo ${UNAME_MACHINE}-pc-uwin
+ exit ;;
+ amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
+ echo x86_64-unknown-cygwin
+ exit ;;
+ p*:CYGWIN*:*)
+ echo powerpcle-unknown-cygwin
+ exit ;;
+ prep*:SunOS:5.*:*)
+ echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit ;;
+ *:GNU:*:*)
+ # the GNU system
+ echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
+ exit ;;
+ *:GNU/*:*:*)
+ # other systems with GNU libc and userland
+ echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC}
+ exit ;;
+ i*86:Minix:*:*)
+ echo ${UNAME_MACHINE}-pc-minix
+ exit ;;
+ aarch64:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ exit ;;
+ aarch64_be:Linux:*:*)
+ UNAME_MACHINE=aarch64_be
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ exit ;;
+ alpha:Linux:*:*)
+ case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
+ EV5) UNAME_MACHINE=alphaev5 ;;
+ EV56) UNAME_MACHINE=alphaev56 ;;
+ PCA56) UNAME_MACHINE=alphapca56 ;;
+ PCA57) UNAME_MACHINE=alphapca56 ;;
+ EV6) UNAME_MACHINE=alphaev6 ;;
+ EV67) UNAME_MACHINE=alphaev67 ;;
+ EV68*) UNAME_MACHINE=alphaev68 ;;
+ esac
+ objdump --private-headers /bin/sh | grep -q ld.so.1
+ if test "$?" = 0 ; then LIBC="gnulibc1" ; fi
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ exit ;;
+ arc:Linux:*:* | arceb:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ exit ;;
+ arm*:Linux:*:*)
+ eval $set_cc_for_build
+ if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
+ | grep -q __ARM_EABI__
+ then
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ else
+ if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
+ | grep -q __ARM_PCS_VFP
+ then
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi
+ else
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf
+ fi
+ fi
+ exit ;;
+ avr32*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ exit ;;
+ cris:Linux:*:*)
+ echo ${UNAME_MACHINE}-axis-linux-${LIBC}
+ exit ;;
+ crisv32:Linux:*:*)
+ echo ${UNAME_MACHINE}-axis-linux-${LIBC}
+ exit ;;
+ e2k:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ exit ;;
+ frv:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ exit ;;
+ hexagon:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ exit ;;
+ i*86:Linux:*:*)
+ echo ${UNAME_MACHINE}-pc-linux-${LIBC}
+ exit ;;
+ ia64:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ exit ;;
+ m32r*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ exit ;;
+ m68*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ exit ;;
+ mips:Linux:*:* | mips64:Linux:*:*)
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+ #undef CPU
+ #undef ${UNAME_MACHINE}
+ #undef ${UNAME_MACHINE}el
+ #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
+ CPU=${UNAME_MACHINE}el
+ #else
+ #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
+ CPU=${UNAME_MACHINE}
+ #else
+ CPU=
+ #endif
+ #endif
+EOF
+ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
+ test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; }
+ ;;
+ openrisc*:Linux:*:*)
+ echo or1k-unknown-linux-${LIBC}
+ exit ;;
+ or32:Linux:*:* | or1k*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ exit ;;
+ padre:Linux:*:*)
+ echo sparc-unknown-linux-${LIBC}
+ exit ;;
+ parisc64:Linux:*:* | hppa64:Linux:*:*)
+ echo hppa64-unknown-linux-${LIBC}
+ exit ;;
+ parisc:Linux:*:* | hppa:Linux:*:*)
+ # Look for CPU level
+ case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
+ PA7*) echo hppa1.1-unknown-linux-${LIBC} ;;
+ PA8*) echo hppa2.0-unknown-linux-${LIBC} ;;
+ *) echo hppa-unknown-linux-${LIBC} ;;
+ esac
+ exit ;;
+ ppc64:Linux:*:*)
+ echo powerpc64-unknown-linux-${LIBC}
+ exit ;;
+ ppc:Linux:*:*)
+ echo powerpc-unknown-linux-${LIBC}
+ exit ;;
+ ppc64le:Linux:*:*)
+ echo powerpc64le-unknown-linux-${LIBC}
+ exit ;;
+ ppcle:Linux:*:*)
+ echo powerpcle-unknown-linux-${LIBC}
+ exit ;;
+ s390:Linux:*:* | s390x:Linux:*:*)
+ echo ${UNAME_MACHINE}-ibm-linux-${LIBC}
+ exit ;;
+ sh64*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ exit ;;
+ sh*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ exit ;;
+ sparc:Linux:*:* | sparc64:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ exit ;;
+ tile*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ exit ;;
+ vax:Linux:*:*)
+ echo ${UNAME_MACHINE}-dec-linux-${LIBC}
+ exit ;;
+ x86_64:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ exit ;;
+ xtensa*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ exit ;;
+ i*86:DYNIX/ptx:4*:*)
+ # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
+ # earlier versions are messed up and put the nodename in both
+ # sysname and nodename.
+ echo i386-sequent-sysv4
+ exit ;;
+ i*86:UNIX_SV:4.2MP:2.*)
+ # Unixware is an offshoot of SVR4, but it has its own version
+ # number series starting with 2...
+ # I am not positive that other SVR4 systems won't match this,
+ # I just have to hope. -- rms.
+ # Use sysv4.2uw... so that sysv4* matches it.
+ echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
+ exit ;;
+ i*86:OS/2:*:*)
+ # If we were able to find `uname', then EMX Unix compatibility
+ # is probably installed.
+ echo ${UNAME_MACHINE}-pc-os2-emx
+ exit ;;
+ i*86:XTS-300:*:STOP)
+ echo ${UNAME_MACHINE}-unknown-stop
+ exit ;;
+ i*86:atheos:*:*)
+ echo ${UNAME_MACHINE}-unknown-atheos
+ exit ;;
+ i*86:syllable:*:*)
+ echo ${UNAME_MACHINE}-pc-syllable
+ exit ;;
+ i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)
+ echo i386-unknown-lynxos${UNAME_RELEASE}
+ exit ;;
+ i*86:*DOS:*:*)
+ echo ${UNAME_MACHINE}-pc-msdosdjgpp
+ exit ;;
+ i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
+ UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
+ if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
+ echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
+ else
+ echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
+ fi
+ exit ;;
+ i*86:*:5:[678]*)
+ # UnixWare 7.x, OpenUNIX and OpenServer 6.
+ case `/bin/uname -X | grep "^Machine"` in
+ *486*) UNAME_MACHINE=i486 ;;
+ *Pentium) UNAME_MACHINE=i586 ;;
+ *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
+ esac
+ echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
+ exit ;;
+ i*86:*:3.2:*)
+ if test -f /usr/options/cb.name; then
+ UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
+ echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
+ elif /bin/uname -X 2>/dev/null >/dev/null ; then
+ UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
+ (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
+ (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
+ && UNAME_MACHINE=i586
+ (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
+ && UNAME_MACHINE=i686
+ (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
+ && UNAME_MACHINE=i686
+ echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
+ else
+ echo ${UNAME_MACHINE}-pc-sysv32
+ fi
+ exit ;;
+ pc:*:*:*)
+ # Left here for compatibility:
+ # uname -m prints for DJGPP always 'pc', but it prints nothing about
+ # the processor, so we play safe by assuming i586.
+ # Note: whatever this is, it MUST be the same as what config.sub
+ # prints for the "djgpp" host, or else GDB configury will decide that
+ # this is a cross-build.
+ echo i586-pc-msdosdjgpp
+ exit ;;
+ Intel:Mach:3*:*)
+ echo i386-pc-mach3
+ exit ;;
+ paragon:*:*:*)
+ echo i860-intel-osf1
+ exit ;;
+ i860:*:4.*:*) # i860-SVR4
+ if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
+ echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
+ else # Add other i860-SVR4 vendors below as they are discovered.
+ echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4
+ fi
+ exit ;;
+ mini*:CTIX:SYS*5:*)
+ # "miniframe"
+ echo m68010-convergent-sysv
+ exit ;;
+ mc68k:UNIX:SYSTEM5:3.51m)
+ echo m68k-convergent-sysv
+ exit ;;
+ M680?0:D-NIX:5.3:*)
+ echo m68k-diab-dnix
+ exit ;;
+ M68*:*:R3V[5678]*:*)
+ test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
+ 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
+ OS_REL=''
+ test -r /etc/.relid \
+ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
+ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+ && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
+ /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
+ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
+ 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
+ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+ && { echo i486-ncr-sysv4; exit; } ;;
+ NCR*:*:4.2:* | MPRAS*:*:4.2:*)
+ OS_REL='.3'
+ test -r /etc/.relid \
+ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
+ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+ && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
+ /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
+ && { echo i586-ncr-sysv4.3${OS_REL}; exit; }
+ /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \
+ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
+ m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
+ echo m68k-unknown-lynxos${UNAME_RELEASE}
+ exit ;;
+ mc68030:UNIX_System_V:4.*:*)
+ echo m68k-atari-sysv4
+ exit ;;
+ TSUNAMI:LynxOS:2.*:*)
+ echo sparc-unknown-lynxos${UNAME_RELEASE}
+ exit ;;
+ rs6000:LynxOS:2.*:*)
+ echo rs6000-unknown-lynxos${UNAME_RELEASE}
+ exit ;;
+ PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)
+ echo powerpc-unknown-lynxos${UNAME_RELEASE}
+ exit ;;
+ SM[BE]S:UNIX_SV:*:*)
+ echo mips-dde-sysv${UNAME_RELEASE}
+ exit ;;
+ RM*:ReliantUNIX-*:*:*)
+ echo mips-sni-sysv4
+ exit ;;
+ RM*:SINIX-*:*:*)
+ echo mips-sni-sysv4
+ exit ;;
+ *:SINIX-*:*:*)
+ if uname -p 2>/dev/null >/dev/null ; then
+ UNAME_MACHINE=`(uname -p) 2>/dev/null`
+ echo ${UNAME_MACHINE}-sni-sysv4
+ else
+ echo ns32k-sni-sysv
+ fi
+ exit ;;
+ PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
+ # says <Richard.M.Bartel@ccMail.Census.GOV>
+ echo i586-unisys-sysv4
+ exit ;;
+ *:UNIX_System_V:4*:FTX*)
+ # From Gerald Hewes <hewes@openmarket.com>.
+ # How about differentiating between stratus architectures? -djm
+ echo hppa1.1-stratus-sysv4
+ exit ;;
+ *:*:*:FTX*)
+ # From seanf@swdc.stratus.com.
+ echo i860-stratus-sysv4
+ exit ;;
+ i*86:VOS:*:*)
+ # From Paul.Green@stratus.com.
+ echo ${UNAME_MACHINE}-stratus-vos
+ exit ;;
+ *:VOS:*:*)
+ # From Paul.Green@stratus.com.
+ echo hppa1.1-stratus-vos
+ exit ;;
+ mc68*:A/UX:*:*)
+ echo m68k-apple-aux${UNAME_RELEASE}
+ exit ;;
+ news*:NEWS-OS:6*:*)
+ echo mips-sony-newsos6
+ exit ;;
+ R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
+ if [ -d /usr/nec ]; then
+ echo mips-nec-sysv${UNAME_RELEASE}
+ else
+ echo mips-unknown-sysv${UNAME_RELEASE}
+ fi
+ exit ;;
+ BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only.
+ echo powerpc-be-beos
+ exit ;;
+ BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only.
+ echo powerpc-apple-beos
+ exit ;;
+ BePC:BeOS:*:*) # BeOS running on Intel PC compatible.
+ echo i586-pc-beos
+ exit ;;
+ BePC:Haiku:*:*) # Haiku running on Intel PC compatible.
+ echo i586-pc-haiku
+ exit ;;
+ x86_64:Haiku:*:*)
+ echo x86_64-unknown-haiku
+ exit ;;
+ SX-4:SUPER-UX:*:*)
+ echo sx4-nec-superux${UNAME_RELEASE}
+ exit ;;
+ SX-5:SUPER-UX:*:*)
+ echo sx5-nec-superux${UNAME_RELEASE}
+ exit ;;
+ SX-6:SUPER-UX:*:*)
+ echo sx6-nec-superux${UNAME_RELEASE}
+ exit ;;
+ SX-7:SUPER-UX:*:*)
+ echo sx7-nec-superux${UNAME_RELEASE}
+ exit ;;
+ SX-8:SUPER-UX:*:*)
+ echo sx8-nec-superux${UNAME_RELEASE}
+ exit ;;
+ SX-8R:SUPER-UX:*:*)
+ echo sx8r-nec-superux${UNAME_RELEASE}
+ exit ;;
+ Power*:Rhapsody:*:*)
+ echo powerpc-apple-rhapsody${UNAME_RELEASE}
+ exit ;;
+ *:Rhapsody:*:*)
+ echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
+ exit ;;
+ *:Darwin:*:*)
+ UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
+ eval $set_cc_for_build
+ if test "$UNAME_PROCESSOR" = unknown ; then
+ UNAME_PROCESSOR=powerpc
+ fi
+ if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then
+ if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+ if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
+ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
+ grep IS_64BIT_ARCH >/dev/null
+ then
+ case $UNAME_PROCESSOR in
+ i386) UNAME_PROCESSOR=x86_64 ;;
+ powerpc) UNAME_PROCESSOR=powerpc64 ;;
+ esac
+ fi
+ fi
+ elif test "$UNAME_PROCESSOR" = i386 ; then
+ # Avoid executing cc on OS X 10.9, as it ships with a stub
+ # that puts up a graphical alert prompting to install
+ # developer tools. Any system running Mac OS X 10.7 or
+ # later (Darwin 11 and later) is required to have a 64-bit
+ # processor. This is not true of the ARM version of Darwin
+ # that Apple uses in portable devices.
+ UNAME_PROCESSOR=x86_64
+ fi
+ echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
+ exit ;;
+ *:procnto*:*:* | *:QNX:[0123456789]*:*)
+ UNAME_PROCESSOR=`uname -p`
+ if test "$UNAME_PROCESSOR" = "x86"; then
+ UNAME_PROCESSOR=i386
+ UNAME_MACHINE=pc
+ fi
+ echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
+ exit ;;
+ *:QNX:*:4*)
+ echo i386-pc-qnx
+ exit ;;
+ NEO-?:NONSTOP_KERNEL:*:*)
+ echo neo-tandem-nsk${UNAME_RELEASE}
+ exit ;;
+ NSE-*:NONSTOP_KERNEL:*:*)
+ echo nse-tandem-nsk${UNAME_RELEASE}
+ exit ;;
+ NSR-?:NONSTOP_KERNEL:*:*)
+ echo nsr-tandem-nsk${UNAME_RELEASE}
+ exit ;;
+ *:NonStop-UX:*:*)
+ echo mips-compaq-nonstopux
+ exit ;;
+ BS2000:POSIX*:*:*)
+ echo bs2000-siemens-sysv
+ exit ;;
+ DS/*:UNIX_System_V:*:*)
+ echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
+ exit ;;
+ *:Plan9:*:*)
+ # "uname -m" is not consistent, so use $cputype instead. 386
+ # is converted to i386 for consistency with other x86
+ # operating systems.
+ if test "$cputype" = "386"; then
+ UNAME_MACHINE=i386
+ else
+ UNAME_MACHINE="$cputype"
+ fi
+ echo ${UNAME_MACHINE}-unknown-plan9
+ exit ;;
+ *:TOPS-10:*:*)
+ echo pdp10-unknown-tops10
+ exit ;;
+ *:TENEX:*:*)
+ echo pdp10-unknown-tenex
+ exit ;;
+ KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
+ echo pdp10-dec-tops20
+ exit ;;
+ XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
+ echo pdp10-xkl-tops20
+ exit ;;
+ *:TOPS-20:*:*)
+ echo pdp10-unknown-tops20
+ exit ;;
+ *:ITS:*:*)
+ echo pdp10-unknown-its
+ exit ;;
+ SEI:*:*:SEIUX)
+ echo mips-sei-seiux${UNAME_RELEASE}
+ exit ;;
+ *:DragonFly:*:*)
+ echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
+ exit ;;
+ *:*VMS:*:*)
+ UNAME_MACHINE=`(uname -p) 2>/dev/null`
+ case "${UNAME_MACHINE}" in
+ A*) echo alpha-dec-vms ; exit ;;
+ I*) echo ia64-dec-vms ; exit ;;
+ V*) echo vax-dec-vms ; exit ;;
+ esac ;;
+ *:XENIX:*:SysV)
+ echo i386-pc-xenix
+ exit ;;
+ i*86:skyos:*:*)
+ echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'
+ exit ;;
+ i*86:rdos:*:*)
+ echo ${UNAME_MACHINE}-pc-rdos
+ exit ;;
+ i*86:AROS:*:*)
+ echo ${UNAME_MACHINE}-pc-aros
+ exit ;;
+ x86_64:VMkernel:*:*)
+ echo ${UNAME_MACHINE}-unknown-esx
+ exit ;;
+esac
+
+cat >&2 <<EOF
+$0: unable to guess system type
+
+This script, last modified $timestamp, has failed to recognize
+the operating system you are using. It is advised that you
+download the most up to date version of the config scripts from
+
+ http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
+and
+ http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
+
+If the version you run ($0) is already up to date, please
+send the following data and any information you think might be
+pertinent to <config-patches@gnu.org> in order to provide the needed
+information to handle your system.
+
+config.guess timestamp = $timestamp
+
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
+/bin/uname -X = `(/bin/uname -X) 2>/dev/null`
+
+hostinfo = `(hostinfo) 2>/dev/null`
+/bin/universe = `(/bin/universe) 2>/dev/null`
+/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null`
+/bin/arch = `(/bin/arch) 2>/dev/null`
+/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
+
+UNAME_MACHINE = ${UNAME_MACHINE}
+UNAME_RELEASE = ${UNAME_RELEASE}
+UNAME_SYSTEM = ${UNAME_SYSTEM}
+UNAME_VERSION = ${UNAME_VERSION}
+EOF
+
+exit 1
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/config.sub b/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/config.sub
new file mode 100755
index 0000000000..8f1229c6f7
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/config.sub
@@ -0,0 +1,1810 @@
+#! /bin/sh
+# Configuration validation subroutine script.
+# Copyright 1992-2015 Free Software Foundation, Inc.
+
+timestamp='2015-03-08'
+
+# This file is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, see <http://www.gnu.org/licenses/>.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that
+# program. This Exception is an additional permission under section 7
+# of the GNU General Public License, version 3 ("GPLv3").
+
+
+# Please send patches to <config-patches@gnu.org>.
+#
+# Configuration subroutine to validate and canonicalize a configuration type.
+# Supply the specified configuration type as an argument.
+# If it is invalid, we print an error message on stderr and exit with code 1.
+# Otherwise, we print the canonical config type on stdout and succeed.
+
+# You can get the latest version of this script from:
+# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
+
+# This file is supposed to be the same for all GNU packages
+# and recognize all the CPU types, system types and aliases
+# that are meaningful with *any* GNU software.
+# Each package is responsible for reporting which valid configurations
+# it does not support. The user should be able to distinguish
+# a failure to support a valid configuration from a meaningless
+# configuration.
+
+# The goal of this file is to map all the various variations of a given
+# machine specification into a single specification in the form:
+# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
+# or in some cases, the newer four-part form:
+# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
+# It is wrong to echo any other type of specification.
+
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION] CPU-MFR-OPSYS
+ $0 [OPTION] ALIAS
+
+Canonicalize a configuration name.
+
+Operation modes:
+ -h, --help print this help, then exit
+ -t, --time-stamp print date of last modification, then exit
+ -v, --version print version number, then exit
+
+Report bugs and patches to <config-patches@gnu.org>."
+
+version="\
+GNU config.sub ($timestamp)
+
+Copyright 1992-2015 Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions. There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+ case $1 in
+ --time-stamp | --time* | -t )
+ echo "$timestamp" ; exit ;;
+ --version | -v )
+ echo "$version" ; exit ;;
+ --help | --h* | -h )
+ echo "$usage"; exit ;;
+ -- ) # Stop option processing
+ shift; break ;;
+ - ) # Use stdin as input.
+ break ;;
+ -* )
+ echo "$me: invalid option $1$help"
+ exit 1 ;;
+
+ *local*)
+ # First pass through any local machine types.
+ echo $1
+ exit ;;
+
+ * )
+ break ;;
+ esac
+done
+
+case $# in
+ 0) echo "$me: missing argument$help" >&2
+ exit 1;;
+ 1) ;;
+ *) echo "$me: too many arguments$help" >&2
+ exit 1;;
+esac
+
+# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
+# Here we must recognize all the valid KERNEL-OS combinations.
+maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
+case $maybe_os in
+ nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
+ linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
+ knetbsd*-gnu* | netbsd*-gnu* | netbsd*-eabi* | \
+ kopensolaris*-gnu* | \
+ storm-chaos* | os2-emx* | rtmk-nova*)
+ os=-$maybe_os
+ basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
+ ;;
+ android-linux)
+ os=-linux-android
+ basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown
+ ;;
+ *)
+ basic_machine=`echo $1 | sed 's/-[^-]*$//'`
+ if [ $basic_machine != $1 ]
+ then os=`echo $1 | sed 's/.*-/-/'`
+ else os=; fi
+ ;;
+esac
+
+### Let's recognize common machines as not being operating systems so
+### that things like config.sub decstation-3100 work. We also
+### recognize some manufacturers as not being operating systems, so we
+### can provide default operating systems below.
+case $os in
+ -sun*os*)
+ # Prevent following clause from handling this invalid input.
+ ;;
+ -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
+ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
+ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
+ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
+ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
+ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
+ -apple | -axis | -knuth | -cray | -microblaze*)
+ os=
+ basic_machine=$1
+ ;;
+ -bluegene*)
+ os=-cnk
+ ;;
+ -sim | -cisco | -oki | -wec | -winbond)
+ os=
+ basic_machine=$1
+ ;;
+ -scout)
+ ;;
+ -wrs)
+ os=-vxworks
+ basic_machine=$1
+ ;;
+ -chorusos*)
+ os=-chorusos
+ basic_machine=$1
+ ;;
+ -chorusrdb)
+ os=-chorusrdb
+ basic_machine=$1
+ ;;
+ -hiux*)
+ os=-hiuxwe2
+ ;;
+ -sco6)
+ os=-sco5v6
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco5)
+ os=-sco3.2v5
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco4)
+ os=-sco3.2v4
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco3.2.[4-9]*)
+ os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco3.2v[4-9]*)
+ # Don't forget version if it is 3.2v4 or newer.
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco5v6*)
+ # Don't forget version if it is 3.2v4 or newer.
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -sco*)
+ os=-sco3.2v2
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -udk*)
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -isc)
+ os=-isc2.2
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -clix*)
+ basic_machine=clipper-intergraph
+ ;;
+ -isc*)
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+ ;;
+ -lynx*178)
+ os=-lynxos178
+ ;;
+ -lynx*5)
+ os=-lynxos5
+ ;;
+ -lynx*)
+ os=-lynxos
+ ;;
+ -ptx*)
+ basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
+ ;;
+ -windowsnt*)
+ os=`echo $os | sed -e 's/windowsnt/winnt/'`
+ ;;
+ -psos*)
+ os=-psos
+ ;;
+ -mint | -mint[0-9]*)
+ basic_machine=m68k-atari
+ os=-mint
+ ;;
+esac
+
+# Decode aliases for certain CPU-COMPANY combinations.
+case $basic_machine in
+ # Recognize the basic CPU types without company name.
+ # Some are omitted here because they have special meanings below.
+ 1750a | 580 \
+ | a29k \
+ | aarch64 | aarch64_be \
+ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
+ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
+ | am33_2.0 \
+ | arc | arceb \
+ | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \
+ | avr | avr32 \
+ | be32 | be64 \
+ | bfin \
+ | c4x | c8051 | clipper \
+ | d10v | d30v | dlx | dsp16xx \
+ | e2k | epiphany \
+ | fido | fr30 | frv | ft32 \
+ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
+ | hexagon \
+ | i370 | i860 | i960 | ia64 \
+ | ip2k | iq2000 \
+ | k1om \
+ | le32 | le64 \
+ | lm32 \
+ | m32c | m32r | m32rle | m68000 | m68k | m88k \
+ | maxq | mb | microblaze | microblazeel | mcore | mep | metag \
+ | mips | mipsbe | mipseb | mipsel | mipsle \
+ | mips16 \
+ | mips64 | mips64el \
+ | mips64octeon | mips64octeonel \
+ | mips64orion | mips64orionel \
+ | mips64r5900 | mips64r5900el \
+ | mips64vr | mips64vrel \
+ | mips64vr4100 | mips64vr4100el \
+ | mips64vr4300 | mips64vr4300el \
+ | mips64vr5000 | mips64vr5000el \
+ | mips64vr5900 | mips64vr5900el \
+ | mipsisa32 | mipsisa32el \
+ | mipsisa32r2 | mipsisa32r2el \
+ | mipsisa32r6 | mipsisa32r6el \
+ | mipsisa64 | mipsisa64el \
+ | mipsisa64r2 | mipsisa64r2el \
+ | mipsisa64r6 | mipsisa64r6el \
+ | mipsisa64sb1 | mipsisa64sb1el \
+ | mipsisa64sr71k | mipsisa64sr71kel \
+ | mipsr5900 | mipsr5900el \
+ | mipstx39 | mipstx39el \
+ | mn10200 | mn10300 \
+ | moxie \
+ | mt \
+ | msp430 \
+ | nds32 | nds32le | nds32be \
+ | nios | nios2 | nios2eb | nios2el \
+ | ns16k | ns32k \
+ | open8 | or1k | or1knd | or32 \
+ | pdp10 | pdp11 | pj | pjl \
+ | powerpc | powerpc64 | powerpc64le | powerpcle \
+ | pyramid \
+ | riscv32 | riscv64 \
+ | rl78 | rx \
+ | score \
+ | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
+ | sh64 | sh64le \
+ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
+ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \
+ | spu \
+ | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
+ | ubicom32 \
+ | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
+ | visium \
+ | we32k \
+ | x86 | xc16x | xstormy16 | xtensa \
+ | z8k | z80)
+ basic_machine=$basic_machine-unknown
+ ;;
+ c54x)
+ basic_machine=tic54x-unknown
+ ;;
+ c55x)
+ basic_machine=tic55x-unknown
+ ;;
+ c6x)
+ basic_machine=tic6x-unknown
+ ;;
+ leon|leon[3-9])
+ basic_machine=sparc-$basic_machine
+ ;;
+ m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip)
+ basic_machine=$basic_machine-unknown
+ os=-none
+ ;;
+ m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
+ ;;
+ ms1)
+ basic_machine=mt-unknown
+ ;;
+
+ strongarm | thumb | xscale)
+ basic_machine=arm-unknown
+ ;;
+ xgate)
+ basic_machine=$basic_machine-unknown
+ os=-none
+ ;;
+ xscaleeb)
+ basic_machine=armeb-unknown
+ ;;
+
+ xscaleel)
+ basic_machine=armel-unknown
+ ;;
+
+ # We use `pc' rather than `unknown'
+ # because (1) that's what they normally are, and
+ # (2) the word "unknown" tends to confuse beginning users.
+ i*86 | x86_64)
+ basic_machine=$basic_machine-pc
+ ;;
+ # Object if more than one company name word.
+ *-*-*)
+ echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
+ exit 1
+ ;;
+ # Recognize the basic CPU types with company name.
+ 580-* \
+ | a29k-* \
+ | aarch64-* | aarch64_be-* \
+ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
+ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
+ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \
+ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \
+ | avr-* | avr32-* \
+ | be32-* | be64-* \
+ | bfin-* | bs2000-* \
+ | c[123]* | c30-* | [cjt]90-* | c4x-* \
+ | c8051-* | clipper-* | craynv-* | cydra-* \
+ | d10v-* | d30v-* | dlx-* \
+ | e2k-* | elxsi-* \
+ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
+ | h8300-* | h8500-* \
+ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
+ | hexagon-* \
+ | i*86-* | i860-* | i960-* | ia64-* \
+ | ip2k-* | iq2000-* \
+ | k1om-* \
+ | le32-* | le64-* \
+ | lm32-* \
+ | m32c-* | m32r-* | m32rle-* \
+ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
+ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \
+ | microblaze-* | microblazeel-* \
+ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
+ | mips16-* \
+ | mips64-* | mips64el-* \
+ | mips64octeon-* | mips64octeonel-* \
+ | mips64orion-* | mips64orionel-* \
+ | mips64r5900-* | mips64r5900el-* \
+ | mips64vr-* | mips64vrel-* \
+ | mips64vr4100-* | mips64vr4100el-* \
+ | mips64vr4300-* | mips64vr4300el-* \
+ | mips64vr5000-* | mips64vr5000el-* \
+ | mips64vr5900-* | mips64vr5900el-* \
+ | mipsisa32-* | mipsisa32el-* \
+ | mipsisa32r2-* | mipsisa32r2el-* \
+ | mipsisa32r6-* | mipsisa32r6el-* \
+ | mipsisa64-* | mipsisa64el-* \
+ | mipsisa64r2-* | mipsisa64r2el-* \
+ | mipsisa64r6-* | mipsisa64r6el-* \
+ | mipsisa64sb1-* | mipsisa64sb1el-* \
+ | mipsisa64sr71k-* | mipsisa64sr71kel-* \
+ | mipsr5900-* | mipsr5900el-* \
+ | mipstx39-* | mipstx39el-* \
+ | mmix-* \
+ | mt-* \
+ | msp430-* \
+ | nds32-* | nds32le-* | nds32be-* \
+ | nios-* | nios2-* | nios2eb-* | nios2el-* \
+ | none-* | np1-* | ns16k-* | ns32k-* \
+ | open8-* \
+ | or1k*-* \
+ | orion-* \
+ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
+ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
+ | pyramid-* \
+ | rl78-* | romp-* | rs6000-* | rx-* \
+ | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
+ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
+ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
+ | sparclite-* \
+ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \
+ | tahoe-* \
+ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
+ | tile*-* \
+ | tron-* \
+ | ubicom32-* \
+ | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
+ | vax-* \
+ | visium-* \
+ | we32k-* \
+ | x86-* | x86_64-* | xc16x-* | xps100-* \
+ | xstormy16-* | xtensa*-* \
+ | ymp-* \
+ | z8k-* | z80-*)
+ ;;
+ # Recognize the basic CPU types without company name, with glob match.
+ xtensa*)
+ basic_machine=$basic_machine-unknown
+ ;;
+ # Recognize the various machine names and aliases which stand
+ # for a CPU type and a company and sometimes even an OS.
+ 386bsd)
+ basic_machine=i386-unknown
+ os=-bsd
+ ;;
+ 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
+ basic_machine=m68000-att
+ ;;
+ 3b*)
+ basic_machine=we32k-att
+ ;;
+ a29khif)
+ basic_machine=a29k-amd
+ os=-udi
+ ;;
+ abacus)
+ basic_machine=abacus-unknown
+ ;;
+ adobe68k)
+ basic_machine=m68010-adobe
+ os=-scout
+ ;;
+ alliant | fx80)
+ basic_machine=fx80-alliant
+ ;;
+ altos | altos3068)
+ basic_machine=m68k-altos
+ ;;
+ am29k)
+ basic_machine=a29k-none
+ os=-bsd
+ ;;
+ amd64)
+ basic_machine=x86_64-pc
+ ;;
+ amd64-*)
+ basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ amdahl)
+ basic_machine=580-amdahl
+ os=-sysv
+ ;;
+ amiga | amiga-*)
+ basic_machine=m68k-unknown
+ ;;
+ amigaos | amigados)
+ basic_machine=m68k-unknown
+ os=-amigaos
+ ;;
+ amigaunix | amix)
+ basic_machine=m68k-unknown
+ os=-sysv4
+ ;;
+ apollo68)
+ basic_machine=m68k-apollo
+ os=-sysv
+ ;;
+ apollo68bsd)
+ basic_machine=m68k-apollo
+ os=-bsd
+ ;;
+ aros)
+ basic_machine=i386-pc
+ os=-aros
+ ;;
+ asmjs)
+ basic_machine=asmjs-unknown
+ ;;
+ aux)
+ basic_machine=m68k-apple
+ os=-aux
+ ;;
+ balance)
+ basic_machine=ns32k-sequent
+ os=-dynix
+ ;;
+ blackfin)
+ basic_machine=bfin-unknown
+ os=-linux
+ ;;
+ blackfin-*)
+ basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'`
+ os=-linux
+ ;;
+ bluegene*)
+ basic_machine=powerpc-ibm
+ os=-cnk
+ ;;
+ c54x-*)
+ basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ c55x-*)
+ basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ c6x-*)
+ basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ c90)
+ basic_machine=c90-cray
+ os=-unicos
+ ;;
+ cegcc)
+ basic_machine=arm-unknown
+ os=-cegcc
+ ;;
+ convex-c1)
+ basic_machine=c1-convex
+ os=-bsd
+ ;;
+ convex-c2)
+ basic_machine=c2-convex
+ os=-bsd
+ ;;
+ convex-c32)
+ basic_machine=c32-convex
+ os=-bsd
+ ;;
+ convex-c34)
+ basic_machine=c34-convex
+ os=-bsd
+ ;;
+ convex-c38)
+ basic_machine=c38-convex
+ os=-bsd
+ ;;
+ cray | j90)
+ basic_machine=j90-cray
+ os=-unicos
+ ;;
+ craynv)
+ basic_machine=craynv-cray
+ os=-unicosmp
+ ;;
+ cr16 | cr16-*)
+ basic_machine=cr16-unknown
+ os=-elf
+ ;;
+ crds | unos)
+ basic_machine=m68k-crds
+ ;;
+ crisv32 | crisv32-* | etraxfs*)
+ basic_machine=crisv32-axis
+ ;;
+ cris | cris-* | etrax*)
+ basic_machine=cris-axis
+ ;;
+ crx)
+ basic_machine=crx-unknown
+ os=-elf
+ ;;
+ da30 | da30-*)
+ basic_machine=m68k-da30
+ ;;
+ decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
+ basic_machine=mips-dec
+ ;;
+ decsystem10* | dec10*)
+ basic_machine=pdp10-dec
+ os=-tops10
+ ;;
+ decsystem20* | dec20*)
+ basic_machine=pdp10-dec
+ os=-tops20
+ ;;
+ delta | 3300 | motorola-3300 | motorola-delta \
+ | 3300-motorola | delta-motorola)
+ basic_machine=m68k-motorola
+ ;;
+ delta88)
+ basic_machine=m88k-motorola
+ os=-sysv3
+ ;;
+ dicos)
+ basic_machine=i686-pc
+ os=-dicos
+ ;;
+ djgpp)
+ basic_machine=i586-pc
+ os=-msdosdjgpp
+ ;;
+ dpx20 | dpx20-*)
+ basic_machine=rs6000-bull
+ os=-bosx
+ ;;
+ dpx2* | dpx2*-bull)
+ basic_machine=m68k-bull
+ os=-sysv3
+ ;;
+ ebmon29k)
+ basic_machine=a29k-amd
+ os=-ebmon
+ ;;
+ elxsi)
+ basic_machine=elxsi-elxsi
+ os=-bsd
+ ;;
+ encore | umax | mmax)
+ basic_machine=ns32k-encore
+ ;;
+ es1800 | OSE68k | ose68k | ose | OSE)
+ basic_machine=m68k-ericsson
+ os=-ose
+ ;;
+ fx2800)
+ basic_machine=i860-alliant
+ ;;
+ genix)
+ basic_machine=ns32k-ns
+ ;;
+ gmicro)
+ basic_machine=tron-gmicro
+ os=-sysv
+ ;;
+ go32)
+ basic_machine=i386-pc
+ os=-go32
+ ;;
+ h3050r* | hiux*)
+ basic_machine=hppa1.1-hitachi
+ os=-hiuxwe2
+ ;;
+ h8300hms)
+ basic_machine=h8300-hitachi
+ os=-hms
+ ;;
+ h8300xray)
+ basic_machine=h8300-hitachi
+ os=-xray
+ ;;
+ h8500hms)
+ basic_machine=h8500-hitachi
+ os=-hms
+ ;;
+ harris)
+ basic_machine=m88k-harris
+ os=-sysv3
+ ;;
+ hp300-*)
+ basic_machine=m68k-hp
+ ;;
+ hp300bsd)
+ basic_machine=m68k-hp
+ os=-bsd
+ ;;
+ hp300hpux)
+ basic_machine=m68k-hp
+ os=-hpux
+ ;;
+ hp3k9[0-9][0-9] | hp9[0-9][0-9])
+ basic_machine=hppa1.0-hp
+ ;;
+ hp9k2[0-9][0-9] | hp9k31[0-9])
+ basic_machine=m68000-hp
+ ;;
+ hp9k3[2-9][0-9])
+ basic_machine=m68k-hp
+ ;;
+ hp9k6[0-9][0-9] | hp6[0-9][0-9])
+ basic_machine=hppa1.0-hp
+ ;;
+ hp9k7[0-79][0-9] | hp7[0-79][0-9])
+ basic_machine=hppa1.1-hp
+ ;;
+ hp9k78[0-9] | hp78[0-9])
+ # FIXME: really hppa2.0-hp
+ basic_machine=hppa1.1-hp
+ ;;
+ hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
+ # FIXME: really hppa2.0-hp
+ basic_machine=hppa1.1-hp
+ ;;
+ hp9k8[0-9][13679] | hp8[0-9][13679])
+ basic_machine=hppa1.1-hp
+ ;;
+ hp9k8[0-9][0-9] | hp8[0-9][0-9])
+ basic_machine=hppa1.0-hp
+ ;;
+ hppa-next)
+ os=-nextstep3
+ ;;
+ hppaosf)
+ basic_machine=hppa1.1-hp
+ os=-osf
+ ;;
+ hppro)
+ basic_machine=hppa1.1-hp
+ os=-proelf
+ ;;
+ i370-ibm* | ibm*)
+ basic_machine=i370-ibm
+ ;;
+ i*86v32)
+ basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+ os=-sysv32
+ ;;
+ i*86v4*)
+ basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+ os=-sysv4
+ ;;
+ i*86v)
+ basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+ os=-sysv
+ ;;
+ i*86sol2)
+ basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+ os=-solaris2
+ ;;
+ i386mach)
+ basic_machine=i386-mach
+ os=-mach
+ ;;
+ i386-vsta | vsta)
+ basic_machine=i386-unknown
+ os=-vsta
+ ;;
+ iris | iris4d)
+ basic_machine=mips-sgi
+ case $os in
+ -irix*)
+ ;;
+ *)
+ os=-irix4
+ ;;
+ esac
+ ;;
+ isi68 | isi)
+ basic_machine=m68k-isi
+ os=-sysv
+ ;;
+ leon-*|leon[3-9]-*)
+ basic_machine=sparc-`echo $basic_machine | sed 's/-.*//'`
+ ;;
+ m68knommu)
+ basic_machine=m68k-unknown
+ os=-linux
+ ;;
+ m68knommu-*)
+ basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'`
+ os=-linux
+ ;;
+ m88k-omron*)
+ basic_machine=m88k-omron
+ ;;
+ magnum | m3230)
+ basic_machine=mips-mips
+ os=-sysv
+ ;;
+ merlin)
+ basic_machine=ns32k-utek
+ os=-sysv
+ ;;
+ microblaze*)
+ basic_machine=microblaze-xilinx
+ ;;
+ mingw64)
+ basic_machine=x86_64-pc
+ os=-mingw64
+ ;;
+ mingw32)
+ basic_machine=i686-pc
+ os=-mingw32
+ ;;
+ mingw32ce)
+ basic_machine=arm-unknown
+ os=-mingw32ce
+ ;;
+ miniframe)
+ basic_machine=m68000-convergent
+ ;;
+ *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
+ basic_machine=m68k-atari
+ os=-mint
+ ;;
+ mips3*-*)
+ basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
+ ;;
+ mips3*)
+ basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
+ ;;
+ monitor)
+ basic_machine=m68k-rom68k
+ os=-coff
+ ;;
+ morphos)
+ basic_machine=powerpc-unknown
+ os=-morphos
+ ;;
+ moxiebox)
+ basic_machine=moxie-unknown
+ os=-moxiebox
+ ;;
+ msdos)
+ basic_machine=i386-pc
+ os=-msdos
+ ;;
+ ms1-*)
+ basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
+ ;;
+ msys)
+ basic_machine=i686-pc
+ os=-msys
+ ;;
+ mvs)
+ basic_machine=i370-ibm
+ os=-mvs
+ ;;
+ nacl)
+ basic_machine=le32-unknown
+ os=-nacl
+ ;;
+ ncr3000)
+ basic_machine=i486-ncr
+ os=-sysv4
+ ;;
+ netbsd386)
+ basic_machine=i386-unknown
+ os=-netbsd
+ ;;
+ netwinder)
+ basic_machine=armv4l-rebel
+ os=-linux
+ ;;
+ news | news700 | news800 | news900)
+ basic_machine=m68k-sony
+ os=-newsos
+ ;;
+ news1000)
+ basic_machine=m68030-sony
+ os=-newsos
+ ;;
+ news-3600 | risc-news)
+ basic_machine=mips-sony
+ os=-newsos
+ ;;
+ necv70)
+ basic_machine=v70-nec
+ os=-sysv
+ ;;
+ next | m*-next )
+ basic_machine=m68k-next
+ case $os in
+ -nextstep* )
+ ;;
+ -ns2*)
+ os=-nextstep2
+ ;;
+ *)
+ os=-nextstep3
+ ;;
+ esac
+ ;;
+ nh3000)
+ basic_machine=m68k-harris
+ os=-cxux
+ ;;
+ nh[45]000)
+ basic_machine=m88k-harris
+ os=-cxux
+ ;;
+ nindy960)
+ basic_machine=i960-intel
+ os=-nindy
+ ;;
+ mon960)
+ basic_machine=i960-intel
+ os=-mon960
+ ;;
+ nonstopux)
+ basic_machine=mips-compaq
+ os=-nonstopux
+ ;;
+ np1)
+ basic_machine=np1-gould
+ ;;
+ neo-tandem)
+ basic_machine=neo-tandem
+ ;;
+ nse-tandem)
+ basic_machine=nse-tandem
+ ;;
+ nsr-tandem)
+ basic_machine=nsr-tandem
+ ;;
+ op50n-* | op60c-*)
+ basic_machine=hppa1.1-oki
+ os=-proelf
+ ;;
+ openrisc | openrisc-*)
+ basic_machine=or32-unknown
+ ;;
+ os400)
+ basic_machine=powerpc-ibm
+ os=-os400
+ ;;
+ OSE68000 | ose68000)
+ basic_machine=m68000-ericsson
+ os=-ose
+ ;;
+ os68k)
+ basic_machine=m68k-none
+ os=-os68k
+ ;;
+ pa-hitachi)
+ basic_machine=hppa1.1-hitachi
+ os=-hiuxwe2
+ ;;
+ paragon)
+ basic_machine=i860-intel
+ os=-osf
+ ;;
+ parisc)
+ basic_machine=hppa-unknown
+ os=-linux
+ ;;
+ parisc-*)
+ basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'`
+ os=-linux
+ ;;
+ pbd)
+ basic_machine=sparc-tti
+ ;;
+ pbb)
+ basic_machine=m68k-tti
+ ;;
+ pc532 | pc532-*)
+ basic_machine=ns32k-pc532
+ ;;
+ pc98)
+ basic_machine=i386-pc
+ ;;
+ pc98-*)
+ basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ pentium | p5 | k5 | k6 | nexgen | viac3)
+ basic_machine=i586-pc
+ ;;
+ pentiumpro | p6 | 6x86 | athlon | athlon_*)
+ basic_machine=i686-pc
+ ;;
+ pentiumii | pentium2 | pentiumiii | pentium3)
+ basic_machine=i686-pc
+ ;;
+ pentium4)
+ basic_machine=i786-pc
+ ;;
+ pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
+ basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ pentiumpro-* | p6-* | 6x86-* | athlon-*)
+ basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
+ basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ pentium4-*)
+ basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ pn)
+ basic_machine=pn-gould
+ ;;
+ power) basic_machine=power-ibm
+ ;;
+ ppc | ppcbe) basic_machine=powerpc-unknown
+ ;;
+ ppc-* | ppcbe-*)
+ basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ ppcle | powerpclittle | ppc-le | powerpc-little)
+ basic_machine=powerpcle-unknown
+ ;;
+ ppcle-* | powerpclittle-*)
+ basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ ppc64) basic_machine=powerpc64-unknown
+ ;;
+ ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ ppc64le | powerpc64little | ppc64-le | powerpc64-little)
+ basic_machine=powerpc64le-unknown
+ ;;
+ ppc64le-* | powerpc64little-*)
+ basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ ps2)
+ basic_machine=i386-ibm
+ ;;
+ pw32)
+ basic_machine=i586-unknown
+ os=-pw32
+ ;;
+ rdos | rdos64)
+ basic_machine=x86_64-pc
+ os=-rdos
+ ;;
+ rdos32)
+ basic_machine=i386-pc
+ os=-rdos
+ ;;
+ rom68k)
+ basic_machine=m68k-rom68k
+ os=-coff
+ ;;
+ rm[46]00)
+ basic_machine=mips-siemens
+ ;;
+ rtpc | rtpc-*)
+ basic_machine=romp-ibm
+ ;;
+ s390 | s390-*)
+ basic_machine=s390-ibm
+ ;;
+ s390x | s390x-*)
+ basic_machine=s390x-ibm
+ ;;
+ sa29200)
+ basic_machine=a29k-amd
+ os=-udi
+ ;;
+ sb1)
+ basic_machine=mipsisa64sb1-unknown
+ ;;
+ sb1el)
+ basic_machine=mipsisa64sb1el-unknown
+ ;;
+ sde)
+ basic_machine=mipsisa32-sde
+ os=-elf
+ ;;
+ sei)
+ basic_machine=mips-sei
+ os=-seiux
+ ;;
+ sequent)
+ basic_machine=i386-sequent
+ ;;
+ sh)
+ basic_machine=sh-hitachi
+ os=-hms
+ ;;
+ sh5el)
+ basic_machine=sh5le-unknown
+ ;;
+ sh64)
+ basic_machine=sh64-unknown
+ ;;
+ sparclite-wrs | simso-wrs)
+ basic_machine=sparclite-wrs
+ os=-vxworks
+ ;;
+ sps7)
+ basic_machine=m68k-bull
+ os=-sysv2
+ ;;
+ spur)
+ basic_machine=spur-unknown
+ ;;
+ st2000)
+ basic_machine=m68k-tandem
+ ;;
+ stratus)
+ basic_machine=i860-stratus
+ os=-sysv4
+ ;;
+ strongarm-* | thumb-*)
+ basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ sun2)
+ basic_machine=m68000-sun
+ ;;
+ sun2os3)
+ basic_machine=m68000-sun
+ os=-sunos3
+ ;;
+ sun2os4)
+ basic_machine=m68000-sun
+ os=-sunos4
+ ;;
+ sun3os3)
+ basic_machine=m68k-sun
+ os=-sunos3
+ ;;
+ sun3os4)
+ basic_machine=m68k-sun
+ os=-sunos4
+ ;;
+ sun4os3)
+ basic_machine=sparc-sun
+ os=-sunos3
+ ;;
+ sun4os4)
+ basic_machine=sparc-sun
+ os=-sunos4
+ ;;
+ sun4sol2)
+ basic_machine=sparc-sun
+ os=-solaris2
+ ;;
+ sun3 | sun3-*)
+ basic_machine=m68k-sun
+ ;;
+ sun4)
+ basic_machine=sparc-sun
+ ;;
+ sun386 | sun386i | roadrunner)
+ basic_machine=i386-sun
+ ;;
+ sv1)
+ basic_machine=sv1-cray
+ os=-unicos
+ ;;
+ symmetry)
+ basic_machine=i386-sequent
+ os=-dynix
+ ;;
+ t3e)
+ basic_machine=alphaev5-cray
+ os=-unicos
+ ;;
+ t90)
+ basic_machine=t90-cray
+ os=-unicos
+ ;;
+ tile*)
+ basic_machine=$basic_machine-unknown
+ os=-linux-gnu
+ ;;
+ tx39)
+ basic_machine=mipstx39-unknown
+ ;;
+ tx39el)
+ basic_machine=mipstx39el-unknown
+ ;;
+ toad1)
+ basic_machine=pdp10-xkl
+ os=-tops20
+ ;;
+ tower | tower-32)
+ basic_machine=m68k-ncr
+ ;;
+ tpf)
+ basic_machine=s390x-ibm
+ os=-tpf
+ ;;
+ udi29k)
+ basic_machine=a29k-amd
+ os=-udi
+ ;;
+ ultra3)
+ basic_machine=a29k-nyu
+ os=-sym1
+ ;;
+ v810 | necv810)
+ basic_machine=v810-nec
+ os=-none
+ ;;
+ vaxv)
+ basic_machine=vax-dec
+ os=-sysv
+ ;;
+ vms)
+ basic_machine=vax-dec
+ os=-vms
+ ;;
+ vpp*|vx|vx-*)
+ basic_machine=f301-fujitsu
+ ;;
+ vxworks960)
+ basic_machine=i960-wrs
+ os=-vxworks
+ ;;
+ vxworks68)
+ basic_machine=m68k-wrs
+ os=-vxworks
+ ;;
+ vxworks29k)
+ basic_machine=a29k-wrs
+ os=-vxworks
+ ;;
+ w65*)
+ basic_machine=w65-wdc
+ os=-none
+ ;;
+ w89k-*)
+ basic_machine=hppa1.1-winbond
+ os=-proelf
+ ;;
+ xbox)
+ basic_machine=i686-pc
+ os=-mingw32
+ ;;
+ xps | xps100)
+ basic_machine=xps100-honeywell
+ ;;
+ xscale-* | xscalee[bl]-*)
+ basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'`
+ ;;
+ ymp)
+ basic_machine=ymp-cray
+ os=-unicos
+ ;;
+ z8k-*-coff)
+ basic_machine=z8k-unknown
+ os=-sim
+ ;;
+ z80-*-coff)
+ basic_machine=z80-unknown
+ os=-sim
+ ;;
+ none)
+ basic_machine=none-none
+ os=-none
+ ;;
+
+# Here we handle the default manufacturer of certain CPU types. It is in
+# some cases the only manufacturer, in others, it is the most popular.
+ w89k)
+ basic_machine=hppa1.1-winbond
+ ;;
+ op50n)
+ basic_machine=hppa1.1-oki
+ ;;
+ op60c)
+ basic_machine=hppa1.1-oki
+ ;;
+ romp)
+ basic_machine=romp-ibm
+ ;;
+ mmix)
+ basic_machine=mmix-knuth
+ ;;
+ rs6000)
+ basic_machine=rs6000-ibm
+ ;;
+ vax)
+ basic_machine=vax-dec
+ ;;
+ pdp10)
+ # there are many clones, so DEC is not a safe bet
+ basic_machine=pdp10-unknown
+ ;;
+ pdp11)
+ basic_machine=pdp11-dec
+ ;;
+ we32k)
+ basic_machine=we32k-att
+ ;;
+ sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele)
+ basic_machine=sh-unknown
+ ;;
+ sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
+ basic_machine=sparc-sun
+ ;;
+ cydra)
+ basic_machine=cydra-cydrome
+ ;;
+ orion)
+ basic_machine=orion-highlevel
+ ;;
+ orion105)
+ basic_machine=clipper-highlevel
+ ;;
+ mac | mpw | mac-mpw)
+ basic_machine=m68k-apple
+ ;;
+ pmac | pmac-mpw)
+ basic_machine=powerpc-apple
+ ;;
+ *-unknown)
+ # Make sure to match an already-canonicalized machine name.
+ ;;
+ *)
+ echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
+ exit 1
+ ;;
+esac
+
+# Here we canonicalize certain aliases for manufacturers.
+case $basic_machine in
+ *-digital*)
+ basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
+ ;;
+ *-commodore*)
+ basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
+ ;;
+ *)
+ ;;
+esac
+
+# Decode manufacturer-specific aliases for certain operating systems.
+
+if [ x"$os" != x"" ]
+then
+case $os in
+ # First match some system type aliases
+ # that might get confused with valid system types.
+ # -solaris* is a basic system type, with this one exception.
+ -auroraux)
+ os=-auroraux
+ ;;
+ -solaris1 | -solaris1.*)
+ os=`echo $os | sed -e 's|solaris1|sunos4|'`
+ ;;
+ -solaris)
+ os=-solaris2
+ ;;
+ -svr4*)
+ os=-sysv4
+ ;;
+ -unixware*)
+ os=-sysv4.2uw
+ ;;
+ -gnu/linux*)
+ os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
+ ;;
+ # First accept the basic system types.
+ # The portable systems comes first.
+ # Each alternative MUST END IN A *, to match a version number.
+ # -sysv* is not here because it comes later, after sysvr4.
+ -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
+ | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
+ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
+ | -sym* | -kopensolaris* | -plan9* \
+ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
+ | -aos* | -aros* | -cloudabi* \
+ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
+ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
+ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
+ | -bitrig* | -openbsd* | -solidbsd* \
+ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
+ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
+ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
+ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
+ | -chorusos* | -chorusrdb* | -cegcc* \
+ | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
+ | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
+ | -linux-newlib* | -linux-musl* | -linux-uclibc* \
+ | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \
+ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
+ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
+ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
+ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
+ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
+ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
+ | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* | -tirtos*)
+ # Remember, each alternative MUST END IN *, to match a version number.
+ ;;
+ -qnx*)
+ case $basic_machine in
+ x86-* | i*86-*)
+ ;;
+ *)
+ os=-nto$os
+ ;;
+ esac
+ ;;
+ -nto-qnx*)
+ ;;
+ -nto*)
+ os=`echo $os | sed -e 's|nto|nto-qnx|'`
+ ;;
+ -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
+ | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \
+ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
+ ;;
+ -mac*)
+ os=`echo $os | sed -e 's|mac|macos|'`
+ ;;
+ -linux-dietlibc)
+ os=-linux-dietlibc
+ ;;
+ -linux*)
+ os=`echo $os | sed -e 's|linux|linux-gnu|'`
+ ;;
+ -sunos5*)
+ os=`echo $os | sed -e 's|sunos5|solaris2|'`
+ ;;
+ -sunos6*)
+ os=`echo $os | sed -e 's|sunos6|solaris3|'`
+ ;;
+ -opened*)
+ os=-openedition
+ ;;
+ -os400*)
+ os=-os400
+ ;;
+ -wince*)
+ os=-wince
+ ;;
+ -osfrose*)
+ os=-osfrose
+ ;;
+ -osf*)
+ os=-osf
+ ;;
+ -utek*)
+ os=-bsd
+ ;;
+ -dynix*)
+ os=-bsd
+ ;;
+ -acis*)
+ os=-aos
+ ;;
+ -atheos*)
+ os=-atheos
+ ;;
+ -syllable*)
+ os=-syllable
+ ;;
+ -386bsd)
+ os=-bsd
+ ;;
+ -ctix* | -uts*)
+ os=-sysv
+ ;;
+ -nova*)
+ os=-rtmk-nova
+ ;;
+ -ns2 )
+ os=-nextstep2
+ ;;
+ -nsk*)
+ os=-nsk
+ ;;
+ # Preserve the version number of sinix5.
+ -sinix5.*)
+ os=`echo $os | sed -e 's|sinix|sysv|'`
+ ;;
+ -sinix*)
+ os=-sysv4
+ ;;
+ -tpf*)
+ os=-tpf
+ ;;
+ -triton*)
+ os=-sysv3
+ ;;
+ -oss*)
+ os=-sysv3
+ ;;
+ -svr4)
+ os=-sysv4
+ ;;
+ -svr3)
+ os=-sysv3
+ ;;
+ -sysvr4)
+ os=-sysv4
+ ;;
+ # This must come after -sysvr4.
+ -sysv*)
+ ;;
+ -ose*)
+ os=-ose
+ ;;
+ -es1800*)
+ os=-ose
+ ;;
+ -xenix)
+ os=-xenix
+ ;;
+ -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+ os=-mint
+ ;;
+ -aros*)
+ os=-aros
+ ;;
+ -zvmoe)
+ os=-zvmoe
+ ;;
+ -dicos*)
+ os=-dicos
+ ;;
+ -nacl*)
+ ;;
+ -none)
+ ;;
+ *)
+ # Get rid of the `-' at the beginning of $os.
+ os=`echo $os | sed 's/[^-]*-//'`
+ echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
+ exit 1
+ ;;
+esac
+else
+
+# Here we handle the default operating systems that come with various machines.
+# The value should be what the vendor currently ships out the door with their
+# machine or put another way, the most popular os provided with the machine.
+
+# Note that if you're going to try to match "-MANUFACTURER" here (say,
+# "-sun"), then you have to tell the case statement up towards the top
+# that MANUFACTURER isn't an operating system. Otherwise, code above
+# will signal an error saying that MANUFACTURER isn't an operating
+# system, and we'll never get to this point.
+
+case $basic_machine in
+ score-*)
+ os=-elf
+ ;;
+ spu-*)
+ os=-elf
+ ;;
+ *-acorn)
+ os=-riscix1.2
+ ;;
+ arm*-rebel)
+ os=-linux
+ ;;
+ arm*-semi)
+ os=-aout
+ ;;
+ c4x-* | tic4x-*)
+ os=-coff
+ ;;
+ c8051-*)
+ os=-elf
+ ;;
+ hexagon-*)
+ os=-elf
+ ;;
+ tic54x-*)
+ os=-coff
+ ;;
+ tic55x-*)
+ os=-coff
+ ;;
+ tic6x-*)
+ os=-coff
+ ;;
+ # This must come before the *-dec entry.
+ pdp10-*)
+ os=-tops20
+ ;;
+ pdp11-*)
+ os=-none
+ ;;
+ *-dec | vax-*)
+ os=-ultrix4.2
+ ;;
+ m68*-apollo)
+ os=-domain
+ ;;
+ i386-sun)
+ os=-sunos4.0.2
+ ;;
+ m68000-sun)
+ os=-sunos3
+ ;;
+ m68*-cisco)
+ os=-aout
+ ;;
+ mep-*)
+ os=-elf
+ ;;
+ mips*-cisco)
+ os=-elf
+ ;;
+ mips*-*)
+ os=-elf
+ ;;
+ or32-*)
+ os=-coff
+ ;;
+ *-tti) # must be before sparc entry or we get the wrong os.
+ os=-sysv3
+ ;;
+ sparc-* | *-sun)
+ os=-sunos4.1.1
+ ;;
+ *-be)
+ os=-beos
+ ;;
+ *-haiku)
+ os=-haiku
+ ;;
+ *-ibm)
+ os=-aix
+ ;;
+ *-knuth)
+ os=-mmixware
+ ;;
+ *-wec)
+ os=-proelf
+ ;;
+ *-winbond)
+ os=-proelf
+ ;;
+ *-oki)
+ os=-proelf
+ ;;
+ *-hp)
+ os=-hpux
+ ;;
+ *-hitachi)
+ os=-hiux
+ ;;
+ i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
+ os=-sysv
+ ;;
+ *-cbm)
+ os=-amigaos
+ ;;
+ *-dg)
+ os=-dgux
+ ;;
+ *-dolphin)
+ os=-sysv3
+ ;;
+ m68k-ccur)
+ os=-rtu
+ ;;
+ m88k-omron*)
+ os=-luna
+ ;;
+ *-next )
+ os=-nextstep
+ ;;
+ *-sequent)
+ os=-ptx
+ ;;
+ *-crds)
+ os=-unos
+ ;;
+ *-ns)
+ os=-genix
+ ;;
+ i370-*)
+ os=-mvs
+ ;;
+ *-next)
+ os=-nextstep3
+ ;;
+ *-gould)
+ os=-sysv
+ ;;
+ *-highlevel)
+ os=-bsd
+ ;;
+ *-encore)
+ os=-bsd
+ ;;
+ *-sgi)
+ os=-irix
+ ;;
+ *-siemens)
+ os=-sysv4
+ ;;
+ *-masscomp)
+ os=-rtu
+ ;;
+ f30[01]-fujitsu | f700-fujitsu)
+ os=-uxpv
+ ;;
+ *-rom68k)
+ os=-coff
+ ;;
+ *-*bug)
+ os=-coff
+ ;;
+ *-apple)
+ os=-macos
+ ;;
+ *-atari*)
+ os=-mint
+ ;;
+ *)
+ os=-none
+ ;;
+esac
+fi
+
+# Here we handle the case where we know the os, and the CPU type, but not the
+# manufacturer. We pick the logical manufacturer.
+vendor=unknown
+case $basic_machine in
+ *-unknown)
+ case $os in
+ -riscix*)
+ vendor=acorn
+ ;;
+ -sunos*)
+ vendor=sun
+ ;;
+ -cnk*|-aix*)
+ vendor=ibm
+ ;;
+ -beos*)
+ vendor=be
+ ;;
+ -hpux*)
+ vendor=hp
+ ;;
+ -mpeix*)
+ vendor=hp
+ ;;
+ -hiux*)
+ vendor=hitachi
+ ;;
+ -unos*)
+ vendor=crds
+ ;;
+ -dgux*)
+ vendor=dg
+ ;;
+ -luna*)
+ vendor=omron
+ ;;
+ -genix*)
+ vendor=ns
+ ;;
+ -mvs* | -opened*)
+ vendor=ibm
+ ;;
+ -os400*)
+ vendor=ibm
+ ;;
+ -ptx*)
+ vendor=sequent
+ ;;
+ -tpf*)
+ vendor=ibm
+ ;;
+ -vxsim* | -vxworks* | -windiss*)
+ vendor=wrs
+ ;;
+ -aux*)
+ vendor=apple
+ ;;
+ -hms*)
+ vendor=hitachi
+ ;;
+ -mpw* | -macos*)
+ vendor=apple
+ ;;
+ -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+ vendor=atari
+ ;;
+ -vos*)
+ vendor=stratus
+ ;;
+ esac
+ basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
+ ;;
+esac
+
+echo $basic_machine$os
+exit
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/configure b/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/configure
new file mode 100755
index 0000000000..3efefcaa2e
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/configure
@@ -0,0 +1,5088 @@
+#! /bin/sh
+# Guess values for system-dependent variables and create Makefiles.
+# Generated by GNU Autoconf 2.69.
+#
+#
+# Copyright (C) 1992-1996, 1998-2015 Free Software Foundation, Inc.
+#
+#
+# This configure script is free software; the Free Software Foundation
+# gives unlimited permission to copy, distribute and modify it.
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+ emulate sh
+ NULLCMD=:
+ # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+ setopt NO_GLOB_SUBST
+else
+ case `(set -o) 2>/dev/null` in #(
+ *posix*) :
+ set -o posix ;; #(
+ *) :
+ ;;
+esac
+fi
+
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+ as_echo='print -r --'
+ as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+ as_echo='printf %s\n'
+ as_echo_n='printf %s'
+else
+ if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+ as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+ as_echo_n='/usr/ucb/echo -n'
+ else
+ as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+ as_echo_n_body='eval
+ arg=$1;
+ case $arg in #(
+ *"$as_nl"*)
+ expr "X$arg" : "X\\(.*\\)$as_nl";
+ arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+ esac;
+ expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+ '
+ export as_echo_n_body
+ as_echo_n='sh -c $as_echo_n_body as_echo'
+ fi
+ export as_echo_body
+ as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ PATH_SEPARATOR=:
+ (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+ (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+ PATH_SEPARATOR=';'
+ }
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order. Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" "" $as_nl"
+
+# Find who we are. Look in the path if we contain no directory separator.
+as_myself=
+case $0 in #((
+ *[\\/]* ) as_myself=$0 ;;
+ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+ as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+ $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+ exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there. '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+# Use a proper internal environment variable to ensure we don't fall
+ # into an infinite loop, continuously re-executing ourselves.
+ if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then
+ _as_can_reexec=no; export _as_can_reexec;
+ # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in # ((((
+ *v*x* | *x*v* ) as_opts=-vx ;;
+ *v* ) as_opts=-v ;;
+ *x* ) as_opts=-x ;;
+ * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+as_fn_exit 255
+ fi
+ # We don't want this to propagate to other subprocesses.
+ { _as_can_reexec=; unset _as_can_reexec;}
+if test "x$CONFIG_SHELL" = x; then
+ as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
+ emulate sh
+ NULLCMD=:
+ # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '\${1+\"\$@\"}'='\"\$@\"'
+ setopt NO_GLOB_SUBST
+else
+ case \`(set -o) 2>/dev/null\` in #(
+ *posix*) :
+ set -o posix ;; #(
+ *) :
+ ;;
+esac
+fi
+"
+ as_required="as_fn_return () { (exit \$1); }
+as_fn_success () { as_fn_return 0; }
+as_fn_failure () { as_fn_return 1; }
+as_fn_ret_success () { return 0; }
+as_fn_ret_failure () { return 1; }
+
+exitcode=0
+as_fn_success || { exitcode=1; echo as_fn_success failed.; }
+as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
+as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
+as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
+if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
+
+else
+ exitcode=1; echo positional parameters were not saved.
+fi
+test x\$exitcode = x0 || exit 1
+test -x / || exit 1"
+ as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
+ as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
+ eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
+ test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1
+test \$(( 1 + 1 )) = 2 || exit 1"
+ if (eval "$as_required") 2>/dev/null; then :
+ as_have_required=yes
+else
+ as_have_required=no
+fi
+ if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
+
+else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_found=false
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ as_found=:
+ case $as_dir in #(
+ /*)
+ for as_base in sh bash ksh sh5; do
+ # Try only shells that exist, to save several forks.
+ as_shell=$as_dir/$as_base
+ if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
+ { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :
+ CONFIG_SHELL=$as_shell as_have_required=yes
+ if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :
+ break 2
+fi
+fi
+ done;;
+ esac
+ as_found=false
+done
+$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
+ { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
+ CONFIG_SHELL=$SHELL as_have_required=yes
+fi; }
+IFS=$as_save_IFS
+
+
+ if test "x$CONFIG_SHELL" != x; then :
+ export CONFIG_SHELL
+ # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in # ((((
+ *v*x* | *x*v* ) as_opts=-vx ;;
+ *v* ) as_opts=-v ;;
+ *x* ) as_opts=-x ;;
+ * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+exit 255
+fi
+
+ if test x$as_have_required = xno; then :
+ $as_echo "$0: This script requires a shell more modern than all"
+ $as_echo "$0: the shells that I found on your system."
+ if test x${ZSH_VERSION+set} = xset ; then
+ $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
+ $as_echo "$0: be upgraded to zsh 4.3.4 or later."
+ else
+ $as_echo "$0: Please tell bug-autoconf@gnu.org about your system,
+$0: including any error possibly output before this
+$0: message. Then install a modern shell, or manually run
+$0: the script under such a shell if you do have one."
+ fi
+ exit 1
+fi
+fi
+fi
+SHELL=${CONFIG_SHELL-/bin/sh}
+export SHELL
+# Unset more variables known to interfere with behavior of common tools.
+CLICOLOR_FORCE= GREP_OPTIONS=
+unset CLICOLOR_FORCE GREP_OPTIONS
+
+## --------------------- ##
+## M4sh Shell Functions. ##
+## --------------------- ##
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+ { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+ return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+ set +e
+ as_fn_set_status $1
+ exit $1
+} # as_fn_exit
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+ case $as_dir in #(
+ -*) as_dir=./$as_dir;;
+ esac
+ test -d "$as_dir" || eval $as_mkdir_p || {
+ as_dirs=
+ while :; do
+ case $as_dir in #(
+ *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+ *) as_qdir=$as_dir;;
+ esac
+ as_dirs="'$as_qdir' $as_dirs"
+ as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ test -d "$as_dir" && break
+ done
+ test -z "$as_dirs" || eval "mkdir $as_dirs"
+ } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+ test -f "$1" && test -x "$1"
+} # as_fn_executable_p
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+ eval 'as_fn_append ()
+ {
+ eval $1+=\$2
+ }'
+else
+ as_fn_append ()
+ {
+ eval $1=\$$1\$2
+ }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+ eval 'as_fn_arith ()
+ {
+ as_val=$(( $* ))
+ }'
+else
+ as_fn_arith ()
+ {
+ as_val=`expr "$@" || test $? -eq 1`
+ }
+fi # as_fn_arith
+
+
+# as_fn_error STATUS ERROR [LINENO LOG_FD]
+# ----------------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with STATUS, using 1 if that was 0.
+as_fn_error ()
+{
+ as_status=$1; test $as_status -eq 0 && as_status=1
+ if test "$4"; then
+ as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+ fi
+ $as_echo "$as_me: error: $2" >&2
+ as_fn_exit $as_status
+} # as_fn_error
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+ test "X`expr 00001 : '.*\(...\)'`" = X001; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+ as_basename=basename
+else
+ as_basename=false
+fi
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+ as_dirname=dirname
+else
+ as_dirname=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+ X"$0" : 'X\(//\)$' \| \
+ X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+ sed '/^.*\/\([^/][^/]*\)\/*$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+
+ as_lineno_1=$LINENO as_lineno_1a=$LINENO
+ as_lineno_2=$LINENO as_lineno_2a=$LINENO
+ eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
+ test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
+ # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-)
+ sed -n '
+ p
+ /[$]LINENO/=
+ ' <$as_myself |
+ sed '
+ s/[$]LINENO.*/&-/
+ t lineno
+ b
+ :lineno
+ N
+ :loop
+ s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+ t loop
+ s/-\n.*//
+ ' >$as_me.lineno &&
+ chmod +x "$as_me.lineno" ||
+ { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
+
+ # If we had to re-execute with $CONFIG_SHELL, we're ensured to have
+ # already done that, so ensure we don't try to do so again and fall
+ # in an infinite loop. This has already happened in practice.
+ _as_can_reexec=no; export _as_can_reexec
+ # Don't try to exec as it changes $[0], causing all sort of problems
+ # (the dirname of $[0] is not the place where we might find the
+ # original and so on. Autoconf is especially sensitive to this).
+ . "./$as_me.lineno"
+ # Exit status is that of the last command.
+ exit
+}
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in #(((((
+-n*)
+ case `echo 'xy\c'` in
+ *c*) ECHO_T=' ';; # ECHO_T is single tab character.
+ xy) ECHO_C='\c';;
+ *) echo `echo ksh88 bug on AIX 6.1` > /dev/null
+ ECHO_T=' ';;
+ esac;;
+*)
+ ECHO_N='-n';;
+esac
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+ rm -f conf$$.dir/conf$$.file
+else
+ rm -f conf$$.dir
+ mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+ if ln -s conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s='ln -s'
+ # ... but there are two gotchas:
+ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+ # In both cases, we have to default to `cp -pR'.
+ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+ as_ln_s='cp -pR'
+ elif ln conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s=ln
+ else
+ as_ln_s='cp -pR'
+ fi
+else
+ as_ln_s='cp -pR'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+if mkdir -p . 2>/dev/null; then
+ as_mkdir_p='mkdir -p "$as_dir"'
+else
+ test -d ./-p && rmdir ./-p
+ as_mkdir_p=false
+fi
+
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+test -n "$DJDIR" || exec 7<&0 </dev/null
+exec 6>&1
+
+# Name of the host.
+# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status,
+# so uname gets run too.
+ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
+
+#
+# Initializations.
+#
+ac_default_prefix=/usr/local
+ac_clean_files=
+ac_config_libobj_dir=.
+LIBOBJS=
+cross_compiling=no
+subdirs=
+MFLAGS=
+MAKEFLAGS=
+
+# Identity of this package.
+PACKAGE_NAME=
+PACKAGE_TARNAME=
+PACKAGE_VERSION=
+PACKAGE_STRING=
+PACKAGE_BUGREPORT=
+PACKAGE_URL=
+
+ac_unique_file="hbf.h"
+# Factoring default headers for most tests.
+ac_includes_default="\
+#include <stdio.h>
+#ifdef HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+# include <sys/stat.h>
+#endif
+#ifdef STDC_HEADERS
+# include <stdlib.h>
+# include <stddef.h>
+#else
+# ifdef HAVE_STDLIB_H
+# include <stdlib.h>
+# endif
+#endif
+#ifdef HAVE_STRING_H
+# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+# include <memory.h>
+# endif
+# include <string.h>
+#endif
+#ifdef HAVE_STRINGS_H
+# include <strings.h>
+#endif
+#ifdef HAVE_INTTYPES_H
+# include <inttypes.h>
+#endif
+#ifdef HAVE_STDINT_H
+# include <stdint.h>
+#endif
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif"
+
+ac_subst_vars='LTLIBOBJS
+LIBOBJS
+INSTALL_DATA
+INSTALL_SCRIPT
+INSTALL_PROGRAM
+RM
+no_strdup
+XX_CFLAGS
+EGREP
+GREP
+CPP
+OBJEXT
+EXEEXT
+ac_ct_CC
+CPPFLAGS
+LDFLAGS
+CFLAGS
+CC
+target_os
+target_vendor
+target_cpu
+target
+host_os
+host_vendor
+host_cpu
+host
+build_os
+build_vendor
+build_cpu
+build
+target_alias
+host_alias
+build_alias
+LIBS
+ECHO_T
+ECHO_N
+ECHO_C
+DEFS
+mandir
+localedir
+libdir
+psdir
+pdfdir
+dvidir
+htmldir
+infodir
+docdir
+oldincludedir
+includedir
+localstatedir
+sharedstatedir
+sysconfdir
+datadir
+datarootdir
+libexecdir
+sbindir
+bindir
+program_transform_name
+prefix
+exec_prefix
+PACKAGE_URL
+PACKAGE_BUGREPORT
+PACKAGE_STRING
+PACKAGE_VERSION
+PACKAGE_TARNAME
+PACKAGE_NAME
+PATH_SEPARATOR
+SHELL'
+ac_subst_files=''
+ac_user_opts='
+enable_option_checking
+with_kpathsea_include
+with_kpathsea_lib
+'
+ ac_precious_vars='build_alias
+host_alias
+target_alias
+CC
+CFLAGS
+LDFLAGS
+LIBS
+CPPFLAGS
+CPP'
+
+
+# Initialize some variables set by options.
+ac_init_help=
+ac_init_version=false
+ac_unrecognized_opts=
+ac_unrecognized_sep=
+# The variables have the same names as the options, with
+# dashes changed to underlines.
+cache_file=/dev/null
+exec_prefix=NONE
+no_create=
+no_recursion=
+prefix=NONE
+program_prefix=NONE
+program_suffix=NONE
+program_transform_name=s,x,x,
+silent=
+site=
+srcdir=
+verbose=
+x_includes=NONE
+x_libraries=NONE
+
+# Installation directory options.
+# These are left unexpanded so users can "make install exec_prefix=/foo"
+# and all the variables that are supposed to be based on exec_prefix
+# by default will actually change.
+# Use braces instead of parens because sh, perl, etc. also accept them.
+# (The list follows the same order as the GNU Coding Standards.)
+bindir='${exec_prefix}/bin'
+sbindir='${exec_prefix}/sbin'
+libexecdir='${exec_prefix}/libexec'
+datarootdir='${prefix}/share'
+datadir='${datarootdir}'
+sysconfdir='${prefix}/etc'
+sharedstatedir='${prefix}/com'
+localstatedir='${prefix}/var'
+includedir='${prefix}/include'
+oldincludedir='/usr/include'
+docdir='${datarootdir}/doc/${PACKAGE}'
+infodir='${datarootdir}/info'
+htmldir='${docdir}'
+dvidir='${docdir}'
+pdfdir='${docdir}'
+psdir='${docdir}'
+libdir='${exec_prefix}/lib'
+localedir='${datarootdir}/locale'
+mandir='${datarootdir}/man'
+
+ac_prev=
+ac_dashdash=
+for ac_option
+do
+ # If the previous option needs an argument, assign it.
+ if test -n "$ac_prev"; then
+ eval $ac_prev=\$ac_option
+ ac_prev=
+ continue
+ fi
+
+ case $ac_option in
+ *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
+ *=) ac_optarg= ;;
+ *) ac_optarg=yes ;;
+ esac
+
+ # Accept the important Cygnus configure options, so we can diagnose typos.
+
+ case $ac_dashdash$ac_option in
+ --)
+ ac_dashdash=yes ;;
+
+ -bindir | --bindir | --bindi | --bind | --bin | --bi)
+ ac_prev=bindir ;;
+ -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
+ bindir=$ac_optarg ;;
+
+ -build | --build | --buil | --bui | --bu)
+ ac_prev=build_alias ;;
+ -build=* | --build=* | --buil=* | --bui=* | --bu=*)
+ build_alias=$ac_optarg ;;
+
+ -cache-file | --cache-file | --cache-fil | --cache-fi \
+ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
+ ac_prev=cache_file ;;
+ -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
+ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
+ cache_file=$ac_optarg ;;
+
+ --config-cache | -C)
+ cache_file=config.cache ;;
+
+ -datadir | --datadir | --datadi | --datad)
+ ac_prev=datadir ;;
+ -datadir=* | --datadir=* | --datadi=* | --datad=*)
+ datadir=$ac_optarg ;;
+
+ -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
+ | --dataroo | --dataro | --datar)
+ ac_prev=datarootdir ;;
+ -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
+ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
+ datarootdir=$ac_optarg ;;
+
+ -disable-* | --disable-*)
+ ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+ as_fn_error $? "invalid feature name: $ac_useropt"
+ ac_useropt_orig=$ac_useropt
+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ case $ac_user_opts in
+ *"
+"enable_$ac_useropt"
+"*) ;;
+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
+ ac_unrecognized_sep=', ';;
+ esac
+ eval enable_$ac_useropt=no ;;
+
+ -docdir | --docdir | --docdi | --doc | --do)
+ ac_prev=docdir ;;
+ -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
+ docdir=$ac_optarg ;;
+
+ -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
+ ac_prev=dvidir ;;
+ -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
+ dvidir=$ac_optarg ;;
+
+ -enable-* | --enable-*)
+ ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+ as_fn_error $? "invalid feature name: $ac_useropt"
+ ac_useropt_orig=$ac_useropt
+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ case $ac_user_opts in
+ *"
+"enable_$ac_useropt"
+"*) ;;
+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
+ ac_unrecognized_sep=', ';;
+ esac
+ eval enable_$ac_useropt=\$ac_optarg ;;
+
+ -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+ | --exec | --exe | --ex)
+ ac_prev=exec_prefix ;;
+ -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
+ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
+ | --exec=* | --exe=* | --ex=*)
+ exec_prefix=$ac_optarg ;;
+
+ -gas | --gas | --ga | --g)
+ # Obsolete; use --with-gas.
+ with_gas=yes ;;
+
+ -help | --help | --hel | --he | -h)
+ ac_init_help=long ;;
+ -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
+ ac_init_help=recursive ;;
+ -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
+ ac_init_help=short ;;
+
+ -host | --host | --hos | --ho)
+ ac_prev=host_alias ;;
+ -host=* | --host=* | --hos=* | --ho=*)
+ host_alias=$ac_optarg ;;
+
+ -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
+ ac_prev=htmldir ;;
+ -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
+ | --ht=*)
+ htmldir=$ac_optarg ;;
+
+ -includedir | --includedir | --includedi | --included | --include \
+ | --includ | --inclu | --incl | --inc)
+ ac_prev=includedir ;;
+ -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
+ | --includ=* | --inclu=* | --incl=* | --inc=*)
+ includedir=$ac_optarg ;;
+
+ -infodir | --infodir | --infodi | --infod | --info | --inf)
+ ac_prev=infodir ;;
+ -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
+ infodir=$ac_optarg ;;
+
+ -libdir | --libdir | --libdi | --libd)
+ ac_prev=libdir ;;
+ -libdir=* | --libdir=* | --libdi=* | --libd=*)
+ libdir=$ac_optarg ;;
+
+ -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
+ | --libexe | --libex | --libe)
+ ac_prev=libexecdir ;;
+ -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
+ | --libexe=* | --libex=* | --libe=*)
+ libexecdir=$ac_optarg ;;
+
+ -localedir | --localedir | --localedi | --localed | --locale)
+ ac_prev=localedir ;;
+ -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
+ localedir=$ac_optarg ;;
+
+ -localstatedir | --localstatedir | --localstatedi | --localstated \
+ | --localstate | --localstat | --localsta | --localst | --locals)
+ ac_prev=localstatedir ;;
+ -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
+ localstatedir=$ac_optarg ;;
+
+ -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+ ac_prev=mandir ;;
+ -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
+ mandir=$ac_optarg ;;
+
+ -nfp | --nfp | --nf)
+ # Obsolete; use --without-fp.
+ with_fp=no ;;
+
+ -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+ | --no-cr | --no-c | -n)
+ no_create=yes ;;
+
+ -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
+ no_recursion=yes ;;
+
+ -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
+ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
+ | --oldin | --oldi | --old | --ol | --o)
+ ac_prev=oldincludedir ;;
+ -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
+ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
+ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
+ oldincludedir=$ac_optarg ;;
+
+ -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+ ac_prev=prefix ;;
+ -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+ prefix=$ac_optarg ;;
+
+ -program-prefix | --program-prefix | --program-prefi | --program-pref \
+ | --program-pre | --program-pr | --program-p)
+ ac_prev=program_prefix ;;
+ -program-prefix=* | --program-prefix=* | --program-prefi=* \
+ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
+ program_prefix=$ac_optarg ;;
+
+ -program-suffix | --program-suffix | --program-suffi | --program-suff \
+ | --program-suf | --program-su | --program-s)
+ ac_prev=program_suffix ;;
+ -program-suffix=* | --program-suffix=* | --program-suffi=* \
+ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
+ program_suffix=$ac_optarg ;;
+
+ -program-transform-name | --program-transform-name \
+ | --program-transform-nam | --program-transform-na \
+ | --program-transform-n | --program-transform- \
+ | --program-transform | --program-transfor \
+ | --program-transfo | --program-transf \
+ | --program-trans | --program-tran \
+ | --progr-tra | --program-tr | --program-t)
+ ac_prev=program_transform_name ;;
+ -program-transform-name=* | --program-transform-name=* \
+ | --program-transform-nam=* | --program-transform-na=* \
+ | --program-transform-n=* | --program-transform-=* \
+ | --program-transform=* | --program-transfor=* \
+ | --program-transfo=* | --program-transf=* \
+ | --program-trans=* | --program-tran=* \
+ | --progr-tra=* | --program-tr=* | --program-t=*)
+ program_transform_name=$ac_optarg ;;
+
+ -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
+ ac_prev=pdfdir ;;
+ -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
+ pdfdir=$ac_optarg ;;
+
+ -psdir | --psdir | --psdi | --psd | --ps)
+ ac_prev=psdir ;;
+ -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
+ psdir=$ac_optarg ;;
+
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil)
+ silent=yes ;;
+
+ -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+ ac_prev=sbindir ;;
+ -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+ | --sbi=* | --sb=*)
+ sbindir=$ac_optarg ;;
+
+ -sharedstatedir | --sharedstatedir | --sharedstatedi \
+ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
+ | --sharedst | --shareds | --shared | --share | --shar \
+ | --sha | --sh)
+ ac_prev=sharedstatedir ;;
+ -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
+ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
+ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
+ | --sha=* | --sh=*)
+ sharedstatedir=$ac_optarg ;;
+
+ -site | --site | --sit)
+ ac_prev=site ;;
+ -site=* | --site=* | --sit=*)
+ site=$ac_optarg ;;
+
+ -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
+ ac_prev=srcdir ;;
+ -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
+ srcdir=$ac_optarg ;;
+
+ -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
+ | --syscon | --sysco | --sysc | --sys | --sy)
+ ac_prev=sysconfdir ;;
+ -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
+ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
+ sysconfdir=$ac_optarg ;;
+
+ -target | --target | --targe | --targ | --tar | --ta | --t)
+ ac_prev=target_alias ;;
+ -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
+ target_alias=$ac_optarg ;;
+
+ -v | -verbose | --verbose | --verbos | --verbo | --verb)
+ verbose=yes ;;
+
+ -version | --version | --versio | --versi | --vers | -V)
+ ac_init_version=: ;;
+
+ -with-* | --with-*)
+ ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+ as_fn_error $? "invalid package name: $ac_useropt"
+ ac_useropt_orig=$ac_useropt
+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ case $ac_user_opts in
+ *"
+"with_$ac_useropt"
+"*) ;;
+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
+ ac_unrecognized_sep=', ';;
+ esac
+ eval with_$ac_useropt=\$ac_optarg ;;
+
+ -without-* | --without-*)
+ ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+ as_fn_error $? "invalid package name: $ac_useropt"
+ ac_useropt_orig=$ac_useropt
+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ case $ac_user_opts in
+ *"
+"with_$ac_useropt"
+"*) ;;
+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
+ ac_unrecognized_sep=', ';;
+ esac
+ eval with_$ac_useropt=no ;;
+
+ --x)
+ # Obsolete; use --with-x.
+ with_x=yes ;;
+
+ -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
+ | --x-incl | --x-inc | --x-in | --x-i)
+ ac_prev=x_includes ;;
+ -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
+ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
+ x_includes=$ac_optarg ;;
+
+ -x-libraries | --x-libraries | --x-librarie | --x-librari \
+ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
+ ac_prev=x_libraries ;;
+ -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
+ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
+ x_libraries=$ac_optarg ;;
+
+ -*) as_fn_error $? "unrecognized option: \`$ac_option'
+Try \`$0 --help' for more information"
+ ;;
+
+ *=*)
+ ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
+ # Reject names that are not valid shell variable names.
+ case $ac_envvar in #(
+ '' | [0-9]* | *[!_$as_cr_alnum]* )
+ as_fn_error $? "invalid variable name: \`$ac_envvar'" ;;
+ esac
+ eval $ac_envvar=\$ac_optarg
+ export $ac_envvar ;;
+
+ *)
+ # FIXME: should be removed in autoconf 3.0.
+ $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+ expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+ $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+ : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}"
+ ;;
+
+ esac
+done
+
+if test -n "$ac_prev"; then
+ ac_option=--`echo $ac_prev | sed 's/_/-/g'`
+ as_fn_error $? "missing argument to $ac_option"
+fi
+
+if test -n "$ac_unrecognized_opts"; then
+ case $enable_option_checking in
+ no) ;;
+ fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;
+ *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
+ esac
+fi
+
+# Check all directory arguments for consistency.
+for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
+ datadir sysconfdir sharedstatedir localstatedir includedir \
+ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
+ libdir localedir mandir
+do
+ eval ac_val=\$$ac_var
+ # Remove trailing slashes.
+ case $ac_val in
+ */ )
+ ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`
+ eval $ac_var=\$ac_val;;
+ esac
+ # Be sure to have absolute directory names.
+ case $ac_val in
+ [\\/$]* | ?:[\\/]* ) continue;;
+ NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
+ esac
+ as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val"
+done
+
+# There might be people who depend on the old broken behavior: `$host'
+# used to hold the argument of --host etc.
+# FIXME: To remove some day.
+build=$build_alias
+host=$host_alias
+target=$target_alias
+
+# FIXME: To remove some day.
+if test "x$host_alias" != x; then
+ if test "x$build_alias" = x; then
+ cross_compiling=maybe
+ elif test "x$build_alias" != "x$host_alias"; then
+ cross_compiling=yes
+ fi
+fi
+
+ac_tool_prefix=
+test -n "$host_alias" && ac_tool_prefix=$host_alias-
+
+test "$silent" = yes && exec 6>/dev/null
+
+
+ac_pwd=`pwd` && test -n "$ac_pwd" &&
+ac_ls_di=`ls -di .` &&
+ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
+ as_fn_error $? "working directory cannot be determined"
+test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
+ as_fn_error $? "pwd does not report name of working directory"
+
+
+# Find the source files, if location was not specified.
+if test -z "$srcdir"; then
+ ac_srcdir_defaulted=yes
+ # Try the directory containing this script, then the parent directory.
+ ac_confdir=`$as_dirname -- "$as_myself" ||
+$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_myself" : 'X\(//\)[^/]' \| \
+ X"$as_myself" : 'X\(//\)$' \| \
+ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_myself" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ srcdir=$ac_confdir
+ if test ! -r "$srcdir/$ac_unique_file"; then
+ srcdir=..
+ fi
+else
+ ac_srcdir_defaulted=no
+fi
+if test ! -r "$srcdir/$ac_unique_file"; then
+ test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
+ as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir"
+fi
+ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
+ac_abs_confdir=`(
+ cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg"
+ pwd)`
+# When building in place, set srcdir=.
+if test "$ac_abs_confdir" = "$ac_pwd"; then
+ srcdir=.
+fi
+# Remove unnecessary trailing slashes from srcdir.
+# Double slashes in file names in object file debugging info
+# mess up M-x gdb in Emacs.
+case $srcdir in
+*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
+esac
+for ac_var in $ac_precious_vars; do
+ eval ac_env_${ac_var}_set=\${${ac_var}+set}
+ eval ac_env_${ac_var}_value=\$${ac_var}
+ eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
+ eval ac_cv_env_${ac_var}_value=\$${ac_var}
+done
+
+#
+# Report the --help message.
+#
+if test "$ac_init_help" = "long"; then
+ # Omit some internal or obsolete options to make the list less imposing.
+ # This message is too long to be a string in the A/UX 3.1 sh.
+ cat <<_ACEOF
+\`configure' configures this package to adapt to many kinds of systems.
+
+Usage: $0 [OPTION]... [VAR=VALUE]...
+
+To assign environment variables (e.g., CC, CFLAGS...), specify them as
+VAR=VALUE. See below for descriptions of some of the useful variables.
+
+Defaults for the options are specified in brackets.
+
+Configuration:
+ -h, --help display this help and exit
+ --help=short display options specific to this package
+ --help=recursive display the short help of all the included packages
+ -V, --version display version information and exit
+ -q, --quiet, --silent do not print \`checking ...' messages
+ --cache-file=FILE cache test results in FILE [disabled]
+ -C, --config-cache alias for \`--cache-file=config.cache'
+ -n, --no-create do not create output files
+ --srcdir=DIR find the sources in DIR [configure dir or \`..']
+
+Installation directories:
+ --prefix=PREFIX install architecture-independent files in PREFIX
+ [$ac_default_prefix]
+ --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
+ [PREFIX]
+
+By default, \`make install' will install all the files in
+\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify
+an installation prefix other than \`$ac_default_prefix' using \`--prefix',
+for instance \`--prefix=\$HOME'.
+
+For better control, use the options below.
+
+Fine tuning of the installation directories:
+ --bindir=DIR user executables [EPREFIX/bin]
+ --sbindir=DIR system admin executables [EPREFIX/sbin]
+ --libexecdir=DIR program executables [EPREFIX/libexec]
+ --sysconfdir=DIR read-only single-machine data [PREFIX/etc]
+ --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
+ --localstatedir=DIR modifiable single-machine data [PREFIX/var]
+ --libdir=DIR object code libraries [EPREFIX/lib]
+ --includedir=DIR C header files [PREFIX/include]
+ --oldincludedir=DIR C header files for non-gcc [/usr/include]
+ --datarootdir=DIR read-only arch.-independent data root [PREFIX/share]
+ --datadir=DIR read-only architecture-independent data [DATAROOTDIR]
+ --infodir=DIR info documentation [DATAROOTDIR/info]
+ --localedir=DIR locale-dependent data [DATAROOTDIR/locale]
+ --mandir=DIR man documentation [DATAROOTDIR/man]
+ --docdir=DIR documentation root [DATAROOTDIR/doc/PACKAGE]
+ --htmldir=DIR html documentation [DOCDIR]
+ --dvidir=DIR dvi documentation [DOCDIR]
+ --pdfdir=DIR pdf documentation [DOCDIR]
+ --psdir=DIR ps documentation [DOCDIR]
+_ACEOF
+
+ cat <<\_ACEOF
+
+System types:
+ --build=BUILD configure for building on BUILD [guessed]
+ --host=HOST cross-compile to build programs to run on HOST [BUILD]
+ --target=TARGET configure for building compilers for TARGET [HOST]
+_ACEOF
+fi
+
+if test -n "$ac_init_help"; then
+
+ cat <<\_ACEOF
+
+Optional Packages:
+ --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
+ --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
+ --with-kpathsea-include=DIR
+ location of the kpathsea include dir
+ --with-kpathsea-lib=DIR
+ location of the kpathsea lib dir
+
+Some influential environment variables:
+ CC C compiler command
+ CFLAGS C compiler flags
+ LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a
+ nonstandard directory <lib dir>
+ LIBS libraries to pass to the linker, e.g. -l<library>
+ CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
+ you have headers in a nonstandard directory <include dir>
+ CPP C preprocessor
+
+Use these variables to override the choices made by `configure' or to help
+it to find libraries and programs with nonstandard names/locations.
+
+Report bugs to the package provider.
+_ACEOF
+ac_status=$?
+fi
+
+if test "$ac_init_help" = "recursive"; then
+ # If there are subdirs, report their specific --help.
+ for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
+ test -d "$ac_dir" ||
+ { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||
+ continue
+ ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+ ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+ # A ".." for each directory in $ac_dir_suffix.
+ ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+ case $ac_top_builddir_sub in
+ "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+ *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+ esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+ .) # We are building in place.
+ ac_srcdir=.
+ ac_top_srcdir=$ac_top_builddir_sub
+ ac_abs_top_srcdir=$ac_pwd ;;
+ [\\/]* | ?:[\\/]* ) # Absolute name.
+ ac_srcdir=$srcdir$ac_dir_suffix;
+ ac_top_srcdir=$srcdir
+ ac_abs_top_srcdir=$srcdir ;;
+ *) # Relative name.
+ ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+ ac_top_srcdir=$ac_top_build_prefix$srcdir
+ ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+ cd "$ac_dir" || { ac_status=$?; continue; }
+ # Check for guested configure.
+ if test -f "$ac_srcdir/configure.gnu"; then
+ echo &&
+ $SHELL "$ac_srcdir/configure.gnu" --help=recursive
+ elif test -f "$ac_srcdir/configure"; then
+ echo &&
+ $SHELL "$ac_srcdir/configure" --help=recursive
+ else
+ $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+ fi || ac_status=$?
+ cd "$ac_pwd" || { ac_status=$?; break; }
+ done
+fi
+
+test -n "$ac_init_help" && exit $ac_status
+if $ac_init_version; then
+ cat <<\_ACEOF
+configure
+generated by GNU Autoconf 2.69
+
+Copyright (C) 2012 Free Software Foundation, Inc.
+This configure script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it.
+_ACEOF
+ exit
+fi
+
+## ------------------------ ##
+## Autoconf initialization. ##
+## ------------------------ ##
+
+# ac_fn_c_try_compile LINENO
+# --------------------------
+# Try to compile conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_compile ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ rm -f conftest.$ac_objext
+ if { { ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_compile") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ grep -v '^ *+' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ mv -f conftest.er1 conftest.err
+ fi
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then :
+ ac_retval=0
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_retval=1
+fi
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+ as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_compile
+
+# ac_fn_c_try_cpp LINENO
+# ----------------------
+# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_cpp ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ if { { ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ grep -v '^ *+' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ mv -f conftest.er1 conftest.err
+ fi
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } > conftest.i && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then :
+ ac_retval=0
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_retval=1
+fi
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+ as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_cpp
+
+# ac_fn_c_try_run LINENO
+# ----------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
+# that executables *can* be run.
+ac_fn_c_try_run ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ if { { ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
+ { { case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; }; then :
+ ac_retval=0
+else
+ $as_echo "$as_me: program exited with status $ac_status" >&5
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_retval=$ac_status
+fi
+ rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+ as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_run
+
+# ac_fn_c_try_link LINENO
+# -----------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_link ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ rm -f conftest.$ac_objext conftest$ac_exeext
+ if { { ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_link") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ grep -v '^ *+' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ mv -f conftest.er1 conftest.err
+ fi
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext && {
+ test "$cross_compiling" = yes ||
+ test -x conftest$ac_exeext
+ }; then :
+ ac_retval=0
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_retval=1
+fi
+ # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
+ # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
+ # interfere with the next link command; also delete a directory that is
+ # left behind by Apple's compiler. We do this before executing the actions.
+ rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+ as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_link
+
+# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
+# -------------------------------------------------------
+# Tests whether HEADER exists, giving a warning if it cannot be compiled using
+# the include files in INCLUDES and setting the cache variable VAR
+# accordingly.
+ac_fn_c_check_header_mongrel ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ if eval \${$3+:} false; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+ $as_echo_n "(cached) " >&6
+fi
+eval ac_res=\$$3
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+ # Is the header compilable?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
+$as_echo_n "checking $2 usability... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_header_compiler=yes
+else
+ ac_header_compiler=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
+$as_echo_n "checking $2 presence... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <$2>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+ ac_header_preproc=yes
+else
+ ac_header_preproc=no
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #((
+ yes:no: )
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+ ;;
+ no:yes:* )
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+ ;;
+esac
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ eval "$3=\$ac_header_compiler"
+fi
+eval ac_res=\$$3
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+fi
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_header_mongrel
+
+# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
+# -------------------------------------------------------
+# Tests whether HEADER exists and can be compiled using the include files in
+# INCLUDES, setting the cache variable VAR accordingly.
+ac_fn_c_check_header_compile ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ eval "$3=yes"
+else
+ eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_header_compile
+
+# ac_fn_c_check_func LINENO FUNC VAR
+# ----------------------------------
+# Tests whether FUNC exists, setting the cache variable VAR accordingly
+ac_fn_c_check_func ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+/* Define $2 to an innocuous variant, in case <limits.h> declares $2.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $2 innocuous_$2
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $2 (); below.
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ <limits.h> exists even on freestanding compilers. */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $2
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $2 ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$2 || defined __stub___$2
+choke me
+#endif
+
+int
+main ()
+{
+return $2 ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ eval "$3=yes"
+else
+ eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_func
+cat >config.log <<_ACEOF
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+
+It was created by $as_me, which was
+generated by GNU Autoconf 2.69. Invocation command line was
+
+ $ $0 $@
+
+_ACEOF
+exec 5>>config.log
+{
+cat <<_ASUNAME
+## --------- ##
+## Platform. ##
+## --------- ##
+
+hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
+/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown`
+
+/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown`
+/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
+/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown`
+/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown`
+/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown`
+/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown`
+
+_ASUNAME
+
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ $as_echo "PATH: $as_dir"
+ done
+IFS=$as_save_IFS
+
+} >&5
+
+cat >&5 <<_ACEOF
+
+
+## ----------- ##
+## Core tests. ##
+## ----------- ##
+
+_ACEOF
+
+
+# Keep a trace of the command line.
+# Strip out --no-create and --no-recursion so they do not pile up.
+# Strip out --silent because we don't want to record it for future runs.
+# Also quote any args containing shell meta-characters.
+# Make two passes to allow for proper duplicate-argument suppression.
+ac_configure_args=
+ac_configure_args0=
+ac_configure_args1=
+ac_must_keep_next=false
+for ac_pass in 1 2
+do
+ for ac_arg
+ do
+ case $ac_arg in
+ -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil)
+ continue ;;
+ *\'*)
+ ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ esac
+ case $ac_pass in
+ 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
+ 2)
+ as_fn_append ac_configure_args1 " '$ac_arg'"
+ if test $ac_must_keep_next = true; then
+ ac_must_keep_next=false # Got value, back to normal.
+ else
+ case $ac_arg in
+ *=* | --config-cache | -C | -disable-* | --disable-* \
+ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
+ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
+ | -with-* | --with-* | -without-* | --without-* | --x)
+ case "$ac_configure_args0 " in
+ "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
+ esac
+ ;;
+ -* ) ac_must_keep_next=true ;;
+ esac
+ fi
+ as_fn_append ac_configure_args " '$ac_arg'"
+ ;;
+ esac
+ done
+done
+{ ac_configure_args0=; unset ac_configure_args0;}
+{ ac_configure_args1=; unset ac_configure_args1;}
+
+# When interrupted or exit'd, cleanup temporary files, and complete
+# config.log. We remove comments because anyway the quotes in there
+# would cause problems or look ugly.
+# WARNING: Use '\'' to represent an apostrophe within the trap.
+# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
+trap 'exit_status=$?
+ # Save into config.log some information that might help in debugging.
+ {
+ echo
+
+ $as_echo "## ---------------- ##
+## Cache variables. ##
+## ---------------- ##"
+ echo
+ # The following way of writing the cache mishandles newlines in values,
+(
+ for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
+ eval ac_val=\$$ac_var
+ case $ac_val in #(
+ *${as_nl}*)
+ case $ac_var in #(
+ *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+ esac
+ case $ac_var in #(
+ _ | IFS | as_nl) ;; #(
+ BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+ *) { eval $ac_var=; unset $ac_var;} ;;
+ esac ;;
+ esac
+ done
+ (set) 2>&1 |
+ case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
+ *${as_nl}ac_space=\ *)
+ sed -n \
+ "s/'\''/'\''\\\\'\'''\''/g;
+ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
+ ;; #(
+ *)
+ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+ ;;
+ esac |
+ sort
+)
+ echo
+
+ $as_echo "## ----------------- ##
+## Output variables. ##
+## ----------------- ##"
+ echo
+ for ac_var in $ac_subst_vars
+ do
+ eval ac_val=\$$ac_var
+ case $ac_val in
+ *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+ esac
+ $as_echo "$ac_var='\''$ac_val'\''"
+ done | sort
+ echo
+
+ if test -n "$ac_subst_files"; then
+ $as_echo "## ------------------- ##
+## File substitutions. ##
+## ------------------- ##"
+ echo
+ for ac_var in $ac_subst_files
+ do
+ eval ac_val=\$$ac_var
+ case $ac_val in
+ *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+ esac
+ $as_echo "$ac_var='\''$ac_val'\''"
+ done | sort
+ echo
+ fi
+
+ if test -s confdefs.h; then
+ $as_echo "## ----------- ##
+## confdefs.h. ##
+## ----------- ##"
+ echo
+ cat confdefs.h
+ echo
+ fi
+ test "$ac_signal" != 0 &&
+ $as_echo "$as_me: caught signal $ac_signal"
+ $as_echo "$as_me: exit $exit_status"
+ } >&5
+ rm -f core *.core core.conftest.* &&
+ rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
+ exit $exit_status
+' 0
+for ac_signal in 1 2 13 15; do
+ trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal
+done
+ac_signal=0
+
+# confdefs.h avoids OS command line length limits that DEFS can exceed.
+rm -f -r conftest* confdefs.h
+
+$as_echo "/* confdefs.h */" > confdefs.h
+
+# Predefined preprocessor variables.
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_NAME "$PACKAGE_NAME"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_VERSION "$PACKAGE_VERSION"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_STRING "$PACKAGE_STRING"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_URL "$PACKAGE_URL"
+_ACEOF
+
+
+# Let the site file select an alternate cache file if it wants to.
+# Prefer an explicitly selected file to automatically selected ones.
+ac_site_file1=NONE
+ac_site_file2=NONE
+if test -n "$CONFIG_SITE"; then
+ # We do not want a PATH search for config.site.
+ case $CONFIG_SITE in #((
+ -*) ac_site_file1=./$CONFIG_SITE;;
+ */*) ac_site_file1=$CONFIG_SITE;;
+ *) ac_site_file1=./$CONFIG_SITE;;
+ esac
+elif test "x$prefix" != xNONE; then
+ ac_site_file1=$prefix/share/config.site
+ ac_site_file2=$prefix/etc/config.site
+else
+ ac_site_file1=$ac_default_prefix/share/config.site
+ ac_site_file2=$ac_default_prefix/etc/config.site
+fi
+for ac_site_file in "$ac_site_file1" "$ac_site_file2"
+do
+ test "x$ac_site_file" = xNONE && continue
+ if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
+$as_echo "$as_me: loading site script $ac_site_file" >&6;}
+ sed 's/^/| /' "$ac_site_file" >&5
+ . "$ac_site_file" \
+ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "failed to load site script $ac_site_file
+See \`config.log' for more details" "$LINENO" 5; }
+ fi
+done
+
+if test -r "$cache_file"; then
+ # Some versions of bash will fail to source /dev/null (special files
+ # actually), so we avoid doing that. DJGPP emulates it as a regular file.
+ if test /dev/null != "$cache_file" && test -f "$cache_file"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
+$as_echo "$as_me: loading cache $cache_file" >&6;}
+ case $cache_file in
+ [\\/]* | ?:[\\/]* ) . "$cache_file";;
+ *) . "./$cache_file";;
+ esac
+ fi
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
+$as_echo "$as_me: creating cache $cache_file" >&6;}
+ >$cache_file
+fi
+
+# Check that the precious variables saved in the cache have kept the same
+# value.
+ac_cache_corrupted=false
+for ac_var in $ac_precious_vars; do
+ eval ac_old_set=\$ac_cv_env_${ac_var}_set
+ eval ac_new_set=\$ac_env_${ac_var}_set
+ eval ac_old_val=\$ac_cv_env_${ac_var}_value
+ eval ac_new_val=\$ac_env_${ac_var}_value
+ case $ac_old_set,$ac_new_set in
+ set,)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+ ac_cache_corrupted=: ;;
+ ,set)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+ ac_cache_corrupted=: ;;
+ ,);;
+ *)
+ if test "x$ac_old_val" != "x$ac_new_val"; then
+ # differences in whitespace do not lead to failure.
+ ac_old_val_w=`echo x $ac_old_val`
+ ac_new_val_w=`echo x $ac_new_val`
+ if test "$ac_old_val_w" != "$ac_new_val_w"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
+$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+ ac_cache_corrupted=:
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
+$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
+ eval $ac_var=\$ac_old_val
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5
+$as_echo "$as_me: former value: \`$ac_old_val'" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5
+$as_echo "$as_me: current value: \`$ac_new_val'" >&2;}
+ fi;;
+ esac
+ # Pass precious variables to config.status.
+ if test "$ac_new_set" = set; then
+ case $ac_new_val in
+ *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+ *) ac_arg=$ac_var=$ac_new_val ;;
+ esac
+ case " $ac_configure_args " in
+ *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy.
+ *) as_fn_append ac_configure_args " '$ac_arg'" ;;
+ esac
+ fi
+done
+if $ac_cache_corrupted; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
+$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
+ as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
+fi
+## -------------------- ##
+## Main body of script. ##
+## -------------------- ##
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+
+
+ac_aux_dir=
+for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
+ if test -f "$ac_dir/install-sh"; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/install-sh -c"
+ break
+ elif test -f "$ac_dir/install.sh"; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/install.sh -c"
+ break
+ elif test -f "$ac_dir/shtool"; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/shtool install -c"
+ break
+ fi
+done
+if test -z "$ac_aux_dir"; then
+ as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5
+fi
+
+# These three variables are undocumented and unsupported,
+# and are intended to be withdrawn in a future Autoconf release.
+# They can cause serious problems if a builder's source tree is in a directory
+# whose full name contains unusual characters.
+ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var.
+ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var.
+ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var.
+
+
+# Make sure we can run config.sub.
+$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
+ as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
+$as_echo_n "checking build system type... " >&6; }
+if ${ac_cv_build+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_build_alias=$build_alias
+test "x$ac_build_alias" = x &&
+ ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
+test "x$ac_build_alias" = x &&
+ as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5
+ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
+ as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
+$as_echo "$ac_cv_build" >&6; }
+case $ac_cv_build in
+*-*-*) ;;
+*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;;
+esac
+build=$ac_cv_build
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_build
+shift
+build_cpu=$1
+build_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+build_os=$*
+IFS=$ac_save_IFS
+case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
+$as_echo_n "checking host system type... " >&6; }
+if ${ac_cv_host+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test "x$host_alias" = x; then
+ ac_cv_host=$ac_cv_build
+else
+ ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
+ as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
+$as_echo "$ac_cv_host" >&6; }
+case $ac_cv_host in
+*-*-*) ;;
+*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;;
+esac
+host=$ac_cv_host
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_host
+shift
+host_cpu=$1
+host_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+host_os=$*
+IFS=$ac_save_IFS
+case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking target system type" >&5
+$as_echo_n "checking target system type... " >&6; }
+if ${ac_cv_target+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test "x$target_alias" = x; then
+ ac_cv_target=$ac_cv_host
+else
+ ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` ||
+ as_fn_error $? "$SHELL $ac_aux_dir/config.sub $target_alias failed" "$LINENO" 5
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_target" >&5
+$as_echo "$ac_cv_target" >&6; }
+case $ac_cv_target in
+*-*-*) ;;
+*) as_fn_error $? "invalid value of canonical target" "$LINENO" 5;;
+esac
+target=$ac_cv_target
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_target
+shift
+target_cpu=$1
+target_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+target_os=$*
+IFS=$ac_save_IFS
+case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac
+
+
+# The aliases save the names the user supplied, while $host etc.
+# will get canonicalized.
+test -n "$target_alias" &&
+ test "$program_prefix$program_suffix$program_transform_name" = \
+ NONENONEs,x,x, &&
+ program_prefix=${target_alias}-
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}gcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_CC="${ac_tool_prefix}gcc"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+ ac_ct_CC=$CC
+ # Extract the first word of "gcc", so it can be a program name with args.
+set dummy gcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_CC"; then
+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_CC="gcc"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_CC" = x; then
+ CC=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ CC=$ac_ct_CC
+ fi
+else
+ CC="$ac_cv_prog_CC"
+fi
+
+if test -z "$CC"; then
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_CC="${ac_tool_prefix}cc"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ fi
+fi
+if test -z "$CC"; then
+ # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+ ac_prog_rejected=no
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+ ac_prog_rejected=yes
+ continue
+ fi
+ ac_cv_prog_CC="cc"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+if test $ac_prog_rejected = yes; then
+ # We found a bogon in the path, so make sure we never use it.
+ set dummy $ac_cv_prog_CC
+ shift
+ if test $# != 0; then
+ # We chose a different compiler from the bogus one.
+ # However, it has the same basename, so the bogon will be chosen
+ # first if we set CC to just the basename; use the full file name.
+ shift
+ ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
+ fi
+fi
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$CC"; then
+ if test -n "$ac_tool_prefix"; then
+ for ac_prog in cl.exe
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$CC" && break
+ done
+fi
+if test -z "$CC"; then
+ ac_ct_CC=$CC
+ for ac_prog in cl.exe
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_CC"; then
+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_CC="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$ac_ct_CC" && break
+done
+
+ if test "x$ac_ct_CC" = x; then
+ CC=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ CC=$ac_ct_CC
+ fi
+fi
+
+fi
+
+
+test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "no acceptable C compiler found in \$PATH
+See \`config.log' for more details" "$LINENO" 5; }
+
+# Provide some information about the compiler.
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion; do
+ { { ac_try="$ac_compiler $ac_option >&5"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_compiler $ac_option >&5") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ sed '10a\
+... rest of stderr output deleted ...
+ 10q' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ fi
+ rm -f conftest.er1 conftest.err
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+done
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
+# Try to create an executable without -o first, disregard a.out.
+# It will help us diagnose broken compilers, and finding out an intuition
+# of exeext.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
+$as_echo_n "checking whether the C compiler works... " >&6; }
+ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+
+# The possible output files:
+ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
+
+ac_rmfiles=
+for ac_file in $ac_files
+do
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+ * ) ac_rmfiles="$ac_rmfiles $ac_file";;
+ esac
+done
+rm -f $ac_rmfiles
+
+if { { ac_try="$ac_link_default"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_link_default") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then :
+ # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
+# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
+# in a Makefile. We should not override ac_cv_exeext if it was cached,
+# so that the user can short-circuit this test for compilers unknown to
+# Autoconf.
+for ac_file in $ac_files ''
+do
+ test -f "$ac_file" || continue
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
+ ;;
+ [ab].out )
+ # We found the default executable, but exeext='' is most
+ # certainly right.
+ break;;
+ *.* )
+ if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
+ then :; else
+ ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+ fi
+ # We set ac_cv_exeext here because the later test for it is not
+ # safe: cross compilers may not add the suffix if given an `-o'
+ # argument, so we may need to know it at that point already.
+ # Even if this section looks crufty: it has the advantage of
+ # actually working.
+ break;;
+ * )
+ break;;
+ esac
+done
+test "$ac_cv_exeext" = no && ac_cv_exeext=
+
+else
+ ac_file=''
+fi
+if test -z "$ac_file"; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "C compiler cannot create executables
+See \`config.log' for more details" "$LINENO" 5; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
+$as_echo_n "checking for C compiler default output file name... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
+$as_echo "$ac_file" >&6; }
+ac_exeext=$ac_cv_exeext
+
+rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
+$as_echo_n "checking for suffix of executables... " >&6; }
+if { { ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then :
+ # If both `conftest.exe' and `conftest' are `present' (well, observable)
+# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will
+# work properly (i.e., refer to `conftest.exe'), while it won't with
+# `rm'.
+for ac_file in conftest.exe conftest conftest.*; do
+ test -f "$ac_file" || continue
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+ *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+ break;;
+ * ) break;;
+ esac
+done
+else
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+rm -f conftest conftest$ac_cv_exeext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
+$as_echo "$ac_cv_exeext" >&6; }
+
+rm -f conftest.$ac_ext
+EXEEXT=$ac_cv_exeext
+ac_exeext=$EXEEXT
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <stdio.h>
+int
+main ()
+{
+FILE *f = fopen ("conftest.out", "w");
+ return ferror (f) || fclose (f) != 0;
+
+ ;
+ return 0;
+}
+_ACEOF
+ac_clean_files="$ac_clean_files conftest.out"
+# Check that the compiler produces executables we can run. If not, either
+# the compiler is broken, or we cross compile.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
+$as_echo_n "checking whether we are cross compiling... " >&6; }
+if test "$cross_compiling" != yes; then
+ { { ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+ if { ac_try='./conftest$ac_cv_exeext'
+ { { case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; }; then
+ cross_compiling=no
+ else
+ if test "$cross_compiling" = maybe; then
+ cross_compiling=yes
+ else
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot run C compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details" "$LINENO" 5; }
+ fi
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
+$as_echo "$cross_compiling" >&6; }
+
+rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
+$as_echo_n "checking for suffix of object files... " >&6; }
+if ${ac_cv_objext+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.o conftest.obj
+if { { ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_compile") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then :
+ for ac_file in conftest.o conftest.obj conftest.*; do
+ test -f "$ac_file" || continue;
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
+ *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
+ break;;
+ esac
+done
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot compute suffix of object files: cannot compile
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+rm -f conftest.$ac_cv_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
+$as_echo "$ac_cv_objext" >&6; }
+OBJEXT=$ac_cv_objext
+ac_objext=$OBJEXT
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
+$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
+if ${ac_cv_c_compiler_gnu+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+#ifndef __GNUC__
+ choke me
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_compiler_gnu=yes
+else
+ ac_compiler_gnu=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
+$as_echo "$ac_cv_c_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+ GCC=yes
+else
+ GCC=
+fi
+ac_test_CFLAGS=${CFLAGS+set}
+ac_save_CFLAGS=$CFLAGS
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
+$as_echo_n "checking whether $CC accepts -g... " >&6; }
+if ${ac_cv_prog_cc_g+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_save_c_werror_flag=$ac_c_werror_flag
+ ac_c_werror_flag=yes
+ ac_cv_prog_cc_g=no
+ CFLAGS="-g"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_prog_cc_g=yes
+else
+ CFLAGS=""
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+else
+ ac_c_werror_flag=$ac_save_c_werror_flag
+ CFLAGS="-g"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_prog_cc_g=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_c_werror_flag=$ac_save_c_werror_flag
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
+$as_echo "$ac_cv_prog_cc_g" >&6; }
+if test "$ac_test_CFLAGS" = set; then
+ CFLAGS=$ac_save_CFLAGS
+elif test $ac_cv_prog_cc_g = yes; then
+ if test "$GCC" = yes; then
+ CFLAGS="-g -O2"
+ else
+ CFLAGS="-g"
+ fi
+else
+ if test "$GCC" = yes; then
+ CFLAGS="-O2"
+ else
+ CFLAGS=
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
+$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
+if ${ac_cv_prog_cc_c89+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_cv_prog_cc_c89=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <stdarg.h>
+#include <stdio.h>
+struct stat;
+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
+struct buf { int x; };
+FILE * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+ char **p;
+ int i;
+{
+ return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+ char *s;
+ va_list v;
+ va_start (v,p);
+ s = g (p, va_arg (v,int));
+ va_end (v);
+ return s;
+}
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has
+ function prototypes and stuff, but not '\xHH' hex character constants.
+ These don't provoke an error unfortunately, instead are silently treated
+ as 'x'. The following induces an error, until -std is added to get
+ proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an
+ array size at least. It's necessary to write '\x00'==0 to get something
+ that's true only with -std. */
+int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
+/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
+ inside strings and character constants. */
+#define FOO(x) 'x'
+int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
+
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
+int argc;
+char **argv;
+int
+main ()
+{
+return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1];
+ ;
+ return 0;
+}
+_ACEOF
+for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
+ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+ CC="$ac_save_CC $ac_arg"
+ if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_prog_cc_c89=$ac_arg
+fi
+rm -f core conftest.err conftest.$ac_objext
+ test "x$ac_cv_prog_cc_c89" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+
+fi
+# AC_CACHE_VAL
+case "x$ac_cv_prog_cc_c89" in
+ x)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+$as_echo "none needed" >&6; } ;;
+ xno)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;;
+ *)
+ CC="$CC $ac_cv_prog_cc_c89"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
+$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
+esac
+if test "x$ac_cv_prog_cc_c89" != xno; then :
+
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
+$as_echo_n "checking how to run the C preprocessor... " >&6; }
+# On Suns, sometimes $CPP names a directory.
+if test -n "$CPP" && test -d "$CPP"; then
+ CPP=
+fi
+if test -z "$CPP"; then
+ if ${ac_cv_prog_CPP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ # Double quotes because CPP needs to be expanded
+ for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
+ do
+ ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+ # Use a header file that comes with gcc, so configuring glibc
+ # with a fresh cross-compiler works.
+ # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ # <limits.h> exists even on freestanding compilers.
+ # On the NeXT, cc -E runs the code through the compiler's parser,
+ # not just through cpp. "Syntax error" is here to catch this case.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+ Syntax error
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+
+else
+ # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+ # OK, works on sane cases. Now check whether nonexistent headers
+ # can be detected and how.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+ # Broken: success on invalid input.
+continue
+else
+ # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+ break
+fi
+
+ done
+ ac_cv_prog_CPP=$CPP
+
+fi
+ CPP=$ac_cv_prog_CPP
+else
+ ac_cv_prog_CPP=$CPP
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
+$as_echo "$CPP" >&6; }
+ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+ # Use a header file that comes with gcc, so configuring glibc
+ # with a fresh cross-compiler works.
+ # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+ # <limits.h> exists even on freestanding compilers.
+ # On the NeXT, cc -E runs the code through the compiler's parser,
+ # not just through cpp. "Syntax error" is here to catch this case.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+ Syntax error
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+
+else
+ # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+ # OK, works on sane cases. Now check whether nonexistent headers
+ # can be detected and how.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+ # Broken: success on invalid input.
+continue
+else
+ # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+
+else
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
+$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
+if ${ac_cv_path_GREP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -z "$GREP"; then
+ ac_path_GREP_found=false
+ # Loop through the user's path and test for each of PROGNAME-LIST
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_prog in grep ggrep; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
+ as_fn_executable_p "$ac_path_GREP" || continue
+# Check for GNU ac_path_GREP and select it if it is found.
+ # Check for GNU $ac_path_GREP
+case `"$ac_path_GREP" --version 2>&1` in
+*GNU*)
+ ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
+*)
+ ac_count=0
+ $as_echo_n 0123456789 >"conftest.in"
+ while :
+ do
+ cat "conftest.in" "conftest.in" >"conftest.tmp"
+ mv "conftest.tmp" "conftest.in"
+ cp "conftest.in" "conftest.nl"
+ $as_echo 'GREP' >> "conftest.nl"
+ "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+ as_fn_arith $ac_count + 1 && ac_count=$as_val
+ if test $ac_count -gt ${ac_path_GREP_max-0}; then
+ # Best one so far, save it but keep looking for a better one
+ ac_cv_path_GREP="$ac_path_GREP"
+ ac_path_GREP_max=$ac_count
+ fi
+ # 10*(2^10) chars as input seems more than enough
+ test $ac_count -gt 10 && break
+ done
+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+ $ac_path_GREP_found && break 3
+ done
+ done
+ done
+IFS=$as_save_IFS
+ if test -z "$ac_cv_path_GREP"; then
+ as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+ fi
+else
+ ac_cv_path_GREP=$GREP
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
+$as_echo "$ac_cv_path_GREP" >&6; }
+ GREP="$ac_cv_path_GREP"
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
+$as_echo_n "checking for egrep... " >&6; }
+if ${ac_cv_path_EGREP+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
+ then ac_cv_path_EGREP="$GREP -E"
+ else
+ if test -z "$EGREP"; then
+ ac_path_EGREP_found=false
+ # Loop through the user's path and test for each of PROGNAME-LIST
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_prog in egrep; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
+ as_fn_executable_p "$ac_path_EGREP" || continue
+# Check for GNU ac_path_EGREP and select it if it is found.
+ # Check for GNU $ac_path_EGREP
+case `"$ac_path_EGREP" --version 2>&1` in
+*GNU*)
+ ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
+*)
+ ac_count=0
+ $as_echo_n 0123456789 >"conftest.in"
+ while :
+ do
+ cat "conftest.in" "conftest.in" >"conftest.tmp"
+ mv "conftest.tmp" "conftest.in"
+ cp "conftest.in" "conftest.nl"
+ $as_echo 'EGREP' >> "conftest.nl"
+ "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+ as_fn_arith $ac_count + 1 && ac_count=$as_val
+ if test $ac_count -gt ${ac_path_EGREP_max-0}; then
+ # Best one so far, save it but keep looking for a better one
+ ac_cv_path_EGREP="$ac_path_EGREP"
+ ac_path_EGREP_max=$ac_count
+ fi
+ # 10*(2^10) chars as input seems more than enough
+ test $ac_count -gt 10 && break
+ done
+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+ $ac_path_EGREP_found && break 3
+ done
+ done
+ done
+IFS=$as_save_IFS
+ if test -z "$ac_cv_path_EGREP"; then
+ as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+ fi
+else
+ ac_cv_path_EGREP=$EGREP
+fi
+
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
+$as_echo "$ac_cv_path_EGREP" >&6; }
+ EGREP="$ac_cv_path_EGREP"
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
+$as_echo_n "checking for ANSI C header files... " >&6; }
+if ${ac_cv_header_stdc+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_header_stdc=yes
+else
+ ac_cv_header_stdc=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+if test $ac_cv_header_stdc = yes; then
+ # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <string.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "memchr" >/dev/null 2>&1; then :
+
+else
+ ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+ # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <stdlib.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "free" >/dev/null 2>&1; then :
+
+else
+ ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+ # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+ if test "$cross_compiling" = yes; then :
+ :
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <ctype.h>
+#include <stdlib.h>
+#if ((' ' & 0x0FF) == 0x020)
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#else
+# define ISLOWER(c) \
+ (('a' <= (c) && (c) <= 'i') \
+ || ('j' <= (c) && (c) <= 'r') \
+ || ('s' <= (c) && (c) <= 'z'))
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+#endif
+
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+int
+main ()
+{
+ int i;
+ for (i = 0; i < 256; i++)
+ if (XOR (islower (i), ISLOWER (i))
+ || toupper (i) != TOUPPER (i))
+ return 2;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+
+else
+ ac_cv_header_stdc=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
+$as_echo "$ac_cv_header_stdc" >&6; }
+if test $ac_cv_header_stdc = yes; then
+
+$as_echo "#define STDC_HEADERS 1" >>confdefs.h
+
+fi
+
+
+
+# Check whether --with-kpathsea-include was given.
+if test "${with_kpathsea_include+set}" = set; then :
+ withval=$with_kpathsea_include;
+ if test x$withval = xyes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Usage is: --with-kpathsea-include=includedir" >&5
+$as_echo "$as_me: WARNING: Usage is: --with-kpathsea-include=includedir" >&2;}
+ else
+ if test x$withval = xno; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Usage is: --with-kpathsea-include=includedir" >&5
+$as_echo "$as_me: WARNING: Usage is: --with-kpathsea-include=includedir" >&2;}
+ else
+ kpathsea_include=$withval
+ fi
+ fi
+
+fi
+
+
+
+
+# Check whether --with-kpathsea-lib was given.
+if test "${with_kpathsea_lib+set}" = set; then :
+ withval=$with_kpathsea_lib;
+ if test x$withval = xyes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Usage is: --with-kpathsea-lib=libdir" >&5
+$as_echo "$as_me: WARNING: Usage is: --with-kpathsea-lib=libdir" >&2;}
+ else
+ if test x$withval = xno; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Usage is: --with-kpathsea-lib=libdir" >&5
+$as_echo "$as_me: WARNING: Usage is: --with-kpathsea-lib=libdir" >&2;}
+ else
+ kpathsea_lib=$withval
+ fi
+ fi
+
+fi
+
+
+
+if test -n "$kpathsea_include" -o -n "$kpathsea_lib"; then
+ LIBS="$LIBS -L$kpathsea_lib"
+ CPPFLAGS="$CPPFLAGS -I$kpathsea_include -I$srcdir"
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for kpse_set_program_name in -lkpathsea" >&5
+$as_echo_n "checking for kpse_set_program_name in -lkpathsea... " >&6; }
+if ${ac_cv_lib_kpathsea_kpse_set_program_name+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lkpathsea $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char kpse_set_program_name ();
+int
+main ()
+{
+return kpse_set_program_name ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_kpathsea_kpse_set_program_name=yes
+else
+ ac_cv_lib_kpathsea_kpse_set_program_name=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_kpathsea_kpse_set_program_name" >&5
+$as_echo "$ac_cv_lib_kpathsea_kpse_set_program_name" >&6; }
+if test "x$ac_cv_lib_kpathsea_kpse_set_program_name" = xyes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBKPATHSEA 1
+_ACEOF
+
+ LIBS="-lkpathsea $LIBS"
+
+else
+ $as_echo "#define OLD_KPATHSEA 1" >>confdefs.h
+
+fi
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for kpse_init_prog in -lkpathsea" >&5
+$as_echo_n "checking for kpse_init_prog in -lkpathsea... " >&6; }
+if ${ac_cv_lib_kpathsea_kpse_init_prog+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lkpathsea $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char kpse_init_prog ();
+int
+main ()
+{
+return kpse_init_prog ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_kpathsea_kpse_init_prog=yes
+else
+ ac_cv_lib_kpathsea_kpse_init_prog=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_kpathsea_kpse_init_prog" >&5
+$as_echo "$ac_cv_lib_kpathsea_kpse_init_prog" >&6; }
+if test "x$ac_cv_lib_kpathsea_kpse_init_prog" = xyes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBKPATHSEA 1
+_ACEOF
+
+ LIBS="-lkpathsea $LIBS"
+
+else
+
+ as_fn_error $? "Can't find kpathsea library! Use --with-kpathsea-lib option." "$LINENO" 5
+fi
+
+
+ # On IRIX 5.3, sys/types and inttypes.h are conflicting.
+for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
+ inttypes.h stdint.h unistd.h
+do :
+ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
+"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+ac_fn_c_check_header_mongrel "$LINENO" "kpathsea/kpathsea.h" "ac_cv_header_kpathsea_kpathsea_h" "$ac_includes_default"
+if test "x$ac_cv_header_kpathsea_kpathsea_h" = xyes; then :
+
+else
+ $as_echo "#define VERY_OLD_KPATHSEA 1" >>confdefs.h
+
+fi
+
+
+
+ ac_fn_c_check_header_mongrel "$LINENO" "kpathsea/c-auto.h" "ac_cv_header_kpathsea_c_auto_h" "$ac_includes_default"
+if test "x$ac_cv_header_kpathsea_c_auto_h" = xyes; then :
+
+else
+
+ as_fn_error $? "Can't find kpathsea include files! Use --with-kpathsea-include option." "$LINENO" 5
+fi
+
+
+else
+ CPPFLAGS="$CPPFLAGS -I$srcdir"
+fi
+
+
+if test "x$CC" = xgcc; then
+ XX_CFLAGS="-Wall"
+else
+ case "$host" in
+ alpha-dec-osf*)
+ XX_CFLAGS="-std1 -O2 -g3"
+ ;;
+ *)
+ XX_CFLAGS=
+ ;;
+ esac
+fi
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5
+$as_echo_n "checking for an ANSI C-conforming const... " >&6; }
+if ${ac_cv_c_const+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+#ifndef __cplusplus
+ /* Ultrix mips cc rejects this sort of thing. */
+ typedef int charset[2];
+ const charset cs = { 0, 0 };
+ /* SunOS 4.1.1 cc rejects this. */
+ char const *const *pcpcc;
+ char **ppc;
+ /* NEC SVR4.0.2 mips cc rejects this. */
+ struct point {int x, y;};
+ static struct point const zero = {0,0};
+ /* AIX XL C 1.02.0.0 rejects this.
+ It does not let you subtract one const X* pointer from another in
+ an arm of an if-expression whose if-part is not a constant
+ expression */
+ const char *g = "string";
+ pcpcc = &g + (g ? g-g : 0);
+ /* HPUX 7.0 cc rejects these. */
+ ++pcpcc;
+ ppc = (char**) pcpcc;
+ pcpcc = (char const *const *) ppc;
+ { /* SCO 3.2v4 cc rejects this sort of thing. */
+ char tx;
+ char *t = &tx;
+ char const *s = 0 ? (char *) 0 : (char const *) 0;
+
+ *t++ = 0;
+ if (s) return 0;
+ }
+ { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */
+ int x[] = {25, 17};
+ const int *foo = &x[0];
+ ++foo;
+ }
+ { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */
+ typedef const int *iptr;
+ iptr p = 0;
+ ++p;
+ }
+ { /* AIX XL C 1.02.0.0 rejects this sort of thing, saying
+ "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */
+ struct s { int j; const int *ap[3]; } bx;
+ struct s *b = &bx; b->j = 5;
+ }
+ { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */
+ const int foo = 10;
+ if (!foo) return 0;
+ }
+ return !cs[0] && !zero.x;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_c_const=yes
+else
+ ac_cv_c_const=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5
+$as_echo "$ac_cv_c_const" >&6; }
+if test $ac_cv_c_const = no; then
+
+$as_echo "#define const /**/" >>confdefs.h
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether struct tm is in sys/time.h or time.h" >&5
+$as_echo_n "checking whether struct tm is in sys/time.h or time.h... " >&6; }
+if ${ac_cv_struct_tm+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <sys/types.h>
+#include <time.h>
+
+int
+main ()
+{
+struct tm tm;
+ int *p = &tm.tm_sec;
+ return !p;
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_struct_tm=time.h
+else
+ ac_cv_struct_tm=sys/time.h
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_struct_tm" >&5
+$as_echo "$ac_cv_struct_tm" >&6; }
+if test $ac_cv_struct_tm = sys/time.h; then
+
+$as_echo "#define TM_IN_SYS_TIME 1" >>confdefs.h
+
+fi
+
+
+
+for ac_func in vprintf
+do :
+ ac_fn_c_check_func "$LINENO" "vprintf" "ac_cv_func_vprintf"
+if test "x$ac_cv_func_vprintf" = xyes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_VPRINTF 1
+_ACEOF
+
+ac_fn_c_check_func "$LINENO" "_doprnt" "ac_cv_func__doprnt"
+if test "x$ac_cv_func__doprnt" = xyes; then :
+
+$as_echo "#define HAVE_DOPRNT 1" >>confdefs.h
+
+fi
+
+fi
+done
+
+
+for ac_func in strdup strstr strtol strtoul
+do :
+ as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+
+if test "x$ac_cv_func_strdup" = xno; then
+ no_strdup=-DNO_STRDUP
+fi
+
+
+# Extract the first word of "rm", so it can be a program name with args.
+set dummy rm; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_RM+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$RM"; then
+ ac_cv_prog_RM="$RM" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_RM="rm"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+RM=$ac_cv_prog_RM
+if test -n "$RM"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RM" >&5
+$as_echo "$RM" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+# Find a good install program. We prefer a C program (faster),
+# so one script is as good as another. But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AmigaOS /C/install, which installs bootblocks on floppy discs
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# OS/2's system install, which has a completely different semantic
+# ./install, which can be erroneously created by make from ./install.sh.
+# Reject install programs that cannot install multiple files.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
+$as_echo_n "checking for a BSD-compatible install... " >&6; }
+if test -z "$INSTALL"; then
+if ${ac_cv_path_install+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ # Account for people who put trailing slashes in PATH elements.
+case $as_dir/ in #((
+ ./ | .// | /[cC]/* | \
+ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
+ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
+ /usr/ucb/* ) ;;
+ *)
+ # OSF1 and SCO ODT 3.0 have their own names for install.
+ # Don't use installbsd from OSF since it installs stuff as root
+ # by default.
+ for ac_prog in ginstall scoinst install; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
+ if test $ac_prog = install &&
+ grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ # AIX install. It has an incompatible calling convention.
+ :
+ elif test $ac_prog = install &&
+ grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ # program-specific install script used by HP pwplus--don't use.
+ :
+ else
+ rm -rf conftest.one conftest.two conftest.dir
+ echo one > conftest.one
+ echo two > conftest.two
+ mkdir conftest.dir
+ if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
+ test -s conftest.one && test -s conftest.two &&
+ test -s conftest.dir/conftest.one &&
+ test -s conftest.dir/conftest.two
+ then
+ ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+ break 3
+ fi
+ fi
+ fi
+ done
+ done
+ ;;
+esac
+
+ done
+IFS=$as_save_IFS
+
+rm -rf conftest.one conftest.two conftest.dir
+
+fi
+ if test "${ac_cv_path_install+set}" = set; then
+ INSTALL=$ac_cv_path_install
+ else
+ # As a last resort, use the slow shell script. Don't cache a
+ # value for INSTALL within a source directory, because that will
+ # break other packages using the cache if that directory is
+ # removed, or if the value is a relative name.
+ INSTALL=$ac_install_sh
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
+$as_echo "$INSTALL" >&6; }
+
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+# It thinks the first close brace ends the variable substitution.
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
+
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+
+if test -z "$kpathsea_include" -a -z "$kpathsea_lib"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING:
+
+ hbf2gf will be compiled without file search library support!
+ For kpathsea support use the --with-kpathsea-lib and
+ --with-kpathsea-include options.
+ " >&5
+$as_echo "$as_me: WARNING:
+
+ hbf2gf will be compiled without file search library support!
+ For kpathsea support use the --with-kpathsea-lib and
+ --with-kpathsea-include options.
+ " >&2;}
+fi
+
+ac_config_files="$ac_config_files Makefile"
+
+cat >confcache <<\_ACEOF
+# This file is a shell script that caches the results of configure
+# tests run on this system so they can be shared between configure
+# scripts and configure runs, see configure's option --config-cache.
+# It is not useful on other systems. If it contains results you don't
+# want to keep, you may remove or edit it.
+#
+# config.status only pays attention to the cache file if you give it
+# the --recheck option to rerun configure.
+#
+# `ac_cv_env_foo' variables (set or unset) will be overridden when
+# loading this file, other *unset* `ac_cv_foo' will be assigned the
+# following values.
+
+_ACEOF
+
+# The following way of writing the cache mishandles newlines in values,
+# but we know of no workaround that is simple, portable, and efficient.
+# So, we kill variables containing newlines.
+# Ultrix sh set writes to stderr and can't be redirected directly,
+# and sets the high bit in the cache file unless we assign to the vars.
+(
+ for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
+ eval ac_val=\$$ac_var
+ case $ac_val in #(
+ *${as_nl}*)
+ case $ac_var in #(
+ *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+ esac
+ case $ac_var in #(
+ _ | IFS | as_nl) ;; #(
+ BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+ *) { eval $ac_var=; unset $ac_var;} ;;
+ esac ;;
+ esac
+ done
+
+ (set) 2>&1 |
+ case $as_nl`(ac_space=' '; set) 2>&1` in #(
+ *${as_nl}ac_space=\ *)
+ # `set' does not quote correctly, so add quotes: double-quote
+ # substitution turns \\\\ into \\, and sed turns \\ into \.
+ sed -n \
+ "s/'/'\\\\''/g;
+ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+ ;; #(
+ *)
+ # `set' quotes correctly as required by POSIX, so do not add quotes.
+ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+ ;;
+ esac |
+ sort
+) |
+ sed '
+ /^ac_cv_env_/b end
+ t clear
+ :clear
+ s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+ t end
+ s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+ :end' >>confcache
+if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
+ if test -w "$cache_file"; then
+ if test "x$cache_file" != "x/dev/null"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
+$as_echo "$as_me: updating cache $cache_file" >&6;}
+ if test ! -f "$cache_file" || test -h "$cache_file"; then
+ cat confcache >"$cache_file"
+ else
+ case $cache_file in #(
+ */* | ?:*)
+ mv -f confcache "$cache_file"$$ &&
+ mv -f "$cache_file"$$ "$cache_file" ;; #(
+ *)
+ mv -f confcache "$cache_file" ;;
+ esac
+ fi
+ fi
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
+$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
+ fi
+fi
+rm -f confcache
+
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+# Let make expand exec_prefix.
+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+
+# Transform confdefs.h into DEFS.
+# Protect against shell expansion while executing Makefile rules.
+# Protect against Makefile macro expansion.
+#
+# If the first sed substitution is executed (which looks for macros that
+# take arguments), then branch to the quote section. Otherwise,
+# look for a macro that doesn't take arguments.
+ac_script='
+:mline
+/\\$/{
+ N
+ s,\\\n,,
+ b mline
+}
+t clear
+:clear
+s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g
+t quote
+s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g
+t quote
+b any
+:quote
+s/[ `~#$^&*(){}\\|;'\''"<>?]/\\&/g
+s/\[/\\&/g
+s/\]/\\&/g
+s/\$/$$/g
+H
+:any
+${
+ g
+ s/^\n//
+ s/\n/ /g
+ p
+}
+'
+DEFS=`sed -n "$ac_script" confdefs.h`
+
+
+ac_libobjs=
+ac_ltlibobjs=
+U=
+for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
+ # 1. Remove the extension, and $U if already installed.
+ ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
+ ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
+ # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR
+ # will be set to the directory where LIBOBJS objects are built.
+ as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
+ as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo'
+done
+LIBOBJS=$ac_libobjs
+
+LTLIBOBJS=$ac_ltlibobjs
+
+
+
+: "${CONFIG_STATUS=./config.status}"
+ac_write_fail=0
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files $CONFIG_STATUS"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
+$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
+as_write_fail=0
+cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
+#! $SHELL
+# Generated by $as_me.
+# Run this file to recreate the current configuration.
+# Compiler output produced by configure, useful for debugging
+# configure, is in config.log if it exists.
+
+debug=false
+ac_cs_recheck=false
+ac_cs_silent=false
+
+SHELL=\${CONFIG_SHELL-$SHELL}
+export SHELL
+_ASEOF
+cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+ emulate sh
+ NULLCMD=:
+ # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+ setopt NO_GLOB_SUBST
+else
+ case `(set -o) 2>/dev/null` in #(
+ *posix*) :
+ set -o posix ;; #(
+ *) :
+ ;;
+esac
+fi
+
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+ as_echo='print -r --'
+ as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+ as_echo='printf %s\n'
+ as_echo_n='printf %s'
+else
+ if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+ as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+ as_echo_n='/usr/ucb/echo -n'
+ else
+ as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+ as_echo_n_body='eval
+ arg=$1;
+ case $arg in #(
+ *"$as_nl"*)
+ expr "X$arg" : "X\\(.*\\)$as_nl";
+ arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+ esac;
+ expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+ '
+ export as_echo_n_body
+ as_echo_n='sh -c $as_echo_n_body as_echo'
+ fi
+ export as_echo_body
+ as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ PATH_SEPARATOR=:
+ (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+ (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+ PATH_SEPARATOR=';'
+ }
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order. Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" "" $as_nl"
+
+# Find who we are. Look in the path if we contain no directory separator.
+as_myself=
+case $0 in #((
+ *[\\/]* ) as_myself=$0 ;;
+ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+ done
+IFS=$as_save_IFS
+
+ ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+ as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+ $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+ exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there. '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+
+# as_fn_error STATUS ERROR [LINENO LOG_FD]
+# ----------------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with STATUS, using 1 if that was 0.
+as_fn_error ()
+{
+ as_status=$1; test $as_status -eq 0 && as_status=1
+ if test "$4"; then
+ as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+ fi
+ $as_echo "$as_me: error: $2" >&2
+ as_fn_exit $as_status
+} # as_fn_error
+
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+ return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+ set +e
+ as_fn_set_status $1
+ exit $1
+} # as_fn_exit
+
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+ { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+ eval 'as_fn_append ()
+ {
+ eval $1+=\$2
+ }'
+else
+ as_fn_append ()
+ {
+ eval $1=\$$1\$2
+ }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+ eval 'as_fn_arith ()
+ {
+ as_val=$(( $* ))
+ }'
+else
+ as_fn_arith ()
+ {
+ as_val=`expr "$@" || test $? -eq 1`
+ }
+fi # as_fn_arith
+
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+ test "X`expr 00001 : '.*\(...\)'`" = X001; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+ as_basename=basename
+else
+ as_basename=false
+fi
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+ as_dirname=dirname
+else
+ as_dirname=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+ X"$0" : 'X\(//\)$' \| \
+ X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+ sed '/^.*\/\([^/][^/]*\)\/*$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in #(((((
+-n*)
+ case `echo 'xy\c'` in
+ *c*) ECHO_T=' ';; # ECHO_T is single tab character.
+ xy) ECHO_C='\c';;
+ *) echo `echo ksh88 bug on AIX 6.1` > /dev/null
+ ECHO_T=' ';;
+ esac;;
+*)
+ ECHO_N='-n';;
+esac
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+ rm -f conf$$.dir/conf$$.file
+else
+ rm -f conf$$.dir
+ mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+ if ln -s conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s='ln -s'
+ # ... but there are two gotchas:
+ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+ # In both cases, we have to default to `cp -pR'.
+ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+ as_ln_s='cp -pR'
+ elif ln conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s=ln
+ else
+ as_ln_s='cp -pR'
+ fi
+else
+ as_ln_s='cp -pR'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+ case $as_dir in #(
+ -*) as_dir=./$as_dir;;
+ esac
+ test -d "$as_dir" || eval $as_mkdir_p || {
+ as_dirs=
+ while :; do
+ case $as_dir in #(
+ *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+ *) as_qdir=$as_dir;;
+ esac
+ as_dirs="'$as_qdir' $as_dirs"
+ as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ test -d "$as_dir" && break
+ done
+ test -z "$as_dirs" || eval "mkdir $as_dirs"
+ } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
+if mkdir -p . 2>/dev/null; then
+ as_mkdir_p='mkdir -p "$as_dir"'
+else
+ test -d ./-p && rmdir ./-p
+ as_mkdir_p=false
+fi
+
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+ test -f "$1" && test -x "$1"
+} # as_fn_executable_p
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+exec 6>&1
+## ----------------------------------- ##
+## Main body of $CONFIG_STATUS script. ##
+## ----------------------------------- ##
+_ASEOF
+test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# Save the log message, to keep $0 and so on meaningful, and to
+# report actual input values of CONFIG_FILES etc. instead of their
+# values after options handling.
+ac_log="
+This file was extended by $as_me, which was
+generated by GNU Autoconf 2.69. Invocation command line was
+
+ CONFIG_FILES = $CONFIG_FILES
+ CONFIG_HEADERS = $CONFIG_HEADERS
+ CONFIG_LINKS = $CONFIG_LINKS
+ CONFIG_COMMANDS = $CONFIG_COMMANDS
+ $ $0 $@
+
+on `(hostname || uname -n) 2>/dev/null | sed 1q`
+"
+
+_ACEOF
+
+case $ac_config_files in *"
+"*) set x $ac_config_files; shift; ac_config_files=$*;;
+esac
+
+
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+# Files that config.status was made for.
+config_files="$ac_config_files"
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+ac_cs_usage="\
+\`$as_me' instantiates files and other configuration actions
+from templates according to the current configuration. Unless the files
+and actions are specified as TAGs, all are instantiated by default.
+
+Usage: $0 [OPTION]... [TAG]...
+
+ -h, --help print this help, then exit
+ -V, --version print version number and configuration settings, then exit
+ --config print configuration, then exit
+ -q, --quiet, --silent
+ do not print progress messages
+ -d, --debug don't remove temporary files
+ --recheck update $as_me by reconfiguring in the same conditions
+ --file=FILE[:TEMPLATE]
+ instantiate the configuration file FILE
+
+Configuration files:
+$config_files
+
+Report bugs to the package provider."
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
+ac_cs_version="\\
+config.status
+configured by $0, generated by GNU Autoconf 2.69,
+ with options \\"\$ac_cs_config\\"
+
+Copyright (C) 2012 Free Software Foundation, Inc.
+This config.status script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it."
+
+ac_pwd='$ac_pwd'
+srcdir='$srcdir'
+INSTALL='$INSTALL'
+test -n "\$AWK" || AWK=awk
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# The default lists apply if the user does not specify any file.
+ac_need_defaults=:
+while test $# != 0
+do
+ case $1 in
+ --*=?*)
+ ac_option=`expr "X$1" : 'X\([^=]*\)='`
+ ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
+ ac_shift=:
+ ;;
+ --*=)
+ ac_option=`expr "X$1" : 'X\([^=]*\)='`
+ ac_optarg=
+ ac_shift=:
+ ;;
+ *)
+ ac_option=$1
+ ac_optarg=$2
+ ac_shift=shift
+ ;;
+ esac
+
+ case $ac_option in
+ # Handling of the options.
+ -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+ ac_cs_recheck=: ;;
+ --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
+ $as_echo "$ac_cs_version"; exit ;;
+ --config | --confi | --conf | --con | --co | --c )
+ $as_echo "$ac_cs_config"; exit ;;
+ --debug | --debu | --deb | --de | --d | -d )
+ debug=: ;;
+ --file | --fil | --fi | --f )
+ $ac_shift
+ case $ac_optarg in
+ *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ '') as_fn_error $? "missing file argument" ;;
+ esac
+ as_fn_append CONFIG_FILES " '$ac_optarg'"
+ ac_need_defaults=false;;
+ --he | --h | --help | --hel | -h )
+ $as_echo "$ac_cs_usage"; exit ;;
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil | --si | --s)
+ ac_cs_silent=: ;;
+
+ # This is an error.
+ -*) as_fn_error $? "unrecognized option: \`$1'
+Try \`$0 --help' for more information." ;;
+
+ *) as_fn_append ac_config_targets " $1"
+ ac_need_defaults=false ;;
+
+ esac
+ shift
+done
+
+ac_configure_extra_args=
+
+if $ac_cs_silent; then
+ exec 6>/dev/null
+ ac_configure_extra_args="$ac_configure_extra_args --silent"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+if \$ac_cs_recheck; then
+ set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+ shift
+ \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
+ CONFIG_SHELL='$SHELL'
+ export CONFIG_SHELL
+ exec "\$@"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+exec 5>>config.log
+{
+ echo
+ sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+## Running $as_me. ##
+_ASBOX
+ $as_echo "$ac_log"
+} >&5
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+
+# Handling of arguments.
+for ac_config_target in $ac_config_targets
+do
+ case $ac_config_target in
+ "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+
+ *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
+ esac
+done
+
+
+# If the user did not use the arguments to specify the items to instantiate,
+# then the envvar interface is used. Set only those that are not.
+# We use the long form for the default assignment because of an extremely
+# bizarre bug on SunOS 4.1.3.
+if $ac_need_defaults; then
+ test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
+fi
+
+# Have a temporary directory for convenience. Make it in the build tree
+# simply because there is no reason against having it here, and in addition,
+# creating and moving files from /tmp can sometimes cause problems.
+# Hook for its removal unless debugging.
+# Note that there is a small window in which the directory will not be cleaned:
+# after its creation but before its name has been assigned to `$tmp'.
+$debug ||
+{
+ tmp= ac_tmp=
+ trap 'exit_status=$?
+ : "${ac_tmp:=$tmp}"
+ { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status
+' 0
+ trap 'as_fn_exit 1' 1 2 13 15
+}
+# Create a (secure) tmp directory for tmp files.
+
+{
+ tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
+ test -d "$tmp"
+} ||
+{
+ tmp=./conf$$-$RANDOM
+ (umask 077 && mkdir "$tmp")
+} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5
+ac_tmp=$tmp
+
+# Set up the scripts for CONFIG_FILES section.
+# No need to generate them if there are no CONFIG_FILES.
+# This happens for instance with `./config.status config.h'.
+if test -n "$CONFIG_FILES"; then
+
+
+ac_cr=`echo X | tr X '\015'`
+# On cygwin, bash can eat \r inside `` if the user requested igncr.
+# But we know of no other shell where ac_cr would be empty at this
+# point, so we can use a bashism as a fallback.
+if test "x$ac_cr" = x; then
+ eval ac_cr=\$\'\\r\'
+fi
+ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
+if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
+ ac_cs_awk_cr='\\r'
+else
+ ac_cs_awk_cr=$ac_cr
+fi
+
+echo 'BEGIN {' >"$ac_tmp/subs1.awk" &&
+_ACEOF
+
+
+{
+ echo "cat >conf$$subs.awk <<_ACEOF" &&
+ echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
+ echo "_ACEOF"
+} >conf$$subs.sh ||
+ as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'`
+ac_delim='%!_!# '
+for ac_last_try in false false false false false :; do
+ . ./conf$$subs.sh ||
+ as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+
+ ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
+ if test $ac_delim_n = $ac_delim_num; then
+ break
+ elif $ac_last_try; then
+ as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+ else
+ ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+ fi
+done
+rm -f conf$$subs.sh
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&
+_ACEOF
+sed -n '
+h
+s/^/S["/; s/!.*/"]=/
+p
+g
+s/^[^!]*!//
+:repl
+t repl
+s/'"$ac_delim"'$//
+t delim
+:nl
+h
+s/\(.\{148\}\)..*/\1/
+t more1
+s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
+p
+n
+b repl
+:more1
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t nl
+:delim
+h
+s/\(.\{148\}\)..*/\1/
+t more2
+s/["\\]/\\&/g; s/^/"/; s/$/"/
+p
+b
+:more2
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t delim
+' <conf$$subs.awk | sed '
+/^[^""]/{
+ N
+ s/\n//
+}
+' >>$CONFIG_STATUS || ac_write_fail=1
+rm -f conf$$subs.awk
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+_ACAWK
+cat >>"\$ac_tmp/subs1.awk" <<_ACAWK &&
+ for (key in S) S_is_set[key] = 1
+ FS = ""
+
+}
+{
+ line = $ 0
+ nfields = split(line, field, "@")
+ substed = 0
+ len = length(field[1])
+ for (i = 2; i < nfields; i++) {
+ key = field[i]
+ keylen = length(key)
+ if (S_is_set[key]) {
+ value = S[key]
+ line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
+ len += length(value) + length(field[++i])
+ substed = 1
+ } else
+ len += 1 + keylen
+ }
+
+ print line
+}
+
+_ACAWK
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
+ sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
+else
+ cat
+fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \
+ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5
+_ACEOF
+
+# VPATH may cause trouble with some makes, so we remove sole $(srcdir),
+# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and
+# trailing colons and then remove the whole line if VPATH becomes empty
+# (actually we leave an empty line to preserve line numbers).
+if test "x$srcdir" = x.; then
+ ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{
+h
+s///
+s/^/:/
+s/[ ]*$/:/
+s/:\$(srcdir):/:/g
+s/:\${srcdir}:/:/g
+s/:@srcdir@:/:/g
+s/^:*//
+s/:*$//
+x
+s/\(=[ ]*\).*/\1/
+G
+s/\n//
+s/^[^=]*=[ ]*$//
+}'
+fi
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+fi # test -n "$CONFIG_FILES"
+
+
+eval set X " :F $CONFIG_FILES "
+shift
+for ac_tag
+do
+ case $ac_tag in
+ :[FHLC]) ac_mode=$ac_tag; continue;;
+ esac
+ case $ac_mode$ac_tag in
+ :[FHL]*:*);;
+ :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;;
+ :[FH]-) ac_tag=-:-;;
+ :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
+ esac
+ ac_save_IFS=$IFS
+ IFS=:
+ set x $ac_tag
+ IFS=$ac_save_IFS
+ shift
+ ac_file=$1
+ shift
+
+ case $ac_mode in
+ :L) ac_source=$1;;
+ :[FH])
+ ac_file_inputs=
+ for ac_f
+ do
+ case $ac_f in
+ -) ac_f="$ac_tmp/stdin";;
+ *) # Look for the file first in the build tree, then in the source tree
+ # (if the path is not absolute). The absolute path cannot be DOS-style,
+ # because $ac_f cannot contain `:'.
+ test -f "$ac_f" ||
+ case $ac_f in
+ [\\/$]*) false;;
+ *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
+ esac ||
+ as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;
+ esac
+ case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
+ as_fn_append ac_file_inputs " '$ac_f'"
+ done
+
+ # Let's still pretend it is `configure' which instantiates (i.e., don't
+ # use $as_me), people would be surprised to read:
+ # /* config.h. Generated by config.status. */
+ configure_input='Generated from '`
+ $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
+ `' by configure.'
+ if test x"$ac_file" != x-; then
+ configure_input="$ac_file. $configure_input"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
+$as_echo "$as_me: creating $ac_file" >&6;}
+ fi
+ # Neutralize special characters interpreted by sed in replacement strings.
+ case $configure_input in #(
+ *\&* | *\|* | *\\* )
+ ac_sed_conf_input=`$as_echo "$configure_input" |
+ sed 's/[\\\\&|]/\\\\&/g'`;; #(
+ *) ac_sed_conf_input=$configure_input;;
+ esac
+
+ case $ac_tag in
+ *:-:* | *:-) cat >"$ac_tmp/stdin" \
+ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;;
+ esac
+ ;;
+ esac
+
+ ac_dir=`$as_dirname -- "$ac_file" ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$ac_file" : 'X\(//\)[^/]' \| \
+ X"$ac_file" : 'X\(//\)$' \| \
+ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$ac_file" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ as_dir="$ac_dir"; as_fn_mkdir_p
+ ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+ ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+ # A ".." for each directory in $ac_dir_suffix.
+ ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+ case $ac_top_builddir_sub in
+ "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+ *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+ esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+ .) # We are building in place.
+ ac_srcdir=.
+ ac_top_srcdir=$ac_top_builddir_sub
+ ac_abs_top_srcdir=$ac_pwd ;;
+ [\\/]* | ?:[\\/]* ) # Absolute name.
+ ac_srcdir=$srcdir$ac_dir_suffix;
+ ac_top_srcdir=$srcdir
+ ac_abs_top_srcdir=$srcdir ;;
+ *) # Relative name.
+ ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+ ac_top_srcdir=$ac_top_build_prefix$srcdir
+ ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+
+ case $ac_mode in
+ :F)
+ #
+ # CONFIG_FILE
+ #
+
+ case $INSTALL in
+ [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
+ *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
+ esac
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# If the template does not know about datarootdir, expand it.
+# FIXME: This hack should be removed a few years after 2.60.
+ac_datarootdir_hack=; ac_datarootdir_seen=
+ac_sed_dataroot='
+/datarootdir/ {
+ p
+ q
+}
+/@datadir@/p
+/@docdir@/p
+/@infodir@/p
+/@localedir@/p
+/@mandir@/p'
+case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
+*datarootdir*) ac_datarootdir_seen=yes;;
+*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
+$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ ac_datarootdir_hack='
+ s&@datadir@&$datadir&g
+ s&@docdir@&$docdir&g
+ s&@infodir@&$infodir&g
+ s&@localedir@&$localedir&g
+ s&@mandir@&$mandir&g
+ s&\\\${datarootdir}&$datarootdir&g' ;;
+esac
+_ACEOF
+
+# Neutralize VPATH when `$srcdir' = `.'.
+# Shell code in configure.ac might set extrasub.
+# FIXME: do we really want to maintain this feature?
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_sed_extra="$ac_vpsub
+$extrasub
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+:t
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+s|@configure_input@|$ac_sed_conf_input|;t t
+s&@top_builddir@&$ac_top_builddir_sub&;t t
+s&@top_build_prefix@&$ac_top_build_prefix&;t t
+s&@srcdir@&$ac_srcdir&;t t
+s&@abs_srcdir@&$ac_abs_srcdir&;t t
+s&@top_srcdir@&$ac_top_srcdir&;t t
+s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
+s&@builddir@&$ac_builddir&;t t
+s&@abs_builddir@&$ac_abs_builddir&;t t
+s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
+s&@INSTALL@&$ac_INSTALL&;t t
+$ac_datarootdir_hack
+"
+eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \
+ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+
+test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
+ { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
+ { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \
+ "$ac_tmp/out"`; test -z "$ac_out"; } &&
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined. Please make sure it is defined" >&5
+$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined. Please make sure it is defined" >&2;}
+
+ rm -f "$ac_tmp/stdin"
+ case $ac_file in
+ -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";;
+ *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";;
+ esac \
+ || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+ ;;
+
+
+
+ esac
+
+done # for ac_tag
+
+
+as_fn_exit 0
+_ACEOF
+ac_clean_files=$ac_clean_files_save
+
+test $ac_write_fail = 0 ||
+ as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5
+
+
+# configure is writing to config.log, and then calls config.status.
+# config.status does its own redirection, appending to config.log.
+# Unfortunately, on DOS this fails, as config.log is still kept open
+# by configure, so config.status won't be able to write to it; its
+# output is simply discarded. So we exec the FD to /dev/null,
+# effectively closing config.log, so it can be properly (re)opened and
+# appended to by config.status. When coming back to configure, we
+# need to make the FD available again.
+if test "$no_create" != yes; then
+ ac_cs_success=:
+ ac_config_status_args=
+ test "$silent" = yes &&
+ ac_config_status_args="$ac_config_status_args --quiet"
+ exec 5>/dev/null
+ $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
+ exec 5>>config.log
+ # Use ||, not &&, to avoid exiting from the if with $? = 1, which
+ # would make configure fail if this is the last instruction.
+ $ac_cs_success || as_fn_exit 1
+fi
+if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
+$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
+fi
+
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/configure.ac b/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/configure.ac
new file mode 100644
index 0000000000..4c28719516
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/configure.ac
@@ -0,0 +1,131 @@
+dnl This file is part of the CJK package ver. 4.8.4
+
+dnl Copyright (C) 1994-2015 Werner Lemberg <wl@gnu.org>
+
+dnl This program is free software; you can redistribute it and/or modify
+dnl it under the terms of the GNU General Public License as published by
+dnl the Free Software Foundation; either version 2 of the License, or
+dnl (at your option) any later version.
+
+dnl This program is distributed in the hope that it will be useful,
+dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
+dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+dnl GNU General Public License for more details.
+
+dnl You should have received a copy of the GNU General Public License
+dnl along with this program in doc/COPYING; if not, write to the Free
+dnl Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+dnl MA 02110-1301 USA
+
+dnl Process this file with autoconf to produce a configure script.
+AC_INIT
+AC_CONFIG_SRCDIR([hbf.h])
+
+
+dnl check host
+AC_CANONICAL_TARGET([])
+
+
+dnl Checks for programs.
+AC_PROG_CC
+
+
+dnl Checks for header files.
+AC_HEADER_STDC
+
+AC_ARG_WITH(kpathsea-include,
+ [ --with-kpathsea-include=DIR
+ location of the kpathsea include dir],[
+ if test x$withval = xyes; then
+ AC_MSG_WARN(Usage is: --with-kpathsea-include=includedir)
+ else
+ if test x$withval = xno; then
+ AC_MSG_WARN(Usage is: --with-kpathsea-include=includedir)
+ else
+ kpathsea_include=$withval
+ fi
+ fi
+])
+
+
+dnl Checks for libraries.
+AC_ARG_WITH(kpathsea-lib,
+ [ --with-kpathsea-lib=DIR
+ location of the kpathsea lib dir],[
+ if test x$withval = xyes; then
+ AC_MSG_WARN(Usage is: --with-kpathsea-lib=libdir)
+ else
+ if test x$withval = xno; then
+ AC_MSG_WARN(Usage is: --with-kpathsea-lib=libdir)
+ else
+ kpathsea_lib=$withval
+ fi
+ fi
+])
+
+
+if test -n "$kpathsea_include" -o -n "$kpathsea_lib"; then
+ LIBS="$LIBS -L$kpathsea_lib"
+ CPPFLAGS="$CPPFLAGS -I$kpathsea_include -I$srcdir"
+
+ dnl the function kpse_set_program_name() is available since kpathsea 3.2
+ AC_CHECK_LIB(kpathsea, kpse_set_program_name, , AC_DEFINE(OLD_KPATHSEA))
+
+ AC_CHECK_LIB(kpathsea, kpse_init_prog, ,[
+ AC_MSG_ERROR([Can't find kpathsea library! Use --with-kpathsea-lib option.])])
+
+ dnl the header file kpathsea.h doesn't exist in kpathsea 2.6 and before
+ AC_CHECK_HEADER(kpathsea/kpathsea.h, , AC_DEFINE(VERY_OLD_KPATHSEA))
+
+ AC_CHECK_HEADER(kpathsea/c-auto.h, ,[
+ AC_MSG_ERROR([Can't find kpathsea include files! Use --with-kpathsea-include option.])])
+else
+ CPPFLAGS="$CPPFLAGS -I$srcdir"
+fi
+
+
+dnl Get compiler flags right.
+if test "x$CC" = xgcc; then
+ XX_CFLAGS="-Wall"
+else
+ case "$host" in
+ alpha-dec-osf*)
+ XX_CFLAGS="-std1 -O2 -g3"
+ ;;
+ *)
+ XX_CFLAGS=
+ ;;
+ esac
+fi
+AC_SUBST(XX_CFLAGS)
+
+
+dnl Checks for typedefs, structures, and compiler characteristics.
+AC_C_CONST
+AC_STRUCT_TM
+
+
+dnl Checks for library functions.
+AC_FUNC_VPRINTF
+AC_CHECK_FUNCS(strdup strstr strtol strtoul)
+
+dnl we need this for hbf.c
+if test "x$ac_cv_func_strdup" = xno; then
+ no_strdup=-DNO_STRDUP
+fi
+AC_SUBST(no_strdup)
+
+AC_CHECK_PROG(RM, rm, rm)
+AC_PROG_INSTALL
+
+if test -z "$kpathsea_include" -a -z "$kpathsea_lib"; then
+ AC_MSG_WARN([
+
+ hbf2gf will be compiled without file search library support!
+ For kpathsea support use the --with-kpathsea-lib and
+ --with-kpathsea-include options.
+ ])
+fi
+
+AC_CONFIG_FILES([Makefile])
+AC_OUTPUT
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/dvidrv.btm b/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/dvidrv.btm
new file mode 100644
index 0000000000..4ec03d0bf2
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/dvidrv.btm
@@ -0,0 +1,352 @@
+setdos /y1
+::
+:: Copyright (C) 1994-2015 Werner Lemberg <wl@gnu.org>
+::
+:: This program is free software; you can redistribute it and/or modify
+:: it under the terms of the GNU General Public License as published by
+:: the Free Software Foundation; either version 2 of the License, or
+:: (at your option) any later version.
+::
+:: This program is distributed in the hope that it will be useful,
+:: but WITHOUT ANY WARRANTY; without even the implied warranty of
+:: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+:: GNU General Public License for more details.
+::
+:: You should have received a copy of the GNU General Public License
+:: along with this program in doc/COPYING; if not, write to the Free
+:: Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+:: MA 02110-1301 USA
+::
+::
+:: This is dvidrv.btm, a batch file for 4DOS/4OS2 written by
+:: Werner Lemberg <wl@gnu.org> partially based on the
+:: dvidrv.btm file of the 4allTeX package written by Phons Bloemen.
+::
+:: It is a replacement for dvidrv.exe of the emTeX package.
+::
+:: Additional features: support of ps2pk
+:: support of ttf2pk
+:: support of hbf2gf for HBFs (Hanzi bitmap fonts)
+::
+:: Only quadratic printer modes are supported for ttf2pk!
+::
+:: All needed binaries will be searched in the path.
+
+iff %# lt 2 then
+ echo ``
+ echo Usage: %0 dvi-driver dvi-file [parameters]
+ quit
+endiff
+
+setlocal
+ :: we set a default value only if the corresponding environment variable
+ :: is empty. The `=' must follow the variable name immediately.
+ alias set_def `iff "%[%@word["=",0,%1]]" eq "" then %+ set %& %+ endiff`
+
+ :: =========================================
+ :: ======== User defined variables. ========
+ :: =========================================
+ ::
+ :: Can be overridden in the environment (except %ps2pk, %ttf2pk, %hbf2gf,
+ :: %pre_dpi, and %post_dpi).
+
+ :: Comment out the programs you don't want to use.
+ set ps2pk=yes
+ set ttf2pk=yes
+ set hbf2gf=yes
+
+ :: where the PK files will be installed created by ps2pk, ttf2pk, and
+ :: hbf2gf.
+ :: dvidrv.btm adds `\modeless\XXXdpi' to this string (see below for the
+ :: exact string).
+ set_def pkdir=%emtexdir\pixel\tmp\pk
+
+ :: where the TrueType fonts reside.
+ set_def ttfonts=%emtexdir\fonts\truetype
+ :: where auxiliary files of ttf2pk are located.
+ set_def ttfcfg=%emtexdir\ttf2pk
+
+ :: where the HBF files reside.
+ set_def hbfonts=%emtexdir\fonts\hbf
+ :: where the hbf2gf config files are.
+ set_def hbfcfg=%emtexdir\hbf2gf
+
+ :: the dpi-subdirectory has various forms; the most common are XXXdpi and
+ :: dpiXXX, e.g. 300dpi and dpi300. Here we define two variables which
+ :: control this behaviour.
+ :: [dpiXXX is used for TDS compatible TeX trees.]
+ set pre_dpi=dpi
+ set post_dpi=
+
+ :: ================================================
+ :: ======== End of user defined variables. ========
+ :: ================================================
+
+ :: the base name for log files etc.
+ set basename=%@name[%1]
+
+ :: do we run dvips?
+ iff "%basename" ne "dvips" then
+ goto nodvips1
+ endiff
+
+ :: we delete dvips.mfj if it exists.
+ del dvips.mfj >& nul
+
+ :: now we run dvips with all supplied parameters.
+ %&
+
+ :: do we have to generate fonts?
+ iff exist dvips.mfj then
+ goto generate_fonts
+ endiff
+
+ :: else all is done.
+ goto end
+
+
+:nodvips1
+ :: here we call the dvi driver with all supplied parameters.
+ %& -pj:%basename.mfj
+
+ :: do we have to generate fonts?
+ iff errorlevel 8 then
+ goto generate_fonts
+ endiff
+
+ :: else all is done.
+ goto end
+
+
+:generate_fonts
+ gosub call_mfjob
+
+ :: do we run dvips?
+ iff "%basename" ne "dvips" then
+ goto nodvips2
+ endiff
+
+ :: we now call dvips a second time
+ %&
+
+ :: since no fonts will be generated in the second run we remove dvips.mfj
+ del dvips.mfj >& nul
+
+ goto end
+
+
+:nodvips2
+ :: we call the dvi driver a second time (without font generation).
+ %& -pj -fm
+
+ del %basename.mfj >& nul
+
+ goto end
+
+
+:: this is the main subroutine which calls mfjob and then parses the mfjob
+:: file for fonts which can be handled by ps2pk, ttf2pk, or hbf2gf.
+:call_mfjob
+ :: this alias prints a message on the screen and writes it into the logfile.
+ alias echolog=`echo %& | tee /a %basename.mlg`
+
+ echo ======== DVIDRV.BTM logfile ======== > %basename.mlg
+ echo Commandline: dvidrv.btm %& >> %basename.mlg
+ echo `` >> %basename.mlg
+ echo basename=%basename >> %basename.mlg
+ echo emtexdir=%emtexdir >> %basename.mlg
+ echo dvidrvfonts=%dvidrvfonts >> %basename.mlg
+ echo mfinput=%mfinput >> %basename.mlg
+ echo mfjobopt=%mfjobopt >> %basename.mlg
+ echo textfm=%textfm >> %basename.mlg
+ echo psfonts=%psfonts >> %basename.mlg
+ echo ttfonts=%ttfonts >> %basename.mlg
+ echo ttfcfg=%ttfcfg >> %basename.mlg
+ echo hbfonts=%hbfonts >> %basename.mlg
+ echo hbfcfg=%hbfcfg >> %basename.mlg
+ echo `` >> %basename.mlg
+
+ iff "%@search[mfjob]" eq "" then
+ echolog MFJOB not found in the path.
+ echolog Can't generate PK fonts from METAFONT automatically.
+ echo ``
+ quit
+ endiff
+
+ :: now we call mfjob.
+ echolog mfjob %mfjobopt -g%basename.mfl %basename.mfj
+ mfjob %mfjobopt -g%basename.mfl %basename.mfj
+ iff %? gt 0 then
+ echolog ``
+ echolog Something went wrong while running METAFONT.
+ echolog Look into the log files...
+ echolog ``
+ endiff
+
+ :: after running mfjob we scan the mfjob input file for fonts which can
+ :: be handled by ps2pk, ttf2pk or hbf2gf.
+ set lnnr=0
+ set totlines=%@lines[%basename.mfj]
+
+ do while %lnnr le %totlines
+ :: input a line.
+ set scratch=%@line[%basename.mfj,%lnnr]
+ set lnnr=%@inc[%lnnr]
+
+ :: get resolutions (METAFONT mode will be ignored).
+ :: example:
+ :: mode=lqlores[180 180];
+ iff %@index[%scratch,mode] ge 0 then
+ set temp=%@word["[]",1,%scratch]
+ set xdpi=%@word[0,%temp]
+ set ydpi=%@word[1,%temp]
+ endiff
+
+ :: get fontname and magnification; we then compute the font resolutions
+ :: (rounded to the nearest integer---there is no necessity to adjust
+ :: these values further because of possible rounding errors since both
+ :: emTeX's dvi drivers and dvips check neighbored values too).
+ :: example:
+ :: {font=cmr10; mag=0.5;}
+ iff %@index[%scratch,{font] ge 0 then
+ set testfont=%@word["=;",1,%scratch]
+ set temp=%@word["=;",3,%scratch]
+ :: we use highest arithmetic precision for these calculations.
+ :: Additionally we write 1/2 instead of 0.5 to avoid problems with
+ :: countries which use a comma instead of a colon as the decimal
+ :: separator.
+ set fontresx=%@int[%@eval[%xdpi*%temp+1/2=8]]
+ set fontresy=%@int[%@eval[%ydpi*%temp+1/2=8]]
+ set pksubdir=modeless\%[pre_dpi]%[fontresx]%post_dpi
+
+ set success=0
+
+ :: check whether %testfont leads to a PS font (we call ps2pkmfj).
+ iff %success == 0 .and. "%ps2pk" ne "" then
+ gosub call_ps2pk
+ endiff
+
+ :: check whether %testfont leads to a TrueType font.
+ iff %success == 0 .and. "%ttf2pk" ne "" then
+ gosub call_ttf2pk
+ endiff
+
+ :: check whether %testfont leads to a HBF file.
+ iff %success == 0 .and. "%hbf2gf" ne "" then
+ gosub call_hbf2gf
+ endiff
+ endiff
+ enddo
+
+ iff exist %basename.mfp then
+ echo `` >> %basename.mlg
+ echo `` >> %basename.mlg
+ echo ======== PS2PK logfile ======== >> %basename.mlg
+ echo `` >> %basename.mlg
+ type %basename.mfp >> %basename.mlg
+ echo `` >> %basename.mlg
+ del %basename.mfp >& nul
+ endiff
+
+ iff exist %basename.mfl then
+ echo `` >> %basename.mlg
+ type %basename.mfl >> %basename.mlg
+ echo `` >> %basename.mlg
+ del %basename.mfl >& nul
+ endiff
+
+ return
+
+
+:call_ttf2pk
+ iff "%@search[ttf2pk]" eq "" then
+ echolog TTF2PK not found in the path.
+ echolog Can't generate PK fonts from TrueType fonts automatically.
+ echo ``
+ quit
+ endiff
+
+ echolog ttf2pk -q -n %testfont %fontresx
+ ttf2pk -q -n %testfont %fontresx
+
+ iff %? == 0 then
+ echolog Font %pkdir\%pksubdir\%testfont.pk generated.
+ mkdir /s %pkdir\%pksubdir >& nul
+ move %testfont.pk %pkdir\%pksubdir >& nul
+ set success=1
+ elseiff %? == 2 then
+ echolog (%lnnr/%totlines): Font %testfont is no TrueType font.
+ set success=0
+ else
+ echolog Error running TTF2PK for font %testfont!
+ endiff
+
+ return
+
+
+:call_hbf2gf
+ iff "%@search[hbf2gf]" eq "" then
+ echolog HBF2GF not found in the path.
+ echolog Can't generate PK fonts from HBF files automatically.
+ echo ``
+ quit
+ endiff
+
+ echolog hbf2gf -q -p -n %testfont %fontresx %fontresy
+ hbf2gf -q -p -n %testfont %fontresx %fontresy
+
+ iff %? == 0 then
+ echolog Font %pkdir\%pksubdir\%testfont.pk generated.
+ mkdir /s %pkdir\%pksubdir >& nul
+ gftopk %testfont.gf %testfont.pk
+ move %testfont.pk %pkdir\%pksubdir >& nul
+ del %testfont.gf >& nul
+ set success=1
+ elseiff %? == 2 then
+ echolog (%lnnr/%totlines): Font %testfont is no HBF.
+ set success=0
+ else
+ echolog Error running HBF2GF for font %testfont!
+ endiff
+
+ return
+
+
+:call_ps2pk
+ iff not exist %pkdir\%pksubdir\%testfont.pk then
+ iff "%@search[ps2pkmfj]" eq "" .or. "%@search[ps2pk]" eq "" then
+ echolog PS2PKMFJ and/or PS2PK not found in the path.
+ echolog Can't generate PK fonts from PostScript fonts automatically.
+ echo ``
+ quit
+ endiff
+
+ echolog ps2pkmfj -X%fontresx -Y%fontresy %testfont %testfont.pk
+ ps2pkmfj -X%fontresx -Y%fontresy %testfont %testfont.pk | input %%pspkline
+
+ iff errorlevel != 1 then
+ %pspkline >> %basename.mfp
+ iff %? == 0 then
+ echolog Font %pkdir\%pksubdir\%testfont.pk generated.
+ mkdir /s %pkdir\%pksubdir >& nul
+ move %testfont.pk %pkdir\%pksubdir >& nul
+ success=1
+ else
+ echolog Error running PS2PK for font %testfont!
+ endiff
+ else
+ echolog (%lnnr/%totlines): Font %testfont is no PS font.
+ success=0
+ endiff
+ else
+ echolog Font %pkdir\%pksubdir\%testfont.pk already exists.
+ endiff
+
+ return
+
+
+:end
+
+endlocal
+
+:: ==== end of dvidrv.btm ====
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/emdir.c b/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/emdir.c
new file mode 100644
index 0000000000..4e759c83eb
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/emdir.c
@@ -0,0 +1,109 @@
+/* emdir.c -- Written by Eberhard Mattes, donated to the public domain */
+
+#include "emdir.h"
+
+#ifdef OS2
+
+#undef HPS
+#define INCL_DOSFILEMGR
+#include <os2.h>
+#include <string.h>
+
+#define FHDIR(b) (*(HDIR *)(b)->reserved)
+
+static void fconv (struct ll_findbuffer *dst, const FILEFINDBUF *src)
+{
+ dst->attr = src->attrFile;
+ dst->time = *(unsigned *)&src->ftimeLastWrite;
+ dst->date = *(unsigned *)&src->fdateLastWrite;
+ dst->size = src->cbFile;
+ strcpy (dst->name, src->achName);
+}
+
+
+int ll_findfirst (const char *path, int attr, struct ll_findbuffer *buffer)
+{
+ USHORT rc;
+ ULONG count;
+ HDIR hdir;
+ FILEFINDBUF ffbuf;
+
+ hdir = HDIR_CREATE;
+ count = 1;
+ rc = DosFindFirst ((PSZ)path, &hdir, attr, &ffbuf, sizeof (ffbuf),
+ &count, 0L);
+ if (rc != 0 || count != 1)
+ return 0;
+ FHDIR (buffer) = hdir;
+ fconv (buffer, &ffbuf);
+ return 1;
+}
+
+
+int ll_findnext (struct ll_findbuffer *buffer)
+{
+ USHORT rc;
+ ULONG count;
+ HDIR hdir;
+ FILEFINDBUF ffbuf;
+
+ hdir = FHDIR (buffer);
+ count = 1;
+ rc = DosFindNext (hdir, &ffbuf, sizeof (ffbuf), &count);
+ if (rc != 0 || count != 1)
+ {
+ DosFindClose (hdir);
+ return 0;
+ }
+ fconv (buffer, &ffbuf);
+ return 1;
+}
+
+
+#elif defined(DJGPP)
+
+/* djgpp support by Hartmut Schirmer (hsc@techfak.uni-kiel.de), May 30, 1997 */
+
+#include <dos.h>
+#include <dir.h>
+
+static int ll_attr = 0;
+int ll_findnext (struct ll_findbuffer *buffer)
+{
+ int res;
+ do {
+ res = _dos_findnext ((struct find_t *)buffer);
+ if (res != 0) return 0;
+ } while ( (buffer->attrib&ll_attr) == 0);
+ return 1;
+}
+
+int ll_findfirst (const char *path, int attr, struct ll_findbuffer *buffer)
+{
+ int res;
+ ll_attr = attr;
+ res = _dos_findfirst((char *)path, attr, (struct find_t *)buffer);
+ if (res != 0) return 0;
+ if ( (buffer->attrib&ll_attr) == 0)
+ return ll_findnext(buffer);
+ return 1;
+}
+
+#elif !defined(__EMX__) /* if not OS2 nor DJGPP nor __EMX__ defined */
+
+/* Not tested */
+
+#include <dos.h>
+
+int ll_findfirst (const char *path, int attr, struct ll_findbuffer *buffer)
+{
+ return _dos_findfirst (path, attr, (struct find_t *)buffer) == 0;
+}
+
+
+int ll_findnext (struct ll_findbuffer *buffer)
+{
+ return _dos_findnext ((struct find_t *)buffer) == 0;
+}
+
+#endif
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/emdir.h b/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/emdir.h
new file mode 100644
index 0000000000..0606d476ab
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/emdir.h
@@ -0,0 +1,25 @@
+/* emdir.h -- Written by Eberhard Mattes, donated to the public domain */
+
+#if defined(DJGPP)
+
+/* djgpp support by Hartmut Schirmer (hsc@techfak.uni-kiel.de), May 30, 1997 */
+#include <dos.h>
+#define ll_findbuffer find_t
+#define attr attrib
+
+#else
+
+struct ll_findbuffer
+{
+ char reserved[21];
+ unsigned char attr;
+ unsigned time;
+ unsigned date;
+ long size;
+ char name[257];
+};
+
+#endif
+
+int ll_findfirst (const char *path, int attr, struct ll_findbuffer *buffer);
+int ll_findnext (struct ll_findbuffer *buffer);
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/emtexdir.c b/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/emtexdir.c
new file mode 100644
index 0000000000..9a35570adb
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/emtexdir.c
@@ -0,0 +1,405 @@
+/* emtexdir.c -- written by Eberhard Mattes, donated to the public domain */
+
+#if defined (__EMX__)
+#include <emx/syscalls.h>
+#else
+#include "emdir.h"
+#endif
+#if defined(DJGPP) || defined(GO32)
+#include <unistd.h>
+#endif
+#include <stdlib.h>
+#include <string.h>
+#include <fcntl.h>
+#include <io.h>
+#include "emtexdir.h"
+
+#define FALSE 0
+#define TRUE 1
+
+void (*emtex_dir_find_callback)(const char *name, int ok) = NULL;
+
+static int setup_add (struct emtex_dir *dst, const char *path)
+{
+ char *p;
+
+ if (dst->used >= dst->alloc)
+ {
+ dst->alloc += 8;
+ dst->list = realloc (dst->list, dst->alloc * sizeof (*dst->list));
+ if (dst->list == NULL)
+ return (FALSE);
+ }
+ p = strdup (path);
+ if (p == NULL)
+ return (FALSE);
+ dst->list[dst->used++] = p;
+ return (TRUE);
+}
+
+
+static int setup_subdir (struct emtex_dir *dst, char *path, size_t add,
+ unsigned flags, int recurse)
+{
+ int ok, i, end, len;
+#if defined (__EMX__)
+ struct _find find;
+#else
+ struct ll_findbuffer find;
+#endif
+
+ i = dst->used;
+ strcpy (path + add, "*.*");
+#if defined (__EMX__)
+ ok = __findfirst (path, 0x10, &find) == 0;
+#else
+ ok = ll_findfirst (path, 0x10, &find);
+#endif
+ while (ok)
+ {
+ if ((find.attr & 0x10)
+ && !(strcmp (find.name, ".") == 0 || strcmp (find.name, "..") == 0))
+ {
+ len = strlen (find.name);
+ memcpy (path + add, find.name, len);
+ path[add+len] = '\\';
+ path[add+len+1] = 0;
+ if (!setup_add (dst, path))
+ return (FALSE);
+ }
+#if defined (__EMX__)
+ ok = __findnext (&find) == 0;
+#else
+ ok = ll_findnext (&find);
+#endif
+ }
+ if (recurse)
+ {
+ end = dst->used;
+ while (i < end)
+ {
+ strcpy (path, dst->list[i]);
+ if (!setup_subdir (dst, path, strlen (path), flags, TRUE))
+ return (FALSE);
+ ++i;
+ }
+ }
+ return (TRUE);
+}
+
+
+static int setup_dir (struct emtex_dir *dst, char *path,
+ const char *base_dir, size_t base_dir_len,
+ const char *sub_dir,
+ unsigned flags)
+{
+ size_t i, len;
+
+ memcpy (path, base_dir, base_dir_len);
+ i = base_dir_len;
+ if ((flags & EDS_BANG) && sub_dir == NULL)
+ {
+ flags &= ~(EDS_ONESUBDIR|EDS_ALLSUBDIR);
+ if (i >= 2 && path[i-1] == '!' && path[i-2] == '!')
+ {
+ flags |= EDS_ALLSUBDIR;
+ i -= 2;
+ }
+ else if (i >= 1 && path[i-1] == '!')
+ {
+ flags |= EDS_ONESUBDIR;
+ --i;
+ }
+ }
+ if (sub_dir != NULL && *sub_dir != 0)
+ {
+ if (i != 0 && path[i-1] != ':' && path[i-1] != '/' && path[i-1] != '\\')
+ path[i++] = '\\';
+ len = strlen (sub_dir);
+ memcpy (path+i, sub_dir, len);
+ i += len;
+ }
+ if (path[i-1] != ':' && path[i-1] != '/' && path[i-1] != '\\')
+ path[i++] = '\\';
+ path[i] = 0;
+ if (!setup_add (dst, path))
+ return (FALSE);
+ if (flags & EDS_ALLSUBDIR)
+ return (setup_subdir (dst, path, i, flags, TRUE));
+ else if (flags & EDS_ONESUBDIR)
+ return (setup_subdir (dst, path, i, flags, FALSE));
+ else
+ return (TRUE);
+}
+
+
+/*static */int setup_list (struct emtex_dir *dst, char *path,
+ const char *list, unsigned flags)
+{
+ const char *end;
+ size_t i;
+
+ for (;;)
+ {
+ while (*list == ' ' || *list == '\t')
+ ++list;
+ if (*list == 0)
+ return (TRUE);
+ end = list;
+ while (*end != 0 && *end != ';')
+ ++end;
+ i = end - list;
+ while (i > 0 && (list[i-1] == ' ' || list[i-1] == '\t'))
+ --i;
+ if (i != 0 && !setup_dir (dst, path, list, i, NULL, flags))
+ return (FALSE);
+ if (*end == 0)
+ return (TRUE);
+ list = end + 1;
+ }
+}
+
+
+int emtex_dir_setup (struct emtex_dir *ed, const char *env, const char *dir,
+ unsigned flags)
+{
+ const char *val;
+ char path[260];
+
+ ed->alloc = 0;
+ ed->used = 0;
+ ed->list = NULL;
+ if (env != NULL && (val = getenv (env)) != NULL)
+ return (setup_list (ed, path, val, flags));
+ else if ((val = getenv ("EMTEXDIR")) != NULL)
+ return (setup_dir (ed, path, val, strlen (val), dir, flags));
+ else
+ return (setup_dir (ed, path, "\\emtex", 6, dir, flags));
+}
+
+
+static void pretty (char *path, unsigned flags)
+{
+ char *p;
+
+ if (flags & EDF_FSLASH)
+ for (p = path; *p != 0; ++p)
+ if (*p == '\\')
+ *p = '/';
+}
+
+
+#define ADDCHAR(C) \
+ if (dst_size < 1) return (EDT_TOOLONG); \
+ *dst++ = (C); --dst_size
+
+int emtex_dir_trunc (char *dst, size_t dst_size, const char *src,
+ unsigned flags, int method)
+{
+ int len, truncated, dot;
+
+ if (src[0] != 0 && src[1] == ':')
+ {
+ ADDCHAR (src[0]);
+ ADDCHAR (src[1]);
+ src += 2;
+ }
+
+ truncated = FALSE; dot = FALSE; len = 0;
+ for (;;)
+ {
+ switch (*src)
+ {
+ case 0:
+ ADDCHAR (0);
+ return (truncated ? EDT_CHANGED : EDT_UNCHANGED);
+
+ case ':':
+ return (EDT_INVALID);
+
+ case '/':
+ case '\\':
+ ADDCHAR (*src);
+ len = 0; dot = FALSE;
+ break;
+
+ case '.':
+ if (dot)
+ return (EDT_INVALID);
+ ADDCHAR (*src);
+
+ /* ".." is allowed -- don't return EDT_INVALID for the next
+ dot. */
+
+ if (!(len == 0 && src[1] == '.'
+ && (src[2] == 0 || src[2] == '/' || src[2] == '\\')))
+ {
+ len = 0; dot = TRUE;
+ }
+ break;
+
+ default:
+ if (dot && len == 3)
+ truncated = TRUE;
+ else if (!dot && len == 8)
+ {
+ truncated = TRUE;
+ if (method == 0)
+ {
+ dst[-3] = dst[-2];
+ dst[-2] = dst[-1];
+ dst[-1] = *src;
+ }
+ }
+ else
+ {
+ ADDCHAR (*src);
+ ++len;
+ }
+ break;
+ }
+ ++src;
+ }
+}
+
+
+static int find2 (const char *name, unsigned flags)
+{
+ int ok;
+
+ ok = (access (name, 4) == 0);
+ if (flags & EDF_TRACE)
+ emtex_dir_find_callback (name, ok);
+ return (ok);
+}
+
+
+static int find1 (char *path, size_t path_size, const char *dir,
+ const char *fname, unsigned flags)
+{
+ char buf[260];
+ int method, rc;
+ size_t len, tmp;
+
+ len = 0;
+ if (dir != NULL)
+ {
+ tmp = strlen (dir);
+ if (tmp >= sizeof (buf))
+ return (FALSE);
+ memcpy (buf, dir, tmp);
+ len = tmp;
+ }
+ tmp = strlen (fname);
+ if (len + tmp >= sizeof (buf))
+ return (FALSE);
+ memcpy (buf + len, fname, tmp + 1);
+ len += tmp;
+#if 0 /* wkim */
+/* disabled for Win95's long file name support */
+/* -- Wonkoo Kim (wkim+@pitt.edu), May 18, 1997 */
+ if (_osmode == DOS_MODE)
+ {
+ rc = emtex_dir_trunc (path, path_size, buf, flags, EDT_5_PLUS_3);
+ if ((rc == EDT_UNCHANGED || rc == EDT_CHANGED) && find2 (path, flags))
+ {
+ pretty (path, flags);
+ return (TRUE);
+ }
+ rc = emtex_dir_trunc (path, path_size, buf, flags, EDT_8);
+ if (rc == EDT_CHANGED && find2 (path, flags))
+ {
+ pretty (path, flags);
+ return (TRUE);
+ }
+ return (FALSE);
+ }
+ else
+#endif /* wkim */
+ {
+ if (len < path_size && find2 (buf, flags))
+ {
+ memcpy (path, buf, len + 1);
+ pretty (path, flags);
+ return (TRUE);
+ }
+ for (method = 0; method < 2; ++method)
+ {
+ rc = emtex_dir_trunc (path, path_size, buf, flags, method);
+ if (rc == EDT_CHANGED && find2 (path, flags))
+ {
+ pretty (path, flags);
+ return (TRUE);
+ }
+ }
+ return (FALSE);
+ }
+}
+
+
+int emtex_dir_find (char *path, size_t path_size,
+ const struct emtex_dir *ed,
+ const char *fname, unsigned flags)
+{
+ int i, absp;
+ const char *p;
+
+ absp = FALSE;
+ for (p = fname; *p != 0; ++p)
+ if (*p == ':' || *p == '/' || *p == '\\')
+ {
+ absp = TRUE;
+ break;
+ }
+
+ if (absp)
+ return (find1 (path, path_size, NULL, fname, flags));
+
+ if ((flags & EDF_CWD) && find1 (path, path_size, NULL, fname, flags))
+ return (TRUE);
+
+ for (i = 0; i < ed->used; ++i)
+ if (find1 (path, path_size, ed->list[i], fname, flags))
+ return (TRUE);
+ return (FALSE);
+}
+
+
+#if defined (TEST)
+
+#include <stdio.h>
+
+int main (int argc, char *argv[])
+{
+ struct emtex_dir ed;
+ int i;
+ unsigned flags1, flags2;
+ char path[260];
+
+ if (argc != 6)
+ {
+ puts ("Usage: emtexdir <flags> <flags> <env> <dir> <fname>");
+ return (1);
+ }
+
+ flags1 = (unsigned)strtol (argv[1], NULL, 0);
+ flags2 = (unsigned)strtol (argv[2], NULL, 0);
+
+ if (!emtex_dir_setup (&ed, argv[3], argv[4], flags1))
+ {
+ fputs ("emtex_dir_setup failed\n", stderr);
+ return (2);
+ }
+
+ printf ("Directories:\n");
+ for (i = 0; i < ed.used; ++i)
+ printf (" %s\n", ed.list[i]);
+
+ if (!emtex_dir_find (path, sizeof (path), &ed, argv[5], flags2))
+ puts ("File not found");
+ else
+ printf ("Path: %s\n", path);
+ return (0);
+}
+
+#endif
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/emtexdir.h b/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/emtexdir.h
new file mode 100644
index 0000000000..a9a986db05
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/emtexdir.h
@@ -0,0 +1,57 @@
+/* emtexdir.h -- written by Eberhard Mattes, donated to the public domain */
+
+#if !defined (_EMTEXDIR_H)
+#define _EMTEXDIR_H
+
+#if defined (__cplusplus)
+extern "C" {
+#endif
+
+
+/* Flags for emtex_dir_setup */
+
+#define EDS_ONESUBDIR 0x0001
+#define EDS_ALLSUBDIR 0x0002
+#define EDS_BANG 0x0004
+
+/* Flags for emtex_dir_find */
+
+#define EDF_CWD 0x0001
+#define EDF_FSLASH 0x0002
+#define EDF_TRACE 0x8000
+
+/* Methods for emtex_dir_trunc */
+
+#define EDT_5_PLUS_3 0 /* 5+3.3 */
+#define EDT_8 1 /* 8.3 */
+
+/* Return values for emtex_dir_trunc */
+
+#define EDT_UNCHANGED 0 /* Path name not changed */
+#define EDT_CHANGED 1 /* Path name truncated */
+#define EDT_TOOLONG 2 /* Path name too long */
+#define EDT_INVALID 3 /* Path name invalid */
+
+struct emtex_dir
+{
+ char **list;
+ int used;
+ int alloc;
+};
+
+extern void (*emtex_dir_find_callback)(const char *name, int ok);
+
+int emtex_dir_setup (struct emtex_dir *ed, const char *env, const char *dir,
+ unsigned flags);
+
+int emtex_dir_find (char *path, size_t path_size, const struct emtex_dir *ed,
+ const char *fname, unsigned flags);
+
+int emtex_dir_trunc (char *dst, size_t dst_size, const char *src,
+ unsigned flags, int method);
+
+#if defined (__cplusplus)
+}
+#endif
+
+#endif /* !defined (_EMTEXDIR_H) */
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/hbf.c b/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/hbf.c
new file mode 100644
index 0000000000..dedb9650b2
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/hbf.c
@@ -0,0 +1,1494 @@
+/*
+ * Copyright 1993,1994,1995,2005 by Ross Paterson
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote
+ * products derived from this software without specific prior written
+ * permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ *
+ * Ross Paterson <ross@soi.city.ac.uk>
+ * 17 October 1995
+ *
+ * The following people have supplied bug fixes:
+ *
+ * Simon Chow <khsc@synoptics.com>
+ * Fung Fung Lee <lee@simd.stanford.edu>
+ * Man-Chi Pong <mcpong@cs.ust.hk>
+ * Steven Simpson <simpson@math.psu.edu>
+ * Charles Wang <charles.wang@infores.com>
+ * Werner Lemberg <wl@gnu.org>
+ *
+ * Ross no longer maintains this code. Please send bug reports to
+ * Werner Lemberg <wl@gnu.org>.
+ *
+ */
+
+/*
+ * Two C interfaces to HBF files.
+ *
+ * The multiple interfaces make this code rather messy; I intend
+ * to clean it up as experience is gained on what is really needed.
+ *
+ * There are also two modes of operation:
+ * - the default is to read each bitmap from its file as demanded
+ * - if IN_MEMORY is defined, the whole bitmap file is held in memory.
+ * In this case, if running under Unix, the bitmap files may be gzipped
+ * (but the filename used in the HBF file should be the name of the
+ * file before it was gzipped).
+ */
+#include <stddef.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <ctype.h>
+#include <string.h>
+#include "hbf.h"
+
+#ifdef __MSDOS__
+#define msdos
+#endif
+
+/*
+ * if the linker complains about an unresolved identifier '_strdup',
+ * uncomment the following definition.
+ */
+/* #define NO_STRDUP */
+
+#ifdef __STDC__
+# define _(x) x
+#else
+# define _(x) ()
+#endif
+
+#define reg register
+
+typedef int bool;
+#define TRUE 1
+#define FALSE 0
+
+#define Bit(n) (1<<(7 - (n)))
+
+/*
+ * Messy file system issues
+ */
+
+#ifdef unix
+#define PATH_DELIMITER ':'
+#define RelativeFileName(fn) ((fn)[0] != '/')
+#define LocalFileName(fn) (strchr(fn, '/') == NULL)
+#endif /* unix */
+#ifdef msdos
+#define PATH_DELIMITER ';'
+#define HasDrive(fn) (isalpha((fn)[0]) && (fn)[1] == ':')
+#ifdef __EMX__
+#define RelativeFileName(fn) (! HasDrive(fn) && \
+ !((fn)[0] == '\\' || (fn)[0] == '/'))
+#define LocalFileName(fn) (! HasDrive(fn) && \
+ strchr(fn, '\\') == NULL && \
+ strchr(fn, '/') == NULL)
+#else
+#define RelativeFileName(fn) (! HasDrive(fn) && (fn)[0] != '\\')
+#define LocalFileName(fn) (! HasDrive(fn) && strchr(fn, '\\') == NULL)
+#endif /* __EMX__ */
+#define READ_BINARY "rb"
+#endif /* msdos */
+#ifdef vms
+#define PATH_DELIMITER ','
+#define RelativeFileName(fn) (strchr(fn, ':') == NULL && ((fn)[0] != '[' || (fn)[1] == '.' || (fn)[1] == '-'))
+#define LocalFileName(fn) (strchr(fn, ':') == NULL && strchr(fn, ']') == NULL)
+#endif
+
+#ifndef RelativeFileName
+#define RelativeFileName(fn) FALSE
+#endif
+
+#ifndef LocalFileName
+#define LocalFileName(fn) FALSE
+#endif
+
+#ifndef READ_BINARY
+#define READ_BINARY "r"
+#endif
+
+#define MAX_FILENAME 1024
+
+/*
+ * Internal structures
+ */
+
+typedef unsigned char byte;
+
+#define PROPERTY struct _PROPERTY
+#define BM_FILE struct _BM_FILE
+#define B2_RANGE struct _B2_RANGE
+#define CODE_RANGE struct _CODE_RANGE
+
+PROPERTY {
+ char *prop_name;
+ char *prop_value;
+ PROPERTY *prop_next;
+};
+
+BM_FILE {
+ char *bmf_name;
+#ifdef IN_MEMORY
+ byte *bmf_contents;
+#else
+ FILE *bmf_file;
+#endif
+ long bmf_size;
+ BM_FILE *bmf_next;
+};
+
+B2_RANGE {
+ byte b2r_start;
+ byte b2r_finish;
+ B2_RANGE *b2r_next;
+};
+
+typedef unsigned short CHAR;
+typedef unsigned int CHAR_INDEX; /* character index in file */
+#define BAD_CHAR_INDEX 0xffff
+
+CODE_RANGE {
+ CHAR code_start;
+ CHAR code_finish;
+ BM_FILE *code_bm_file;
+ long code_offset;
+ CHAR_INDEX code_pos;
+ bool code_transposed;
+ bool code_inverted;
+ CODE_RANGE *code_next;
+};
+
+/*
+ * Extended internal version of HBF
+ */
+
+typedef struct {
+ /* fields corresponding to the definition */
+ HBF public;
+ /* plus internal stuff */
+ char *filename;
+ byte *bitmap_buffer;
+ unsigned int b2_size; /* number of legal byte-2's */
+ PROPERTY *property;
+ B2_RANGE *byte_2_range;
+ CODE_RANGE *code_range;
+ BM_FILE *bm_file;
+} HBF_STRUCT;
+
+#define FirstByte(code) ((code)>>8)
+#define SecondByte(code) ((code)&0xff)
+#define MakeCode(byte1,byte2) (((byte1)<<8)|(byte2))
+
+/* size of a bitmap in the file (may be affected by transposition) */
+#define FileBitmapSize(hbfFile,cp) \
+ ((cp)->code_transposed ? \
+ (hbfBitmapBBox(hbfFile)->hbf_height + 7)/8 * \
+ hbfBitmapBBox(hbfFile)->hbf_width : \
+ HBF_BitmapSize(hbfFile))
+
+#define NEW(type) ((type *)malloc((unsigned)(sizeof(type))))
+
+#define QUOTE '"'
+
+#define MAXLINE 1024
+
+#ifdef WIN32
+#define strdup(x) _strdup(x)
+#else
+ extern char *strdup _((const char *s));
+#endif
+
+static void add_b2r _((B2_RANGE **last_b2r, int start, int finish));
+static bool add_code_range _((HBF_STRUCT *hbf, const char *line));
+static void add_property _((HBF_STRUCT *hbf, const char *lp));
+static CHAR_INDEX b2_pos _((HBF_STRUCT *hbf, HBF_CHAR code));
+static int b2_size _((B2_RANGE *b2r));
+static void clear_bbox _((HBF_BBOX *bbox));
+static void clear_record _((HBF_STRUCT *hbf));
+static char *concat _((const char *dir, int dirlen, const char *stem));
+static char *expand_filename _((const char *name, const char *filename));
+static const byte *get_bitmap
+ _((HBF_STRUCT *hbf, HBF_CHAR code, byte *buffer));
+static byte *local_buffer _((HBF_STRUCT *hbf));
+static void invert _((byte *buffer, unsigned length));
+#ifdef IN_MEMORY
+static bool read_bitmap_file _((BM_FILE *bmf, FILE *f));
+static bool copy_transposed
+ _((HBF *hbf, byte *bitmap, const byte *source));
+#else
+static bool get_transposed _((HBF *hbf, FILE *f, byte *bitmap));
+#endif
+static bool match _((const char *lp, const char *sp));
+static bool parse_file _((FILE *f, HBF_STRUCT *hbf));
+static FILE *path_open
+ _((const char *path, const char *filename, char **fullp));
+static bool real_open _((const char *filename, HBF_STRUCT *hbf));
+
+/* Error reporting */
+
+int hbfDebug; /* set this for error reporting */
+
+#ifdef __STDC__
+#include <stdarg.h>
+
+static void
+eprintf(const char *fmt, ...)
+{
+ if (hbfDebug) {
+ va_list args;
+
+ (void)fprintf(stderr, "HBF: ");
+ va_start(args, fmt);
+ (void)vfprintf(stderr, fmt, args);
+ va_end(args);
+ (void)fprintf(stderr, "\n");
+ }
+}
+#else /* ! __STDC__ */
+/* poor man's variable-length argument list */
+static void
+eprintf(fmt, x1, x2, x3, x4, x5, x6, x7, x8, x9)
+ const char *fmt;
+ int x1, x2, x3, x4, x5, x6, x7, x8, x9;
+{
+ if (hbfDebug) {
+ (void)fprintf(stderr, "HBF: ");
+ (void)fprintf(stderr, fmt, x1, x2, x3, x4, x5, x6, x7, x8, x9);
+ (void)fprintf(stderr, "\n");
+ }
+}
+#endif /* __STDC__ */
+
+static void
+clear_bbox(HBF_BBOX *bbox)
+{
+ bbox->hbf_width = bbox->hbf_height = 0;
+ bbox->hbf_xDisplacement = bbox->hbf_yDisplacement = 0;
+}
+
+static void
+clear_record(HBF_STRUCT *hbf)
+{
+ clear_bbox(&(hbf->public.hbf_bitmap_bbox));
+ clear_bbox(&(hbf->public.hbf_font_bbox));
+ hbf->property = NULL;
+ hbf->filename = NULL;
+ hbf->bitmap_buffer = NULL;
+ hbf->byte_2_range = NULL;
+ hbf->code_range = NULL;
+ hbf->bm_file = NULL;
+}
+
+/*
+ * Byte-2 ranges
+ */
+
+static void
+add_b2r(reg B2_RANGE **last_b2r, int start, int finish)
+{
+reg B2_RANGE *b2r;
+
+ b2r = NEW(B2_RANGE);
+ while (*last_b2r != NULL && (*last_b2r)->b2r_start < start)
+ last_b2r = &((*last_b2r)->b2r_next);
+ b2r->b2r_next = *last_b2r;
+ b2r->b2r_start = start;
+ b2r->b2r_finish = finish;
+ *last_b2r = b2r;
+}
+
+static CHAR_INDEX
+b2_pos(HBF_STRUCT *hbf, HBF_CHAR code)
+{
+reg B2_RANGE *b2r;
+reg unsigned c;
+reg CHAR_INDEX pos;
+
+ c = SecondByte(code);
+ pos = 0;
+ for (b2r = hbf->byte_2_range; b2r != NULL; b2r = b2r->b2r_next)
+ if (b2r->b2r_start <= c && c <= b2r->b2r_finish)
+ return pos + c - b2r->b2r_start;
+ else
+ pos += b2r->b2r_finish - b2r->b2r_start + 1;
+ return BAD_CHAR_INDEX;
+}
+
+static int
+b2_size(reg B2_RANGE *b2r)
+{
+reg int size;
+
+ size = 0;
+ for ( ; b2r != NULL; b2r = b2r->b2r_next)
+ size += b2r->b2r_finish - b2r->b2r_start + 1;
+ return size;
+}
+
+/* map a position to a character code */
+static long
+code_of(HBF_STRUCT *hbf, long pos)
+{
+ long code;
+ int residue;
+reg B2_RANGE *b2r;
+
+ code = pos / hbf->b2_size * 256;
+ residue = pos % hbf->b2_size;
+ for (b2r = hbf->byte_2_range; b2r != NULL; b2r = b2r->b2r_next)
+ if (b2r->b2r_start + residue <= b2r->b2r_finish)
+ return code + b2r->b2r_start + residue;
+ else
+ residue -= b2r->b2r_finish - b2r->b2r_start + 1;
+ /* should never get here */
+ return 0L;
+}
+
+/*
+ * String stuff
+ */
+
+static bool
+match(reg const char *lp, reg const char *sp)
+{
+ while (*lp == *sp && *sp != '\0') {
+ lp++;
+ sp++;
+ }
+ return (*lp == '\0' || isspace((unsigned char)*lp)) && *sp == '\0';
+}
+
+#ifdef NO_STRDUP
+char *
+strdup(const char *s)
+{
+ char *new_s;
+
+ new_s = malloc((unsigned)strlen(s) + 1);
+ strcpy(new_s, s);
+ return new_s;
+}
+#endif
+
+/*
+ * Properties
+ */
+
+static void
+add_property(reg HBF_STRUCT *hbf, const char *lp)
+{
+reg PROPERTY *prop;
+ char tmp[MAXLINE];
+reg char *tp;
+
+ prop = NEW(PROPERTY);
+
+ tp = tmp;
+ while (*lp != '\0' && ! isspace((unsigned char)*lp))
+ *tp++ = *lp++;
+ *tp = '\0';
+ prop->prop_name = strdup(tmp);
+
+ while (*lp != '\0' && isspace((unsigned char)*lp))
+ lp++;
+
+ tp = tmp;
+ if (*lp == QUOTE) {
+ lp++;
+ while (*lp != '\0' && ! (*lp == QUOTE && *++lp != QUOTE))
+ *tp++ = *lp++;
+ }
+ else
+ for (;;) {
+ while (*lp != '\0' && ! isspace((unsigned char)*lp))
+ *tp++ = *lp++;
+ while (*lp != '\0' && isspace((unsigned char)*lp))
+ lp++;
+ if (*lp == '\0')
+ break;
+ *tp++ = ' ';
+ }
+ *tp = '\0';
+ prop->prop_value = strdup(tmp);
+
+ prop->prop_next = hbf->property;
+ hbf->property = prop;
+}
+
+const char *
+hbfProperty(HBF *hbfFile, const char *propName)
+{
+reg HBF_STRUCT *hbf;
+reg PROPERTY *prop;
+
+ hbf = (HBF_STRUCT *)hbfFile;
+ for (prop = hbf->property; prop != NULL; prop = prop->prop_next)
+ if (strcmp(prop->prop_name, propName) == 0)
+ return prop->prop_value;
+ return NULL;
+}
+
+/*
+ * Compatability routines
+ */
+
+const char *
+HBF_GetProperty(HBF *handle, const char *propertyName)
+{
+ return hbfProperty(handle, propertyName);
+}
+
+int
+HBF_GetFontBoundingBox(HBF_Handle handle,
+ unsigned int *width, unsigned int *height,
+ int *xDisplacement, int *yDisplacement)
+{
+ if (width != NULL)
+ *width = hbfFontBBox(handle)->hbf_width;
+ if (height != NULL)
+ *height = hbfFontBBox(handle)->hbf_height;
+ if (xDisplacement != NULL)
+ *xDisplacement = hbfFontBBox(handle)->hbf_xDisplacement;
+ if (yDisplacement != NULL)
+ *yDisplacement = hbfFontBBox(handle)->hbf_yDisplacement;
+ return 0;
+}
+
+int
+HBF_GetBitmapBoundingBox(HBF_Handle handle,
+ unsigned int *width, unsigned int *height,
+ int *xDisplacement, int *yDisplacement)
+{
+ if (width != NULL)
+ *width = hbfBitmapBBox(handle)->hbf_width;
+ if (height != NULL)
+ *height = hbfBitmapBBox(handle)->hbf_height;
+ if (xDisplacement != NULL)
+ *xDisplacement = hbfBitmapBBox(handle)->hbf_xDisplacement;
+ if (yDisplacement != NULL)
+ *yDisplacement = hbfBitmapBBox(handle)->hbf_yDisplacement;
+ return 0;
+}
+
+/*
+ * Prepend a directory to a relative filename.
+ */
+static char *
+concat(const char *dir, /* not necessarily null-terminated */
+ int dirlen, /* number of significant chars in dir */
+ const char *stem) /* relative filename */
+{
+ char *fullname;
+
+ if (dirlen == 0) /* null: current directory */
+ return strdup(stem);
+#ifdef unix
+ fullname = malloc(dirlen + strlen(stem) + 2);
+ (void)sprintf(fullname, "%.*s/%s", dirlen, dir, stem);
+#else
+#ifdef msdos
+ fullname = malloc(dirlen + strlen(stem) + 2);
+ (void)sprintf(fullname, "%.*s\\%s", dirlen, dir, stem);
+#else
+#ifdef vms
+ if (dir[dirlen-1] == ']' && stem[0] == '[' && stem[1] == '-') {
+ dirlen--;
+ stem++;
+ fullname = malloc(dirlen + strlen(stem) + 2);
+ (void)sprintf(fullname, "%.*s.%s", dirlen, dir, stem);
+ }
+ else {
+ if (dir[dirlen-1] == ']' && stem[0] == '[' && stem[1] == '.') {
+ dirlen--;
+ stem++;
+ }
+ fullname = malloc(dirlen + strlen(stem) + 1);
+ (void)sprintf(fullname, "%.*s%s", dirlen, dir, stem);
+ }
+#else
+ fullname = strdup(stem);
+#endif /* vms */
+#endif /* msdos */
+#endif /* unix */
+ return fullname;
+}
+
+/*
+ * Bitmap files
+ *
+ * If the host operating system has a heirarchical file system and
+ * the bitmap file name is relative, it is relative to the directory
+ * containing the HBF file.
+ */
+static char *
+expand_filename(const char *name, const char *hbf_name)
+{
+#ifdef unix
+reg char *s;
+reg int size;
+
+ size = name[0] != '/' && (s = strrchr(hbf_name, '/')) != NULL ?
+ s - hbf_name + 1 : 0;
+ s = malloc((unsigned)size + strlen(name) + 1);
+ (void)sprintf(s, "%.*s%s", size, hbf_name, name);
+ return s;
+#else
+#ifdef msdos
+reg char *s;
+reg int size;
+
+#ifdef __EMX__
+ s = (unsigned char *)hbf_name + strlen((unsigned char *)hbf_name) - 1;
+ for(;;) {
+ if (*s == '\\' || *s == '/')
+ break;
+ if (s == hbf_name) {
+ s = NULL;
+ break;
+ }
+ s--;
+ }
+
+ size = HasDrive(name) ? 0 :
+ (name[0] == '\\' || name[0] == '/') ?
+ (HasDrive(hbf_name) ? 2 : 0) :
+ s != NULL ? s - hbf_name + 1 : 0;
+#else
+ size = HasDrive(name) ? 0 :
+ name[0] == '\\' ? (HasDrive(hbf_name) ? 2 : 0) :
+ (s = strrchr(hbf_name, '\\')) != NULL ?
+ s - hbf_name + 1 : 0;
+#endif /* __EMX__ */
+ s = malloc((unsigned)size + strlen(name) + 1);
+ (void)sprintf(s, "%.*s%s", size, hbf_name, name);
+ return s;
+#else
+#ifdef vms
+reg char *s;
+reg const char *copyto;
+reg int size;
+
+ if ((s = strchr(hbf_name, ']')) != NULL && RelativeFileName(name))
+ return concat(hbf_name, (s - hbf_name) + 1, name);
+
+ copyto = hbf_name;
+ if ((s = strstr(copyto, "::")) != NULL && strstr(name, "::") == NULL)
+ copyto = s+2;
+ if ((s = strchr(copyto, ':')) != NULL && strchr(name, ':') == NULL)
+ copyto = s+1;
+ size = copyto - hbf_name;
+ s = malloc((unsigned)size + strlen(name) + 1);
+ (void)sprintf(s, "%.*s%s", size, hbf_name, name);
+ return s;
+#else
+ return strdup(name);
+#endif /* vms */
+#endif /* msdos */
+#endif /* unix */
+}
+
+static BM_FILE *
+find_file(HBF_STRUCT *hbf, const char *filename)
+{
+ BM_FILE **fp;
+reg BM_FILE *file;
+ FILE *f;
+ char *bmfname;
+#ifdef IN_MEMORY
+#ifdef unix
+ bool from_pipe;
+#endif
+#endif
+
+ for (fp = &(hbf->bm_file); *fp != NULL; fp = &((*fp)->bmf_next)) {
+ bmfname = strrchr((*fp)->bmf_name, '/');
+ bmfname = (bmfname) ? bmfname + 1 : (*fp)->bmf_name;
+ if (strcmp(bmfname, filename) == 0)
+ return *fp;
+ }
+
+ file = NEW(BM_FILE);
+ if (file == NULL) {
+ eprintf("out of memory");
+ return NULL;
+ }
+ file->bmf_name = expand_filename(filename, hbf->filename);
+ if (file->bmf_name == NULL) {
+ free((char *)file);
+ return NULL;
+ }
+ f = fopen(file->bmf_name, READ_BINARY);
+#ifdef IN_MEMORY
+#ifdef unix
+ from_pipe = FALSE;
+ if (f == NULL) {
+ char tmp[400];
+
+ sprintf(tmp, "%s.gz", file->bmf_name);
+ if ((f = fopen(tmp, "r")) != NULL) {
+ fclose(f);
+ sprintf(tmp, "gzcat %s.gz", file->bmf_name);
+ if ((f = popen(tmp, "r")) != NULL)
+ from_pipe = TRUE;
+ }
+ }
+#endif /* unix */
+#endif /* IN_MEMORY */
+ if (f == NULL) {
+ eprintf("can't open bitmap file '%s'", file->bmf_name);
+ free(file->bmf_name);
+ free((char *)file);
+ return NULL;
+ }
+#ifdef IN_MEMORY
+ if (! read_bitmap_file(file, f)) {
+ free(file->bmf_name);
+ free((char *)file);
+ return NULL;
+ }
+#ifdef unix
+ if (from_pipe)
+ pclose(f);
+ else
+ fclose(f);
+#else /* ! unix */
+ fclose(f);
+#endif /* ! unix */
+#else /* ! IN_MEMORY */
+ file->bmf_file = f;
+ fseek(f, 0L, 2);
+ file->bmf_size = ftell(f);
+#endif /* ! IN_MEMORY */
+ file->bmf_next = NULL;
+ *fp = file;
+ return file;
+}
+
+#ifdef IN_MEMORY
+#define GRAIN_SIZE 512
+
+static bool
+read_bitmap_file(BM_FILE *bmf, FILE *f)
+{
+ byte *contents, *cp;
+ long size;
+ int c;
+
+ size = 0;
+ cp = contents = (byte *)malloc((unsigned)GRAIN_SIZE);
+ if (contents == NULL) {
+ eprintf("not enough space for bitmap file");
+ return NULL;
+ }
+ while ((c = getc(f)) != EOF) {
+ if (size%GRAIN_SIZE == 0) {
+ contents = (byte *)realloc((char *)contents,
+ (unsigned)(size + GRAIN_SIZE));
+ if (contents == NULL) {
+ eprintf("not enough space for bitmap file");
+ return NULL;
+ }
+ cp = contents + size;
+ }
+ *cp++ = c;
+ size++;
+ }
+ bmf->bmf_size = size;
+ bmf->bmf_contents = (byte *)realloc((char *)contents, (unsigned)size);
+ return TRUE;
+}
+#endif /* IN_MEMORY */
+
+/*
+ * Code ranges
+ */
+
+/* check that a code range fits within its bitmap file */
+static bool
+too_short(HBF_STRUCT *hbf, CODE_RANGE *cp)
+{
+ int bm_size;
+ long offset, end_offset;
+ BM_FILE *bmf;
+ long start, finish;
+
+ bm_size = FileBitmapSize(&(hbf->public), cp);
+ offset = cp->code_offset;
+ start = cp->code_start;
+ finish = cp->code_finish;
+ end_offset = offset + bm_size *
+ (hbf->b2_size*(long)FirstByte(finish) +
+ b2_pos(hbf, finish) - cp->code_pos + 1);
+ bmf = cp->code_bm_file;
+ if (end_offset <= bmf->bmf_size)
+ return FALSE;
+ /* bitmap file is too short: produce a specific error message */
+ if (offset > bmf->bmf_size)
+ eprintf("bitmap file '%s' is shorter than offset 0x%04lx",
+ bmf->bmf_name, offset);
+ else if (offset + bm_size > bmf->bmf_size)
+ eprintf("bitmap file '%s' too short: no room for any bitmaps at offset 0x%04lx",
+ bmf->bmf_name, offset);
+ else
+ eprintf("bitmap file '%s' is too short - code range appears to be 0x%04lx-0x%04lx",
+ bmf->bmf_name,
+ start,
+ code_of(hbf, cp->code_pos +
+ (bmf->bmf_size - offset)/bm_size) - 1);
+ return TRUE;
+}
+
+static const char *
+skip_word(int n, const char *s)
+{
+ for ( ; n > 0; n--) {
+ while (*s != '\0' && ! isspace((unsigned char)*s))
+ s++;
+ while (*s != '\0' && isspace((unsigned char)*s))
+ s++;
+ }
+ return s;
+}
+
+/* optional keywords at the end of a CODE_RANGE line */
+static void
+parse_keywords(CODE_RANGE *cp, const char *s)
+{
+ for (s = skip_word(4, s) ; *s != '\0'; s = skip_word(1, s)) {
+ switch (*s) {
+ case 's': case 'S': case 't': case 'T':
+ /* keyword "sideways" or "transposed" */
+ cp->code_transposed = TRUE;
+ break;
+ case 'i': case 'I':
+ /* keyword "inverted" */
+ cp->code_inverted = TRUE;
+ }
+ }
+}
+
+static bool
+add_code_range(HBF_STRUCT *hbf, const char *line)
+{
+ CODE_RANGE *cp;
+ CODE_RANGE **cpp;
+ long start, finish;
+ long offset;
+ char filename[MAXLINE];
+ BM_FILE *bmf;
+ CHAR_INDEX b2pos;
+
+ if (sscanf(line, "HBF_CODE_RANGE %li-%li %s %li",
+ &start, &finish, filename, &offset) != 4) {
+ eprintf("syntax error in HBF_CODE_RANGE");
+ return FALSE;
+ }
+ /* code ranges are checked in real_open() */
+ if ((bmf = find_file(hbf, filename)) == NULL)
+ return FALSE;
+ if ((cp = NEW(CODE_RANGE)) == NULL) {
+ eprintf("out of memory");
+ return FALSE;
+ }
+
+ cp->code_start = (CHAR)start;
+ cp->code_finish = (CHAR)finish;
+ cp->code_bm_file = bmf;
+ cp->code_offset = offset;
+ cp->code_transposed = cp->code_inverted = FALSE;
+ parse_keywords(cp, line);
+ /* insert it in order */
+ for (cpp = &hbf->code_range;
+ *cpp != NULL && (*cpp)->code_finish < start;
+ cpp = &((*cpp)->code_next))
+ ;
+ if (*cpp != NULL && (*cpp)->code_start <= finish) {
+ eprintf("code ranges overlap");
+ return FALSE;
+ }
+ cp->code_next = *cpp;
+ *cpp = cp;
+
+ /* set code_pos, and check range */
+ if (start > finish) {
+ eprintf("illegal code range 0x%04lx-0x%04lx", start, finish);
+ return FALSE;
+ }
+ if ((b2pos = b2_pos(hbf, start)) == BAD_CHAR_INDEX) {
+ eprintf("illegal start code 0x%04lx", start);
+ return FALSE;
+ }
+ cp->code_pos = hbf->b2_size*(long)FirstByte(start) + b2pos;
+ if ((b2pos = b2_pos(hbf, finish)) == BAD_CHAR_INDEX) {
+ eprintf("illegal finish code 0x%04lx", finish);
+ return FALSE;
+ }
+ /* check that the bitmap file has enough bitmaps */
+ return ! too_short(hbf, cp);
+}
+
+/*
+ * Reading and parsing of an HBF file
+ */
+
+/* get line, truncating to len, and trimming trailing spaces */
+static bool
+get_line(char *buf, int len, FILE *f)
+{
+ int c;
+ char *bp;
+
+ bp = buf;
+ for (;;) {
+ if ((c = getc(f)) == EOF) {
+ eprintf("unexpected end of file");
+ return FALSE;
+ }
+ if (c == '\n' || c == '\r') {
+ /* trim trailing space */
+ while (bp > buf && isspace((unsigned char)*(bp-1)))
+ bp--;
+ *bp = '\0';
+ return TRUE;
+ }
+ if (len > 0) {
+ *bp++ = c;
+ len--;
+ }
+ }
+}
+
+/* get next non-COMMENT line */
+static bool
+get_text_line(char *buf, int len, FILE *f)
+{
+ while (get_line(buf, len, f))
+ if (*buf != '\0' && ! match(buf, "COMMENT"))
+ return TRUE;
+ return FALSE;
+}
+
+static bool
+get_property(const char *line, const char *keyword, HBF_STRUCT *hbf)
+{
+ if (! match(line, keyword)) {
+ eprintf("%s expected", keyword);
+ return FALSE;
+ }
+ add_property(hbf, line);
+ return TRUE;
+}
+
+static bool
+get_bbox(const char *line, const char *keyword, HBF_BBOX *bbox)
+{
+ int w, h, xd, yd;
+
+ if (! match(line, keyword) ||
+ sscanf(line + strlen(keyword), "%i %i %i %i",
+ &w, &h, &xd, &yd) != 4) {
+ eprintf("%s expected", keyword);
+ return FALSE;
+ }
+ if (w <= 0 || h <= 0) {
+ eprintf("illegal %s dimensions %dx%d", keyword, w, h);
+ return FALSE;
+ }
+ bbox->hbf_width = w;
+ bbox->hbf_height = h;
+ bbox->hbf_xDisplacement = xd;
+ bbox->hbf_yDisplacement = yd;
+ return TRUE;
+}
+
+/*
+ * HBFHeaderFile ::=
+ * 'HBF_START_FONT' version EOLN
+ * 'HBF_CODE_SCHEME' word ... EOLN
+ * 'FONT' fontName EOLN
+ * 'SIZE' ptsize xres yres EOLN
+ * 'HBF_BITMAP_BOUNDING_BOX' w h xd yd EOLN
+ * 'FONTBOUNDINGBOX' w h xd yd EOLN
+ * X11R5FontPropertySection
+ * 'CHARS' n EOLN
+ * HBFByte2RangeSection
+ * HBFCodeRangeSection
+ * 'HBF_END_FONT' EOLN .
+ *
+ * This implementation allows extra lines before HBF_END_FONT.
+ * Anything after HBF_END_FONT is ignored.
+ */
+
+static bool
+parse_file(FILE *f, reg HBF_STRUCT *hbf)
+{
+ char line[MAXLINE];
+ int start, finish;
+
+ if (! get_text_line(line, MAXLINE, f) ||
+ ! get_property(line, "HBF_START_FONT", hbf))
+ return FALSE;
+
+ if (! get_text_line(line, MAXLINE, f) ||
+ ! get_property(line, "HBF_CODE_SCHEME", hbf))
+ return FALSE;
+
+ if (! get_text_line(line, MAXLINE, f) ||
+ ! get_property(line, "FONT", hbf))
+ return FALSE;
+
+ if (! get_text_line(line, MAXLINE, f) ||
+ ! get_property(line, "SIZE", hbf))
+ return FALSE;
+
+ if (! get_text_line(line, MAXLINE, f) ||
+ ! get_bbox(line, "HBF_BITMAP_BOUNDING_BOX",
+ &(hbf->public.hbf_bitmap_bbox)))
+ return FALSE;
+
+ if (! get_text_line(line, MAXLINE, f) ||
+ ! get_bbox(line, "FONTBOUNDINGBOX", &(hbf->public.hbf_font_bbox)))
+ return FALSE;
+
+ if (! get_text_line(line, MAXLINE, f))
+ return FALSE;
+ if (match(line, "STARTPROPERTIES")) {
+ for (;;) {
+ if (! get_text_line(line, MAXLINE, f))
+ return FALSE;
+ if (match(line, "ENDPROPERTIES"))
+ break;
+ add_property(hbf, line);
+ }
+ if (! get_text_line(line, MAXLINE, f))
+ return FALSE;
+ }
+
+ if (match(line, "CHARS"))
+ if (! get_text_line(line, MAXLINE, f))
+ return FALSE;
+
+ if (match(line, "HBF_START_BYTE_2_RANGES")) {
+ for (;;) {
+ if (! get_text_line(line, MAXLINE, f))
+ return FALSE;
+ if (match(line, "HBF_END_BYTE_2_RANGES"))
+ break;
+ if (sscanf(line, "HBF_BYTE_2_RANGE %i-%i",
+ &start, &finish) != 2) {
+ eprintf("HBF_BYTE_2_RANGE expected");
+ return FALSE;
+ }
+ add_b2r(&(hbf->byte_2_range), start, finish);
+ }
+ if (! get_text_line(line, MAXLINE, f))
+ return FALSE;
+ }
+ else
+ add_b2r(&(hbf->byte_2_range), 0, 0xff);
+ hbf->b2_size = b2_size(hbf->byte_2_range);
+
+ if (! match(line, "HBF_START_CODE_RANGES")) {
+ eprintf("HBF_START_CODE_RANGES expected");
+ return FALSE;
+ }
+ for (;;) {
+ if (! get_text_line(line, MAXLINE, f))
+ return FALSE;
+ if (match(line, "HBF_END_CODE_RANGES"))
+ break;
+ if (! add_code_range(hbf, line))
+ return FALSE;
+ }
+
+ for (;;) {
+ if (! get_text_line(line, MAXLINE, f))
+ return FALSE;
+ if (match(line, "HBF_END_FONT"))
+ break;
+ /* treat extra lines as properties (for private extensions) */
+ add_property(hbf, line);
+ }
+
+ return TRUE;
+}
+
+static FILE *
+path_open(const char *path, const char *filename, char **fullp)
+{
+ if (LocalFileName(filename) && path != NULL) {
+#ifdef PATH_DELIMITER
+ char *fullname;
+ FILE *f;
+ const char *p_next;
+
+ for (;;) {
+ p_next = strchr(path, PATH_DELIMITER);
+ if (p_next == NULL)
+ p_next = path + strlen(path);
+ fullname = concat(path, p_next - path, filename);
+ if ((f = fopen(fullname, "r")) != NULL) {
+ *fullp = fullname;
+ return f;
+ }
+ free(fullname);
+ if (*p_next == '\0')
+ break;
+ path = p_next + 1;
+ }
+#endif
+ return NULL;
+ }
+ else {
+ *fullp = strdup(filename);
+ return fopen(*fullp, "r");
+ }
+}
+
+static bool
+real_open(const char *filename, reg HBF_STRUCT *hbf)
+{
+ FILE *f;
+
+ f = path_open(getenv("HBFPATH"), filename, &(hbf->filename));
+ if (f == NULL) {
+ eprintf("can't read file '%s'", filename);
+ return FALSE;
+ }
+ if (! parse_file(f, hbf)) {
+ fclose(f);
+ return FALSE;
+ }
+ fclose(f);
+ return TRUE;
+}
+
+HBF *
+hbfOpen(const char *filename)
+{
+reg HBF_STRUCT *hbf;
+
+ if ((hbf = NEW(HBF_STRUCT)) == NULL) {
+ eprintf("can't allocate HBF structure");
+ return NULL;
+ }
+ clear_record(hbf);
+ if (real_open(filename, hbf))
+ return &(hbf->public);
+ hbfClose(&(hbf->public));
+ return NULL;
+}
+
+int
+HBF_OpenFont(const char *filename, HBF **ptrHandleStorage)
+{
+ return (*ptrHandleStorage = hbfOpen(filename)) == NULL ? -1 : 0;
+}
+
+/*
+ * Close files, free everything associated with the HBF.
+ */
+
+int
+HBF_CloseFont(HBF *hbfFile)
+{
+reg HBF_STRUCT *hbf;
+ PROPERTY *prop_ptr, *prop_next;
+ B2_RANGE *b2r_ptr, *b2r_next;
+ CODE_RANGE *code_ptr, *code_next;
+ BM_FILE *bmf_ptr, *bmf_next;
+ int status;
+
+ status = 0;
+ hbf = (HBF_STRUCT *)hbfFile;
+
+ if (hbf->filename != NULL)
+ free(hbf->filename);
+ if (hbf->bitmap_buffer != NULL)
+ free(hbf->bitmap_buffer);
+
+ for (prop_ptr = hbf->property;
+ prop_ptr != NULL;
+ prop_ptr = prop_next) {
+ prop_next = prop_ptr->prop_next;
+ free(prop_ptr->prop_name);
+ free(prop_ptr->prop_value);
+ free((char *)prop_ptr);
+ }
+
+ for (b2r_ptr = hbf->byte_2_range;
+ b2r_ptr != NULL;
+ b2r_ptr = b2r_next) {
+ b2r_next = b2r_ptr->b2r_next;
+ free((char *)b2r_ptr);
+ }
+
+ for (code_ptr = hbf->code_range;
+ code_ptr != NULL;
+ code_ptr = code_next) {
+ code_next = code_ptr->code_next;
+ free((char *)code_ptr);
+ }
+
+ for (bmf_ptr = hbf->bm_file;
+ bmf_ptr != NULL;
+ bmf_ptr = bmf_next) {
+ bmf_next = bmf_ptr->bmf_next;
+#ifdef IN_MEMORY
+ free((char *)(bmf_ptr->bmf_contents));
+#else
+ if (bmf_ptr->bmf_file != NULL &&
+ fclose(bmf_ptr->bmf_file) < 0)
+ status = -1;
+#endif
+ free(bmf_ptr->bmf_name);
+ free((char *)bmf_ptr);
+ }
+
+ free((char *)hbf);
+
+ return status;
+}
+
+void
+hbfClose(HBF *hbfFile)
+{
+ (void)HBF_CloseFont(hbfFile);
+}
+
+/*
+ * Fetch a bitmap
+ */
+
+const byte *
+hbfGetBitmap(HBF *hbf, HBF_CHAR code)
+{
+ return get_bitmap((HBF_STRUCT *)hbf, code, (byte *)NULL);
+}
+
+int
+HBF_GetBitmap(HBF *hbf, HBF_CHAR code, byte *buffer)
+{
+ return get_bitmap((HBF_STRUCT *)hbf, code, buffer) == NULL ? -1 : 0;
+}
+
+/*
+ * Internal function to fetch a bitmap.
+ * If buffer is non-null, it must be used.
+ */
+static const byte *
+get_bitmap(reg HBF_STRUCT *hbf, HBF_CHAR code, byte *buffer)
+{
+ CHAR_INDEX pos, b2pos;
+reg CODE_RANGE *cp;
+ BM_FILE *bmf;
+ int bm_size;
+ long offset;
+
+ if ((b2pos = b2_pos(hbf, code)) == BAD_CHAR_INDEX)
+ return NULL;
+ pos = hbf->b2_size*FirstByte(code) + b2pos;
+ for (cp = hbf->code_range; cp != NULL; cp = cp->code_next)
+ if (cp->code_start <= code && code <= cp->code_finish) {
+ bmf = cp->code_bm_file;
+ bm_size = FileBitmapSize(&(hbf->public), cp);
+ offset = cp->code_offset +
+ (long)(pos - cp->code_pos) * bm_size;
+#ifdef IN_MEMORY
+ if (buffer == NULL &&
+ ! cp->code_transposed && ! cp->code_inverted)
+ return bmf->bmf_contents + offset;
+#endif /* IN_MEMORY */
+ if (buffer == NULL &&
+ ((buffer = local_buffer(hbf)) == NULL))
+ return NULL;
+#ifdef IN_MEMORY
+ if (cp->code_transposed)
+ copy_transposed(&(hbf->public),
+ buffer,
+ bmf->bmf_contents + offset);
+ else
+ memcpy((char *)buffer,
+ (char *)(bmf->bmf_contents + offset),
+ bm_size);
+#else /* ! IN_MEMORY */
+ if (fseek(bmf->bmf_file, offset, 0) != 0) {
+ eprintf("seek error on code 0x%04x", code);
+ return NULL;
+ }
+ if (cp->code_transposed ?
+ ! get_transposed(&(hbf->public), bmf->bmf_file,
+ buffer) :
+ fread((char *)buffer,
+ bm_size, 1, bmf->bmf_file) != 1) {
+ eprintf("read error on code 0x%04x", code);
+ return NULL;
+ }
+#endif /* IN_MEMORY */
+ if (cp->code_inverted)
+ invert(buffer, HBF_BitmapSize(&(hbf->public)));
+ return buffer;
+ }
+ eprintf("code 0x%04x out of range", code);
+ return NULL;
+}
+
+static byte *
+local_buffer(HBF_STRUCT *hbf)
+{
+ if (hbf->bitmap_buffer == NULL &&
+ (hbf->bitmap_buffer = (byte *)malloc(HBF_BitmapSize(&(hbf->public)))) == NULL) {
+ eprintf("out of memory");
+ return NULL;
+ }
+ return hbf->bitmap_buffer;
+}
+
+static void
+invert(byte *buffer, unsigned int length)
+{
+ for ( ; length > 0; length--)
+ *buffer++ ^= 0xff;
+}
+
+#ifdef IN_MEMORY
+static bool
+copy_transposed(HBF *hbf, reg byte *bitmap, reg const byte *source)
+{
+reg byte *pos;
+reg byte *bm_end;
+ int x;
+ int width;
+reg int row_size;
+reg int c;
+reg int imask, omask;
+
+ width = hbfBitmapBBox(hbf)->hbf_width;
+ row_size = HBF_RowSize(hbf);
+ bm_end = bitmap + HBF_BitmapSize(hbf);
+ (void)memset((char *)bitmap, '\0', HBF_BitmapSize(hbf));
+ for (x = 0; x < width; x++) {
+ pos = bitmap + x/8;
+ omask = Bit(x%8);
+ /* y = 0 */
+ for (;;) {
+ c = *source++;
+ for (imask = Bit(0); imask != 0; imask >>= 1) {
+ /*
+ * At this point,
+ *
+ * imask == Bit(y%8)
+ * pos == bitmap + y*row_size + x/8
+ *
+ * We examine bit y of row x of the input,
+ * setting bit x of row y of the output if
+ * required, by applying omask to *pos.
+ */
+ if ((c & imask) != 0)
+ *pos |= omask;
+ /* if (++y > height) goto end_column */
+ pos += row_size;
+ if (pos >= bm_end)
+ goto end_column;
+ }
+ }
+end_column:
+ ;
+ }
+ return TRUE;
+}
+#else /* ! IN_MEMORY */
+static bool
+get_transposed(HBF *hbf, FILE *f, reg byte *bitmap)
+{
+reg byte *pos;
+reg byte *bm_end;
+ int x;
+ int width;
+reg int row_size;
+reg int c;
+reg int imask, omask;
+
+ width = hbfBitmapBBox(hbf)->hbf_width;
+ row_size = HBF_RowSize(hbf);
+ bm_end = bitmap + HBF_BitmapSize(hbf);
+ (void)memset((char *)bitmap, '\0', HBF_BitmapSize(hbf));
+ for (x = 0; x < width; x++) {
+ pos = bitmap + x/8;
+ omask = Bit(x%8);
+ /* y = 0 */
+ for (;;) {
+ if ((c = getc(f)) == EOF)
+ return FALSE;
+ for (imask = Bit(0); imask != 0; imask >>= 1) {
+ /*
+ * At this point,
+ *
+ * imask == Bit(y%8)
+ * pos == bitmap + y*row_size + x/8
+ *
+ * We examine bit y of row x of the input,
+ * setting bit x of row y of the output if
+ * required, by applying omask to *pos.
+ */
+ if ((c & imask) != 0)
+ *pos |= omask;
+ /* if (++y > height) goto end_column */
+ pos += row_size;
+ if (pos >= bm_end)
+ goto end_column;
+ }
+ }
+end_column:
+ ;
+ }
+ return TRUE;
+}
+#endif /* ! IN_MEMORY */
+
+/*
+ * Call function on each valid code in ascending order.
+ */
+void
+hbfForEach(reg HBF *hbfFile, void (*func)(HBF *, HBF_CHAR))
+{
+ HBF_STRUCT *hbf;
+ CODE_RANGE *cp;
+reg B2_RANGE *b2r;
+reg unsigned byte1, byte2;
+reg unsigned finish;
+
+ hbf = (HBF_STRUCT *)hbfFile;
+ for (cp = hbf->code_range; cp != NULL; cp = cp->code_next) {
+ byte1 = FirstByte(cp->code_start);
+ byte2 = SecondByte(cp->code_start);
+ while (MakeCode(byte1, byte2) <= cp->code_finish) {
+ for (b2r = hbf->byte_2_range;
+ b2r != NULL;
+ b2r = b2r->b2r_next) {
+ if (byte2 < b2r->b2r_start)
+ byte2 = b2r->b2r_start;
+ finish = b2r->b2r_finish;
+ if (byte1 == FirstByte(cp->code_finish) &&
+ finish > SecondByte(cp->code_finish))
+ finish = SecondByte(cp->code_finish);
+ while (byte2 <= finish) {
+ (*func)(hbfFile,
+ MakeCode(byte1, byte2));
+ byte2++;
+ }
+ }
+ byte1++;
+ byte2 = 0;
+ }
+ }
+}
+
+const char *
+hbfFileName(HBF *hbf)
+{
+ return ((HBF_STRUCT *)hbf)->filename;
+}
+
+long
+hbfChars(HBF *hbfFile)
+{
+ HBF_STRUCT *hbf;
+ CODE_RANGE *cp;
+ long num_chars;
+
+ hbf = (HBF_STRUCT *)hbfFile;
+ num_chars = 0;
+ for (cp = hbf->code_range; cp != NULL; cp = cp->code_next)
+ num_chars +=
+ hbf->b2_size*FirstByte(cp->code_finish) +
+ b2_pos(hbf, cp->code_finish) -
+ (hbf->b2_size*FirstByte(cp->code_start) +
+ b2_pos(hbf, cp->code_start)) + 1;
+ return num_chars;
+}
+
+/*
+ * Functions also implemented as macros
+ */
+
+#ifdef hbfBitmapBBox
+#undef hbfBitmapBBox
+#endif
+
+HBF_BBOX *
+hbfBitmapBBox(HBF *hbf)
+{
+ return &(hbf->hbf_bitmap_bbox);
+}
+
+#ifdef hbfFontBBox
+#undef hbfFontBBox
+#endif
+
+HBF_BBOX *
+hbfFontBBox(HBF *hbf)
+{
+ return &(hbf->hbf_font_bbox);
+}
+
+const void *
+hbfGetByte2Range(HBF *hbfFile, const void *b2r_pointer,
+ byte *startp, byte *finishp)
+{
+ HBF_STRUCT *hbf;
+ const B2_RANGE *b2r;
+
+ hbf = (HBF_STRUCT *)hbfFile;
+ if (b2r_pointer == NULL)
+ b2r = hbf->byte_2_range;
+ else
+ b2r = ((const B2_RANGE *)b2r_pointer)->b2r_next;
+ if(b2r == NULL)
+ return NULL;
+ *startp = b2r->b2r_start;
+ *finishp = b2r->b2r_finish;
+ return (const void *)b2r;
+}
+
+const void *
+hbfGetCodeRange(HBF *hbfFile, const void *code_pointer,
+ HBF_CHAR *startp, HBF_CHAR *finishp)
+{
+ HBF_STRUCT *hbf;
+ const CODE_RANGE *cp;
+
+ hbf = (HBF_STRUCT *)hbfFile;
+ if (code_pointer == NULL)
+ cp = hbf->code_range;
+ else
+ cp = ((const CODE_RANGE *)code_pointer)->code_next;
+ if(cp == NULL)
+ return NULL;
+ *startp = cp->code_start;
+ *finishp = cp->code_finish;
+ return (const void *)cp;
+}
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/hbf.h b/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/hbf.h
new file mode 100644
index 0000000000..34f5940a71
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/hbf.h
@@ -0,0 +1,215 @@
+/*
+ * Copyright 1993,1994,1995,2005 by Ross Paterson
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote
+ * products derived from this software without specific prior written
+ * permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ *
+ * Two interfaces to HBF files -- take your pick.
+ *
+ * Ross Paterson <ross@soi.city.ac.uk>
+ *
+ * Ross no longer maintains this code. Please send bug reports to
+ * Werner Lemberg <wl@gnu.org>.
+ *
+ */
+#ifndef _HBF_
+#define _HBF_
+
+#ifndef __STDC__
+# ifndef const
+# define const
+# endif
+#endif
+
+/*
+ * #1: a lightweight C interface.
+ */
+
+typedef unsigned int HBF_CHAR;
+
+typedef struct {
+ unsigned short hbf_width;
+ unsigned short hbf_height;
+ short hbf_xDisplacement;
+ short hbf_yDisplacement;
+} HBF_BBOX;
+
+typedef struct {
+ /* fields corresponding to the definition */
+ HBF_BBOX hbf_bitmap_bbox; /* HBF_BITMAP_BOUNDING_BOX */
+ HBF_BBOX hbf_font_bbox; /* FONTBOUNDINGBOX */
+} HBF;
+
+extern HBF *hbfOpen(
+#ifdef __STDC__
+ const char *filename
+#endif
+ );
+
+extern void hbfClose(
+#ifdef __STDC__
+ HBF *hbf
+#endif
+ );
+
+extern const char *hbfProperty(
+#ifdef __STDC__
+ HBF *hbf,
+ const char *propName
+#endif
+ );
+
+extern const unsigned char *hbfGetBitmap(
+#ifdef __STDC__
+ HBF *hbf,
+ HBF_CHAR code
+#endif
+ );
+
+extern void hbfForEach(
+#ifdef __STDC__
+ HBF *hbf,
+ void (*func)(HBF *sameHbf, HBF_CHAR code)
+#endif
+ );
+
+extern const char *hbfFileName(
+#ifdef __STDC__
+ HBF *hbf
+#endif
+ );
+
+extern long hbfChars(
+#ifdef __STDC__
+ HBF *hbf
+#endif
+ );
+
+extern HBF_BBOX *hbfBitmapBBox(
+#ifdef __STDC__
+ HBF *hbf
+#endif
+ );
+/* but defined here as a macro */
+#define hbfBitmapBBox(hbf) (&((hbf)->hbf_bitmap_bbox))
+
+extern HBF_BBOX *hbfFontBBox(
+#ifdef __STDC__
+ HBF *hbf
+#endif
+ );
+/* but defined here as a macro */
+#define hbfFontBBox(hbf) (&((hbf)->hbf_font_bbox))
+
+#define HBF_RowSize(hbf)\
+ ((hbfBitmapBBox(hbf)->hbf_width + 7)/8)
+
+#define HBF_BitmapSize(hbf)\
+ (HBF_RowSize(hbf) * hbfBitmapBBox(hbf)->hbf_height)
+
+#define HBF_GetBit(hbf,bitmap,x,y)\
+ (((bitmap)[(y)*HBF_RowSize(hbf) + (x)/8]>>(7 - (x)%8))&01)
+
+extern int hbfDebug; /* set non-zero for error reporting */
+
+extern const void *hbfGetCodeRange(
+#ifdef __STDC__
+ HBF *hbfFile,
+ const void *code_pointer,
+ HBF_CHAR *startp,
+ HBF_CHAR *finishp
+#endif
+ );
+
+extern const void *hbfGetByte2Range(
+#ifdef __STDC__
+ HBF *hbfFile,
+ const void *b2r_pointer,
+ unsigned char *startp,
+ unsigned char *finishp
+#endif
+ );
+
+/*
+ * #2: taken from Appendix 2 of the HBF draft.
+ */
+
+typedef unsigned int HBF_HzCode;
+typedef unsigned char HBF_Byte ;
+typedef HBF_Byte * HBF_BytePtr ;
+typedef HBF * HBF_Handle ;
+typedef HBF_Handle * HBF_HandlePtr ;
+typedef char * String ;
+
+extern int HBF_OpenFont(
+#ifdef __STDC__
+ const char * filename,
+ HBF_HandlePtr ptrHandleStorage
+#endif
+);
+
+extern int HBF_CloseFont(
+#ifdef __STDC__
+ HBF_Handle handle
+#endif
+);
+
+extern const char * HBF_GetProperty(
+#ifdef __STDC__
+ HBF_Handle handle,
+ const char * propertyName
+#endif
+);
+
+extern int HBF_GetFontBoundingBox(
+#ifdef __STDC__
+ HBF_Handle handle,
+ unsigned int *width,
+ unsigned int *height,
+ int *xDisplacement,
+ int *yDisplacement
+#endif
+);
+
+extern int HBF_GetBitmapBoundingBox(
+#ifdef __STDC__
+ HBF_Handle handle,
+ unsigned int *width,
+ unsigned int *height,
+ int *xDisplacement,
+ int *yDisplacement
+#endif
+);
+
+extern int HBF_GetBitmap(
+#ifdef __STDC__
+ HBF_Handle handle,
+ HBF_HzCode hanziCode,
+ HBF_BytePtr ptrBitmapBuffer
+#endif
+);
+
+#endif /* ! _HBF_ */
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/hbf2gf.1 b/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/hbf2gf.1
new file mode 100644
index 0000000000..144e7e6893
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/hbf2gf.1
@@ -0,0 +1,718 @@
+.\" man page for hbf2gf
+.\"
+.\" Copyright (C) 1994-2015 Werner Lemberg <wl@gnu.org>
+.\"
+.\" This program is free software; you can redistribute it and/or modify
+.\" it under the terms of the GNU General Public License as published by
+.\" the Free Software Foundation; either version 2 of the License, or
+.\" (at your option) any later version.
+.\"
+.\" This program is distributed in the hope that it will be useful,
+.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
+.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+.\" GNU General Public License for more details.
+.\"
+.\" You should have received a copy of the GNU General Public License
+.\" along with this program in doc/COPYING; if not, write to the Free
+.\" Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+.\" MA 02110-1301 USA
+.\"
+.
+.TH HBF2GF 1 18-Apr-2015 "CJK Version 4.8.4"
+.SH NAME
+hbf2gf \- convert a CJK bitmap font into subfonts usable by TeX and Omega.
+.
+.
+.SH SYNOPSIS
+.na
+.nh
+.B hbf2gf
+.RB [ \-q ]
+.IR \%configuration-file [ .cfg ]
+.br
+.B hbf2gf
+'in +\n(.ku
+.RB [ \-q ]
+.RB [ \-p ]
+.RB [ \-g ]
+.RB [ \-n ]
+.I \%subfont-name \%x-resolution
+.RI [ \%y-scale \ | \ \%y-resolution ]
+.br
+.in
+.B hbf2gf
+.B \-t
+.RB [ \-q ]
+.I \%subfont-name
+.br
+.B "hbf2gf \-\-version"
+|
+.B \-\-help
+.ad
+.hy
+.
+.
+.
+.\" ====
+.\" ==== macro definitions
+.\" ====
+.
+.\" here we define \TeX for troff and nroff
+.if t .ds TX \fRT\h'-0.1667m'\v'0.20v'E\v'-0.20v'\h'-0.125m'X\fP
+.if n .ds TX TeX
+.
+.\" and here the same for \LaTeX
+.if t \{\
+.ie '\*(.T'dvi' \
+.ds LX \fRL\h'-0.36m'\v'-0.15v'\s-3A\s0\h'-0.15m'\v'0.15v'\fP\*(TX
+.el .ds LX \fRL\h'-0.36m'\v'-0.22v'\s-2A\s0\h'-0.15m'\v'0.22v'\fP\*(TX
+.\}
+.if n .ds LX LaTeX
+.
+.\" \LaTeXe
+.\" note that we need \vareps for TeX instead of \eps which can only be
+.\" accessed with the \N escape sequence (in the Math Italic font)
+.if t \{\
+.ie '\*(.T'dvi' .ds LE \*(LX\h'0.15m'2\v'0.20v'\f(MI\N'34'\fP\v'-0.20v'
+.el .ds LE \*(LX\h'0.15m'2\v'0.20v'\(*e\v'-0.20v'
+.\}
+.if n .ds LE LaTeX\ 2e
+.
+.\" a definition for \Delta
+.if t .ds DE \(*D
+.if n .ds DE Delta_
+.
+.\" a typewriter font
+.if t \{\
+.de C
+\fC\\$1\fP\\$2
+..
+.\}
+.if n \{\
+.de C
+\\$1\\$2
+..
+.\}
+.
+.\" an addition to .TP to allow two labels for the same item
+.de TQ
+.br
+.ns
+.TP
+..
+.
+.\" ====
+.\" ==== end of macro definitions
+.\" ====
+.
+.
+.
+.SH DESCRIPTION
+CJK bitmap fonts can't be directly used with \*(TX
+because the number of characters in such fonts exceeds\ 256, the limit of a
+\*(TX
+font.
+Thus it is necessary to split these fonts into subfonts, and this is
+exactly what
+.B hbf2gf
+does.
+.PP
+As the name says,
+.B hbf2gf
+uses CJK fonts in a certain format which is called
+.B Hanzi Bitmap Font
+.RB ( HBF )
+format.
+It simply consists of the CJK bitmap file(s) and a text file in a format
+very similar to the BDF format of the X\ Window System which describes the
+bitmap font files: the encoding, the size, etc.
+The produced
+.C GF
+files can then be converted with
+.B gftopk
+into standard
+.C PK
+files.
+.PP
+.B hbf2gf
+can be called in three modes:
+.
+.PP
+.in +2m
+.B hbf2gf
+.RB [ \-q ]
+.IR configuration-file [ .cfg ]
+.PP
+.in +5m
+This call normally creates a set of
+.C GF
+files, one
+.C PL
+file, and a batch file which must be executed after
+.B hbf2gf
+has finished.
+This script will then call
+.B gftopk
+to convert all
+.C GF
+files into
+.C PK
+files, and it will call
+.B pltotf
+to convert the
+.C PL
+file into a
+.C TFM
+file.
+Finally it will copy the
+.C TFM
+file so that each
+.C PK
+file has its
+.C TFM
+file (which are all identical).
+.PP
+.in +5m
+If
+.B ofm_file
+is set to \(oqyes\(cq in the configuration file,
+.C OFM
+and
+.C OVF
+files will be created too.
+.
+.PP
+.in +5m
+.B \-q
+makes
+.B hbf2gf
+quiet.
+.PP
+.in +2m
+.na
+.nh
+.B hbf2gf
+'in +\n(.ku
+.RB [ \-q ]
+.RB [ \-p ]
+.RB [ \-g ]
+.RB [ \-n ]
+.I \%subfont-name \%x-resolution
+.RI [ \%y-scale \ | \ \%y-resolution ]
+.ad
+.hy
+.PP
+.in +5m
+This mode is intended for use with
+.B \%mktexpk
+and its derivates.
+Only one
+.C GF
+file together with a
+.C PL
+file for the given subfont will be computed, taking the horizontal
+resolution and a vertical scaling factor (if the value is smaller than\ 10)
+resp. the vertical resolution (otherwise) from the command line, ignoring
+the
+.B nmb_fonts
+parameter of the configuration file.
+The last two characters (which are interpreted as the subfont number) are
+stripped to get the name for the configuration file (which must end with
+\(oq\c
+.C \&.cfg \(cq).
+No job file will be created.
+If option
+.B \-p
+is set, no
+.C PL
+file is created.
+If
+.B \-g
+is set, no
+.C GF
+file is created.
+The extension can be controlled with
+.BR \-n ;
+if set, the extension is \(oq\c
+.C \&.gf \(cq,
+otherwise \(oq\c
+.C \&. <\c
+.IR resolution >\c
+.C gf \(cq.
+.B \-q
+makes
+.B hbf2gf
+quiet.
+.
+.PP
+.in +2m
+.na
+.nh
+.B hbf2gf
+'in +\n(.ku
+.B \-t
+.RB [ \-q ]
+.I \%subfont-name
+.ad
+.hy
+.PP
+.in +5m
+This mode is intended for use with scripts like
+.BR \%mktexpk ;
+it tests whether the specified subfont name leads to an
+.B hbf2gf
+configuration file.
+It returns 0 on success and prints out the name of that configuration file
+(provided the
+.B \-q
+switch isn't set).
+This test isn't a thorough one; it only removes the last two characters
+and checks whether a configuration file with that name exists.
+.PP
+See the next section for more details about configuration files.
+.PP
+Specifying the option
+.B \-\-version
+returns the current version of
+.B hbf2gf
+and the used file search library (e.g.\ \c
+.BR kpathsea ).
+Usage information is shown with the
+.B \-\-help
+parameter.
+.
+.
+.SH "CONFIGURATION FILE"
+Here a sample configuration file (\c
+.C gsfs14.cfg )
+for a 56\(mu56 Chinese font in GB encoding; note that all information
+about the font is in the
+.C jfs56.hbf
+file.
+See the
+.B "FILE SEARCHING"
+section how HBF fonts and
+.B hbf2gf
+configuration files are found.
+See the
+.B AVAILABILITY
+section where to get CJK fonts together with its
+.C HBF
+files:
+.PP
+.if t \fC
+.nf
+ hbf_header jfs56.hbf
+ mag_x 1
+ threshold 128
+ comment jianti fansongti 56x56 pixel font
+
+ design_size 14.4
+
+ y_offset \-13
+
+ nmb_files \-1
+
+ output_name gsfs14
+
+ checksum 123456789
+
+ dpi_x 300
+
+ pk_files no
+ tfm_files yes
+
+ coding codingscheme GuoBiao encoded TeX text
+
+ pk_directory $HBF_TARGET/pk/modeless/gb2312/gsfs14/
+ tfm_directory $HBF_TARGET/tfm/gb2312/gsfs14/
+.fi
+.if t \fP
+.PP
+A configuration file is a plain text file consisting of keywords and its
+arguments.
+A keyword must start a line, otherwise the whole line will be ignored.
+If the word starting a line is not a keyword, the line will be ignored too.
+Empty lines will also be skipped.
+The search for keywords is case insensitive; in contrast, the arguments will
+be taken exactly as given (except \(oqyes\(cq and \(oqno\(cq which can be written with
+uppercase or lowercase letters).
+Each keyword has one argument which must be separated by whitespace (blanks
+or tabs) from the keyword and must be on the same line.
+Each line must not be longer than 256 characters.
+.PP
+You can use environment variables in the configuration file.
+The escape character starting an environment variable in the configuration
+file is always \(oq\c
+.C $ \(cq,
+even for operating systems like DOS which has other conventions.
+.B hbf2gf
+recognizes only environment variable names which start with a letter or an
+underscore, followed by alphanumeric characters or underscores.
+You can surround the variable with braces to indicate where the variable
+name ends, for example
+.C ${FOO} .
+To get a dollar sign you must write \(oq\c
+.C $$ \(cq.
+The expansion of environment variables in hbf2gf itself (without the help of
+either kpathsea, emtexdir, or MiKTeX searching routines) is very limited;
+this feature has been carried over from previous versions.
+It can't expand variables set in texmf.cnf; it also can't handle more than
+one directory as the variable's value.
+.B Don't use it except for the \(oqpk_directory\(cq and \(oqtfm_directory\(cq
+.B parameters!
+.PP
+This is the list of all necessary keywords:
+.TP
+.B hbf_header
+The HBF header file name of the input font(s).
+.B hbf2gf
+uses the given searching mechanism (kpathsea, emtexdir, or MiKTeX) to locate
+this file.
+.TP
+.B output_name
+The name stem of the output files.
+A running two digit decimal number starting with \(oq\c
+.C 01 \(cq
+will be appended.
+For Unicode fonts see the keyword
+.B unicode
+below.
+This value is in almost all cases identical to the name of the configuration
+file.
+.PP
+And now all optional keywords:
+.TP
+.B x_offset
+Increases the character width.
+Will be applied on both sides; default for non-rotated glyphs is the value
+given in the HBF header
+.RB ( HBF_BITMAP_BOUNDING_BOX )
+scaled to
+.B design_size
+(in pixels).
+.TP
+.B y_offset
+Shifts all characters up or down; default for non-rotated glyphs is the value
+given in the HBF header
+.RB ( HBF_BITMAP_BOUNDING_BOX )
+scaled to
+.B design_size
+(in pixels).
+.TP
+.B design_size
+The design size (in points) of the font.
+.B x_offset
+and
+.B y_offset
+refer to this size.
+Default is\ 10.0.
+.TP
+.B slant
+The slant of the font (given as \*(DEx\ /\ \*(DEy).
+Only values in the range 0\ \(<=\ \fBslant\fP\ \(<=\ 1 are allowed.
+Default is\ 0.0.
+.TP
+.B rotation
+If set to \(oqyes\(cq, all glyphs will be rotated 90\ degrees counter-clockwise.
+The default offsets as given in the HBF header will be ignored (and set
+to\ 0).
+Default is \(oqno\(cq.
+.TP
+.B mag_x
+.TQ
+.B mag_y
+Scaling values of the characters to reach design size.
+If only one magnification is given, x and y values are assumed to be equal.
+Default is \fBmag_x\fP\ =\ \fBmag_y\fP\ =\ 1.0.
+.PP
+.TP
+.B threshold
+A value between 1 and\ 254 defining a threshold for converting the internal
+graymap into the output bitmap; lower values cut more pixels.
+Default value is\ 128.
+.PP
+.TP
+.B comment
+A comment describing the font; default is none.
+.PP
+.TP
+.B nmb_fonts
+The number of subfonts to create.
+Default value is \-1 for creating all fonts.
+.TP
+.B unicode
+If \(oqyes\(cq, a two digit hexadecimal number will be used as a running number,
+starting with the value of the first byte of the first code range.
+Default is \(oqno\(cq.
+.TP
+.B min_char
+The minimum value of the encoding.
+You should set this value to get correct subfile offsets if it is not
+identical to the lowest character code in the HBF file.
+.PP
+.TP
+.B dpi_x
+.TQ
+.B dpi_y
+The horizontal and vertical resolution (in dpi) of the printer.
+If only one resolution is given, x and y values are assumed to be equal.
+Default is\ 300.
+.TP
+.B checksum
+A checksum to identify the
+.C GF
+files with the appropriate
+.C TFM
+files.
+The default value of this unsigned 32bit integer is\ 0.
+.TP
+.B coding
+A comment describing the coding scheme; default is none.
+.PP
+.TP
+.B pk_directory
+The destination directory of the
+.C PK
+files; default: none.
+Attention!
+The batch file will not check whether this directory exists.
+.TP
+.B tfm_directory
+The destination directory of the
+.C TFM
+files; default: none.
+Attention!
+The batch file will not check whether this directory exists.
+.TP
+.B pk_files
+Whether to create
+.C PK
+files or not; default is \(oqyes\(cq.
+.TP
+.B tfm_files
+Whether to create
+.C TFM
+files or not; default is \(oqyes\(cq.
+.TP
+.B ofm_file
+Whether to create an
+.C OPL
+file or not; default is \(oqno\(cq.
+The batch file will then use
+.B ovp2ovf
+of the Omega distribution to convert it into an
+.C OFM
+and an
+.C OVF
+file.
+The
+.C OPL
+file simply maps all subfonts back to a single Omega font.
+.TP
+.B long_extension
+If \(oqyes\(cq,
+.C PK
+files will include the resolution in the extension (e.g.
+.C gsso1201.300pk ).
+This affects the batch file only (default is \(oqyes\(cq).
+.TP
+.B rm_command
+The shell command to remove files; default: \(oqrm\(cq.
+.TP
+.B cp_command
+The shell command to copy files; default: \(oqcp\(cq.
+.TP
+.B job_extension
+The extension of the batch file which calls
+.B gftopk
+and
+.B pltotf
+to convert the
+.C GF
+and the
+.C PL
+files into
+.C PK
+and
+.C TFM
+files respectively; default is none.
+.
+.
+.SH "FILE SEARCHING"
+.B hbf2gf
+uses either the
+.BR kpathsea ,
+.BR emtexdir ,
+or
+.B MiKTeX
+library for searching files
+.RB ( emtexdir
+will work only on operating systems which have an MS-DOSish background,
+i.e., MS-DOS, OS/2, Windows;
+.B MiKTeX
+is for Win32 systems).
+.
+.SS kpathsea
+The actual version of kpathsea is displayed on screen if you call
+.B hbf2gf
+.BR \-\-version .
+.PP
+Here is a table of the file type and the corresponding
+.B kpathsea
+variables.
+.PP
+.in +4m
+.ta 2i
+.br
+.C "\&.hbf MISCFONTS"
+.br
+.C "\&.cfg HBF2GFINPUTS"
+.PP
+Please consult the info files of
+.B kpathsea
+for details on these variables.
+The decision which naming scheme to use for variables will be done during
+compilation.
+.PP
+You should set the
+.C TEXMFCNF
+variable to the directory where your
+.C texmf.cnf
+configuration file resides.
+.PP
+Here is the proper command to find out to which value a
+.B kpathsea
+variable is set (we use
+.C MISCFONTS
+as an example).
+This is especially useful if a variable isn't set in
+.C texmf.cnf
+or in the environment, thus pointing to the default value which is
+hard-coded into the
+.B kpathsea
+library.
+.PP
+.in +2m
+.C "kpsewhich \-progname=hbf2gf \-expand\-var='$MISCFONTS'"
+.PP
+We select the program name also since it is possible to specify
+variables which are searched only for a certain program \(en in our
+example it would be
+.C MISCFONTS.hbf2gf .
+.PP
+A similar but not identical method is to say
+.PP
+.in +2m
+.C "kpsewhich \-progname=hbf2gf \-show\-path='misc fonts'"
+.PP
+[A full list of format types can be obtained by saying \(oq\c
+.C "kpsewhich \-\-help" \(cq
+on the command line prompt.]
+This is exactly how
+.B hbf2gf
+searches for files; the disadvantage is that all variables are expanded
+which can cause very long strings.
+.
+.SS emtexdir
+.PP
+Here the list of suffixes and its related environment variables to be set in
+.C autoexec.bat
+(resp. in
+.C config.sys
+for OS/2):
+.PP
+.in +4m
+.ta 2i
+.br
+.C "\&.hbf HBFONTS"
+.br
+.C "\&.cfg HBFCFG"
+.PP
+If one of the variables isn't set, a warning message is emitted.
+The current directory will always be searched.
+As usual, one exclamation mark appended to a directory path causes
+subdirectories one level deep to be searched, two exclamation marks causes
+all subdirectories to be searched.
+Example:
+.PP
+.in +2m
+.C HBFONTS=c:\\\\fonts\\\\hbf!!;d:\\\\myfonts\\\\hbf!
+.PP
+Constructions like \(oq\c
+.C c:\\\\fonts!!\\\\hbf \(cq
+aren't possible.
+.
+.SS MikTeX
+.PP
+Please consult the documentation files of
+.B MiKTeX
+for more details.
+.
+.
+.SH LIMITATIONS
+The x and y output size must not exceed
+.BR MAX_CHAR_SIZE ,
+which is defined at compile time; its default value is 1023\ (pixel).
+.
+.
+.SH "SEE ALSO"
+.BR ttf2pk (1)
+.PP
+.C hbf2gf.w :
+'in +\n(.ku
+this is the source code written in
+.B CWEB
+which can be converted into a pretty-printed \*(TX
+document using
+.BR cweave .
+The CJK package also contains a preformatted
+.C hbf2gf.pdf
+file.
+.PP
+the
+.B CJK
+documentation files (\c
+.C hbf2gf.txt ).
+.PP
+the
+.B Hanzi Bitmap File
+.RB ( HBF )
+standard version\ 1.3; available at
+.C \%ftp.ifcss.org .
+.PP
+the Omega documentation available at
+.C ftp.ens.fr
+and the CTAN hosts and mirrors.
+.
+.
+.SH FILES
+.TP
+.C *.cfg
+The
+.B hbf2gf
+configuration scripts.
+.TP
+.C *.hbf
+HBF header files which describe fixed-width bitmap fonts.
+Note that the bitmap font name(s) themselves as specified in the header files
+are irrelevant for
+.BR hbf2gf .
+.
+.
+.SH AVAILABILITY
+.B hbf2gf
+is part of the CJK macro package for \*(LE
+available at the CTAN hosts and its mirrors.
+.PP
+CJK fonts together with HBF header files can be found at
+.C ftp.ifcss.org
+and its mirrors.
+.
+.
+.SH AUTHORS
+Werner Lemberg
+.C <wl@gnu.org>
+.br
+Ross Paterson (the HBF API)
+.C <ross@soi.city.ac.uk>
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/hbf2gf.c b/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/hbf2gf.c
new file mode 100644
index 0000000000..1e250496a6
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/hbf2gf.c
@@ -0,0 +1,2250 @@
+#define banner \
+"hbf2gf (CJK ver. 4.8.4)" \
+ \
+
+#define TRUE 1
+#define FALSE 0 \
+
+#define STRING_LENGTH 255 \
+
+#define FILE_NAME_LENGTH 1024 \
+ \
+
+#define VERSION \
+"\n" \
+"Copyright (C) 1996-1999 Werner Lemberg.\n" \
+"There is NO warranty. You may redistribute this software\n" \
+"under the terms of the GNU General Public License\n" \
+"and the HBF library copyright.\n" \
+"\n" \
+"For more information about these matters, see the files\n" \
+"named COPYING and hbf.c.\n" \
+"\n" \
+
+#define USAGE \
+"\n" \
+"Usage: hbf2gf [-q] configuration_file[.cfg]\n" \
+" hbf2gf [options] font_name x_resolution [y_scale | y_resolution]\n" \
+" hbf2gf -t [-q] font_name\n" \
+"\n" \
+" Convert a font in HBF format to TeX's GF resp. PK format.\n" \
+"\n" \
+" -q be silent\n" \
+" -p don't produce a PL file\n" \
+" -g don't produce a GF file\n" \
+" -n use no resolution in extension (only `.gf')\n" \
+" -t test for font_name (returns 0 on success)\n" \
+" --help print this message and exit\n" \
+" --version print version number and exit\n" \
+"\n" \
+
+#define GF_ID 131
+#define PRE 247 \
+
+#define header " hbf2gf output " \
+
+#define BOC 67
+#define BOC1 68
+#define EOC 69 \
+
+#define _2_16 65536.0
+#define _2_20 1048576.0 \
+
+#define XXX1 239
+#define XXX2 240
+#define XXX3 241
+#define XXX4 242 \
+
+#define YYY 243 \
+
+#define POST 248 \
+
+#define CHAR_LOC 245
+#define CHAR_LOC0 246 \
+
+#define POSTPOST 249
+#define POSTPOST_ID 223 \
+
+#define BLACK 1
+#define WHITE 0 \
+
+#define PIXEL_MAXVAL 255
+#define SCALE 4096
+#define HALFSCALE 2048 \
+
+#define MAX_CHAR_SIZE 1023 \
+
+#define PAINT_(x) (x)
+#define PAINT1 64
+#define PAINT2 65
+#define PAINT3 66 \
+
+#define SKIP0 70
+#define SKIP1 71
+#define SKIP2 72
+#define SKIP3 73 \
+
+#define NEW_ROW_(x) ((x) +74) \
+
+#define NOOP 244 \
+
+#define EXTENSION_LENGTH 8 \
+
+#define GFTOPK_NAME "gftopk"
+#define PLTOTF_NAME "pltotf"
+#define OVP2OVF_NAME "ovp2ovf" \
+
+#define PRINTER_MIN_RES_X 50
+#define PRINTER_MIN_RES_Y 50 \
+
+#define VALID_SUBCODE 1 \
+
+/*4:*/
+#line 191 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+/*10:*/
+#line 408 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+#ifdef HAVE_CONFIG_H
+#include <c-auto.h>
+#endif
+#include <ctype.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <time.h>
+#ifdef TM_IN_SYS_TIME
+#include <sys/time.h>
+#endif
+#include "hbf.h"
+
+
+
+/*:10*//*69:*/
+#line 2473 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+#if defined(HAVE_LIBKPATHSEA)
+#include "kpathsea/kpathsea.h"
+
+#elif defined(HAVE_EMTEXDIR)
+#include "emtexdir.h"
+
+#elif defined(HAVE_MIKTEX)
+#include "miktex.h"
+#endif
+
+/*:69*/
+#line 192 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+/*11:*/
+#line 429 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+static void write_file(void);
+
+
+/*:11*//*13:*/
+#line 491 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+static void write_pre(void);
+
+
+/*:13*//*16:*/
+#line 579 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+static void write_data(void);
+
+
+/*:16*//*20:*/
+#line 690 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+static void write_post(void);
+
+
+/*:20*//*25:*/
+#line 834 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+static void fputl(long,FILE*);
+
+
+/*:25*//*29:*/
+#line 994 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+static void make_pixel_array(void);
+
+
+/*:29*//*36:*/
+#line 1222 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+static
+#ifdef __GNUC__
+__inline__
+#endif
+void read_row(unsigned char*);
+
+
+/*:36*//*39:*/
+#line 1274 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+static
+#ifdef __GNUC__
+__inline__
+#endif
+void write_row(unsigned char*);
+
+
+/*:39*//*41:*/
+#line 1329 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+static void write_coding(void);
+
+
+/*:41*//*45:*/
+#line 1490 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+static void write_pl(void);
+
+
+/*:45*//*47:*/
+#line 1587 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+static void write_ovp(void);
+
+
+/*:47*//*50:*/
+#line 1732 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+static void write_job(void);
+
+
+/*:50*//*54:*/
+#line 1981 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+static void read_config(void);
+
+
+/*:54*//*64:*/
+#line 2312 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+static int fsearch(const char*);
+
+
+/*:64*//*67:*/
+#line 2451 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+static void config_error(const char*);
+
+
+/*:67*//*71:*/
+#line 2494 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+static const char*TeX_search_version(void);
+
+
+/*:71*//*74:*/
+#line 2529 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+#ifdef HAVE_EMTEXDIR
+extern int setup_list(struct emtex_dir*,char*,const char*,unsigned);
+static int dir_setup(struct emtex_dir*,const char*,const char*,unsigned);
+static char*file_find(char*,struct emtex_dir*);
+#endif
+
+
+/*:74*//*79:*/
+#line 2621 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+static char*TeX_search_cfg_file(char*);
+static char*TeX_search_hbf_file(char*);
+
+
+/*:79*/
+#line 193 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+/*2:*/
+#line 127 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+int nmb_files= -1;
+int unicode= FALSE;
+
+int testing= FALSE;
+
+int mf_like= FALSE;
+int file_number= 0;
+
+double x_resolution= 0.0;
+double y_scale= 1.0;
+
+int pk_files= TRUE;
+int tfm_files= TRUE;
+int long_extension= TRUE;
+int quiet= FALSE;
+
+char config_file[FILE_NAME_LENGTH+4+1];
+
+char output_name[STRING_LENGTH+1];
+
+FILE*config,*out;
+HBF*hbf;
+
+#ifdef msdos
+#define WRITE_BIN "wb"
+#define WRITE_TXT "wt"
+#define READ_BIN "rb"
+#define READ_TXT "rt"
+#else
+#define WRITE_BIN "w"
+#define WRITE_TXT "w"
+#define READ_BIN "r"
+#define READ_TXT "r"
+#endif
+
+int end_of_file= FALSE;
+
+
+/*:2*//*15:*/
+#line 538 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+long char_adr[256];
+long*char_adr_p;
+
+int pk_offset_x;
+
+
+double tfm_offset_x;
+int pk_offset_y;
+
+double tfm_offset_y;
+
+int input_size_x;
+int input_size_y;
+const char*font_encoding;
+int pk_width;
+int pk_output_size_x;
+
+double tfm_output_size_x;
+int pk_output_size_y;
+double tfm_output_size_y;
+
+double design_size= 10.0;
+double target_size_x;
+double target_size_y;
+double magstep_x;
+double magstep_y;
+double slant;
+int rotation;
+
+double mag_x;
+double mag_y;
+
+int empty_char;
+int last_char;
+
+int dot_count;
+
+
+
+/*:15*//*19:*/
+#line 667 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+char coding[STRING_LENGTH+1];
+char comment[STRING_LENGTH+1];
+
+unsigned long checksum;
+
+long pk_total_min_x;
+long pk_total_max_x;
+long pk_total_min_y;
+long pk_total_max_y;
+
+int dpi_x;
+int dpi_y;
+double ppp_x;
+double ppp_y;
+
+
+/*:19*//*27:*/
+#line 871 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+HBF_CHAR code;
+const unsigned char*bitmap;
+
+const unsigned char*bP;
+
+unsigned char out_char[MAX_CHAR_SIZE*MAX_CHAR_SIZE+1];
+
+unsigned char*out_char_p;
+
+unsigned char pixelrow[MAX_CHAR_SIZE];
+unsigned char temp_pixelrow[MAX_CHAR_SIZE];
+unsigned char new_pixelrow[MAX_CHAR_SIZE+1];
+
+int curr_row;
+
+long grayrow[MAX_CHAR_SIZE];
+
+long s_mag_x,s_mag_y,s_slant;
+
+
+/*:27*//*38:*/
+#line 1269 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+int threshold= 128;
+
+
+/*:38*//*49:*/
+#line 1721 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+char job_extension[EXTENSION_LENGTH+1];
+char rm_command[STRING_LENGTH+1];
+char cp_command[STRING_LENGTH+1];
+char pk_directory[STRING_LENGTH+1];
+char tfm_directory[STRING_LENGTH+1];
+
+int ofm_file= FALSE;
+
+
+/*:49*//*53:*/
+#line 1976 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+char Buffer[STRING_LENGTH+1];
+
+
+/*:53*//*58:*/
+#line 2094 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+int offset_x;
+int offset_y;
+
+HBF_CHAR user_min_char;
+int have_min_char= FALSE;
+
+/*:58*//*60:*/
+#line 2251 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+HBF_CHAR min_char,max_char;
+
+
+/*:60*//*62:*/
+#line 2278 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+char b2_codes[256];
+unsigned char min_2_byte,max_2_byte;
+int nmb_2_bytes= 0;
+
+
+/*:62*//*70:*/
+#line 2485 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+#if defined(HAVE_EMTEXDIR)
+char emtex_version_string[]= "emTeXdir";
+#elif !defined(HAVE_MIKTEX)
+char no_version_string[]= "no search library";
+#endif
+
+
+/*:70*//*73:*/
+#line 2522 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+#ifdef HAVE_EMTEXDIR
+struct emtex_dir cfg_path,hbf_path;
+#endif
+
+
+/*:73*//*76:*/
+#line 2569 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+#ifdef HAVE_EMTEXDIR
+char name_buffer[FILE_NAME_LENGTH+1];
+#endif
+
+
+/*:76*/
+#line 194 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+
+
+int main(int argc,char*argv[])
+{char*p;
+
+/*78:*/
+#line 2594 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+#if defined(HAVE_LIBKPATHSEA)
+kpse_set_program_name(argv[0],"hbf2gf");
+kpse_init_prog("HBF2GF",300,"cx","cmr10");
+
+#elif defined(HAVE_EMTEXDIR)
+if(!dir_setup(&cfg_path,"HBFCFG",NULL,EDS_BANG))
+{fprintf(stderr,
+"Couldn't setup search path for configuration files\n");
+exit(1);
+}
+if(!dir_setup(&hbf_path,"HBFONTS",NULL,EDS_BANG))
+{fprintf(stderr,
+"Couldn't setup search path for HBF header files\n");
+exit(1);
+}
+#endif
+
+
+/*:78*/
+#line 200 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+
+/*7:*/
+#line 307 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+if(argc==2)
+{if(strcmp(argv[1],"--help")==0)
+/*6:*/
+#line 288 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+{printf(USAGE);
+exit(0);
+}
+
+
+/*:6*/
+#line 310 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+else if(strcmp(argv[1],"--version")==0)
+/*5:*/
+#line 261 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+{printf("\n");
+printf(banner);
+printf(" (%s)\n",TeX_search_version());
+printf(VERSION);
+exit(0);
+}
+
+
+/*:5*/
+#line 312 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+}
+
+while(argc> 1)
+{p= argv[1];
+if(p[0]!='-')
+break;
+if(p[1]=='p')
+tfm_files= FALSE;
+else if(p[1]=='g')
+pk_files= FALSE;
+else if(p[1]=='n')
+long_extension= FALSE;
+else if(p[1]=='q')
+quiet= TRUE;
+else if(p[1]=='t')
+testing= TRUE;
+
+argv++;
+argc--;
+}
+
+if(testing)
+{if(argc!=2)
+{fprintf(stderr,"Need exactly one parameter for `-t' option.\n");
+fprintf(stderr,"Try `hbf2gf --help' for more information.\n");
+exit(1);
+}
+}
+else if(argc<2||argc> 4)
+{fprintf(stderr,"Invalid number of parameters.\n");
+fprintf(stderr,"Try `hbf2gf --help' for more information.\n");
+exit(1);
+}
+
+
+/*:7*/
+#line 202 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+
+if(!quiet)
+printf("\n%s\n\n",banner);
+
+strncpy(config_file,argv[1],FILE_NAME_LENGTH);
+config_file[FILE_NAME_LENGTH]= '\0';
+
+if(argc> 2||testing)
+{int l= strlen(config_file);
+
+if(l> 2)
+config_file[l-2]= '\0';
+
+else
+{if(!quiet)
+printf("`%s' can't be a subfont created by hbf2gf\n",
+config_file);
+exit(2);
+}
+
+mf_like= TRUE;
+}
+
+read_config();
+
+if(mf_like)
+/*8:*/
+#line 352 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+{if(unicode)
+file_number= (int)strtol(&argv[1][strlen(argv[1])-2],
+(char**)NULL,16);
+else
+file_number= atoi(&argv[1][strlen(argv[1])-2]);
+
+x_resolution= atof(argv[2]);
+if(x_resolution<PRINTER_MIN_RES_X)
+{fprintf(stderr,"Invalid horizontal resolution\n");
+exit(1);
+}
+
+if(argc> 3)
+{y_scale= atof(argv[3]);
+if(y_scale<0.01)
+{fprintf(stderr,
+"Invalid vertical scaling factor or resolution\n");
+exit(1);
+}
+if(y_scale> 10.0)
+y_scale= (double)x_resolution/y_scale;
+}
+}
+
+
+/*:8*/
+#line 229 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+
+/*28:*/
+#line 903 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+{int col,offset;
+
+if(rotation)
+{int tmp;
+
+
+tmp= input_size_x;
+input_size_x= input_size_y;
+input_size_y= tmp;
+}
+
+if(mf_like)
+{target_size_x= design_size*(x_resolution/dpi_x);
+target_size_y= design_size*(x_resolution*y_scale/dpi_y);
+}
+else
+target_size_x= target_size_y= design_size;
+magstep_x= target_size_x/design_size;
+magstep_y= target_size_y/design_size;
+
+pk_offset_x= offset_x*magstep_x+0.5;
+pk_offset_y= offset_y*magstep_y+0.5;
+tfm_offset_x= offset_x/(dpi_x/72.27)/design_size;
+tfm_offset_y= offset_y/(dpi_y/72.27)/design_size;
+
+pk_width= input_size_x*mag_x*magstep_x+0.5;
+pk_output_size_x= input_size_x*mag_x*magstep_x+
+input_size_y*mag_y*magstep_y*slant+0.5;
+pk_output_size_y= input_size_y*mag_y*magstep_y+0.5;
+tfm_output_size_x= input_size_x*mag_x/
+(dpi_x/72.27)/design_size;
+tfm_output_size_y= input_size_y*mag_y/
+(dpi_y/72.27)/design_size;
+if(pk_output_size_x> MAX_CHAR_SIZE)
+{fprintf(stderr,"Output character box width too big\n");
+exit(1);
+}
+if(pk_output_size_y> MAX_CHAR_SIZE)
+{fprintf(stderr,"Output character box height too big\n");
+exit(1);
+}
+
+for(col= 0;col<input_size_x;++col)
+grayrow[col]= HALFSCALE;
+
+if(!mf_like)
+code= (min_char&0xFF00)+min_2_byte;
+else
+{if((file_number<(unicode?0:1))||(file_number>=0x100))
+{fprintf(stderr,"Invalid subfile number\n");
+exit(1);
+}
+
+if(unicode)
+{offset= 0;
+code= file_number*0x100;
+}
+else
+{offset= (file_number-1)*256%nmb_2_bytes;
+code= (min_char&0xFF00)+min_2_byte+
+(file_number-1)*256/nmb_2_bytes*0x100;
+}
+
+while(offset--)
+while(!b2_codes[code++&0xFF])
+
+;
+
+if(code> max_char)
+{fprintf(stderr,"Invalid subfile number\n");
+exit(1);
+}
+}
+
+s_mag_x= mag_x*magstep_x*SCALE;
+s_mag_y= mag_y*magstep_y*SCALE;
+s_slant= slant*SCALE;
+}
+
+
+/*:28*/
+#line 231 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+
+/*9:*/
+#line 387 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+{int j,max_numb;
+
+if(!mf_like)
+{file_number= (unicode==TRUE?(min_char>>8):1);
+if(nmb_files==-1)
+max_numb= (unicode==TRUE?0x100:100);
+else
+max_numb= nmb_files;
+}
+else
+max_numb= 1;
+
+for(j= 0;(j<max_numb)&&!end_of_file;file_number++,j++)
+write_file();
+
+nmb_files= j;
+}
+
+
+/*:9*/
+#line 233 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+
+if(tfm_files)
+write_pl();
+if(ofm_file)
+write_ovp();
+if(!mf_like)
+write_job();
+
+hbfClose(hbf);
+
+exit(0);
+return 0;
+}
+
+
+/*:4*//*12:*/
+#line 437 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+static void write_file(void)
+{char output_file[FILE_NAME_LENGTH+1];
+
+
+if(pk_files)
+{if(mf_like)
+{if(unicode)
+sprintf(output_file,"%s%02x.%.0igf",
+output_name,file_number,
+long_extension?(int)(x_resolution+0.5):0);
+else
+sprintf(output_file,"%s%02i.%.0igf",
+output_name,file_number,
+long_extension?(int)(x_resolution+0.5):0);
+}
+else
+{if(unicode)
+sprintf(output_file,"%s%02x.gf",output_name,file_number);
+else
+sprintf(output_file,"%s%02i.gf",output_name,file_number);
+}
+if(!(out= fopen(output_file,WRITE_BIN)))
+{fprintf(stderr,"Couldn't open `%s'\n",output_file);
+exit(1);
+}
+if(!quiet)
+printf("Writing `%s' ",output_file);
+
+write_pre();
+write_data();
+write_post();
+fclose(out);
+
+if(!quiet)
+printf("\n");
+}
+else
+write_data();
+}
+
+
+/*:12*//*14:*/
+#line 498 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+static void write_pre(void)
+{char out_s[40],s[20];
+time_t secs_now;
+struct tm*time_now;
+
+
+strcpy(out_s,header);
+
+secs_now= time(NULL);
+time_now= localtime(&secs_now);
+strftime(s,20,"%Y.%m.%d:%H.%M",time_now);
+strcat(out_s,s);
+
+fputc(PRE,out);
+fputc(GF_ID,out);
+fputc(strlen(out_s),out);
+fputs(out_s,out);
+}
+
+
+/*:14*//*17:*/
+#line 584 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+static void write_data(void)
+{dot_count= 0;
+char_adr_p= char_adr;
+
+for(last_char= 0;(last_char<256)&&!end_of_file;last_char++)
+/*18:*/
+#line 609 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+{if(dot_count++%10==0)
+if(pk_files&&!quiet)
+{printf(".");
+fflush(stdout);
+}
+
+empty_char= FALSE;
+make_pixel_array();
+if(end_of_file)
+return;
+
+if(pk_files)
+{*char_adr_p= ftell(out);
+char_adr_p++;
+
+if(empty_char)
+{fputc(BOC1,out);
+fputc((unsigned char)last_char,out);
+fputc(0,out);
+fputc(0,out);
+fputc(0,out);
+fputc(0,out);
+fputc(EOC,out);
+}
+else
+{fputc(BOC,out);
+fputl(last_char,out);
+fputl(-1L,out);
+fputl(pk_offset_x,out);
+fputl(pk_output_size_x+pk_offset_x,out);
+fputl(pk_offset_y,out);
+fputl(pk_output_size_y+pk_offset_y,out);
+
+write_coding();
+
+fputc(EOC,out);
+}
+}
+}
+
+
+/*:18*/
+#line 590 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+}
+
+
+/*:17*//*21:*/
+#line 695 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+static void write_post(void)
+{long special_adr;
+long post_adr;
+
+long designsize= design_size*_2_20;
+
+int pk_dx;
+long tfm_width;
+
+int i;
+long temp;
+
+
+ppp_x= dpi_x/72.27*magstep_x;
+ppp_y= dpi_y/72.27*magstep_y;
+
+pk_total_min_x= pk_offset_x;
+pk_total_max_x= pk_output_size_x+2*pk_offset_x;
+pk_total_min_y= pk_offset_y;
+pk_total_max_y= pk_output_size_y+pk_offset_y;
+
+pk_dx= pk_width+2*pk_offset_x;
+tfm_width= (tfm_output_size_x+2*tfm_offset_x)*_2_20;
+
+
+/*22:*/
+#line 741 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+special_adr= ftell(out);
+
+if(*coding)
+{fputc(XXX1,out);
+fputc(strlen(coding),out);
+fputs(coding,out);
+}
+
+if(*comment)
+{fputc(XXX1,out);
+fputc(strlen(comment),out);
+fputs(comment,out);
+}
+
+
+/*:22*/
+#line 721 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+/*23:*/
+#line 770 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+post_adr= ftell(out);
+fputc(POST,out);
+fputl(special_adr,out);
+
+fputl(designsize,out);
+fputl(checksum,out);
+fputl(ppp_x*_2_16,out);
+fputl(ppp_y*_2_16,out);
+fputl(pk_total_min_x,out);
+fputl(pk_total_max_x,out);
+fputl(pk_total_min_y,out);
+fputl(pk_total_max_y,out);
+
+char_adr_p= char_adr;
+
+if(pk_dx<256)
+{for(i= 0;i<last_char;i++)
+{fputc(CHAR_LOC0,out);
+fputc(i,out);
+fputc(pk_dx,out);
+fputl(tfm_width,out);
+fputl(*char_adr_p++,out);
+}
+}
+else
+{for(i= 0;i<last_char;i++)
+{fputc(CHAR_LOC,out);
+fputc(i,out);
+fputl(pk_dx*_2_16,out);
+fputl(0,out);
+fputl(tfm_width,out);
+fputl(*char_adr_p++,out);
+}
+}
+
+
+/*:23*/
+#line 722 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+/*24:*/
+#line 821 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+fputc(POSTPOST,out);
+fputl(post_adr,out);
+fputc(GF_ID,out);
+temp= ftell(out);
+i= (int)(temp%4)+4;
+while(i--)
+fputc(POSTPOST_ID,out);
+
+
+/*:24*/
+#line 723 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+}
+
+
+/*:21*//*26:*/
+#line 839 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+static void fputl(long num,FILE*f)
+{fputc(num>>24,f);
+fputc(num>>16,f);
+fputc(num>>8,f);
+fputc(num,f);
+}
+
+
+/*:26*//*30:*/
+#line 999 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+static void make_pixel_array(void)
+{unsigned char*prP;
+unsigned char*temp_prP;
+unsigned char*new_prP;
+long*grP;
+
+register unsigned char*xP;
+register unsigned char*nxP;
+
+register int row,col;
+int rows_read= 0;
+register int need_to_read_row= 1;
+
+long frac_row_to_fill= SCALE;
+long frac_row_left= s_mag_y;
+
+int no_code= FALSE;
+
+
+prP= pixelrow;
+temp_prP= temp_pixelrow;
+new_prP= new_pixelrow;
+grP= grayrow;
+out_char_p= out_char;
+
+again:
+if(b2_codes[code&0xFF])
+{if(pk_files)
+{bitmap= hbfGetBitmap(hbf,code);
+bP= bitmap;
+
+
+if(!bitmap)
+empty_char= TRUE;
+else
+/*31:*/
+#line 1058 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+{if(pk_output_size_y==input_size_y)
+temp_prP= prP;
+
+curr_row= input_size_y-1;
+for(row= 0;row<pk_output_size_y;++row)
+{/*32:*/
+#line 1072 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+if(pk_output_size_y==input_size_y)
+
+read_row(prP);
+else
+{while(frac_row_left<frac_row_to_fill)
+{if(need_to_read_row)
+if(rows_read<input_size_y)
+{read_row(prP);
+++rows_read;
+}
+
+for(col= 0,xP= prP;col<input_size_x;++col,++xP)
+grP[col]+= frac_row_left*(*xP);
+
+frac_row_to_fill-= frac_row_left;
+frac_row_left= s_mag_y;
+need_to_read_row= 1;
+}
+
+/*33:*/
+#line 1099 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+if(need_to_read_row)
+if(rows_read<input_size_y)
+{read_row(prP);
+++rows_read;
+need_to_read_row= 0;
+}
+
+for(col= 0,xP= prP,nxP= temp_prP;
+col<input_size_x;++col,++xP,++nxP)
+{register long g;
+
+
+g= grP[col]+frac_row_to_fill*(*xP);
+g/= SCALE;
+if(g> PIXEL_MAXVAL)
+g= PIXEL_MAXVAL;
+
+*nxP= g;
+grP[col]= HALFSCALE;
+}
+
+frac_row_left-= frac_row_to_fill;
+if(frac_row_left==0)
+{frac_row_left= s_mag_y;
+need_to_read_row= 1;
+}
+frac_row_to_fill= SCALE;
+
+
+/*:33*/
+#line 1092 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+}
+
+
+/*:32*/
+#line 1064 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+/*34:*/
+#line 1140 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+if(pk_width==input_size_x&&s_slant==0)
+
+write_row(temp_prP);
+else
+{register long g= HALFSCALE;
+register long frac_col_to_fill= SCALE;
+register long frac_col_left;
+register int need_col= 0;
+
+
+nxP= new_prP;
+
+frac_col_left= (pk_output_size_y-row)*s_slant;
+while(frac_col_left>=frac_col_to_fill)
+{*(nxP++)= 0;
+frac_col_left-= frac_col_to_fill;
+}
+
+if(frac_col_left> 0)
+frac_col_to_fill-= frac_col_left;
+
+for(col= 0,xP= temp_prP;col<input_size_x;++col,++xP)
+{frac_col_left= s_mag_x;
+while(frac_col_left>=frac_col_to_fill)
+{if(need_col)
+{++nxP;
+g= HALFSCALE;
+}
+
+g+= frac_col_to_fill*(*xP);
+g/= SCALE;
+if(g> PIXEL_MAXVAL)
+g= PIXEL_MAXVAL;
+
+*nxP= g;
+frac_col_left-= frac_col_to_fill;
+frac_col_to_fill= SCALE;
+need_col= 1;
+}
+
+if(frac_col_left> 0)
+{if(need_col)
+{++nxP;
+g= HALFSCALE;
+need_col= 0;
+}
+
+g+= frac_col_left*(*xP);
+frac_col_to_fill-= frac_col_left;
+}
+}
+
+/*35:*/
+#line 1198 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+if(frac_col_to_fill> 0)
+{--xP;
+g+= frac_col_to_fill*(*xP);
+}
+
+if(!need_col)
+{g/= SCALE;
+if(g> PIXEL_MAXVAL)
+g= PIXEL_MAXVAL;
+*nxP= g;
+}
+
+*(++nxP)= 0;
+
+write_row(new_prP);
+
+
+/*:35*/
+#line 1193 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+}
+
+
+/*:34*/
+#line 1066 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+}
+}
+
+
+/*:31*/
+#line 1035 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+}
+}
+else
+no_code= TRUE;
+
+if((code&0xFF)==max_2_byte)
+code+= 0xFF-(max_2_byte-min_2_byte);
+if(code>=max_char)
+{end_of_file= TRUE;
+return;
+}
+
+code++;
+
+if(no_code)
+{no_code= FALSE;
+goto again;
+}
+}
+
+
+/*:30*//*37:*/
+#line 1231 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+static
+#ifdef __GNUC__
+__inline__
+#endif
+void read_row(unsigned char*pixelrow)
+{register int col,bitshift,offset;
+register unsigned char*xP;
+register unsigned char item= 0;
+
+if(rotation)
+{bitshift= 7-(curr_row%8);
+offset= (input_size_y+7)/8;
+bP= bitmap+curr_row/8;
+for(col= 0,xP= pixelrow;col<input_size_x;++col,++xP)
+{*xP= ((*bP>>bitshift)&1)==1?PIXEL_MAXVAL:0;
+bP+= offset;
+}
+curr_row--;
+}
+else
+{bitshift= -1;
+for(col= 0,xP= pixelrow;col<input_size_x;++col,++xP)
+{if(bitshift==-1)
+{item= *(bP++);
+bitshift= 7;
+}
+*xP= ((item>>bitshift)&1)==1?PIXEL_MAXVAL:0;
+--bitshift;
+}
+}
+}
+
+
+/*:37*//*40:*/
+#line 1283 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+static
+#ifdef __GNUC__
+__inline__
+#endif
+void write_row(unsigned char*pixelrow)
+{register int col;
+register unsigned char*xP;
+
+for(col= 0,xP= pixelrow;col<pk_output_size_x;++col,++xP)
+*(out_char_p++)= (*xP>=threshold)?1:0;
+
+}
+
+
+/*:40*//*42:*/
+#line 1337 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+static void write_coding(void)
+{register int count,skip;
+register unsigned char paint;
+register int x,y;
+register unsigned char*cp;
+
+x= 0;
+y= 0;
+cp= out_char+y*pk_output_size_x+x;
+count= skip= 0;
+paint= WHITE;
+goto start;
+
+while(y<pk_output_size_y)
+{/*43:*/
+#line 1361 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+count= 0;
+x= 0;
+cp= out_char+y*pk_output_size_x+x;
+
+while(x<pk_output_size_x)
+{if(*cp==paint)
+count++;
+else
+{if(skip==0)
+{if(count<=164)
+fputc(NEW_ROW_(count),out);
+else
+{fputc(SKIP0,out);
+
+if(count<256)
+{fputc(PAINT1,out);
+fputc(count,out);
+}
+else
+{fputc(PAINT2,out);
+fputc(count>>8,out);
+fputc(count&0xFF,out);
+}
+}
+}
+else
+{if(skip==1)
+fputc(SKIP0,out);
+else
+{if(skip<256)
+{fputc(SKIP1,out);
+fputc(skip,out);
+}
+else
+{fputc(SKIP2,out);
+fputc(skip>>8,out);
+fputc(skip&0xFF,out);
+}
+}
+skip= 0;
+if(count<64)
+fputc(PAINT_(count),out);
+else if(count<256)
+{fputc(PAINT1,out);
+fputc(count,out);
+}
+else
+{fputc(PAINT2,out);
+fputc(count>>8,out);
+fputc(count&0xFF,out);
+}
+}
+count= 0;
+paint= BLACK;
+break;
+}
+x++;
+cp++;
+}
+if(x>=pk_output_size_x)
+{skip++;
+y++;
+continue;
+}
+
+
+/*:43*/
+#line 1352 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+start:
+/*44:*/
+#line 1429 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+while(x<pk_output_size_x)
+{if(*cp==paint)
+count++;
+else
+{if(count<64)
+fputc(PAINT_(count),out);
+else if(count<256)
+{fputc(PAINT1,out);
+fputc(count,out);
+}
+else
+{fputc(PAINT2,out);
+fputc(count>>8,out);
+fputc(count&0xFF,out);
+}
+count= 1;
+paint= BLACK-paint;
+}
+x++;
+cp++;
+}
+if(paint==BLACK)
+{if(count<64)
+fputc(PAINT_(count),out);
+else if(count<256)
+{fputc(PAINT1,out);
+fputc(count,out);
+}
+else
+{fputc(PAINT2,out);
+fputc(count>>8,out);
+fputc(count&0xFF,out);
+}
+paint= WHITE;
+}
+
+
+
+/*:44*/
+#line 1354 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+y++;
+}
+}
+
+
+/*:42*//*46:*/
+#line 1495 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+static void write_pl(void)
+{int i,pos;
+char output_file[FILE_NAME_LENGTH+1];
+long t,sc;
+char*s;
+char tfm_header[]= "Created by hbf2gf";
+
+file_number--;
+
+if(mf_like)
+{if(unicode)
+sprintf(output_file,"%s%02x.pl",output_name,file_number);
+else
+sprintf(output_file,"%s%02i.pl",output_name,file_number);
+}
+else
+sprintf(output_file,"%s.pl",output_name);
+
+if(!(out= fopen(output_file,WRITE_TXT)))
+{fprintf(stderr,"Couldn't open `%s'\n",output_file);
+exit(1);
+}
+if(!quiet)
+printf("\nWriting `%s'\n",output_file);
+
+fprintf(out,
+"\n(FAMILY %s%d)"
+"\n(CODINGSCHEME CJK-%s)",
+output_name,file_number,font_encoding);
+
+fprintf(out,
+"\n(DESIGNSIZE R %.6f)"
+"\n(COMMENT DESIGNSIZE IS IN POINTS)"
+"\n(COMMENT OTHER SIZES ARE MULTIPLES OF DESIGNSIZE)"
+"\n(CHECKSUM O %lo)"
+"\n(FONTDIMEN"
+"\n (SLANT R %.6f)"
+"\n (SPACE R 0.0)"
+"\n (STRETCH R 0.0)"
+"\n (SHRINK R 0.0)"
+"\n (XHEIGHT R 1.0)"
+"\n (QUAD R 1.0)"
+"\n (EXTRASPACE R 0.0)"
+"\n )",design_size,checksum,slant);
+
+s= tfm_header;
+i= strlen(s);
+t= ((long)i)<<24;
+sc= 16;
+pos= 18;
+
+fprintf(out,"\n");
+while(i> 0)
+{t|= ((long)(*(unsigned char*)s++))<<sc;
+sc-= 8;
+if(sc<0)
+{fprintf(out,"\n(HEADER D %d O %lo)",pos,t);
+t= 0;
+sc= 24;
+pos++;
+}
+i--;
+}
+if(t)
+fprintf(out,"\n(HEADER D %d O %lo)",pos,t);
+fprintf(out,"\n");
+
+for(i= 0;i<256;i++)
+{fprintf(out,
+"\n(CHARACTER O %o"
+"\n (CHARWD R %.6f)"
+"\n (CHARHT R %.6f)"
+"\n (CHARDP R %.6f)"
+"\n (CHARIC R %.6f)"
+"\n )",
+i,
+tfm_output_size_x+2*tfm_offset_x,
+tfm_output_size_y+tfm_offset_y,
+-tfm_offset_y,
+slant*(tfm_output_size_y+tfm_offset_y));
+}
+
+fclose(out);
+}
+
+
+
+/*:46*//*48:*/
+#line 1592 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+static void write_ovp(void)
+{int c,i,nmb_subfonts,remainder,count,pos;
+char output_file[FILE_NAME_LENGTH+1];
+long t,sc;
+char*s;
+char ofm_header[]= "Created by hbf2gf";
+
+nmb_subfonts= ((max_char-(min_char&0xFF00))/256*nmb_2_bytes)
+/256+1;
+remainder= ((max_char-(min_char&0xFF00))/256*nmb_2_bytes)
+%256;
+
+
+for(count= 0;count<(max_char&0xFF);count++)
+if(b2_codes[count])
+remainder++;
+if(remainder>=256)
+nmb_subfonts++;
+
+sprintf(output_file,"%s.ovp",output_name);
+
+if(!(out= fopen(output_file,WRITE_TXT)))
+{fprintf(stderr,"Couldn't open `%s'\n",output_file);
+exit(1);
+}
+if(!quiet)
+printf("\nWriting `%s'\n",output_file);
+
+fprintf(out,
+"\n(VTITLE Omega virtual font created by hbf2gf)"
+"\n(DESIGNSIZE R %.6f)"
+"\n(COMMENT DESIGNSIZE IS IN POINTS)"
+"\n(COMMENT OTHER SIZES ARE MULTIPLES OF DESIGNSIZE)"
+"\n(CHECKSUM O %lo)"
+"\n(FONTDIMEN"
+"\n (SLANT R %.6f)"
+"\n (SPACE R 0.0)"
+"\n (STRETCH R 0.0)"
+"\n (SHRINK R 0.0)"
+"\n (XHEIGHT R 1.0)"
+"\n (QUAD R 1.0)"
+"\n (EXTRASPACE R 0.0)"
+"\n )",design_size,checksum,slant);
+
+s= ofm_header;
+i= strlen(s);
+t= ((long)i)<<24;
+sc= 16;
+pos= 18;
+
+fprintf(out,"\n");
+while(i> 0)
+{t|= ((long)(*(unsigned char*)s++))<<sc;
+sc-= 8;
+if(sc<0)
+{fprintf(out,"\n(HEADER D %d O %lo)",pos,t);
+t= 0;
+sc= 24;
+pos++;
+}
+i--;
+}
+if(t)
+fprintf(out,"\n(HEADER D %d O %lo)",pos,t);
+fprintf(out,"\n");
+
+for(i= 0;i<nmb_subfonts;i++)
+{fprintf(out,
+"\n(MAPFONT D %i"
+"\n (FONTNAME %s%02i)"
+"\n (FONTCHECKSUM O %lo)"
+"\n (FONTAT R 1.0)"
+"\n (FONTDSIZE R %.6f)"
+"\n )",i,output_name,i+1,checksum,design_size);
+}
+
+for(c= min_char,i= 0,count= 0;c<=max_char;c++)
+{if(b2_codes[c&0xFF]==VALID_SUBCODE)
+{fprintf(out,
+"\n(CHARACTER O %o"
+"\n (CHARWD R %.6f)"
+"\n (CHARHT R %.6f)"
+"\n (CHARDP R %.6f)"
+"\n (CHARIC R %.6f)"
+"\n (MAP"
+"\n (SELECTFONT D %i)"
+"\n (SETCHAR O %o)"
+"\n )"
+"\n )",
+c,
+tfm_output_size_x+2*tfm_offset_x,
+tfm_output_size_y+tfm_offset_y,
+-tfm_offset_y,
+slant*(tfm_output_size_y+tfm_offset_y),
+i,
+count);
+
+count++;
+if(count==256)
+{count= 0;
+i++;
+}
+}
+else
+continue;
+}
+
+fclose(out);
+}
+
+
+
+/*:48*//*51:*/
+#line 1737 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+static void write_job(void)
+{FILE*out;
+int i,j;
+char buffer[FILE_NAME_LENGTH+1];
+
+
+strcpy(buffer,output_name);
+strcat(buffer,job_extension);
+if(!(out= fopen(buffer,WRITE_TXT)))
+{fprintf(stderr,"Couldn't open `%s'\n",buffer);
+exit(1);
+}
+if(!quiet)
+printf("\nWriting `%s'\n",buffer);
+
+if(pk_files)
+{if(unicode)
+{for(i= (min_char>>8),j= 0;j<nmb_files;i++,j++)
+fprintf(out,
+"%s %s%02x.gf %s%s%02x.%.0ipk\n"
+"%s %s%02x.gf\n",
+GFTOPK_NAME,output_name,i,
+pk_directory,output_name,i,
+long_extension?(int)(dpi_x*magstep_x+0.5):0,
+rm_command,output_name,i);
+}
+else
+{for(i= 1;i<=nmb_files;i++)
+fprintf(out,
+"%s %s%02i.gf %s%s%02i.%.0ipk\n"
+"%s %s%02i.gf\n",
+GFTOPK_NAME,output_name,i,
+pk_directory,output_name,i,
+long_extension?(int)(dpi_x*magstep_x+0.5):0,
+rm_command,output_name,i);
+}
+}
+
+if(tfm_files)
+{fprintf(out,
+"\n"
+"%s %s.pl %s.tfm\n"
+"%s %s.pl\n"
+"\n",
+PLTOTF_NAME,output_name,output_name,
+rm_command,output_name);
+
+if(unicode)
+{for(i= (min_char>>8),j= 0;j<nmb_files;i++,j++)
+fprintf(out,
+"%s %s.tfm %s%s%02x.tfm\n",
+cp_command,output_name,
+tfm_directory,output_name,i);
+}
+else
+{for(i= 1;i<=nmb_files;i++)
+fprintf(out,
+"%s %s.tfm %s%s%02i.tfm\n",
+cp_command,output_name,
+tfm_directory,output_name,i);
+}
+
+fprintf(out,
+"\n"
+"%s %s.tfm",
+rm_command,output_name);
+}
+
+if(ofm_file)
+{fprintf(out,
+"\n"
+"%s %s.ovp %s.ovf %s.ofm\n"
+"%s %s.ovp\n"
+"\n",
+OVP2OVF_NAME,output_name,output_name,output_name,
+rm_command,output_name);
+}
+
+fclose(out);
+}
+
+
+
+/*:51*//*55:*/
+#line 1989 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+static void read_config(void)
+{HBF_BBOX*boxp;
+char*real_config_file;
+
+
+/*56:*/
+#line 2041 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+{int i,lastext= -1;
+
+for(i= 0;config_file[i];i++)
+if(config_file[i]=='.')
+lastext= i;
+else if(config_file[i]=='/'||
+config_file[i]==':'||
+config_file[i]=='\\')
+lastext= -1;
+
+if(lastext==-1)
+strcat(config_file,".cfg");
+}
+
+
+/*:56*/
+#line 1995 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+
+real_config_file= TeX_search_cfg_file(config_file);
+if(!real_config_file)
+{if(mf_like)
+{if(!quiet)
+printf("Couldn't find `%s'\n",config_file);
+exit(2);
+}
+else
+{fprintf(stderr,"Couldn't find `%s'\n",config_file);
+exit(1);
+}
+}
+
+if(!(config= fopen(real_config_file,READ_TXT)))
+{if(!testing)
+{fprintf(stderr,"Couldn't open `%s'\n",config_file);
+exit(1);
+}
+else
+{if(!quiet)
+fprintf(stderr,"Couldn't find or open `%s'\n",config_file);
+exit(2);
+}
+}
+
+if(testing)
+{if(!quiet)
+printf("%s\n",real_config_file);
+exit(0);
+}
+
+/*57:*/
+#line 2058 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+{char hbf_header[STRING_LENGTH+1];
+char*real_hbf_header;
+
+if(!fsearch("hbf_header"))
+config_error("hbf_header");
+else
+strcpy(hbf_header,Buffer);
+
+real_hbf_header= TeX_search_hbf_file(hbf_header);
+if(!real_hbf_header)
+{fprintf(stderr,"Couldn't find `%s'\n",hbf_header);
+exit(1);
+}
+
+hbfDebug= 1;
+
+
+if(!(hbf= hbfOpen(real_hbf_header)))
+exit(1);
+
+hbfDebug= 0;
+
+boxp= hbfBitmapBBox(hbf);
+input_size_x= boxp->hbf_height;
+input_size_y= boxp->hbf_width;
+font_encoding= hbfProperty(hbf,"HBF_CODE_SCHEME");
+
+if(!fsearch("output_name"))
+config_error("output_name");
+else
+strcpy(output_name,Buffer);
+}
+
+
+/*:57*/
+#line 2028 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+/*59:*/
+#line 2102 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+{if(fsearch("nmb_files"))
+nmb_files= atoi(Buffer);
+if(fsearch("unicode"))
+if(Buffer[0]=='y'||Buffer[0]=='Y')
+unicode= TRUE;
+if(fsearch("min_char"))
+{user_min_char= strtoul(Buffer,(char**)NULL,0);
+have_min_char= TRUE;
+}
+
+if(!mf_like)
+{if(fsearch("pk_files"))
+if(Buffer[0]=='n'||Buffer[0]=='N')
+pk_files= FALSE;
+if(fsearch("tfm_files"))
+if(Buffer[0]=='n'||Buffer[0]=='N')
+tfm_files= FALSE;
+if(fsearch("ofm_file"))
+if(Buffer[0]=='y'||Buffer[0]=='Y')
+ofm_file= TRUE;
+if(fsearch("long_extension"))
+if(Buffer[0]=='n'||Buffer[0]=='N')
+long_extension= FALSE;
+}
+
+if(fsearch("slant"))
+slant= atof(Buffer);
+if(slant<0.0||slant> 1.0)
+{fprintf(stderr,"Invalid slant\n");
+exit(1);
+}
+if(fsearch("rotation"))
+if(Buffer[0]=='y'||Buffer[0]=='Y')
+rotation= TRUE;
+
+if(fsearch("mag_x"))
+mag_x= atof(Buffer);
+if(fsearch("mag_y"))
+mag_y= atof(Buffer);
+if(!mag_x&&!mag_y)
+{mag_x= 1.0;
+mag_y= 1.0;
+}
+if(mag_x&&!mag_y)
+mag_y= mag_x;
+if(mag_y&&!mag_x)
+mag_x= mag_y;
+if(mag_x<=0.0)
+{fprintf(stderr,"Invalid horizontal magnification\n");
+exit(1);
+}
+if(mag_y<=0.0)
+{fprintf(stderr,"Invalid vertical magnification\n");
+exit(1);
+}
+
+if(fsearch("dpi_x"))
+dpi_x= atoi(Buffer);
+if(fsearch("dpi_y"))
+dpi_y= atoi(Buffer);
+if(!dpi_x&&!dpi_y)
+{dpi_x= 300;
+dpi_y= 300;
+}
+if(dpi_x&&!dpi_y)
+dpi_y= dpi_x;
+if(dpi_y&&!dpi_x)
+dpi_x= dpi_y;
+if(dpi_x<=PRINTER_MIN_RES_X)
+{fprintf(stderr,"Invalid horizontal printer resolution\n");
+exit(1);
+}
+if(dpi_y<=PRINTER_MIN_RES_Y)
+{fprintf(stderr,"Invalid vertical printer resolution\n");
+exit(1);
+}
+
+if(fsearch("design_size"))
+design_size= atof(Buffer);
+
+if(fsearch("x_offset"))
+offset_x= atoi(Buffer);
+else
+offset_x= rotation?0:(boxp->hbf_xDisplacement*mag_x+0.5);
+if(fsearch("y_offset"))
+offset_y= atoi(Buffer);
+else
+offset_y= rotation?0:(boxp->hbf_yDisplacement*mag_y+0.5);
+if(!fsearch("comment"))
+comment[0]= '\0';
+else
+strcpy(comment,Buffer);
+
+if(fsearch("threshold"))
+threshold= atoi(Buffer);
+if(threshold<=0||threshold>=255)
+{fprintf(stderr,"Invalid threshold\n");
+exit(1);
+}
+
+if(!fsearch("checksum"))
+checksum= 0;
+else
+checksum= strtoul(Buffer,(char**)NULL,0);
+
+if(!fsearch("coding"))
+coding[0]= '\0';
+else
+strcpy(coding,Buffer);
+
+if(!fsearch("pk_directory"))
+pk_directory[0]= '\0';
+else
+strcpy(pk_directory,Buffer);
+
+if(!fsearch("tfm_directory"))
+tfm_directory[0]= '\0';
+else
+strcpy(tfm_directory,Buffer);
+
+if(fsearch("rm_command"))
+strcpy(rm_command,Buffer);
+else
+strcpy(rm_command,"rm");
+
+if(fsearch("cp_command"))
+strcpy(cp_command,Buffer);
+else
+strcpy(cp_command,"cp");
+
+if(!fsearch("job_extension"))
+job_extension[0]= '\0';
+else
+{strncpy(job_extension,Buffer,EXTENSION_LENGTH);
+job_extension[EXTENSION_LENGTH]= '\0';
+}
+}
+
+
+/*:59*/
+#line 2029 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+
+/*61:*/
+#line 2256 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+{const void*cp;
+HBF_CHAR dummy;
+
+cp= hbfGetCodeRange(hbf,NULL,&min_char,&max_char);
+for(;cp!=NULL;cp= hbfGetCodeRange(hbf,cp,&dummy,&max_char))
+;
+
+if(have_min_char)
+min_char= user_min_char;
+}
+
+
+/*:61*/
+#line 2031 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+/*63:*/
+#line 2285 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+{const void*b2r;
+unsigned char dummy;
+int i;
+
+for(i= 0;i<256;i++)
+b2_codes[i]= 0;
+
+b2r= hbfGetByte2Range(hbf,NULL,&min_2_byte,&max_2_byte);
+dummy= min_2_byte;
+for(;b2r!=NULL;b2r= hbfGetByte2Range(hbf,b2r,&dummy,&max_2_byte))
+{for(i= dummy;i<=max_2_byte;i++)
+b2_codes[i]= VALID_SUBCODE;
+}
+
+for(i= 0;i<256;i++)
+if(b2_codes[i]==VALID_SUBCODE)
+nmb_2_bytes++;
+}
+
+
+/*:63*/
+#line 2032 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+
+fclose(config);
+}
+
+
+/*:55*//*65:*/
+#line 2317 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+static int fsearch(const char*search_string)
+{char*P,p;
+const char*Q;
+char temp_buffer[STRING_LENGTH+1];
+char env_name[STRING_LENGTH+1];
+char*env_p;
+char*env_value;
+char*Buf_p;
+int Ch,ch,old_ch= '\n';
+int count= STRING_LENGTH;
+
+rewind(config);
+
+do
+{Q= search_string;
+p= tolower((unsigned char)*Q);
+Ch= fgetc(config);
+ch= tolower(Ch);
+while(!(ch==p&&old_ch=='\n')&&Ch!=EOF)
+
+
+{old_ch= ch;
+Ch= fgetc(config);
+ch= tolower(Ch);
+}
+
+for(;;)
+{if(*(++Q)=='\0')
+if((Ch= fgetc(config))==' '||Ch=='\t')
+
+goto success;
+Ch= fgetc(config);
+if(tolower(Ch)!=tolower((unsigned char)*Q))
+break;
+}
+}
+while(Ch!=EOF);
+
+return 0;
+
+success:
+P= temp_buffer;
+
+while((Ch= fgetc(config))==' '||Ch=='\t')
+
+;
+while(Ch!='\n'&&--count> 0&&Ch!=EOF)
+{*P++= Ch;
+Ch= fgetc(config);
+}
+*P= '\0';
+
+if(*temp_buffer)
+/*66:*/
+#line 2396 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+{P= temp_buffer;
+Buf_p= Buffer;
+count= STRING_LENGTH-1;
+
+while(*P&&count> 0)
+{env_p= env_name;
+
+if(*P=='$')
+{P++;
+if(*P=='$')
+{*(Buf_p++)= *(P++);
+count--;
+continue;
+}
+while(*P=='{')
+P++;
+if(!(isalpha((unsigned char)*P)||*P=='_'))
+{fprintf(stderr,
+"Invalid environment variable name in configuration file\n");
+exit(1);
+}
+*(env_p++)= *(P++);
+while(*P)
+{if(isalnum((unsigned char)*P)||*P=='_')
+*(env_p++)= *(P++);
+else
+{while(*P=='}')
+P++;
+*env_p= '\0';
+break;
+}
+}
+
+env_value= getenv(env_name);
+if(env_value)
+{while(*env_value&&count> 0)
+{*(Buf_p++)= *(env_value++);
+count--;
+}
+}
+}
+else
+{*(Buf_p++)= *(P++);
+count--;
+}
+}
+*Buf_p= '\0';
+}
+
+
+/*:66*/
+#line 2371 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+else
+*Buffer= '\0';
+
+return(*Buffer)?1:0;
+}
+
+
+/*:65*//*68:*/
+#line 2456 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+static void config_error(const char*message)
+{fprintf(stderr,"Couldn't find `%s' entry in configuration file\n",
+message);
+exit(1);
+}
+
+
+
+/*:68*//*72:*/
+#line 2499 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+static const char*TeX_search_version(void)
+{
+#if defined(HAVE_LIBKPATHSEA)
+return kpathsea_version_string;
+#elif defined(HAVE_EMTEXDIR)
+return emtex_version_string;
+#elif defined(HAVE_MIKTEX)
+char buf[200];
+
+strcpy(buf,"MiKTeX ");
+miktex_get_miktex_version_string_ex(buf+7,sizeof(buf)-7);
+
+return buf;
+#else
+return no_version_string;
+#endif
+}
+
+
+/*:72*//*75:*/
+#line 2541 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+#ifdef HAVE_EMTEXDIR
+static int dir_setup(ed,env,dir,flags)
+struct emtex_dir*ed;
+const char*env;
+const char*dir;
+unsigned flags;
+
+{const char*val;
+char path[260];
+
+ed->alloc= 0;
+ed->used= 0;
+ed->list= NULL;
+
+if(env!=NULL&&(val= getenv(env))!=NULL)
+return setup_list(ed,path,val,flags);
+else
+fprintf(stderr,
+"Environment variable `%s' not set; use current directory\n",
+env);
+
+return TRUE;
+}
+#endif
+
+
+/*:75*//*77:*/
+#line 2576 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+#ifdef HAVE_EMTEXDIR
+static char*file_find(name,list)
+char*name;
+struct emtex_dir*list;
+
+{if(emtex_dir_find(name_buffer,sizeof(name_buffer),list,name,EDF_CWD))
+return name_buffer;
+
+return NULL;
+}
+#endif
+
+
+/*:77*//*80:*/
+#line 2627 "/usr/local/home/wl/git/cjk/cjk-4.8.4/utils/hbf2gf/hbf2gf.w"
+
+#if defined(HAVE_LIBKPATHSEA)
+static char*TeX_search_cfg_file(char*name)
+{
+return kpse_find_file(name,kpse_program_text_format,TRUE);
+}
+
+
+static char*TeX_search_hbf_file(char*name)
+{
+return kpse_find_file(name,kpse_miscfonts_format,TRUE);
+}
+
+
+#elif defined(HAVE_EMTEXDIR)
+static char*TeX_search_cfg_file(char*name)
+{return file_find(name,&cfg_path);
+}
+
+
+static char*TeX_search_hbf_file(char*name)
+{return file_find(name,&hbf_path);
+}
+
+
+#elif defined(HAVE_MIKTEX)
+static char*TeX_search_cfg_file(char*name)
+{char result[_MAX_PATH];
+
+if(!miktex_find_input_file("hbf2gf",*name,result))
+return 0;
+return strdup(result);
+}
+
+
+static char*TeX_search_hbf_file(char*name)
+{char result[_MAX_PATH];
+
+
+if(!miktex_find_miscfont_file(*name,result))
+return 0;
+return strdup(result);
+}
+
+
+#else
+static char*TeX_search_cfg_file(char*name)
+{return name;
+}
+
+
+static char*TeX_search_hbf_file(char*name)
+{return name;
+}
+#endif
+
+
+
+/*:80*/
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/hbf2gf.def b/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/hbf2gf.def
new file mode 100644
index 0000000000..583767e897
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/hbf2gf.def
@@ -0,0 +1,3 @@
+NAME HBF2GF WINDOWCOMPAT
+DESCRIPTION 'hbf2gf (CJK Ver. 4.8.4)'
+STACKSIZE 0x80000
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/hbf2gf.w b/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/hbf2gf.w
new file mode 100644
index 0000000000..434dd7f414
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/hbf2gf.w
@@ -0,0 +1,2816 @@
+% This is the cweb file hbf2gf.w of the CJK package ver. 4.8.4 18-Apr-2015
+
+% Copyright (C) 1994-2015 Werner Lemberg <wl@@gnu.org>
+%
+% This program is free software; you can redistribute it and/or modify
+% it under the terms of the GNU General Public License as published by
+% the Free Software Foundation; either version 2 of the License, or
+% (at your option) any later version.
+%
+% This program is distributed in the hope that it will be useful,
+% but WITHOUT ANY WARRANTY; without even the implied warranty of
+% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+% GNU General Public License for more details.
+%
+% You should have received a copy of the GNU General Public License
+% along with this program in doc/COPYING; if not, write to the Free
+% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+% MA 02110-1301 USA
+
+% To print this CWEB file you should (but not must) use the CWEAVE of the
+% c2cweb-package (found at the CTAN archives, e.g. ftp.dante.de) and then say
+%
+% cweave +ai hbf2gf.w
+%
+% This (fully compatible) CWEAVE can transform CWEB-files with alternative
+% output rules (look at the position of braces below!) the author (it's me
+% too :-) prefer. Otherwise this file will be formatted traditionally.
+
+\font\meta=logo10
+\def\mf{{\meta META}\-{\meta FONT}}
+\def\Om{\char "0A} % Omega symbol
+
+\def\title{hbf2gf (CJK Version 4.8.4)}
+
+\def\topofcontents{
+ \null\vfill
+ \centerline{\titlefont The {\ttitlefont hbf2gf} program}
+ \vskip 20pt
+ \centerline{(CJK Version 4.8.4)}
+ \vfill}
+
+\def\botofcontents{
+ \vfill
+ \noindent
+ Copyright \copyright~1996-1999 by Werner Lemberg
+ \bigskip\noindent
+ Permission is granted to make and distribute verbatim copies of this
+ document provided that the copyright notice and this permission notice are
+ preserved on all copies.
+
+ \smallskip\noindent
+ Permission is granted to copy and distribute modified versions of this
+ document under the conditions for verbatim copying, provided that the
+ entire resulting derived work is distributed under the terms of a
+ permission notice identical to this one.}
+
+\pageno=\contentspagenumber \advance\pageno by 1
+\let\maybe=\iftrue
+\fullpageheight=240mm
+\pageheight=223mm
+\pagewidth=158mm
+\setpage
+\frenchspacing
+
+
+\def\msdos{\.{msdos}}
+@s msdos TeX
+
+@s HBF int
+@s HBF_CHAR int
+@s HBF_BBOX int
+
+@s __inline__ int
+
+
+@* Introduction.
+This is the \.{hbf2gf} program by Werner Lemberg
+(\.{wl@@gnu.org}).
+
+The ``banner line'' defined here should be changed whenever \.{hbf2gf} is
+modified.
+
+@d banner
+"hbf2gf (CJK ver. 4.8.4)"
+
+
+@
+\.{hbf2gf} is intended to convert Hanzi Bitmap Fonts (HBF) into \TeX\
+generic font files (\.{GF} files) according to the \\{CJK} package, which
+\.{hbf2gf} is part of.
+
+The outline of \.{hbf2gf} is simple: a CJK (Chinese/Japanese/Korean) bitmap
+file will be scaled and written in at most |nmb_files| \.{GF} files, each
+file containing |256|~characters (except the last and possibly the first
+one). In the normal case it's not necessary to compute the right value of
+|nmb_files| because \.{hbf2gf} will do this; you should use |-1| instead to
+indicate this. See the last section for an example.
+
+Alternatively you can call \.{hbf2gf} similar to \mf, i.e., the program will
+compute one font on demand. This mode will be used if two or three input
+parameters instead of one are given: the font name, the horizontal
+resolution, and optionally a vertical scaling factor or resolution to allow
+modes for e.g.\ $300\times600\,\hbox{dpi}$ printers. \.{hbf2gf} will extract
+the configuration file name from the font name; if this file isn't found,
+the program exits with error code~|2| (this is useful for scripts like
+\.{mktexpk}). If the configuration file is found but an error occurs while
+computing the font, error code~|1| is returned. In case of success, the exit
+code is zero.
+
+The characters in the input font files are completely described by the HBF
+header file. This program uses the HBF API implementation of Ross Paterson
+(\.{ross@@soi.city.ac.uk}; with small extensions). You will find a
+description of the HBF standard at \.{ftp.ifcss.org}.
+
+A batch file created by \.{hbf2gf} too (if the program computes a whole set
+of subfonts) will convert the \.{GF} files to \.{PK} files using
+\.{GFtoPK}, a part of every \TeX\ package.
+
+@d TRUE 1
+@d FALSE 0@#
+
+@d STRING_LENGTH 255
+ /* the maximal length of an input string in the configuration file */
+@d FILE_NAME_LENGTH 1024
+ /* the maximal length (including the path) of a filename */@#
+
+@<Global variables@>=
+int nmb_files = -1; /* create all files by default */
+int unicode = FALSE; /* whether a Unicode font should be processed */@#
+
+int testing = FALSE; /* whether we test only the font name */@#
+
+int mf_like = FALSE; /* whether we are in the \mf-like mode */
+int file_number = 0; /* the subfont number */@#
+
+double x_resolution = 0.0; /* the second and third input parameter */
+double y_scale = 1.0;@#
+
+int pk_files = TRUE; /* command line options */
+int tfm_files = TRUE;
+int long_extension = TRUE;
+int quiet = FALSE;@#
+
+char config_file[FILE_NAME_LENGTH + 4 + 1];
+ /* we probably must add `\.{.cfg}' */
+char output_name[STRING_LENGTH + 1];@#
+
+FILE *config, *out;
+HBF *hbf;@#
+
+#ifdef msdos /* if we compile under DOS or OS/2 */
+#define WRITE_BIN "wb"
+#define WRITE_TXT "wt"
+#define READ_BIN "rb"
+#define READ_TXT "rt"
+#else
+#define WRITE_BIN "w"
+#define WRITE_TXT "w"
+#define READ_BIN "r"
+#define READ_TXT "r"
+#endif@#
+
+int end_of_file = FALSE;
+
+
+@
+One \.{PL} file will be created additionally, which describes the font
+metrics in a readable way. Because all CJK characters have identical
+bounding boxes, one metrics file is enough---the batch job created by
+\.{hbf2gf} calls \.{PLtoTF} to produce this \.{TFM} file and then copies
+it into |nmb_files| metrics files. There usually will be a discrepancy
+between the number of characters in the last \.{GF} file and the
+\.{TFM} file, but this does not harm.
+
+If you specify the \.{ofm\_file} option in the configuration file, an
+extended virtual property file (such files have the extension \.{.ovp}) for
+the \Om\ system is written; this will be then converted with
+\.{ovp2ovf} into an \.{OFM} and an \.{OVF} file to map all the subfonts
+into one large virtual font.
+
+
+
+@* The main routine.
+The main routine takes |file_name|, |x_resolution|, and |y_scale| as command
+line parameters if in \mf-like mode, otherwise |config_file| as the only
+argument. |read_config()| scans the configuration file and fills the global
+variables, |write_file()| writes the \.{GF} files, |write_pl()| and
+|write_ovp()| write the \.{PL} and \.{OVP} files respectively, and
+|write_job()| the batch file.
+
+@c
+@<Include files@>@;
+@<Prototypes@>@;
+@<Global variables@>@;@#
+
+
+int main(int argc, char *argv[])
+ {char *p;
+
+ @<Initialize \TeX\ file searching@>@;@#
+
+ @<Scan options@>@;@#
+
+ if(!quiet)
+ printf("\n%s\n\n", banner);@#
+
+ strncpy(config_file, argv[1], FILE_NAME_LENGTH);
+ config_file[FILE_NAME_LENGTH] = '\0';@#
+
+ if(argc > 2 || testing)
+ {int l = strlen(config_file);
+
+ if(l > 2)
+ config_file[l - 2] = '\0';
+ /* strip subfont number from file name */
+ else
+ {if(!quiet)
+ printf("`%s' can't be a subfont created by hbf2gf\n",
+ config_file);
+ exit(2);
+ }@#
+
+ mf_like = TRUE;
+ }@#
+
+ read_config(); /* will call |exit(1)| on errors */@#
+
+ if(mf_like)
+ @<Check other arguments@>@;@#
+
+ @<Initialize variables@>@;@#
+
+ @<Write files@>@;@#
+
+ if(tfm_files)
+ write_pl();
+ if(ofm_file)
+ write_ovp();
+ if(!mf_like)
+ write_job();@#
+
+ hbfClose(hbf);@#
+
+ exit(0);
+ return 0; /* never reached */
+ }
+
+
+@
+@d VERSION @/
+"\n"@/
+"Copyright (C) 1996-1999 Werner Lemberg.\n"@/
+"There is NO warranty. You may redistribute this software\n"@/
+"under the terms of the GNU General Public License\n"@/
+"and the HBF library copyright.\n"@/
+"\n"@/
+"For more information about these matters, see the files\n"@/
+"named COPYING and hbf.c.\n"@/
+"\n"
+
+@<Print version@>=
+ {printf("\n");
+ printf(banner);
+ printf(" (%s)\n", TeX_search_version());
+ printf(VERSION);
+ exit(0);
+ }
+
+
+@
+@d USAGE @/
+"\n"@/
+"Usage: hbf2gf [-q] configuration_file[.cfg]\n"@/
+" hbf2gf [options] font_name x_resolution [y_scale | y_resolution]\n"@/
+" hbf2gf -t [-q] font_name\n"@/
+"\n"@/
+" Convert a font in HBF format to TeX's GF resp. PK format.\n"@/
+"\n"@/
+" -q be silent\n"@/
+" -p don't produce a PL file\n"@/
+" -g don't produce a GF file\n"@/
+" -n use no resolution in extension (only `.gf')\n"@/
+" -t test for font_name (returns 0 on success)\n"@/
+" --help print this message and exit\n"@/
+" --version print version number and exit\n"@/
+"\n"
+
+@<Print help information@>=
+ {printf(USAGE);
+ exit(0);
+ }
+
+
+@
+Three options can be specified to the program (\.{-p}, \.{-g}, and \.{-n})
+if in \mf-like mode to suppress creation of a \.{PL} resp.\ a
+\.{GF} file, and to force a `\.{.gf}' extension (instead of
+e.g.\ `\.{.300gf}'). The corresponding setting of a particular switch in the
+configuration file is ignored then.
+
+Additionally, the option \.{-t} tests whether the specified subfont name
+leads to an \.{hbf2gf} configuration file. It returns 0 on success and prints
+out the name of that configuration file (provided the \.{-q} switch isn't
+set). This test isn't a thorough one; it only removes the last two characters
+and checks whether a configuration file with that name exists.
+
+@<Scan options@>=
+ if(argc == 2)
+ {if(strcmp(argv[1], "--help") == 0)
+ @<Print help information@>@;
+ else if(strcmp(argv[1], "--version") == 0)
+ @<Print version@>@;
+ }@#
+
+ while(argc > 1)
+ {p = argv[1];
+ if(p[0] != '-')
+ break;
+ if(p[1] == 'p')
+ tfm_files = FALSE;
+ else if(p[1] == 'g')
+ pk_files = FALSE;
+ else if(p[1] == 'n')
+ long_extension = FALSE;
+ else if(p[1] == 'q')
+ quiet = TRUE;
+ else if(p[1] == 't')
+ testing = TRUE;@#
+
+ argv++;
+ argc--;
+ }@#
+
+ if(testing)
+ {if(argc != 2)
+ {fprintf(stderr, "Need exactly one parameter for `-t' option.\n");
+ fprintf(stderr, "Try `hbf2gf --help' for more information.\n");
+ exit(1);
+ }
+ }
+ else if(argc < 2 || argc > 4)
+ {fprintf(stderr, "Invalid number of parameters.\n");
+ fprintf(stderr, "Try `hbf2gf --help' for more information.\n");
+ exit(1);
+ }@#
+
+
+@
+If the (optional) argument is larger than~|10|, we treat it as a value for
+the vertical resolution (in dpi), otherwise as a vertical scaling factor.
+
+@<Check other arguments@>=
+ {if(unicode)
+ file_number = (int)strtol(&argv[1][strlen(argv[1]) - 2],
+ (char **)NULL, 16);
+ else
+ file_number = atoi(&argv[1][strlen(argv[1]) - 2]);@#
+
+ x_resolution = atof(argv[2]);
+ if(x_resolution < PRINTER_MIN_RES_X)
+ {fprintf(stderr, "Invalid horizontal resolution\n");
+ exit(1);
+ }@#
+
+ if(argc > 3)
+ {y_scale = atof(argv[3]);
+ if(y_scale < 0.01)
+ {fprintf(stderr,
+ "Invalid vertical scaling factor or resolution\n");
+ exit(1);
+ }
+ if(y_scale > 10.0)
+ y_scale = (double)x_resolution / y_scale;
+ }
+ }
+
+
+@
+If |unicode| is |TRUE|, the start value of the running number appended to
+the base name of the output font files is taken from the HBF header file,
+otherwise it starts with~`\.{01}'. |min_char| represents the lower bound of
+the code range.
+
+If we are in \mf-like mode, |file_number| is taken from the command line,
+and |max_numb| will be set to~|1|.
+
+@<Write files@>=
+ {int j, max_numb;
+
+ if(!mf_like)
+ {file_number = (unicode == TRUE ? (min_char >> 8) : 1);
+ if(nmb_files == -1)
+ max_numb = (unicode == TRUE ? 0x100 : 100);
+ else
+ max_numb = nmb_files;
+ }
+ else
+ max_numb = 1;@#
+
+ for(j = 0; (j < max_numb) && !end_of_file; file_number++, j++)
+ write_file();@#
+
+ nmb_files = j; /* the real number of output font files */
+ }
+
+
+@
+@<Include files@>=
+#ifdef HAVE_CONFIG_H
+#include <c-auto.h>
+#endif
+#include <ctype.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <time.h>
+#ifdef TM_IN_SYS_TIME
+#include <sys/time.h>
+#endif
+#include "hbf.h"
+
+
+
+@* The functions.
+The first function to be described is |write_file()|. Each \.{GF} file
+consists of three sections: a preamble, a data section, and a postamble. The
+functions |write_pre()|, |write_data()|, and |write_post()| handle this.
+
+@<Prototypes@>=
+static void write_file(void);
+
+
+@
+In \mf-like mode we create font file name extensions similar to \mf\ if
+the \.{-n} option isn't specified; otherwise only `\.{.gf}' will be appended.
+
+@c
+static void write_file(void)
+ {char output_file[FILE_NAME_LENGTH + 1];
+
+
+ if(pk_files)
+ {if(mf_like)
+ {if(unicode)
+ sprintf(output_file, "%s%02x.%.0igf",@/
+ output_name, file_number,
+ long_extension ? (int)(x_resolution + 0.5) : 0);
+ else
+ sprintf(output_file, "%s%02i.%.0igf",@/
+ output_name, file_number,
+ long_extension ? (int)(x_resolution + 0.5) : 0);
+ }
+ else
+ {if(unicode)
+ sprintf(output_file, "%s%02x.gf", output_name, file_number);
+ else
+ sprintf(output_file, "%s%02i.gf", output_name, file_number);
+ }
+ if(!(out = fopen(output_file, WRITE_BIN)))
+ {fprintf(stderr, "Couldn't open `%s'\n", output_file);
+ exit(1);
+ }
+ if(!quiet)
+ printf("Writing `%s' ", output_file);@#
+
+ write_pre();
+ write_data();
+ write_post();
+ fclose(out);@#
+
+ if(!quiet)
+ printf("\n");
+ }
+ else
+ write_data();
+ }
+
+
+@
+The preamble has two bytes at the very beginning, |PRE| and |GF_ID|. |PRE|
+starts the preamble, and |GF_ID| is the Generic Font Identity Byte. The next
+bytes are a string in Pascal format containing a header, the date, and the
+time. Strings in Pascal format start with the length of the string and have
+no terminating NULL byte.
+
+@d GF_ID 131
+@d PRE 247@#
+
+@d header " hbf2gf output "
+
+@<Prototypes@>=
+static void write_pre(void);
+
+
+@
+@s tm int
+
+@c
+static void write_pre(void)
+ {char out_s[40], s[20];
+ time_t secs_now;
+ struct tm *time_now;
+
+
+ strcpy(out_s, header);@#
+
+ secs_now = time(NULL); /* system date and time */
+ time_now = localtime(&secs_now);
+ strftime(s, 20, "%Y.%m.%d:%H.%M", time_now);
+ strcat(out_s, s);@#
+
+ fputc(PRE, out);
+ fputc(GF_ID, out);
+ fputc(strlen(out_s), out);
+ fputs(out_s, out);
+ }
+
+
+@
+|write_data()| produces the middle part of the \.{GF} file. It first sets
+|char_adr_p| equal to the address of |char_adr[]| which will contain file
+offsets of the compressed characters.
+
+|input_size_x| and |input_size_y| reflect the original dimensions of the
+bitmap font, |pk_output_size_x| and |pk_output_size_y| contain the width and
+height of the output character box (in pixels), |pk_offset_x| and
+|pk_offset_y| define the baseline of the font. The same names starting with
+`\\{tfm\_}' instead of `\\{pk\_}' are used for \.{TFM} files (values are
+multiples of design size). |mag_x| and |mag_y| hold the scaling factors
+which are needed to reach |design_size|. |slant| defines the slant ($\Delta
+x / \Delta y$), |target_size_x| and |target_size_y| will be the final
+dimensions; |magstep_x = target_size_x / design_size| is \TeX's
+\.{\\magstep}.
+
+The \CEE/ standard specifies that all global values will be automatically
+set to~|0| if no initialization value is given.
+
+@<Global...@>=
+long char_adr[256];
+long *char_adr_p;@#
+
+int pk_offset_x;
+ /* horizontal offset (increase character width a bit; will be applied on
+ both the left and the right side) */
+double tfm_offset_x;
+int pk_offset_y;
+ /* vertical offset (must be configured to desired font size) */
+double tfm_offset_y;@#
+
+int input_size_x;
+int input_size_y;
+const char *font_encoding; /* taken from the HBF file */
+int pk_width; /* without slant */
+int pk_output_size_x;
+ /* the output character box dimensions without offsets */
+double tfm_output_size_x;
+int pk_output_size_y;
+double tfm_output_size_y;@#
+
+double design_size = 10.0; /* in points */
+double target_size_x; /* in points */
+double target_size_y;
+double magstep_x;
+double magstep_y;
+double slant;
+int rotation;@#
+
+double mag_x; /* horizontal and vertical magnification values */
+double mag_y;@#
+
+int empty_char; /* a flag whether the character does not exist or is empty */
+int last_char; /* the last valid character in a \.{GF} file */@#
+
+int dot_count; /* this counts the processed characters;
+ every ten characters a dot is output to the screen */
+
+
+@
+@<Prototypes@>=
+static void write_data(void);
+
+
+@
+@c
+static void write_data(void)
+ {dot_count = 0;
+ char_adr_p = char_adr;@#
+
+ for(last_char = 0; (last_char < 256) && !end_of_file; last_char++)
+ @<Write character@>@;
+ }
+
+
+@
+The code in this section saves the current file position first and calls
+|make_pixel_array()|, which expands and scales the character bitmap.
+
+|BOC| (and |BOC1|), the Begin Of Character command byte, must be followed by
+the character code and the dimensions of the character as explained in
+``\mf---the program'' (corrected by vertical and horizontal offsets).
+
+|write_coding()| compresses and outputs the bitmap; |EOC| (End Of Character)
+finishes the current character.
+
+@d BOC 67
+@d BOC1 68 /* simplified version of |BOC| */
+@d EOC 69
+
+@<Write character@>=
+ {if(dot_count++ % 10 == 0) /* a progress report for impatient users */
+ if(pk_files && !quiet)
+ {printf(".");
+ fflush(stdout);
+ }@#
+
+ empty_char = FALSE;
+ make_pixel_array();
+ if(end_of_file)
+ return;@#
+
+ if(pk_files)
+ {*char_adr_p = ftell(out);
+ char_adr_p++;@#
+
+ if(empty_char)
+ {fputc(BOC1, out);
+ fputc((unsigned char)last_char, out);
+ fputc(0, out);
+ fputc(0, out);
+ fputc(0, out);
+ fputc(0, out);
+ fputc(EOC, out);
+ }
+ else
+ {fputc(BOC, out);
+ fputl(last_char, out);
+ fputl(-1L, out);
+ fputl(pk_offset_x, out);
+ fputl(pk_output_size_x + pk_offset_x, out);
+ fputl(pk_offset_y, out);
+ fputl(pk_output_size_y + pk_offset_y, out);@#
+
+ write_coding();@#
+
+ fputc(EOC, out);
+ }
+ }
+ }
+
+
+@
+The current \.{GF} file will be completed with data written by
+|write_post()|. The end consists of three sections: ``special'', ``post'',
+and ``postpost''. The first contains material not used by \TeX\ itself but
+which can be used by other programs like \.{GFtoDVI} or for documentary
+purposes (|coding[]| and |comment[]|). The second describes the font as a
+whole, and the last marks the end of the file.
+
+|pk_total_min_x| up to |pk_total_max_y| define the greatest bounding box of
+this file (including offsets); the horizontal character escapement after
+drawing the character is |pk_dx|. |tfm_width| is the width in multiples of
+the design size ignoring the target size.
+
+@d _2_16 65536.0 /* $2^{16}$ */
+@d _2_20 1048576.0 /* $2^{20}$ */
+
+@<Global...@>=
+char coding[STRING_LENGTH + 1]; /* a comment describing the font encoding */
+char comment[STRING_LENGTH + 1]; /* a comment describing the font */@#
+
+unsigned long checksum;@#
+
+long pk_total_min_x;
+long pk_total_max_x;
+long pk_total_min_y;
+long pk_total_max_y;@#
+
+int dpi_x; /* printer resolution */
+int dpi_y;
+double ppp_x; /* pixels per point */
+double ppp_y;
+
+
+@
+To clarify the meaning of these values see the sections about the metrics
+and configuration file also.
+
+\TeX\ defines that 72.27~points are exactly 1~inch.
+
+@<Prototypes@>=
+static void write_post(void);
+
+
+@
+@c
+static void write_post(void)
+ {long special_adr;
+ long post_adr;@#
+
+ long designsize = design_size * _2_20; /* design size $* 2^{20}$ */@#
+
+ int pk_dx;
+ long tfm_width;@#
+
+ int i;
+ long temp;
+
+
+ ppp_x = dpi_x / 72.27 * magstep_x;
+ ppp_y = dpi_y / 72.27 * magstep_y;@#
+
+ pk_total_min_x = pk_offset_x;
+ pk_total_max_x = pk_output_size_x + 2 * pk_offset_x;
+ pk_total_min_y = pk_offset_y;
+ pk_total_max_y = pk_output_size_y + pk_offset_y;@#
+
+ pk_dx = pk_width + 2 * pk_offset_x; /* no slant */
+ tfm_width = (tfm_output_size_x + 2 * tfm_offset_x) * _2_20;
+ /* width in multiples of design size $* 2^{20}$ */@#
+
+ @<Special section@>@;
+ @<Post section@>@;
+ @<Postpost section@>@;
+ }
+
+
+@
+\.{XXXn} will be followed by n~bytes representing the length of a string
+which follows immediately. |YYY| is a 32~bit integer which is normally
+connected with the preceding string (but not used here). |special_adr|
+contains the address of the ``special section''. All items here are
+optional.
+
+@d XXX1 239 /* these are all special command bytes */
+@d XXX2 240 /* not used */
+@d XXX3 241 /* not used */
+@d XXX4 242 /* not used */@#
+
+@d YYY 243 /* not used */
+
+@<Special section@>=
+ special_adr = ftell(out);@#
+
+ if(*coding)
+ {fputc(XXX1, out); /* |XXX1| implies a string length |< 256| */
+ fputc(strlen(coding), out);
+ fputs(coding, out);
+ }@#
+
+ if(*comment)
+ {fputc(XXX1, out);
+ fputc(strlen(comment), out);
+ fputs(comment, out);
+ }
+
+
+@
+All character offsets collected in |char_adr| will be written to the output
+file. |fputl()| writes a 32~bit integer into a file.
+
+|CHAR_LOC0| (and |CHAR_LOC|) is the first byte of a character locator
+(i.e., offset, character code, and width information). |POST| starts the
+postamble, and |post_adr| points to the beginning byte of the postamble.
+
+@d POST 248@#
+
+@d CHAR_LOC 245
+@d CHAR_LOC0 246 /* simplified version of |CHAR_LOC| */
+
+@<Post section@>=
+ post_adr = ftell(out);
+ fputc(POST, out);
+ fputl(special_adr, out);@#
+
+ fputl(designsize, out);
+ fputl(checksum, out);
+ fputl(ppp_x * _2_16, out);
+ fputl(ppp_y * _2_16, out);
+ fputl(pk_total_min_x, out);
+ fputl(pk_total_max_x, out);
+ fputl(pk_total_min_y, out);
+ fputl(pk_total_max_y, out);@#
+
+ char_adr_p = char_adr;@#
+
+ if(pk_dx < 256)
+ {for(i = 0; i < last_char; i++) /* the character locators */
+ {fputc(CHAR_LOC0, out);
+ fputc(i, out);
+ fputc(pk_dx, out);
+ fputl(tfm_width, out);
+ fputl(*char_adr_p++, out);
+ }
+ }
+ else /* will only happen if |MAX_CHAR_SIZE >= 256| */
+ {for(i = 0; i < last_char; i++)
+ {fputc(CHAR_LOC, out);
+ fputc(i, out);
+ fputl(pk_dx * _2_16, out);
+ fputl(0, out);
+ fputl(tfm_width, out);
+ fputl(*char_adr_p++, out);
+ }
+ }
+
+
+@
+|POSTPOST| starts the section after the postamble. To get all information in
+a \.{GF} file, you must start here. The very last bytes of the file have
+the value |POSTPOST_ID| (the file is filled with at least 4 of these bytes
+until a file length of a multiple of~4 is reached). Going backwards a
+|GF_ID| will be next, then comes the address of the postamble section.
+
+Jumping to the postamble, a |POST| byte comes first, then the address of
+the special section, and afterwards all character offsets. These offsets and
+addresses describe the whole file.
+
+@d POSTPOST 249
+@d POSTPOST_ID 223
+
+@<Postpost section@>=
+ fputc(POSTPOST, out);
+ fputl(post_adr, out);
+ fputc(GF_ID, out);
+ temp = ftell(out);
+ i = (int)(temp % 4) + 4;
+ while(i--)
+ fputc(POSTPOST_ID, out);
+
+
+@
+\TeX\ wants the most significant byte first.
+
+@<Prototypes@>=
+static void fputl(long, FILE *);
+
+
+@
+@c
+static void fputl(long num, FILE *f)
+ {fputc(num >> 24, f);
+ fputc(num >> 16, f);
+ fputc(num >> 8, f);
+ fputc(num, f);
+ }
+
+
+@
+|make_pixel_array()| scales a character into the array |out_char[]| where
+each \\{byte} represents one pixel, contrary to the input file where each
+\\{bit} is used to store the character bitmap. |BLACK| indicates a black
+pixel.
+
+The scaling routine was modeled after the program \.{pnmscale} of the
+\.{pbmplus} package. \.{pbmplus} was designed to handle arbitrary pictures,
+and bitmaps are only a special case of a graymap with values from~0 for
+white up to |PIXEL_MAXVAL = 255| for black.
+
+If |EOF| is encountered, |end_of_file| is set and the function returns
+immediately.
+
+@d BLACK 1
+@d WHITE 0@#
+
+@d PIXEL_MAXVAL 255
+@d SCALE 4096
+@d HALFSCALE 2048@#
+
+@d MAX_CHAR_SIZE 1023
+
+@<Global...@>=
+HBF_CHAR code;
+const unsigned char *bitmap;
+ /* a proper input bitmap array will be allocated by the HBF API */
+const unsigned char *bP;@#
+
+unsigned char out_char[MAX_CHAR_SIZE * MAX_CHAR_SIZE + 1];
+ /* the output bitmap array */
+unsigned char *out_char_p;@#
+
+unsigned char pixelrow[MAX_CHAR_SIZE];
+unsigned char temp_pixelrow[MAX_CHAR_SIZE];
+unsigned char new_pixelrow[MAX_CHAR_SIZE + 1];
+ /* we need space to append a white pixel */@#
+int curr_row; /* for |read_row()| if we access the glyph rotated */
+
+long grayrow[MAX_CHAR_SIZE];@#
+
+long s_mag_x, s_mag_y, s_slant;
+
+
+@
+We need to initialize the |grayrow[]| array together with some other
+variables.
+
+Two steps are necessary to compute the |code| if we are in the \mf-like
+mode. Assuming that we search the code \.{0xXXYY}, we first set |code| to
+the value \.{0xXXAA}, where \.{0xAA} is equal to |min_2_byte| (getting
+|offset| as the number of remaining characters to reach the first character
+in our given subfont), then we increment |code| (and decrement |offset|)
+until |offset| equals~0.
+
+@<Initialize variables@>=
+ {int col, offset;
+
+ if(rotation)
+ {int tmp;
+
+
+ tmp = input_size_x;
+ input_size_x = input_size_y;
+ input_size_y = tmp;
+ }@#
+
+ if(mf_like)
+ {target_size_x = design_size * (x_resolution / dpi_x);
+ target_size_y = design_size * (x_resolution * y_scale / dpi_y);
+ }
+ else
+ target_size_x = target_size_y = design_size;
+ magstep_x = target_size_x / design_size;
+ magstep_y = target_size_y / design_size;@#
+
+ pk_offset_x = offset_x * magstep_x + 0.5;
+ pk_offset_y = offset_y * magstep_y + 0.5;
+ tfm_offset_x = offset_x / (dpi_x / 72.27) / design_size;
+ tfm_offset_y = offset_y / (dpi_y / 72.27) / design_size;@#
+
+ pk_width = input_size_x * mag_x * magstep_x + 0.5; /* without slant */
+ pk_output_size_x = input_size_x * mag_x * magstep_x +
+ input_size_y * mag_y * magstep_y * slant + 0.5;
+ pk_output_size_y = input_size_y * mag_y * magstep_y + 0.5;
+ tfm_output_size_x = input_size_x * mag_x /
+ (dpi_x / 72.27) / design_size;
+ tfm_output_size_y = input_size_y * mag_y /
+ (dpi_y / 72.27) / design_size;
+ if(pk_output_size_x > MAX_CHAR_SIZE)
+ {fprintf(stderr, "Output character box width too big\n");
+ exit(1);
+ }
+ if(pk_output_size_y > MAX_CHAR_SIZE)
+ {fprintf(stderr, "Output character box height too big\n");
+ exit(1);
+ }@#
+
+ for(col = 0; col < input_size_x; ++col)
+ grayrow[col] = HALFSCALE;@#
+
+ if(!mf_like)
+ code = (min_char & 0xFF00) + min_2_byte;
+ else
+ {if((file_number < (unicode ? 0 : 1)) || (file_number >= 0x100))
+ {fprintf(stderr, "Invalid subfile number\n");
+ exit(1);
+ }@#
+
+ if(unicode)
+ {offset = 0;
+ code = file_number * 0x100;
+ }
+ else
+ {offset = (file_number - 1) * 256 % nmb_2_bytes;
+ code = (min_char & 0xFF00) + min_2_byte +
+ (file_number - 1) * 256 / nmb_2_bytes * 0x100;
+ }@#
+
+ while(offset--)
+ while(!b2_codes[code++ & 0xFF])
+ /* eliminate invalid |b2_codes| */
+ ;@#
+
+ if(code > max_char)
+ {fprintf(stderr, "Invalid subfile number\n");
+ exit(1);
+ }
+ }
+
+ s_mag_x = mag_x * magstep_x * SCALE;
+ s_mag_y = mag_y * magstep_y * SCALE;
+ s_slant = slant * SCALE;
+ }
+
+
+@
+All arrays of the \\{pixelrow} family contain gray values. While scaling
+with non-integer values a pixel of the input bitmap will normally not align
+with the pixel grid of the output bitmap (geometrically spoken). In this
+case we first compute the fractions of input pixel rows scaled vertically
+and add the corresponding gray values until a temporary row is produced.
+Then we repeat this procedure horizontally pixel by pixel and write the
+result into an output array.
+
+
+@<Prototypes@>=
+static void make_pixel_array(void);
+
+
+@
+@c
+static void make_pixel_array(void)
+ {unsigned char *prP;
+ unsigned char *temp_prP;
+ unsigned char *new_prP;
+ long *grP;@#
+
+ register unsigned char *xP;
+ register unsigned char *nxP;@#
+
+ register int row, col;
+ int rows_read = 0;
+ register int need_to_read_row = 1;@#
+
+ long frac_row_to_fill = SCALE;
+ long frac_row_left = s_mag_y;@#
+
+ int no_code = FALSE;
+
+
+ prP = pixelrow;
+ temp_prP = temp_pixelrow;
+ new_prP = new_pixelrow;
+ grP = grayrow;
+ out_char_p = out_char; /* will be increased by |write_row()| */@#
+
+again:
+ if(b2_codes[code & 0xFF]) /* a valid second byte? */
+ {if(pk_files)
+ {bitmap = hbfGetBitmap(hbf, code);
+ bP = bitmap;
+ /* will be increased by |read_row()| */@#
+
+ if(!bitmap)
+ empty_char = TRUE;
+ else
+ @<Scale row by row@>@;
+ }
+ }
+ else
+ no_code = TRUE;@#
+
+ if((code & 0xFF) == max_2_byte)
+ code += 0xFF - (max_2_byte - min_2_byte); /* go to next plane */
+ if(code >= max_char)
+ {end_of_file = TRUE;
+ return;
+ }@#
+
+ code++;@#
+
+ if(no_code)
+ {no_code = FALSE;
+ goto again;
+ }
+ }
+
+
+@
+@<Scale row by row@>=
+ {if(pk_output_size_y == input_size_y) /* shortcut Y~scaling if possible */
+ temp_prP = prP;@#
+
+ curr_row = input_size_y - 1; /* only needed for rotated glyphs */
+ for(row = 0; row < pk_output_size_y; ++row)
+ {@<Scale Y from |pixelrow[]| into |temp_pixelrow[]|@>@;
+ @<Scale X from |temp_pixelrow[]| into |new_pixelrow[]|
+ and write it into |out_char[]|@>@;
+ }
+ }
+
+
+@
+@<Scale Y from |pixelrow[]| into |temp_pixelrow[]|@>=
+ if(pk_output_size_y == input_size_y)
+ /* shortcut Y~scaling if possible */
+ read_row(prP);
+ else
+ {while(frac_row_left < frac_row_to_fill)
+ {if(need_to_read_row)
+ if(rows_read < input_size_y)
+ {read_row(prP);
+ ++rows_read;
+ }@#
+
+ for(col = 0, xP = prP; col < input_size_x; ++col, ++xP)
+ grP[col] += frac_row_left * (*xP);@#
+
+ frac_row_to_fill -= frac_row_left;
+ frac_row_left = s_mag_y;
+ need_to_read_row = 1;
+ }@#
+
+ @<Produce a temporary row@>@;
+ }
+
+
+@
+Now |frac_row_left >= frac_row_to_fill|, so we can produce a row.
+
+@<Produce a temporary row@>=
+ if(need_to_read_row)
+ if(rows_read < input_size_y)
+ {read_row(prP);
+ ++rows_read;
+ need_to_read_row = 0;
+ }@#
+
+ for(col = 0, xP = prP, nxP = temp_prP;
+ col < input_size_x; ++col, ++xP, ++nxP)
+ {register long g;
+
+
+ g = grP[col] + frac_row_to_fill * (*xP);
+ g /= SCALE;
+ if(g > PIXEL_MAXVAL)
+ g = PIXEL_MAXVAL;@#
+
+ *nxP = g;
+ grP[col] = HALFSCALE;
+ }@#
+
+ frac_row_left -= frac_row_to_fill;
+ if(frac_row_left == 0)
+ {frac_row_left = s_mag_y;
+ need_to_read_row = 1;
+ }
+ frac_row_to_fill = SCALE;
+
+
+@
+To implement the slant we move the starting point |nxP| to the right
+according to the corresponding |y|~value. To simplify life only positive
+shift values are allowed.
+
+We always append a white pixel to avoid artefacts at the end of the line
+produced by the last line. This rule sets the second condition that the
+slant must not be greater than~|1|---such a large slant would be unusable
+anyway for typesetting purposes.
+
+@<Scale X from |temp_pixelrow[]| into |new_pixelrow[]|
+ and write it into |out_char[]|@>=
+ if(pk_width == input_size_x && s_slant == 0)
+ /* shortcut X~scaling if possible */
+ write_row(temp_prP);
+ else
+ {register long g = HALFSCALE;
+ register long frac_col_to_fill = SCALE;
+ register long frac_col_left;
+ register int need_col = 0;
+
+
+ nxP = new_prP;@#
+
+ frac_col_left = (pk_output_size_y - row) * s_slant;
+ while(frac_col_left >= frac_col_to_fill)
+ {*(nxP++) = 0;
+ frac_col_left -= frac_col_to_fill;
+ }@#
+
+ if(frac_col_left > 0)
+ frac_col_to_fill -= frac_col_left;@#
+
+ for(col = 0, xP = temp_prP; col < input_size_x; ++col, ++xP)
+ {frac_col_left = s_mag_x;
+ while(frac_col_left >= frac_col_to_fill)
+ {if(need_col)
+ {++nxP;
+ g = HALFSCALE;
+ }@#
+
+ g += frac_col_to_fill * (*xP);
+ g /= SCALE;
+ if(g > PIXEL_MAXVAL)
+ g = PIXEL_MAXVAL;@#
+
+ *nxP = g;
+ frac_col_left -= frac_col_to_fill;
+ frac_col_to_fill = SCALE;
+ need_col = 1;
+ }@#
+
+ if(frac_col_left > 0)
+ {if(need_col)
+ {++nxP;
+ g = HALFSCALE;
+ need_col = 0;
+ }@#
+
+ g += frac_col_left * (*xP);
+ frac_col_to_fill -= frac_col_left;
+ }
+ }@#
+
+ @<Write out a row@>@;
+ }
+
+
+@
+@<Write out a row@>=
+ if(frac_col_to_fill > 0)
+ {--xP;
+ g += frac_col_to_fill * (*xP);
+ }@#
+
+ if(!need_col)
+ {g /= SCALE;
+ if(g > PIXEL_MAXVAL)
+ g = PIXEL_MAXVAL;
+ *nxP = g;
+ }@#
+
+ *(++nxP) = 0; /* append a blank pixel */@#
+
+ write_row(new_prP);
+
+
+@
+|read_row()| reads a row from |bitmap[]| and converts it into a graymap row.
+If the |rotation| flag has been set, we get the proper column instead (note
+that in this case |input_size_x| already reflects the width of the rotated
+glyph).
+
+@<Prototypes@>=
+static
+#ifdef __GNUC__
+__inline__
+#endif
+void read_row(unsigned char *);
+
+
+@
+@c
+static
+#ifdef __GNUC__
+__inline__
+#endif
+void read_row(unsigned char *pixelrow)
+ {register int col, bitshift, offset;
+ register unsigned char *xP;
+ register unsigned char item = 0;
+
+ if(rotation)
+ {bitshift = 7 - (curr_row % 8);
+ offset = (input_size_y + 7) / 8;
+ bP = bitmap + curr_row / 8;
+ for(col = 0, xP = pixelrow; col < input_size_x; ++col, ++xP)
+ {*xP = ((*bP >> bitshift) & 1) == 1 ? PIXEL_MAXVAL : 0;
+ bP += offset;
+ }
+ curr_row--;
+ }
+ else
+ {bitshift = -1;
+ for(col = 0, xP = pixelrow; col < input_size_x; ++col, ++xP)
+ {if(bitshift == -1)
+ {item = *(bP++); /* increase input bitmap pointer */
+ bitshift = 7;
+ }
+ *xP = ((item >> bitshift) & 1) == 1 ? PIXEL_MAXVAL : 0;
+ --bitshift;
+ }
+ }
+ }
+
+
+@
+|write_row()| converts the graymap back into a bitmap using a simple
+threshold.
+
+@<Global...@>=
+int threshold = 128;
+
+
+@
+@<Prototypes@>=
+static
+#ifdef __GNUC__
+__inline__
+#endif
+void write_row(unsigned char *);
+
+
+@
+@c
+static
+#ifdef __GNUC__
+__inline__
+#endif
+void write_row(unsigned char *pixelrow)
+ {register int col;
+ register unsigned char *xP;
+
+ for(col = 0, xP = pixelrow; col < pk_output_size_x; ++col, ++xP)
+ *(out_char_p++) = (*xP >= threshold) ? 1 : 0;
+ /* increase output bitmap pointer */
+ }
+
+
+@
+Now comes the most interesting routine. The pixel array will be compressed
+in sequences of black and white pixels.
+
+|SKIP0|, |SKIP1|, and |SKIP2| indicate how many blank lines will be skipped.
+|PAINT_(x)| means that the next x~pixels will have the same color, then the
+color changes. |NEW_ROW_(x)| is the first black pixel in the next row.
+
+An example: the pixel sequence 111100011001 [new row] 000111011110 will be
+output as 4 3 2 2 1 77 3 1 4 1.
+
+Commands with an ending~`n' in its name indicate that the next n~bytes
+should be read as the counter. Example: |SKIP1|~26 means `skip the next
+26~rows'.
+
+For further details please refer to ``\mf---the program''.
+
+@d PAINT_(x) (x) /* $0 \le x \le 63$ */
+@d PAINT1 64
+@d PAINT2 65
+@d PAINT3 66 /* not used */@#
+
+@d SKIP0 70
+@d SKIP1 71
+@d SKIP2 72
+@d SKIP3 73 /* not used */@#
+
+@d NEW_ROW_(x) ((x) + 74) /* $0 \le x \le 164$ */@#
+
+@d NOOP 244 /* not used */
+
+@<Prototypes@>=
+static void write_coding(void);
+
+
+@
+The |goto start| instruction causes some compilers to complain about
+``Unreachable code $\ldots$'' or something similar.
+
+@c
+static void write_coding(void)
+ {register int count, skip;
+ register unsigned char paint;
+ register int x, y;
+ register unsigned char *cp;
+
+ x = 0;
+ y = 0;
+ cp = out_char + y * pk_output_size_x + x;
+ count = skip = 0;
+ paint = WHITE;
+ goto start;@#
+
+ while (y < pk_output_size_y)
+ {@<Search blank lines@>@;
+start:
+ @<Process rest of line@>@;
+ y++;
+ }
+ }@#
+
+
+@
+@<Search blank lines@>=
+ count = 0;
+ x = 0;
+ cp = out_char + y * pk_output_size_x + x;@#
+
+ while(x < pk_output_size_x)
+ {if(*cp == paint)
+ count++;
+ else
+ {if(skip == 0)
+ {if(count <= 164)
+ fputc(NEW_ROW_(count), out);
+ else
+ {fputc(SKIP0, out);@#
+
+ if(count < 256)
+ {fputc(PAINT1, out);
+ fputc(count, out);
+ }
+ else
+ {fputc(PAINT2, out);
+ fputc(count >> 8, out);
+ fputc(count & 0xFF, out);
+ }
+ }
+ }
+ else
+ {if(skip == 1)
+ fputc(SKIP0, out);
+ else
+ {if(skip < 256)
+ {fputc(SKIP1, out);
+ fputc(skip, out);
+ }
+ else
+ {fputc(SKIP2, out);
+ fputc(skip >> 8, out);
+ fputc(skip & 0xFF, out);
+ }
+ }
+ skip = 0;
+ if(count < 64)
+ fputc(PAINT_(count), out);
+ else if(count < 256)
+ {fputc(PAINT1, out);
+ fputc(count, out);
+ }
+ else
+ {fputc(PAINT2, out);
+ fputc(count >> 8, out);
+ fputc(count & 0xFF, out);
+ }
+ }
+ count = 0;
+ paint = BLACK;
+ break;
+ }
+ x++;
+ cp++;
+ }
+ if(x >= pk_output_size_x)
+ {skip++;
+ y++;
+ continue;
+ }
+
+
+@
+@<Process rest of line@>=
+ while(x < pk_output_size_x)
+ {if(*cp == paint)
+ count++;
+ else
+ {if(count < 64)
+ fputc(PAINT_(count), out);
+ else if(count < 256)
+ {fputc(PAINT1, out);
+ fputc(count, out);
+ }
+ else
+ {fputc(PAINT2, out);
+ fputc(count >> 8, out);
+ fputc(count & 0xFF, out);
+ }
+ count = 1;
+ paint = BLACK - paint;
+ }
+ x++;
+ cp++;
+ }
+ if(paint == BLACK)
+ {if(count < 64)
+ fputc(PAINT_(count), out);
+ else if(count < 256)
+ {fputc(PAINT1, out);
+ fputc(count, out);
+ }
+ else
+ {fputc(PAINT2, out);
+ fputc(count >> 8, out);
+ fputc(count & 0xFF, out);
+ }
+ paint = WHITE;
+ }
+
+
+
+@* The font metrics file.
+This routine creates one \.{PL} file with the font properties. None of the
+\TeX\ font dimensions are needed because you never will use CJK fonts
+directly, and intercharacter stretching is handled by the \\{CJK} macro
+\.{\\CJKglue}. (Other packages may define similar commands.)
+
+The name of the \.{PL} file will contain the running two digits in
+\mf-like mode only.
+
+It makes sense \\{not} to compute the check sum automatically for two
+reasons. Firstly, since \TeX's checksum algorithm is based on the character
+width, the number of valid characters, and the designsize, there is a much
+higher chance that two subfonts from different HBF fonts have the same check
+sum than it is for ordinary fonts, because all characters have the same
+width, usually 256~characters in a subfont, and very often the same design
+size. Secondly, and this is more important, we create just one
+\.{TFM} file for all subfonts regardless of the real number of characters
+in a particular subfont.
+
+To have an identification string in the \.{TFM} file, we split it into
+single bytes and use the \.{HEADER} command repeatedly.
+
+@<Prototypes@>=
+static void write_pl(void);
+
+
+@
+@c
+static void write_pl(void)
+ {int i, pos;
+ char output_file[FILE_NAME_LENGTH + 1];
+ long t, sc;
+ char *s;
+ char tfm_header[] = "Created by hbf2gf";
+
+ file_number--; /* for \mf-like mode */@#
+
+ if(mf_like)
+ {if(unicode)
+ sprintf(output_file, "%s%02x.pl", output_name, file_number);
+ else
+ sprintf(output_file, "%s%02i.pl", output_name, file_number);
+ }
+ else
+ sprintf(output_file, "%s.pl", output_name);@#
+
+ if(!(out = fopen(output_file, WRITE_TXT)))
+ {fprintf(stderr, "Couldn't open `%s'\n", output_file);
+ exit(1);
+ }
+ if(!quiet)
+ printf("\nWriting `%s'\n", output_file);@#
+
+ fprintf(out,@/
+ "\n(FAMILY %s%d)"@/
+ "\n(CODINGSCHEME CJK-%s)",
+ output_name, file_number, font_encoding);@#
+
+ fprintf(out,@/
+ "\n(DESIGNSIZE R %.6f)"@/
+ "\n(COMMENT DESIGNSIZE IS IN POINTS)"@/
+ "\n(COMMENT OTHER SIZES ARE MULTIPLES OF DESIGNSIZE)"@/
+ "\n(CHECKSUM O %lo)"@/
+ "\n(FONTDIMEN"@/
+ "\n (SLANT R %.6f)"@/
+ "\n (SPACE R 0.0)"@/
+ "\n (STRETCH R 0.0)"@/
+ "\n (SHRINK R 0.0)"@/
+ "\n (XHEIGHT R 1.0)"@/
+ "\n (QUAD R 1.0)"@/
+ "\n (EXTRASPACE R 0.0)"@/
+ "\n )", design_size, checksum, slant);@#
+
+ s = tfm_header;
+ i = strlen(s);
+ t = ((long)i) << 24;
+ sc = 16;
+ pos = 18;@#
+
+ fprintf(out, "\n");
+ while(i > 0)
+ {t |= ((long)(*(unsigned char *)s++)) << sc;
+ sc -= 8;
+ if(sc < 0)
+ {fprintf(out, "\n(HEADER D %d O %lo)", pos, t);
+ t = 0;
+ sc = 24;
+ pos++;
+ }
+ i--;
+ }
+ if(t)
+ fprintf(out, "\n(HEADER D %d O %lo)", pos, t);
+ fprintf(out, "\n");@#
+
+ for(i = 0; i < 256; i++)
+ {fprintf(out,@/
+ "\n(CHARACTER O %o"@/
+ "\n (CHARWD R %.6f)"@/
+ "\n (CHARHT R %.6f)"@/
+ "\n (CHARDP R %.6f)"@/
+ "\n (CHARIC R %.6f)"@/
+ "\n )",@/
+ i,
+ tfm_output_size_x + 2 * tfm_offset_x,
+ tfm_output_size_y + tfm_offset_y,
+ -tfm_offset_y,
+ slant * (tfm_output_size_y + tfm_offset_y));
+ }@#
+
+ fclose(out);
+ }
+
+
+
+@* The extended virtual font file for \Om.
+The following is very similar to |write_pl()|; we simply map the glyphs
+of the subfonts back to the original encoding positions.
+
+@<Prototypes@>=
+static void write_ovp(void);
+
+
+@
+@c
+static void write_ovp(void)
+ {int c, i, nmb_subfonts, remainder, count, pos;
+ char output_file[FILE_NAME_LENGTH + 1];
+ long t, sc;
+ char *s;
+ char ofm_header[] = "Created by hbf2gf";
+
+ nmb_subfonts = ((max_char - (min_char & 0xFF00)) / 256 * nmb_2_bytes)
+ / 256 + 1;
+ remainder = ((max_char - (min_char & 0xFF00)) / 256 * nmb_2_bytes)
+ % 256;@#
+
+ /* correction for the last incomplete second byte range */
+ for(count = 0; count < (max_char & 0xFF); count++)
+ if(b2_codes[count])
+ remainder++;
+ if(remainder >= 256)
+ nmb_subfonts++;@#
+
+ sprintf(output_file, "%s.ovp", output_name);@#
+
+ if(!(out = fopen(output_file, WRITE_TXT)))
+ {fprintf(stderr, "Couldn't open `%s'\n", output_file);
+ exit(1);
+ }
+ if(!quiet)
+ printf("\nWriting `%s'\n", output_file);@#
+
+ fprintf(out,@/
+ "\n(VTITLE Omega virtual font created by hbf2gf)"@/
+ "\n(DESIGNSIZE R %.6f)"@/
+ "\n(COMMENT DESIGNSIZE IS IN POINTS)"@/
+ "\n(COMMENT OTHER SIZES ARE MULTIPLES OF DESIGNSIZE)"@/
+ "\n(CHECKSUM O %lo)"@/
+ "\n(FONTDIMEN"@/
+ "\n (SLANT R %.6f)"@/
+ "\n (SPACE R 0.0)"@/
+ "\n (STRETCH R 0.0)"@/
+ "\n (SHRINK R 0.0)"@/
+ "\n (XHEIGHT R 1.0)"@/
+ "\n (QUAD R 1.0)"@/
+ "\n (EXTRASPACE R 0.0)"@/
+ "\n )", design_size, checksum, slant);@#
+
+ s = ofm_header;
+ i = strlen(s);
+ t = ((long)i) << 24;
+ sc = 16;
+ pos = 18;@#
+
+ fprintf(out, "\n");
+ while(i > 0)
+ {t |= ((long)(*(unsigned char *)s++)) << sc;
+ sc -= 8;
+ if(sc < 0)
+ {fprintf(out, "\n(HEADER D %d O %lo)", pos, t);
+ t = 0;
+ sc = 24;
+ pos++;
+ }
+ i--;
+ }
+ if(t)
+ fprintf(out, "\n(HEADER D %d O %lo)", pos, t);
+ fprintf(out, "\n");@#
+
+ for(i = 0; i < nmb_subfonts; i++)
+ {fprintf(out,@/
+ "\n(MAPFONT D %i"@/
+ "\n (FONTNAME %s%02i)"@/
+ "\n (FONTCHECKSUM O %lo)"@/
+ "\n (FONTAT R 1.0)"@/
+ "\n (FONTDSIZE R %.6f)"@/
+ "\n )", i, output_name, i + 1, checksum, design_size);
+ }@#
+
+ for(c = min_char, i = 0, count = 0; c <= max_char; c++)
+ {if(b2_codes[c & 0xFF] == VALID_SUBCODE)
+ {fprintf(out,@/
+ "\n(CHARACTER O %o"@/
+ "\n (CHARWD R %.6f)"@/
+ "\n (CHARHT R %.6f)"@/
+ "\n (CHARDP R %.6f)"@/
+ "\n (CHARIC R %.6f)"@/
+ "\n (MAP"@/
+ "\n (SELECTFONT D %i)"@/
+ "\n (SETCHAR O %o)"@/
+ "\n )"@/
+ "\n )",@/
+ c,
+ tfm_output_size_x + 2 * tfm_offset_x,
+ tfm_output_size_y + tfm_offset_y,
+ -tfm_offset_y,
+ slant * (tfm_output_size_y + tfm_offset_y),
+ i,
+ count);@#
+
+ count++;
+ if(count == 256)
+ {count = 0;
+ i++;
+ }
+ }
+ else
+ continue;
+ }@#
+
+ fclose(out);
+ }
+
+
+
+@* The job file.
+This routine is the most system specific one. If your operating system needs
+a different outline, make appropriate changes here.
+
+You have to call this batch file after \.{hbf2gf} has finished (if not in
+\mf-like mode). It will transform the \.{GF} files into \.{PK} files and
+delete the now unnecessary \.{GF} files, then transform the \.{PL} file into
+a \.{TFM} file and copy it |nmb_files| times. The name of the job file is
+|output_name|.
+
+@d EXTENSION_LENGTH 8 /* the maximal length of a file extension */@#
+
+@d GFTOPK_NAME "gftopk"
+@d PLTOTF_NAME "pltotf"
+@d OVP2OVF_NAME "ovp2ovf"
+
+@<Global...@>=
+char job_extension[EXTENSION_LENGTH + 1];
+char rm_command[STRING_LENGTH + 1];
+char cp_command[STRING_LENGTH + 1];
+char pk_directory[STRING_LENGTH + 1];
+char tfm_directory[STRING_LENGTH + 1];@#
+
+int ofm_file = FALSE;
+
+
+@
+@<Prototypes@>=
+static void write_job(void);
+
+
+@
+@c
+static void write_job(void)
+ {FILE *out;
+ int i, j;
+ char buffer[FILE_NAME_LENGTH + 1];
+
+
+ strcpy(buffer, output_name);
+ strcat(buffer, job_extension);
+ if(!(out = fopen(buffer, WRITE_TXT)))
+ {fprintf(stderr, "Couldn't open `%s'\n", buffer);
+ exit(1);
+ }
+ if(!quiet)
+ printf("\nWriting `%s'\n", buffer);@#
+
+ if(pk_files)
+ {if(unicode)
+ {for(i = (min_char >> 8), j = 0; j < nmb_files; i++, j++)
+ fprintf(out,@/
+ "%s %s%02x.gf %s%s%02x.%.0ipk\n"@/
+ "%s %s%02x.gf\n",@/
+ GFTOPK_NAME, output_name, i,@/
+ pk_directory, output_name, i,
+ long_extension ? (int)(dpi_x * magstep_x + 0.5) : 0,@/
+ rm_command, output_name, i);
+ }
+ else
+ {for(i = 1; i <= nmb_files; i++)
+ fprintf(out,@/
+ "%s %s%02i.gf %s%s%02i.%.0ipk\n"@/
+ "%s %s%02i.gf\n",@/
+ GFTOPK_NAME, output_name, i,@/
+ pk_directory, output_name, i,
+ long_extension ? (int)(dpi_x * magstep_x + 0.5) : 0,@/
+ rm_command, output_name, i);
+ }
+ }@#
+
+ if(tfm_files)
+ {fprintf(out,@/
+ "\n"@/
+ "%s %s.pl %s.tfm\n"@/
+ "%s %s.pl\n"@/
+ "\n",@/
+ PLTOTF_NAME, output_name, output_name,@/
+ rm_command, output_name);@#
+
+ if(unicode)
+ {for(i = (min_char >> 8), j = 0; j < nmb_files; i++, j++)
+ fprintf(out,@/
+ "%s %s.tfm %s%s%02x.tfm\n",@/
+ cp_command, output_name,
+ tfm_directory, output_name, i);
+ }
+ else
+ {for(i = 1; i <= nmb_files; i++)
+ fprintf(out,@/
+ "%s %s.tfm %s%s%02i.tfm\n",@/
+ cp_command, output_name,
+ tfm_directory, output_name, i);
+ }@#
+
+ fprintf(out,@/
+ "\n"@/
+ "%s %s.tfm",@/
+ rm_command, output_name);
+ }@#
+
+ if(ofm_file)
+ {fprintf(out,@/
+ "\n"@/
+ "%s %s.ovp %s.ovf %s.ofm\n"@/
+ "%s %s.ovp\n"@/
+ "\n",@/
+ OVP2OVF_NAME, output_name, output_name, output_name,@/
+ rm_command, output_name);
+ }@#
+
+ fclose(out);
+ }
+
+
+
+@* The configuration file.
+Here is a list with all necessary keywords (and parameters):
+\medskip
+\halign{\quad\.{#}\hfil&\quad#\hfil\cr
+ hbf\_header & the HBF header file name of the input font(s). \cr
+ output\_name & the name stem of the output files. \cr
+ & Should be equal to the name of the configuration file
+ in most cases.\cr
+ & A running two digit decimal number starting with
+ \.{01} will be appended. \cr
+ & (For Unicode fonts see the keyword \.{unicode}
+ below.) \cr
+ }
+\bigskip
+And now all optional keywords:
+\medskip
+\halign{\quad\.{#}\hfil&\quad#\hfil\cr
+ x\_offset & increases the character width. \cr
+ & Will be applied on both sides; \cr
+ & default is the value given in the HBF header
+ (\.{HBF\_BITMAP\_BOUNDING\_BOX}) \cr
+ & scaled to \\{design\/}size (in pixels). \cr
+ y\_offset & shifts all characters up or down; \cr
+ & default is the value given in the HBF header
+ (\.{HBF\_BITMAP\_BOUNDING\_BOX}) \cr
+ & scaled to \\{design\/}size (in pixels). \cr
+ design\_size & the design size (in points) of the font. \cr
+ & \.{x\_offset} and \.{y\_offset} refer to this
+ size. \cr
+ & Default is |10.0| \cr
+ target\_size & This command is obsolete now and will be
+ ignored.\cr
+ & \cr
+ slant & the slant of the font (given as $\Delta x /
+ \Delta y$). \cr
+ & Only values in the range |0 <= slant <= 1|
+ are allowed. \cr
+ & Default is |0.0| \cr
+ rotation & if set to `yes'. the glyphs are rotated
+ 90~degrees counter-clockwise. \cr
+ & The default offsets as given in the HBF header
+ will be ignored (and set to~|0|). \cr
+ & Default is `no'. \cr
+ & \cr
+ mag\_x & \cr
+ mag\_y & scaling values of the characters to reach
+ design size. \cr
+ & If only one magnification is given, x and y
+ values are assumed to be equal. \cr
+ & Default is \.{mag\_x} $=$ \.{mag\_y} $=$ |1.0|
+ \cr
+ threshold & A value between |1| and |254| defining a
+ threshold for converting the internal \cr
+ & graymap into the output bitmap; lower values
+ cut more pixels. \cr
+ & Default value is |128|. \cr
+ & \cr
+ comment & a comment describing the font; \cr
+ & default is none. \cr
+ & \cr
+ nmb\_fonts & the number of the fonts. \cr
+ & Default value is~|-1| for creating all
+ fonts. \cr
+ unicode & if `yes', a two digit hexadecimal number will
+ be used as a running number, \cr
+ & starting with the value of the first byte of
+ the first code range. \cr
+ & Default is `no'. \cr
+ min\_char & the minimum of the encoding range. \cr
+ & Specify this value if it is not identical to
+ the lowest code value \cr
+ & in the HBF file (to which it defaults). \cr
+ & \cr
+ dpi\_x & \cr
+ dpi\_y & the horizontal and vertical resolution (in
+ dpi) of the printer. \cr
+ & If only one resolution is given, x and y
+ values are assumed to be equal. \cr
+ & Default is |300|. \cr
+ checksum & a checksum to identify the \.{GF} files
+ with the appropriate \.{TFM} files. \cr
+ & The default of this 32~bit unsigned integer
+ is |0|. \cr
+ coding & a comment describing the coding scheme; \cr
+ & default is none. \cr
+ & \cr
+ pk\_directory & the destination directory of the
+ \.{PK} files; \cr
+ & default: none. \cr
+ & Attention! The batch file will not check
+ whether this directory exists. \cr
+ tfm\_directory & the destination directory of the
+ \.{TFM} files; \cr
+ & default: none. \cr
+ & Attention! The batch file will not check
+ whether this directory exists. \cr
+ pk\_files & whether to create \.{PK} files or not; \cr
+ & default is `yes'. \cr
+ tfm\_files & whether to create \.{TFM} files or not; \cr
+ & default is `yes'. \cr
+ ofm\_file & whether to create an \.{OFM} and an
+ \.{OVF} file or not; \cr
+ & default is `no'. \cr
+ long\_extension & if `yes', \.{PK} files will include the
+ resolution in the extension \cr
+ & (e.g. \.{gsso1201.300pk}). \cr
+ & This affects the batch file only (default is
+ `yes'). \cr
+ rm\_command & this shell command removes files; \cr
+ & default: `rm'. \cr
+ cp\_command & this shell command copies files; \cr
+ & default: `cp'. \cr
+ job\_extension & the extension of the batch file which calls
+ \.{GFtoPK} and \.{PLtoTF} \cr
+ & to convert the \.{GF} and the
+ \.{PL} files into \.{PK} and
+ \.{TFM} files; \cr
+ & default is none. \cr
+ }
+\bigskip
+
+The searching algorithm (for the keywords) of \.{hbf2gf} is case
+insensitive; it makes no difference whether you write for example \.{comment}
+or \.{CommenT}. The keywords must start a line (be in the first column), and
+the corresponding parameters must be on the same line with the keyword and
+separated by at least one space or tabulator stop. Lines starting not with a
+keyword are ignored.
+
+Key values \\{are} case sensitive (except \.{yes} and \.{no}).
+
+The default system dependent values are for \UNIX/-like operating systems;
+if you use for example DOS, you must write
+\medskip
+\halign{\quad\.{#}\hfil&\quad\.{#}\hfil\cr
+ long\_extension & no \cr
+ rm\_command & del \cr
+ cp\_command & copy \cr
+ job\_extension & .bat \cr
+ }
+\medskip
+
+Both the values |pk_output_size_x| and |pk_output_size_y| must not exceed
+|MAX_CHAR_SIZE|; \.{x\_offset} and \.{y\_offset} are related to the
+design size (and not to the input size).
+
+In \mf-like mode, one \.{GF} file and one \.{PL} file will be computed
+(depending on the command line options \.{-g} and \.{-p}), taking
+|x_resolution| and |y_scale| from the command line. \.{nmb\_fonts} will
+always be set to~|1|; no job file will be created.
+
+
+@
+@d PRINTER_MIN_RES_X 50
+@d PRINTER_MIN_RES_Y 50
+
+@<Global...@>=
+char Buffer[STRING_LENGTH + 1];
+
+
+@
+@<Prototypes@>=
+static void read_config(void);
+
+
+@
+If |config_file| isn't found in \mf-like mode we assume that the font
+isn't a HBF font at all.
+
+@c
+static void read_config(void)
+ {HBF_BBOX *boxp;
+ char *real_config_file;
+
+
+ @<Handle extension@>@;@#
+
+ real_config_file = TeX_search_cfg_file(config_file);
+ if(!real_config_file)
+ {if(mf_like)
+ {if(!quiet)
+ printf("Couldn't find `%s'\n", config_file);
+ exit(2);
+ }
+ else
+ {fprintf(stderr, "Couldn't find `%s'\n", config_file);
+ exit(1);
+ }
+ }@#
+
+ if(!(config = fopen(real_config_file, READ_TXT)))
+ {if(!testing)
+ {fprintf(stderr, "Couldn't open `%s'\n", config_file);
+ exit(1);
+ }
+ else /* We reach this point only if no searching library is used */
+ {if(!quiet)
+ fprintf(stderr, "Couldn't find or open `%s'\n", config_file);
+ exit(2);
+ }
+ }@#
+
+ if(testing)
+ {if(!quiet)
+ printf("%s\n", real_config_file);
+ exit(0);
+ }
+
+ @<Necessary parameters@>@;
+ @<Optional parameters@>@;@#
+
+ @<Get code range@>@;
+ @<Get sub code range@>@;@#
+
+ fclose(config);
+ }
+
+
+@
+Here we check whether we have to add an extension.
+
+@<Handle extension@>=
+ {int i, lastext = -1;
+
+ for(i = 0; config_file[i]; i++)
+ if(config_file[i] == '.')
+ lastext = i;
+ else if (config_file[i] == '/' ||
+ config_file[i] == ':' ||
+ config_file[i] == '\\')
+ lastext = -1;@#
+
+ if(lastext == -1)
+ strcat(config_file, ".cfg");
+ }
+
+
+@
+@<Necess...@>=
+ {char hbf_header[STRING_LENGTH + 1];
+ char *real_hbf_header;
+
+ if(!fsearch("hbf_header"))
+ config_error("hbf_header");
+ else
+ strcpy(hbf_header, Buffer);@#
+
+ real_hbf_header = TeX_search_hbf_file(hbf_header);
+ if(!real_hbf_header)
+ {fprintf(stderr, "Couldn't find `%s'\n", hbf_header);
+ exit(1);
+ }@#
+
+ hbfDebug = 1; /* we activate error messages of the HBF API
+ while scanning the HBF header file */@#
+
+ if(!(hbf = hbfOpen(real_hbf_header)))
+ exit(1);@#
+
+ hbfDebug = 0;@#
+
+ boxp = hbfBitmapBBox(hbf);
+ input_size_x = boxp->hbf_height; /* will be checked later for rotation */
+ input_size_y = boxp->hbf_width;
+ font_encoding = hbfProperty(hbf, "HBF_CODE_SCHEME");@#
+
+ if(!fsearch("output_name"))
+ config_error("output_name");
+ else
+ strcpy(output_name, Buffer);
+ }
+
+
+@
+@<Global...@>=
+int offset_x;
+int offset_y;@#
+
+HBF_CHAR user_min_char;
+int have_min_char = FALSE;
+
+@
+@<Opt...@>=
+ {if(fsearch("nmb_files"))
+ nmb_files = atoi(Buffer);
+ if(fsearch("unicode"))
+ if(Buffer[0] == 'y' || Buffer[0] == 'Y')
+ unicode = TRUE;
+ if(fsearch("min_char"))
+ {user_min_char = strtoul(Buffer, (char **)NULL, 0);
+ have_min_char = TRUE;
+ }@#
+
+ if(!mf_like)
+ {if(fsearch("pk_files"))
+ if(Buffer[0] == 'n' || Buffer[0] == 'N')
+ pk_files = FALSE;
+ if(fsearch("tfm_files"))
+ if(Buffer[0] == 'n' || Buffer[0] == 'N')
+ tfm_files = FALSE;
+ if(fsearch("ofm_file"))
+ if(Buffer[0] == 'y' || Buffer[0] == 'Y')
+ ofm_file = TRUE;
+ if(fsearch("long_extension"))
+ if(Buffer[0] == 'n' || Buffer[0] == 'N')
+ long_extension = FALSE;
+ }@#
+
+ if(fsearch("slant"))
+ slant = atof(Buffer);
+ if(slant < 0.0 || slant > 1.0)
+ {fprintf(stderr, "Invalid slant\n");
+ exit(1);
+ }
+ if(fsearch("rotation"))
+ if(Buffer[0] == 'y' || Buffer[0] == 'Y')
+ rotation = TRUE;@#
+
+ if(fsearch("mag_x"))
+ mag_x = atof(Buffer);
+ if(fsearch("mag_y"))
+ mag_y = atof(Buffer);
+ if(!mag_x && !mag_y)
+ {mag_x = 1.0;
+ mag_y = 1.0;
+ }
+ if(mag_x && !mag_y)
+ mag_y = mag_x;
+ if(mag_y && !mag_x)
+ mag_x = mag_y;
+ if(mag_x <= 0.0)
+ {fprintf(stderr, "Invalid horizontal magnification\n");
+ exit(1);
+ }
+ if(mag_y <= 0.0)
+ {fprintf(stderr, "Invalid vertical magnification\n");
+ exit(1);
+ }@#
+
+ if(fsearch("dpi_x"))
+ dpi_x = atoi(Buffer);
+ if(fsearch("dpi_y"))
+ dpi_y = atoi(Buffer);
+ if(!dpi_x && !dpi_y)
+ {dpi_x = 300;
+ dpi_y = 300;
+ }
+ if(dpi_x && !dpi_y)
+ dpi_y = dpi_x;
+ if(dpi_y && !dpi_x)
+ dpi_x = dpi_y;
+ if(dpi_x <= PRINTER_MIN_RES_X)
+ {fprintf(stderr, "Invalid horizontal printer resolution\n");
+ exit(1);
+ }
+ if(dpi_y <= PRINTER_MIN_RES_Y)
+ {fprintf(stderr, "Invalid vertical printer resolution\n");
+ exit(1);
+ }@#
+
+ if(fsearch("design_size"))
+ design_size = atof(Buffer);@#
+
+ if(fsearch("x_offset"))
+ offset_x = atoi(Buffer);
+ else
+ offset_x = rotation ? 0 : (boxp->hbf_xDisplacement * mag_x + 0.5);
+ if(fsearch("y_offset"))
+ offset_y = atoi(Buffer);
+ else
+ offset_y = rotation ? 0 : (boxp->hbf_yDisplacement * mag_y + 0.5);
+ if(!fsearch("comment"))
+ comment[0] = '\0';
+ else
+ strcpy(comment, Buffer);@#
+
+ if(fsearch("threshold"))
+ threshold = atoi(Buffer);
+ if(threshold <= 0 || threshold >= 255)
+ {fprintf(stderr, "Invalid threshold\n");
+ exit(1);
+ }@#
+
+ if(!fsearch("checksum"))
+ checksum = 0;
+ else
+ checksum = strtoul(Buffer, (char **)NULL, 0);@#
+
+ if(!fsearch("coding"))
+ coding[0] = '\0';
+ else
+ strcpy(coding, Buffer);@#
+
+ if(!fsearch("pk_directory"))
+ pk_directory[0] = '\0';
+ else
+ strcpy(pk_directory, Buffer);@#
+
+ if(!fsearch("tfm_directory"))
+ tfm_directory[0] = '\0';
+ else
+ strcpy(tfm_directory, Buffer);@#
+
+ if(fsearch("rm_command"))
+ strcpy(rm_command, Buffer);
+ else
+ strcpy(rm_command, "rm");@#
+
+ if(fsearch("cp_command"))
+ strcpy(cp_command, Buffer);
+ else
+ strcpy(cp_command, "cp");@#
+
+ if(!fsearch("job_extension"))
+ job_extension[0] = '\0';
+ else
+ {strncpy(job_extension, Buffer, EXTENSION_LENGTH);
+ job_extension[EXTENSION_LENGTH] = '\0';
+ }
+ }
+
+
+@
+The function |hbfGetCodeRange()| is an extension to the HBF API.
+
+Successive calls return the code ranges in ascending order; we only need the
+extrema of the whole code range.
+
+In case |min_char| has been supplied in the configuration file, we use that
+value instead.
+
+@<Global...@>=
+HBF_CHAR min_char, max_char;
+
+
+@
+@<Get code range@>=
+ {const void *cp;
+ HBF_CHAR dummy;
+
+ cp = hbfGetCodeRange(hbf, NULL, &min_char, &max_char);
+ for(; cp != NULL; cp = hbfGetCodeRange(hbf, cp, &dummy, &max_char))
+ ;@#
+
+ if(have_min_char)
+ min_char = user_min_char;
+ }
+
+
+@
+The function |hbfGetByte2Range()| is an extension to the HBF API.
+
+Successive calls return the byte~2 ranges in ascending order. We raise
+|VALID_SUBCODE| in the array |b2_codes[]| for all characters in subcode
+ranges.
+
+@d VALID_SUBCODE 1
+
+@<Global...@>=
+char b2_codes[256];
+unsigned char min_2_byte, max_2_byte;
+int nmb_2_bytes = 0;
+
+
+@
+@<Get sub code range@>=
+ {const void *b2r;
+ unsigned char dummy;
+ int i;
+
+ for(i = 0; i < 256; i++)
+ b2_codes[i] = 0;@#
+
+ b2r = hbfGetByte2Range(hbf, NULL, &min_2_byte, &max_2_byte);
+ dummy = min_2_byte;
+ for(; b2r != NULL; b2r = hbfGetByte2Range(hbf, b2r, &dummy, &max_2_byte))
+ {for(i = dummy; i <= max_2_byte; i++)
+ b2_codes[i] = VALID_SUBCODE;
+ }@#
+
+ for(i = 0; i < 256; i++) /* compute the number of valid |b2_codes| */
+ if(b2_codes[i] == VALID_SUBCODE)
+ nmb_2_bytes++;
+ }
+
+
+@
+This search routine is case insignificant. Each keyword must start a line;
+the function checks whether the character before the keyword is a newline
+character (|'\n'|). It also checks the presence of a parameter and fills
+|Buffer| if existent. |fsearch()| returns~1 on success.
+
+@<Prototypes@>=
+static int fsearch(const char *);
+
+
+@
+@c
+static int fsearch(const char *search_string)
+ {char *P, p;
+ const char *Q;
+ char temp_buffer[STRING_LENGTH + 1];
+ char env_name[STRING_LENGTH + 1];
+ char *env_p;
+ char *env_value;
+ char *Buf_p;
+ int Ch, ch, old_ch = '\n';
+ int count = STRING_LENGTH;
+
+ rewind(config); /* we start at offset~0 */@#
+
+ do
+ {Q = search_string;
+ p = tolower((unsigned char)*Q);
+ Ch = fgetc(config);
+ ch = tolower(Ch);
+ while(!(ch == p && old_ch == '\n') && Ch != EOF)
+ /* search first character of |search_string|;
+ |'\n'| must be the character before */
+ {old_ch = ch;
+ Ch = fgetc(config);
+ ch = tolower(Ch);
+ }@#
+
+ for(;;)
+ {if(*(++Q) == '\0')
+ if((Ch = fgetc(config)) == ' ' || Ch == '\t')
+ /* there must be a space or a tab stop after the keyword */
+ goto success;
+ Ch = fgetc(config);
+ if(tolower(Ch) != tolower((unsigned char)*Q))
+ break;
+ }
+ }
+ while(Ch != EOF);@#
+
+ return 0;@#
+
+success:
+ P = temp_buffer;@#
+
+ while((Ch = fgetc(config)) == ' ' || Ch == '\t')
+ /* remove leading blanks and tabs */
+ ;
+ while(Ch != '\n' && --count > 0 && Ch != EOF) /* fill |Buffer| */
+ {*P++ = Ch;
+ Ch = fgetc(config);
+ }
+ *P = '\0';@#
+
+ if (*temp_buffer)
+ @<Check for environment variables@>@;
+ else
+ *Buffer = '\0';@#
+
+ return (*Buffer) ? 1 : 0; /* is there something in the buffer? */
+ }
+
+
+@
+To make the configuration file more flexible we allow environment variables
+in the arguments. We scan the parameter stored in |temp_buffer| whether it
+contains a `\.{\$}' character. If yes, the following code fragment tries to
+get an environment variable name whose value will be then fetched with
+|getenv()|. An environment variable name recognized by \.{hbf2gf} must start
+with a letter or underscore; the other characters may be alphanumeric or an
+underscore. You can surround the environment variable name with braces to
+indicate where the name ends, e.g. \.{\$\{FOO\}}. The interpolated
+configuration parameter will be truncated to |STRING_LENGTH| characters. If
+you want to have `\.{\$}' you must write `\.{\$\$}'.
+
+Note that you should avoid to use such environment variables for specifying
+the location of the configuration file in case you have support for a file
+searching library like kpathsea. Its primary aim is to specify the target
+directories for the \.{pk\_directory} and the \.{tfm\_directory} keywords.
+
+@<Check for environment variables@>=
+ {P = temp_buffer;
+ Buf_p = Buffer;
+ count = STRING_LENGTH - 1;@#
+
+ while(*P && count > 0)
+ {env_p = env_name;@#
+
+ if(*P == '$')
+ {P++;
+ if(*P == '$')
+ {*(Buf_p++) = *(P++);
+ count--;
+ continue;
+ }
+ while(*P == '{') @q } @>
+ P++;
+ if(!(isalpha((unsigned char)*P) || *P == '_'))
+ {fprintf(stderr,@/
+ "Invalid environment variable name in configuration file\n");
+ exit(1);
+ }
+ *(env_p++) = *(P++);
+ while(*P)
+ {if(isalnum((unsigned char)*P) || *P == '_')
+ *(env_p++) = *(P++);
+ else
+ {@q { @> while(*P == '}')
+ P++;
+ *env_p = '\0';
+ break;
+ }
+ }@#
+
+ env_value = getenv(env_name);
+ if(env_value) /* append the environment value to |Buffer| */
+ {while(*env_value && count > 0)
+ {*(Buf_p++) = *(env_value++);
+ count--;
+ }
+ }
+ }
+ else
+ {*(Buf_p++) = *(P++);
+ count--;
+ }
+ }
+ *Buf_p = '\0';
+ }
+
+
+@
+If an error occurs, |config_error()| will leave the program with an error
+message.
+
+@<Prototypes@>=
+static void config_error(const char *);
+
+
+@
+@c
+static void config_error(const char *message)
+ {fprintf(stderr, "Couldn't find `%s' entry in configuration file\n",
+ message);
+ exit(1);
+ }
+
+
+
+@* File searching.
+
+We support three searching engines: emtexdir, kpathsea, and MiKTeX (which is
+a Win32 port of kpathsea). For emtexdir, define |HAVE_EMTEXDIR| while
+compiling. For kpathsea, define |HAVE_LIBKPATHSEA|. For MikTeX, define
+|HAVE_MIKTEX|. If none of these macros is defined, a simple |fopen()| will
+be used instead.
+
+@<Include files@>=
+#if defined(HAVE_LIBKPATHSEA)
+#include "kpathsea/kpathsea.h"
+
+#elif defined(HAVE_EMTEXDIR)
+#include "emtexdir.h"
+
+#elif defined(HAVE_MIKTEX)
+#include "miktex.h"
+#endif
+
+@
+@<Global variables@>=
+#if defined(HAVE_EMTEXDIR)
+char emtex_version_string[] = "emTeXdir";
+#elif !defined(HAVE_MIKTEX)
+char no_version_string[] = "no search library";
+#endif
+
+
+@
+@<Prototypes@>=
+static const char *TeX_search_version(void);
+
+
+@
+@c
+static const char *TeX_search_version(void)
+ {
+#if defined(HAVE_LIBKPATHSEA)
+ return kpathsea_version_string;
+#elif defined(HAVE_EMTEXDIR)
+ return emtex_version_string;
+#elif defined(HAVE_MIKTEX)
+ char buf[200];
+
+ strcpy(buf, "MiKTeX ");
+ miktex_get_miktex_version_string_ex(buf + 7, sizeof (buf) - 7);
+
+ return buf;
+#else
+ return no_version_string;
+#endif
+ }
+
+
+@
+@s emtex_dir int
+
+@<Global variables@>=
+#ifdef HAVE_EMTEXDIR
+struct emtex_dir cfg_path, hbf_path;
+#endif
+
+
+@
+@<Prototypes@>=
+#ifdef HAVE_EMTEXDIR
+extern int setup_list(struct emtex_dir *, char *, const char *, unsigned);
+static int dir_setup(struct emtex_dir *, const char *, const char *, unsigned);
+static char *file_find(char *, struct emtex_dir *);
+#endif
+
+
+@
+We slightly modify |emtex_dir_setup()| (from the file \.{emtexdir.c}) to
+output a warning in case the environment variable |env| isn't set properly.
+
+@c
+#ifdef HAVE_EMTEXDIR
+static int dir_setup(ed, env, dir, flags)
+ struct emtex_dir *ed;
+ const char *env;
+ const char *dir;
+ unsigned flags;
+
+ {const char *val;
+ char path[260];
+
+ ed->alloc = 0;
+ ed->used = 0;
+ ed->list = NULL;@#
+
+ if(env != NULL && (val = getenv(env)) != NULL)
+ return setup_list(ed, path, val, flags);
+ else
+ fprintf(stderr,
+ "Environment variable `%s' not set; use current directory\n",
+ env);@#
+
+ return TRUE;
+ }
+#endif
+
+
+@
+@<Global variables@>=
+#ifdef HAVE_EMTEXDIR
+char name_buffer[FILE_NAME_LENGTH + 1];
+#endif
+
+
+@
+@c
+#ifdef HAVE_EMTEXDIR
+static char *file_find(name, list)
+ char *name;
+ struct emtex_dir *list;
+
+ {if(emtex_dir_find(name_buffer, sizeof(name_buffer), list, name, EDF_CWD))
+ return name_buffer;@#
+
+ return NULL;
+ }
+#endif
+
+
+@
+For emtexdir we use the environment variables \.{HBFCFG} and \.{HBFONTS} for
+configuration resp.\ HBF header files.
+
+@<Initialize \TeX\ file searching@>=
+#if defined(HAVE_LIBKPATHSEA)
+ kpse_set_program_name(argv[0], "hbf2gf");
+ kpse_init_prog("HBF2GF", 300, "cx", "cmr10");@#
+
+#elif defined(HAVE_EMTEXDIR)
+ if(!dir_setup(&cfg_path, "HBFCFG", NULL, EDS_BANG))
+ {fprintf(stderr,
+ "Couldn't setup search path for configuration files\n");
+ exit(1);
+ }
+ if(!dir_setup(&hbf_path, "HBFONTS", NULL, EDS_BANG))
+ {fprintf(stderr,
+ "Couldn't setup search path for HBF header files\n");
+ exit(1);
+ }
+#endif
+
+
+@
+Finally, here are the searching routines. A special format in the kpathsea
+library for fonts which are neither PostScript nor TrueType (\.{MISCFONTS})
+is available with version~3.3 and newer. For older versions we use the path
+for PostScript fonts (\.{T1FONTS}) to find HBF files. Configuration files
+are searched in the path specified within \.{TEXCONFIG} for old kpathsea
+versions, and within \.{HBF2GFINPUTS} for new versions.
+
+@<Prototypes@>=
+static char *TeX_search_cfg_file(char *);
+static char *TeX_search_hbf_file(char *);
+
+
+@
+@c
+#if defined(HAVE_LIBKPATHSEA)
+static char *TeX_search_cfg_file(char *name)
+ {
+ return kpse_find_file(name, kpse_program_text_format, TRUE);
+ }@#
+
+
+static char *TeX_search_hbf_file(char *name)
+ {
+ return kpse_find_file(name, kpse_miscfonts_format, TRUE);
+ }@#
+
+
+#elif defined(HAVE_EMTEXDIR)
+static char *TeX_search_cfg_file(char *name)
+ {return file_find(name, &cfg_path);
+ }@#
+
+
+static char *TeX_search_hbf_file(char *name)
+ {return file_find(name, &hbf_path);
+ }@#
+
+
+#elif defined(HAVE_MIKTEX)
+static char *TeX_search_cfg_file(char *name)
+ {char result[_MAX_PATH];
+
+ if (!miktex_find_input_file("hbf2gf", *name, result))
+ return 0;
+ return strdup(result);
+ }@#
+
+
+static char *TeX_search_hbf_file(char *name)
+ {char result[_MAX_PATH];
+
+
+ if (!miktex_find_miscfont_file(*name, result))
+ return 0;
+ return strdup(result);
+ }@#
+
+
+#else
+static char *TeX_search_cfg_file(char *name)
+ {return name;
+ }@#
+
+
+static char *TeX_search_hbf_file(char *name)
+ {return name;
+ }
+#endif
+
+
+
+@* An example.
+This is the example configuration file \.{b5so12.cfg} (for use with DOS or
+OS/2 and the emtexdir searching engine):
+\bigskip
+\halign{\quad\.{#}\hfil&\quad\.{#}\hfil\cr
+ hbf\_header & et24.hbf \cr
+ mag\_x & 2.076 \cr
+ x\_offset & 3 \cr
+ y\_offset & -8 \cr
+ comment & fanti songti 24x24 pixel font scaled and
+ adapted to 12 pt \cr
+ & \cr
+ design\_size & 12.0 \cr
+ & \cr
+ nmb\_fonts & -1 \cr
+ & \cr
+ output\_name & b5so12 \cr
+ & \cr
+ dpi\_x & 300 \cr
+ checksum & 123456789 \cr
+ coding & codingscheme Big 5 encoded TeX text \cr
+ & \cr
+ long\_extension & no \cr
+ job\_extension & .cmd \cr
+ rm\_command & del \cr
+ cp\_command & copy \cr
+ pk\_directory & \$HBF\_TARGET\\pk\\360dpi\\ \cr
+ tfm\_directory & \$HBF\_TARGET\\tfm\\ \cr
+ }
+\bigskip
+If you say e.g.
+\medskip
+\quad \.{set HBF\_TARGET=c:\\emtex\\texfonts}
+\medskip
+on your DOS prompt (or in your \.{autoexec.bat} file), then the interpolated
+value of the \.{tfm\_directory} keyword is \.{c:\\emtex\\texfonts\\tfm\\}.
+The HBF header file \.{et24.hbf} will be searched in the path specified by
+the \.{HBFCFG} environment variable.
+\bigskip
+The call
+\medskip
+\quad \.{hbf2gf b5so12.cfg}
+\medskip
+creates the files
+\medskip
+\quad \.{b5so1201.gf}, \.{b5so1202.gf}, $\ldots$ , \.{b5so1255.gf},
+\.{b5so12.pl}, and \.{b5so12.cmd}
+\bigskip
+After calling
+\medskip
+\quad \.{b5so12.cmd}
+\medskip
+you will find the \.{PK} files in the
+\.{c:\\emtex\\texfonts\\pk\\360dpi} directory and the \.{TFM} files in
+the \.{c:\\emtex\\texfonts\\tfm} directory; all \.{GF} files and
+\.{b5so12.pl} will be deleted.
+\bigskip
+The call
+\medskip
+\quad \.{hbf2gf -n b5so1220 417}
+\medskip
+creates two files:
+\medskip
+\quad \.{b5so1220.gf} and \.{b5so1220.pl}
+\medskip
+using the configuration file \.{b5so12.cfg}. The \.{GF} file would be
+named \.{b5so1220.417gf} if the flag \.{-n} had not been used.
+
+\medskip
+
+It is possible to convert bitmap fonts to \.{PK} files almost
+automatically. The HBF header file already has the entry
+\.{HBF\_BITMAP\_BOUNDING\_BOX} which defines vertical and horizontal offsets
+(in pixels), but these values are not in all cases optimal. If you omit
+\.{x\_offset} and \.{y\_offset} in the configuration file, the third and
+fourth parameter of \.{HBF\_BITMAP\_BOUNDING\_BOX} is used, scaled to design
+size (to say it in other words: \.{x\_offset} and \.{y\_offset} will always
+apply to the design size to be synchronous with the \.{TFM} files).
+
+Don't confuse scaling and magnification: Scaling here means that you choose
+a (arbitrary) design size and compute scaling values (\.{mag\_x} and
+\.{mag\_y}) which scales the bitmap to this particular design size at a
+certain (arbitrarily chosen) resolution (\.{dpi\_x} and \.{dpi\_y}).
+Magnification means that the scaled bitmap will be then magnified to a
+certain target size while still using the font parameters (i.e., the
+\.{TFM} file) of the design size.
+
+In the sample, you have a $24 \times 24$ bitmap font which will be scaled to
+$12\,\hbox{pt}$ having a resolution of $300\,\hbox{dpi}$:
+\medskip
+\quad $1\,\hbox{pt}$ are $300 / 72.27 = 4.1511$ pixel;
+
+\quad $12\,\hbox{pt}$ are $4.1511 * 12 = 49.813$ pixel;
+
+\quad thus the theoretical scaling value is $49.813 / 24 = 2.076$.
+
+\medskip
+
+But especially for small sizes, this may not be the best value if the font
+should harmonize with, say, Knuth's Computer Modern fonts. I recommend to
+compute, say, 5~\.{PK} fonts, then check the CJK font with different \TeX\
+fonts to see whether the offsets and/or the scaling value is good. The
+greater the design size the finer you can control the offsets---as an
+example you could use a design size of $30\,\hbox{pt}$ (nevertheless there
+is a compile-time constant |MAX_CHAR_SIZE| which limits the maximal
+character size; default is 255~pixels).
+
+If you have found optimal offsets, you can produce many different
+magnifications of the CJK font using the same set of \.{TFM} files
+analogous to ordinary \TeX\ fonts; as a simplification, we assume that
+\.{PK} files with a resolution of $300\,\hbox{dpi}$ and a design size of
+$10\,\hbox{pt}$ have the extension `\.{.300pk}' (respectively come into a
+`\.{300dpi}' subdirectory)---this is the reason why in the above example for
+the $12\,\hbox{pt}$ design size a `\.{360dpi}' target directory has been
+used. Now we can use the following formula:
+
+ $$ \\{needed\_dpi} = \\{your\_horizontal\_resolution} *
+ {\\{your\_target\_size} \over 10.0} $$
+
+Example: assuming that your printer has a resolution of
+$300\times400\,\hbox{dpi}$, and you want $14.4\,\hbox{pt}$:
+
+ $$ 300 * {14.4 \over 10.0} = 432 $$
+
+The vertical scaling value is $400 / 300 = 1.3333$. Use these values now to
+call \.{hbf2gf} in \mf-like mode:
+
+\quad \.{hbf2gf b5so1220 432 1.3333}
+
+
+
+@* Index.
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/install-sh b/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/install-sh
new file mode 100755
index 0000000000..0b0fdcbba6
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/install-sh
@@ -0,0 +1,501 @@
+#!/bin/sh
+# install - install a program, script, or datafile
+
+scriptversion=2013-12-25.23; # UTC
+
+# This originates from X11R5 (mit/util/scripts/install.sh), which was
+# later released in X11R6 (xc/config/util/install.sh) with the
+# following copyright and license.
+#
+# Copyright (C) 1994 X Consortium
+#
+# 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
+# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
+# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+#
+# Except as contained in this notice, the name of the X Consortium shall not
+# be used in advertising or otherwise to promote the sale, use or other deal-
+# ings in this Software without prior written authorization from the X Consor-
+# tium.
+#
+#
+# FSF changes to this file are in the public domain.
+#
+# Calling this script install-sh is preferred over install.sh, to prevent
+# 'make' implicit rules from creating a file called install from it
+# when there is no Makefile.
+#
+# This script is compatible with the BSD install script, but was written
+# from scratch.
+
+tab=' '
+nl='
+'
+IFS=" $tab$nl"
+
+# Set DOITPROG to "echo" to test this script.
+
+doit=${DOITPROG-}
+doit_exec=${doit:-exec}
+
+# Put in absolute file names if you don't have them in your path;
+# or use environment vars.
+
+chgrpprog=${CHGRPPROG-chgrp}
+chmodprog=${CHMODPROG-chmod}
+chownprog=${CHOWNPROG-chown}
+cmpprog=${CMPPROG-cmp}
+cpprog=${CPPROG-cp}
+mkdirprog=${MKDIRPROG-mkdir}
+mvprog=${MVPROG-mv}
+rmprog=${RMPROG-rm}
+stripprog=${STRIPPROG-strip}
+
+posix_mkdir=
+
+# Desired mode of installed file.
+mode=0755
+
+chgrpcmd=
+chmodcmd=$chmodprog
+chowncmd=
+mvcmd=$mvprog
+rmcmd="$rmprog -f"
+stripcmd=
+
+src=
+dst=
+dir_arg=
+dst_arg=
+
+copy_on_change=false
+is_target_a_directory=possibly
+
+usage="\
+Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
+ or: $0 [OPTION]... SRCFILES... DIRECTORY
+ or: $0 [OPTION]... -t DIRECTORY SRCFILES...
+ or: $0 [OPTION]... -d DIRECTORIES...
+
+In the 1st form, copy SRCFILE to DSTFILE.
+In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
+In the 4th, create DIRECTORIES.
+
+Options:
+ --help display this help and exit.
+ --version display version info and exit.
+
+ -c (ignored)
+ -C install only if different (preserve the last data modification time)
+ -d create directories instead of installing files.
+ -g GROUP $chgrpprog installed files to GROUP.
+ -m MODE $chmodprog installed files to MODE.
+ -o USER $chownprog installed files to USER.
+ -s $stripprog installed files.
+ -t DIRECTORY install into DIRECTORY.
+ -T report an error if DSTFILE is a directory.
+
+Environment variables override the default commands:
+ CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
+ RMPROG STRIPPROG
+"
+
+while test $# -ne 0; do
+ case $1 in
+ -c) ;;
+
+ -C) copy_on_change=true;;
+
+ -d) dir_arg=true;;
+
+ -g) chgrpcmd="$chgrpprog $2"
+ shift;;
+
+ --help) echo "$usage"; exit $?;;
+
+ -m) mode=$2
+ case $mode in
+ *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*)
+ echo "$0: invalid mode: $mode" >&2
+ exit 1;;
+ esac
+ shift;;
+
+ -o) chowncmd="$chownprog $2"
+ shift;;
+
+ -s) stripcmd=$stripprog;;
+
+ -t)
+ is_target_a_directory=always
+ dst_arg=$2
+ # Protect names problematic for 'test' and other utilities.
+ case $dst_arg in
+ -* | [=\(\)!]) dst_arg=./$dst_arg;;
+ esac
+ shift;;
+
+ -T) is_target_a_directory=never;;
+
+ --version) echo "$0 $scriptversion"; exit $?;;
+
+ --) shift
+ break;;
+
+ -*) echo "$0: invalid option: $1" >&2
+ exit 1;;
+
+ *) break;;
+ esac
+ shift
+done
+
+# We allow the use of options -d and -T together, by making -d
+# take the precedence; this is for compatibility with GNU install.
+
+if test -n "$dir_arg"; then
+ if test -n "$dst_arg"; then
+ echo "$0: target directory not allowed when installing a directory." >&2
+ exit 1
+ fi
+fi
+
+if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
+ # When -d is used, all remaining arguments are directories to create.
+ # When -t is used, the destination is already specified.
+ # Otherwise, the last argument is the destination. Remove it from $@.
+ for arg
+ do
+ if test -n "$dst_arg"; then
+ # $@ is not empty: it contains at least $arg.
+ set fnord "$@" "$dst_arg"
+ shift # fnord
+ fi
+ shift # arg
+ dst_arg=$arg
+ # Protect names problematic for 'test' and other utilities.
+ case $dst_arg in
+ -* | [=\(\)!]) dst_arg=./$dst_arg;;
+ esac
+ done
+fi
+
+if test $# -eq 0; then
+ if test -z "$dir_arg"; then
+ echo "$0: no input file specified." >&2
+ exit 1
+ fi
+ # It's OK to call 'install-sh -d' without argument.
+ # This can happen when creating conditional directories.
+ exit 0
+fi
+
+if test -z "$dir_arg"; then
+ if test $# -gt 1 || test "$is_target_a_directory" = always; then
+ if test ! -d "$dst_arg"; then
+ echo "$0: $dst_arg: Is not a directory." >&2
+ exit 1
+ fi
+ fi
+fi
+
+if test -z "$dir_arg"; then
+ do_exit='(exit $ret); exit $ret'
+ trap "ret=129; $do_exit" 1
+ trap "ret=130; $do_exit" 2
+ trap "ret=141; $do_exit" 13
+ trap "ret=143; $do_exit" 15
+
+ # Set umask so as not to create temps with too-generous modes.
+ # However, 'strip' requires both read and write access to temps.
+ case $mode in
+ # Optimize common cases.
+ *644) cp_umask=133;;
+ *755) cp_umask=22;;
+
+ *[0-7])
+ if test -z "$stripcmd"; then
+ u_plus_rw=
+ else
+ u_plus_rw='% 200'
+ fi
+ cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
+ *)
+ if test -z "$stripcmd"; then
+ u_plus_rw=
+ else
+ u_plus_rw=,u+rw
+ fi
+ cp_umask=$mode$u_plus_rw;;
+ esac
+fi
+
+for src
+do
+ # Protect names problematic for 'test' and other utilities.
+ case $src in
+ -* | [=\(\)!]) src=./$src;;
+ esac
+
+ if test -n "$dir_arg"; then
+ dst=$src
+ dstdir=$dst
+ test -d "$dstdir"
+ dstdir_status=$?
+ else
+
+ # Waiting for this to be detected by the "$cpprog $src $dsttmp" command
+ # might cause directories to be created, which would be especially bad
+ # if $src (and thus $dsttmp) contains '*'.
+ if test ! -f "$src" && test ! -d "$src"; then
+ echo "$0: $src does not exist." >&2
+ exit 1
+ fi
+
+ if test -z "$dst_arg"; then
+ echo "$0: no destination specified." >&2
+ exit 1
+ fi
+ dst=$dst_arg
+
+ # If destination is a directory, append the input filename; won't work
+ # if double slashes aren't ignored.
+ if test -d "$dst"; then
+ if test "$is_target_a_directory" = never; then
+ echo "$0: $dst_arg: Is a directory" >&2
+ exit 1
+ fi
+ dstdir=$dst
+ dst=$dstdir/`basename "$src"`
+ dstdir_status=0
+ else
+ dstdir=`dirname "$dst"`
+ test -d "$dstdir"
+ dstdir_status=$?
+ fi
+ fi
+
+ obsolete_mkdir_used=false
+
+ if test $dstdir_status != 0; then
+ case $posix_mkdir in
+ '')
+ # Create intermediate dirs using mode 755 as modified by the umask.
+ # This is like FreeBSD 'install' as of 1997-10-28.
+ umask=`umask`
+ case $stripcmd.$umask in
+ # Optimize common cases.
+ *[2367][2367]) mkdir_umask=$umask;;
+ .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
+
+ *[0-7])
+ mkdir_umask=`expr $umask + 22 \
+ - $umask % 100 % 40 + $umask % 20 \
+ - $umask % 10 % 4 + $umask % 2
+ `;;
+ *) mkdir_umask=$umask,go-w;;
+ esac
+
+ # With -d, create the new directory with the user-specified mode.
+ # Otherwise, rely on $mkdir_umask.
+ if test -n "$dir_arg"; then
+ mkdir_mode=-m$mode
+ else
+ mkdir_mode=
+ fi
+
+ posix_mkdir=false
+ case $umask in
+ *[123567][0-7][0-7])
+ # POSIX mkdir -p sets u+wx bits regardless of umask, which
+ # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
+ ;;
+ *)
+ tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
+ trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
+
+ if (umask $mkdir_umask &&
+ exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
+ then
+ if test -z "$dir_arg" || {
+ # Check for POSIX incompatibilities with -m.
+ # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
+ # other-writable bit of parent directory when it shouldn't.
+ # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
+ ls_ld_tmpdir=`ls -ld "$tmpdir"`
+ case $ls_ld_tmpdir in
+ d????-?r-*) different_mode=700;;
+ d????-?--*) different_mode=755;;
+ *) false;;
+ esac &&
+ $mkdirprog -m$different_mode -p -- "$tmpdir" && {
+ ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
+ test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
+ }
+ }
+ then posix_mkdir=:
+ fi
+ rmdir "$tmpdir/d" "$tmpdir"
+ else
+ # Remove any dirs left behind by ancient mkdir implementations.
+ rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
+ fi
+ trap '' 0;;
+ esac;;
+ esac
+
+ if
+ $posix_mkdir && (
+ umask $mkdir_umask &&
+ $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
+ )
+ then :
+ else
+
+ # The umask is ridiculous, or mkdir does not conform to POSIX,
+ # or it failed possibly due to a race condition. Create the
+ # directory the slow way, step by step, checking for races as we go.
+
+ case $dstdir in
+ /*) prefix='/';;
+ [-=\(\)!]*) prefix='./';;
+ *) prefix='';;
+ esac
+
+ oIFS=$IFS
+ IFS=/
+ set -f
+ set fnord $dstdir
+ shift
+ set +f
+ IFS=$oIFS
+
+ prefixes=
+
+ for d
+ do
+ test X"$d" = X && continue
+
+ prefix=$prefix$d
+ if test -d "$prefix"; then
+ prefixes=
+ else
+ if $posix_mkdir; then
+ (umask=$mkdir_umask &&
+ $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
+ # Don't fail if two instances are running concurrently.
+ test -d "$prefix" || exit 1
+ else
+ case $prefix in
+ *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
+ *) qprefix=$prefix;;
+ esac
+ prefixes="$prefixes '$qprefix'"
+ fi
+ fi
+ prefix=$prefix/
+ done
+
+ if test -n "$prefixes"; then
+ # Don't fail if two instances are running concurrently.
+ (umask $mkdir_umask &&
+ eval "\$doit_exec \$mkdirprog $prefixes") ||
+ test -d "$dstdir" || exit 1
+ obsolete_mkdir_used=true
+ fi
+ fi
+ fi
+
+ if test -n "$dir_arg"; then
+ { test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
+ { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
+ { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
+ test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
+ else
+
+ # Make a couple of temp file names in the proper directory.
+ dsttmp=$dstdir/_inst.$$_
+ rmtmp=$dstdir/_rm.$$_
+
+ # Trap to clean up those temp files at exit.
+ trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
+
+ # Copy the file name to the temp name.
+ (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
+
+ # and set any options; do chmod last to preserve setuid bits.
+ #
+ # If any of these fail, we abort the whole thing. If we want to
+ # ignore errors from any of these, just make sure not to ignore
+ # errors from the above "$doit $cpprog $src $dsttmp" command.
+ #
+ { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } &&
+ { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } &&
+ { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } &&
+ { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
+
+ # If -C, don't bother to copy if it wouldn't change the file.
+ if $copy_on_change &&
+ old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` &&
+ new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` &&
+ set -f &&
+ set X $old && old=:$2:$4:$5:$6 &&
+ set X $new && new=:$2:$4:$5:$6 &&
+ set +f &&
+ test "$old" = "$new" &&
+ $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
+ then
+ rm -f "$dsttmp"
+ else
+ # Rename the file to the real destination.
+ $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
+
+ # The rename failed, perhaps because mv can't rename something else
+ # to itself, or perhaps because mv is so ancient that it does not
+ # support -f.
+ {
+ # Now remove or move aside any old file at destination location.
+ # We try this two ways since rm can't unlink itself on some
+ # systems and the destination file might be busy for other
+ # reasons. In this case, the final cleanup might fail but the new
+ # file should still install successfully.
+ {
+ test ! -f "$dst" ||
+ $doit $rmcmd -f "$dst" 2>/dev/null ||
+ { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
+ { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
+ } ||
+ { echo "$0: cannot unlink or rename $dst" >&2
+ (exit 1); exit 1
+ }
+ } &&
+
+ # Now rename the file to the real destination.
+ $doit $mvcmd "$dsttmp" "$dst"
+ }
+ fi || exit 1
+
+ trap '' 0
+ fi
+done
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/mkinstalldirs b/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/mkinstalldirs
new file mode 100755
index 0000000000..55d537f872
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/mkinstalldirs
@@ -0,0 +1,162 @@
+#! /bin/sh
+# mkinstalldirs --- make directory hierarchy
+
+scriptversion=2009-04-28.21; # UTC
+
+# Original author: Noah Friedman <friedman@prep.ai.mit.edu>
+# Created: 1993-05-16
+# Public domain.
+#
+# This file is maintained in Automake, please report
+# bugs to <bug-automake@gnu.org> or send patches to
+# <automake-patches@gnu.org>.
+
+nl='
+'
+IFS=" "" $nl"
+errstatus=0
+dirmode=
+
+usage="\
+Usage: mkinstalldirs [-h] [--help] [--version] [-m MODE] DIR ...
+
+Create each directory DIR (with mode MODE, if specified), including all
+leading file name components.
+
+Report bugs to <bug-automake@gnu.org>."
+
+# process command line arguments
+while test $# -gt 0 ; do
+ case $1 in
+ -h | --help | --h*) # -h for help
+ echo "$usage"
+ exit $?
+ ;;
+ -m) # -m PERM arg
+ shift
+ test $# -eq 0 && { echo "$usage" 1>&2; exit 1; }
+ dirmode=$1
+ shift
+ ;;
+ --version)
+ echo "$0 $scriptversion"
+ exit $?
+ ;;
+ --) # stop option processing
+ shift
+ break
+ ;;
+ -*) # unknown option
+ echo "$usage" 1>&2
+ exit 1
+ ;;
+ *) # first non-opt arg
+ break
+ ;;
+ esac
+done
+
+for file
+do
+ if test -d "$file"; then
+ shift
+ else
+ break
+ fi
+done
+
+case $# in
+ 0) exit 0 ;;
+esac
+
+# Solaris 8's mkdir -p isn't thread-safe. If you mkdir -p a/b and
+# mkdir -p a/c at the same time, both will detect that a is missing,
+# one will create a, then the other will try to create a and die with
+# a "File exists" error. This is a problem when calling mkinstalldirs
+# from a parallel make. We use --version in the probe to restrict
+# ourselves to GNU mkdir, which is thread-safe.
+case $dirmode in
+ '')
+ if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
+ echo "mkdir -p -- $*"
+ exec mkdir -p -- "$@"
+ else
+ # On NextStep and OpenStep, the 'mkdir' command does not
+ # recognize any option. It will interpret all options as
+ # directories to create, and then abort because '.' already
+ # exists.
+ test -d ./-p && rmdir ./-p
+ test -d ./--version && rmdir ./--version
+ fi
+ ;;
+ *)
+ if mkdir -m "$dirmode" -p --version . >/dev/null 2>&1 &&
+ test ! -d ./--version; then
+ echo "mkdir -m $dirmode -p -- $*"
+ exec mkdir -m "$dirmode" -p -- "$@"
+ else
+ # Clean up after NextStep and OpenStep mkdir.
+ for d in ./-m ./-p ./--version "./$dirmode";
+ do
+ test -d $d && rmdir $d
+ done
+ fi
+ ;;
+esac
+
+for file
+do
+ case $file in
+ /*) pathcomp=/ ;;
+ *) pathcomp= ;;
+ esac
+ oIFS=$IFS
+ IFS=/
+ set fnord $file
+ shift
+ IFS=$oIFS
+
+ for d
+ do
+ test "x$d" = x && continue
+
+ pathcomp=$pathcomp$d
+ case $pathcomp in
+ -*) pathcomp=./$pathcomp ;;
+ esac
+
+ if test ! -d "$pathcomp"; then
+ echo "mkdir $pathcomp"
+
+ mkdir "$pathcomp" || lasterr=$?
+
+ if test ! -d "$pathcomp"; then
+ errstatus=$lasterr
+ else
+ if test ! -z "$dirmode"; then
+ echo "chmod $dirmode $pathcomp"
+ lasterr=
+ chmod "$dirmode" "$pathcomp" || lasterr=$?
+
+ if test ! -z "$lasterr"; then
+ errstatus=$lasterr
+ fi
+ fi
+ fi
+ fi
+
+ pathcomp=$pathcomp/
+ done
+done
+
+exit $errstatus
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/scripts/teTeX-0.4/MakeTeXPK.diff b/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/scripts/teTeX-0.4/MakeTeXPK.diff
new file mode 100644
index 0000000000..02f6250898
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/scripts/teTeX-0.4/MakeTeXPK.diff
@@ -0,0 +1,63 @@
+--- MakeTeXPK.orig Sun Feb 23 22:12:05 1997
++++ MakeTeXPK Tue Aug 18 08:07:40 1998
+@@ -80,18 +80,57 @@
+ : ${MAKETEXDIR=$TEXMF/maketex}
+ export TEXMF MAKETEXDIR
+
++unset cmd
++
++# test for TTF fonts
++if test -z "$cmd"; then
++ ttf2pk -q $NAME $DPI
++ errstatus=$?
++
++ if test $errstatus -ne 2; then
++ if test $errstatus -ne 0; then
++ echo "ttf2pk failed" >&2
++ exit 1
++ fi
++ MODE=ttf2pk # preferred mode for TDS would be `modeless'
++ cmd=true
++ fi
++fi
++
++# test for HBF fonts
++if test -z "$cmd"; then
++ hbf2gf -q -p $NAME $DPI
++ errstatus=$?
++
++ if test $errstatus -ne 2; then
++ if test $errstatus -ne 0; then
++ echo "hbf2gf failed" >&2
++ exit 1
++ fi
++ MODE=hbf2gf # preferred mode for TDS would be `modeless'
++ cmd=true
++ fi
++fi
++
++unset psline
++
+ # grep for the font in $PSMAPFILE, if some ps-to-pk is claimed to be supported.
+ # We have to figure out the name of the base font -- $NAME is probably
+ # something like pplr, but it's rpplr or pplr0 or pplr8r that's in psfonts.map.
+-pattern="^r?$NAME"'(0|8r)?([ ]|$)'
+-psline=`egrep "$pattern" $PSMAPFILE`
++if test -z "$cmd"; then
++ pattern="^r?$NAME"'(0|8r)?([ ]|$)'
++ psline=`egrep "$pattern" $PSMAPFILE`
++fi
++
+ if test -n "$psline"; then
+ cmd="gsftopk $NAME $DPI"
+ MODE=gsftopk
+ # some installations have set up gs in such a way that creating files
+ # is only allowed if the parameter -DNOSAFER is used:
+ GS_OPTIONS=-DNOSAFER; export GS_OPTIONS
+-else
++fi
++
++if test -z "$cmd"; then
+ # If an explicit mode is not supplied, try to guess. You can get a
+ # list of extant modes from ftp.cs.umb.edu:pub/tex/modes.mf.
+ if test -z "$MODE" || test "$MODE" = default; then
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/scripts/teTeX-0.4/MakeTeXTFM.diff b/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/scripts/teTeX-0.4/MakeTeXTFM.diff
new file mode 100644
index 0000000000..52cd52e1c1
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/scripts/teTeX-0.4/MakeTeXTFM.diff
@@ -0,0 +1,28 @@
+--- MakeTeXTFM.orig Mon Feb 10 22:40:31 1997
++++ MakeTeXTFM Tue Aug 18 08:14:40 1998
+@@ -48,7 +48,24 @@
+ BDPI=${MT_DEF_BDPI-600}
+ DPI=$BDPI
+
+-cmd="mf \mode:=$MODE; mag:=$MAG; scrollmode; input $NAME"
++unset cmd
++
++# test for CJK bitmap font in HBF format
++hbf2gf -q $NAME $DPI
++errstatus=$?
++
++if test $errstatus -ne 2; then
++ if test $errstatus -ne 0; then
++ echo "$progname: \`hbf2gf failed." >&2
++ exit 1
++ fi
++ pltotf ./$NAME.pl $TFMNAME || exit 1
++ cmd=true
++fi
++
++if test -z "$cmd"; then
++ cmd="mf \mode:=$MODE; mag:=$MAG; scrollmode; input $NAME"
++fi
+
+ set x `MakeTeXnames $NAME $DPI $MODE $DEST`
+ PKDEST=$2
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/scripts/web2c-6.1/MakeTeXPK.diff b/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/scripts/web2c-6.1/MakeTeXPK.diff
new file mode 100644
index 0000000000..0536dbc7a4
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/scripts/web2c-6.1/MakeTeXPK.diff
@@ -0,0 +1,75 @@
+--- MakeTeXPK.orig Sun Aug 16 08:05:07 1998
++++ MakeTeXPK Tue Aug 18 07:53:57 1998
+@@ -1,5 +1,5 @@
+ #!/bin/sh
+-# original MakeTeXPK -- make a new PK font, because one wasn't found.
++# MakeTeXPK -- make a new PK font, because one wasn't found.
+ # Version of 12dec94.
+ #
+ # (If you change or delete the word `original' on the previous line,
+@@ -142,11 +142,52 @@
+ test -d $TEMPDIR || mkdir $TEMPDIR
+ cd $TEMPDIR || exit 1
+
++unset cmd
++
++# test for TTF fonts
++if test -z "$cmd"; then
++ ttf2pk -q $NAME $DPI
++ errstatus=$?
++
++ if test $errstatus -ne 2; then
++ if test $errstatus -ne 0; then
++ echo "ttf2pk failed" >&2
++ exit 1
++ fi
++ test -z "$6" && DESTDIR="$DESTROOT/ttf2pk" # preferred mode for TDS
++ # would be `modeless'
++ echo "Successful call to ttf2pk" >&2
++ cmd=ttf2pk
++ fi
++fi
++
++# test for HBF fonts
++if test -z "$cmd"; then
++ hbf2gf -q -p $NAME $DPI
++ errstatus=$?
++
++ if test $errstatus -ne 2; then
++ if test $errstatus -ne 0; then
++ echo "hbf2gf failed" >&2
++ exit 1
++ fi
++ test -z "$6" && DESTDIR="$DESTROOT/hbf2gf" # preferred mode for TDS
++ # would be `modeless'
++ echo "Successful call to hbf2gf" >&2
++ cmd=hbf2gf
++
++ gftopk ./$GFNAME $PKNAME || exit 1
++ fi
++fi
++
+ # grep for the font in $PSMAPFILE, if some ps-to-pk is claimed to be supported.
+ # We have to figure out the name of the base font -- $NAME is probably
+ # something like pplr, but it's rpplr or pplr0 or pplr8r that's in psfonts.map.
+-pattern="^r?$NAME"'(0|8r)?([ ]|$)'
+-test -n "$ps_to_pk" && egrep "$pattern" $PSMAPFILE >psline
++if test -z "$cmd"; then
++ pattern="^r?$NAME"'(0|8r)?([ ]|$)'
++ test -n "$ps_to_pk" && egrep "$pattern" $PSMAPFILE > psline
++fi
++
+ if test -s psline; then
+ # This is a PostScript font.
+ MODE=$ps_to_pk
+@@ -173,8 +214,9 @@
+ export DVIPSHEADERS
+ echo "$0: Running $cmd" >&2
+ $cmd >&2 || { echo "$0: $ps_to_pk failed." >&2; exit 1; }
++fi
+
+-else
++if test -z "$cmd"; then
+ # Try Metafont.
+ MFINPUTS="$MFINPUTS:$SAVEPWD"
+ export MFINPUTS
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/scripts/web2c-6.1/README b/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/scripts/web2c-6.1/README
new file mode 100644
index 0000000000..eb12bec7a3
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/scripts/web2c-6.1/README
@@ -0,0 +1 @@
+This is for web2c-6.1 with the patch for kpathsea 2.6
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/scripts/web2c-7.0/MakeTeXPK.diff b/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/scripts/web2c-7.0/MakeTeXPK.diff
new file mode 100644
index 0000000000..23f7cb58fe
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/scripts/web2c-7.0/MakeTeXPK.diff
@@ -0,0 +1,67 @@
+--- MakeTeXPK.orig Sat Feb 8 15:52:00 1997
++++ MakeTeXPK Tue Aug 18 07:58:22 1998
+@@ -1,5 +1,5 @@
+ #!/bin/sh
+-# original MakeTeXPK -- make a new PK font, because one wasn't found.
++# MakeTeXPK -- make a new PK font, because one wasn't found.
+ #
+ # (If you change or delete the word `original' on the previous line,
+ # installation won't write this script over yours.)
+@@ -44,15 +44,54 @@
+ MODE=$5
+ DEST=$6
+
++unset cmd
++
++# test for TTF fonts
++if test -z "$cmd"; then
++ ttf2pk -q $NAME $DPI
++ errstatus=$?
++
++ if test $errstatus -ne 2; then
++ if test $errstatus -ne 0; then
++ echo "ttf2pk failed" >&2
++ exit 1
++ fi
++ MODE=modeless
++ cmd=true
++ fi
++fi
++
++# test for HBF fonts
++if test -z "$cmd"; then
++ hbf2gf -q -p $NAME $DPI
++ errstatus=$?
++
++ if test $errstatus -ne 2; then
++ if test $errstatus -ne 0; then
++ echo "hbf2gf failed" >&2
++ exit 1
++ fi
++ MODE=modeless
++ cmd=true
++ fi
++fi
++
++unset psline
++
+ # grep for the font in $PSMAPFILE. These are base font names, such as
+ # rpplr (the original) or pplr0 (an interim step) or pplr8r (current).
+-pattern="^r?$NAME"'(0|8r)?([ ]|$)'
+-psline=`egrep "$pattern" $PSMAPFILE`
++if test -z "$cmd"; then
++ pattern="^r?$NAME"'(0|8r)?([ ]|$)'
++ psline=`egrep "$pattern" $PSMAPFILE`
++fi
++
+ if test -n "$psline"; then
+ MODE=modeless
+ # ps_to_pk set in MakeTeXcommon and/or MakeTeX.site.
+ cmd="$ps_to_pk $NAME $DPI"
+-else
++fi
++
++if test -z "$cmd"; then
+ # Check that $BDPI and $MODE are consistent; if not, ignore the mode and
+ # hope we can correctly guess it from bdpi. (People like to specify the
+ # resolution on the command line, not the mode so much.)
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/scripts/web2c-7.0/MakeTeXTFM.diff b/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/scripts/web2c-7.0/MakeTeXTFM.diff
new file mode 100644
index 0000000000..a67df4e14b
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/scripts/web2c-7.0/MakeTeXTFM.diff
@@ -0,0 +1,36 @@
+--- MakeTeXTFM.orig Sat Feb 8 15:52:00 1997
++++ MakeTeXTFM Sun Aug 16 15:41:39 1998
+@@ -1,5 +1,5 @@
+ #!/bin/sh
+-# original MakeTeXTFM -- make a new TFM file, because one wasn't found.
++# MakeTeXTFM -- make a new TFM file, because one wasn't found.
+ #
+ # (If you change or delete the word `original' on the previous line,
+ # installation won't write this script over yours.)
+@@ -50,7 +50,25 @@
+ exit 1
+ fi
+
+-cmd="mf \mode:=$MODE; mag:=$MAG; scrollmode; input $NAME"
++unset cmd
++
++# test for CJK bitmap font in HBF format
++hbf2gf -q $NAME $DPI
++errstatus=$?
++
++if test $errstatus -ne 2; then
++ if test $errstatus -ne 0; then
++ echo "$progname: \`hbf2gf failed." >&2
++ exit 1
++ fi
++ pltotf ./$NAME.pl $TFMNAME || exit 1
++ cmd=true
++fi
++
++if test -z "$cmd"; then
++ cmd="mf \mode:=$MODE; mag:=$MAG; scrollmode; input $NAME"
++fi
++
+ echo "$0: Running $cmd"
+ $cmd </dev/null
+ test -r $TFMNAME || { echo "$0: \`$cmd' failed to make $TFMNAME."; exit 1; }
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/scripts/web2c-7.1/MakeTeXPK.diff b/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/scripts/web2c-7.1/MakeTeXPK.diff
new file mode 100644
index 0000000000..1faf078adb
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/scripts/web2c-7.1/MakeTeXPK.diff
@@ -0,0 +1,72 @@
+--- MakeTeXPK.orig Fri Oct 31 09:30:54 1997
++++ MakeTeXPK Tue Aug 18 08:01:33 1998
+@@ -1,5 +1,5 @@
+ #!/bin/sh
+-# original MakeTeXPK -- make a new PK font, because one wasn't found.
++# MakeTeXPK -- make a new PK font, because one wasn't found.
+ #
+ # (If you change or delete the word `original' on the previous line,
+ # installation won't write this script over yours.)
+@@ -57,11 +57,48 @@
+ MODE=$5
+ DEST=$6
+
++unset cmd
++
++# test for TTF fonts
++if test -z "$cmd"; then
++ ttf2pk -q $NAME $DPI
++ errstatus=$?
++
++ if test $errstatus -ne 2; then
++ if test $errstatus -ne 0; then
++ echo "ttf2pk failed" >&2
++ exit 1
++ fi
++ MODE=modeless
++ cmd=true
++ fi
++fi
++
++# test for HBF fonts
++if test -z "$cmd"; then
++ hbf2gf -q -p $NAME $DPI
++ errstatus=$?
++
++ if test $errstatus -ne 2; then
++ if test $errstatus -ne 0; then
++ echo "hbf2gf failed" >&2
++ exit 1
++ fi
++ MODE=modeless
++ cmd=true
++ fi
++fi
++
++unset psline
++
+ # grep for the font in $PSMAPFILE. These are base font names, such as
+ # rpplr (the original) or pplr0 (an interim step) or pplr8r (current).
+-: ${PSMAPFILE=`kpsewhich psfonts.map`}
+-pattern="^$NAME"'([ ]|$)'
+-psline=`egrep "$pattern" $PSMAPFILE`
++if test -z "$cmd"; then
++ : ${PSMAPFILE=`kpsewhich psfonts.map`}
++ pattern="^r?$NAME"'(0|8r)?([ ]|$)'
++ psline=`egrep "$pattern" $PSMAPFILE`
++fi
++
+ if test -n "$psline"; then
+ MODE=modeless
+ # ps_to_pk is set in MakeTeX.cnf
+@@ -100,7 +137,9 @@
+ cmd="$ps_to_pk $NAME $DPI"
+ ;;
+ esac
+-else
++fi
++
++if test -z "$cmd"; then
+ # Check that $BDPI and $MODE are consistent; if not, ignore the mode and
+ # hope we can correctly guess it from bdpi. (People like to specify the
+ # resolution on the command line, not the mode so much.)
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/scripts/web2c-7.1/MakeTeXTFM.diff b/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/scripts/web2c-7.1/MakeTeXTFM.diff
new file mode 100644
index 0000000000..3fd17f9453
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/scripts/web2c-7.1/MakeTeXTFM.diff
@@ -0,0 +1,36 @@
+--- MakeTeXTFM.orig Tue Oct 21 21:22:12 1997
++++ MakeTeXTFM Sun Aug 16 15:51:20 1998
+@@ -1,5 +1,5 @@
+ #!/bin/sh
+-# original MakeTeXTFM -- make a new TFM file, because one wasn't found.
++# MakeTeXTFM -- make a new TFM file, because one wasn't found.
+ #
+ # (If you change or delete the word `original' on the previous line,
+ # installation won't write this script over yours.)
+@@ -53,7 +53,25 @@
+ exit 1
+ fi
+
+-cmd="mf \mode:=$MODE; mag:=$MAG; scrollmode; input $NAME"
++unset cmd
++
++# test for CJK bitmap font in HBF format
++hbf2gf -q $NAME $DPI
++errstatus=$?
++
++if test $errstatus -ne 2; then
++ if test $errstatus -ne 0; then
++ echo "$progname: \`hbf2gf failed." >&2
++ exit 1
++ fi
++ pltotf ./$NAME.pl $TFMNAME || exit 1
++ cmd=true
++fi
++
++if test -z "$cmd"; then
++ cmd="mf \mode:=$MODE; mag:=$MAG; scrollmode; input $NAME"
++fi
++
+ echo "$progname: Running $cmd"
+
+ $cmd </dev/null || {
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/scripts/web2c-7.2/mktexpk.diff b/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/scripts/web2c-7.2/mktexpk.diff
new file mode 100644
index 0000000000..ac703fd7d3
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/scripts/web2c-7.2/mktexpk.diff
@@ -0,0 +1,72 @@
+--- mktexpk.orig Fri Feb 20 16:23:22 1998
++++ mktexpk Tue Aug 18 08:04:40 1998
+@@ -1,5 +1,5 @@
+ #!/bin/sh
+-# original mktexpk -- make a new PK font, because one wasn't found.
++# mktexpk -- make a new PK font, because one wasn't found.
+ #
+ # (If you change or delete the word `original' on the previous line,
+ # installation won't write this script over yours.)
+@@ -73,11 +73,48 @@
+
+ NAME=$1
+
++unset cmd
++
++# test for TTF fonts
++if test -z "$cmd"; then
++ ttf2pk -q $NAME $DPI
++ errstatus=$?
++
++ if test $errstatus -ne 2; then
++ if test $errstatus -ne 0; then
++ echo "ttf2pk failed" >&2
++ exit 1
++ fi
++ MODE=modeless
++ cmd=true
++ fi
++fi
++
++# test for HBF fonts
++if test -z "$cmd"; then
++ hbf2gf -q -p $NAME $DPI
++ errstatus=$?
++
++ if test $errstatus -ne 2; then
++ if test $errstatus -ne 0; then
++ echo "hbf2gf failed" >&2
++ exit 1
++ fi
++ MODE=modeless
++ cmd=true
++ fi
++fi
++
++unset psline
++
+ # grep for the font in $PSMAPFILE. These are base font names, such as
+ # rpplr (the original) or pplr0 (an interim step) or pplr8r (current).
+-: ${PSMAPFILE=`kpsewhich psfonts.map`}
+-pattern="^$NAME"'([ ]|$)'
+-psline=`egrep "$pattern" $PSMAPFILE`
++if test -z "$cmd"; then
++ : ${PSMAPFILE=`kpsewhich psfonts.map`}
++ pattern="^r?$NAME"'(0|8r)?([ ]|$)'
++ psline=`egrep "$pattern" $PSMAPFILE`
++fi
++
+ if test -n "$psline"; then
+ MODE=modeless
+ # ps_to_pk is set in mktex.opt
+@@ -116,7 +153,9 @@
+ cmd="$ps_to_pk $NAME $DPI"
+ ;;
+ esac
+-else
++fi
++
++if test -z "$cmd"; then
+ # Check that $BDPI and $MODE are consistent; if not, ignore the mode and
+ # hope we can correctly guess it from bdpi. (People like to specify the
+ # resolution on the command line, not the mode so much.)
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/scripts/web2c-7.2/mktextfm.diff b/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/scripts/web2c-7.2/mktextfm.diff
new file mode 100644
index 0000000000..b7bf872e8c
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/hbf2gf/scripts/web2c-7.2/mktextfm.diff
@@ -0,0 +1,36 @@
+--- mktextfm.orig Mon Feb 16 08:56:13 1998
++++ mktextfm Tue Aug 18 06:13:22 1998
+@@ -1,5 +1,5 @@
+ #!/bin/sh
+-# original mktextfm -- make a new TFM file, because one wasn't found.
++# mktextfm -- make a new TFM file, because one wasn't found.
+ #
+ # (If you change or delete the word `original' on the previous line,
+ # installation won't write this script over yours.)
+@@ -70,7 +70,25 @@
+ exit 1
+ fi
+
+-cmd="mf \mode:=$MODE; mag:=$MAG; nonstopmode; input $NAME"
++unset cmd
++
++# test for CJK bitmap font in HBF format
++hbf2gf -q $NAME $DPI
++errstatus=$?
++
++if test $errstatus -ne 2; then
++ if test $errstatus -ne 0; then
++ echo "$progname: \`hbf2gf failed." >&2
++ exit 1
++ fi
++ pltotf ./$NAME.pl $TFMNAME || exit 1
++ cmd=true
++fi
++
++if test -z "$cmd"; then
++ cmd="mf \mode:=$MODE; mag:=$MAG; nonstopmode; input $NAME"
++fi
++
+ echo "$progname: Running $cmd"
+
+ $cmd </dev/null || {
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/lisp/cjkspace.el b/language/chinese/CJK/cjk-4.8.4/utils/lisp/cjkspace.el
new file mode 100644
index 0000000000..89b072111f
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/lisp/cjkspace.el
@@ -0,0 +1,102 @@
+;;; cjkspace.el --- provide a tilde character if you type a space.
+;;; use this file with AUCTeX.
+
+;; Copyright (C) 1994-2015 Werner Lemberg <wl@gnu.org>
+;;
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 2 of the License, or
+;; (at your option) any later version.
+;;
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+;;
+;; You should have received a copy of the GNU General Public License
+;; along with this program in doc/COPYING; if not, write to the Free
+;; Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+;; MA 02110-1301 USA
+
+;; This file is part of the CJK package Version 4.8.4 (18-Apr-2015)
+
+;; Insert tilde characters instead of spaces for LaTeX CJK documents.
+;; If `CJK-space-after-space' is non-nil, typing a space yields a space.
+;; Typing two consecutive spaces yields a tilde. If `CJK-space-after-space'
+;; is nil, the behaviour is reversed.
+;;
+;; You should put the following in your .emacs file (additionally to the
+;; common AUCTeX adaptations):
+;;
+;; (autoload 'CJK-insert-space "cjkspace"
+;; "Insert tildes appropriately in CJK document." t)
+;; (defun my-LaTeX-mode-hook ()
+;; "Key definitions for LaTeX mode."
+;; (define-key LaTeX-mode-map " " 'CJK-insert-space)
+;; )
+;; (add-hook 'LaTeX-mode-hook 'my-LaTeX-mode-hook)
+
+
+;;; Code:
+
+(provide 'cjkspace)
+
+
+(defvar CJK-space "~")
+
+(defvar CJK-space-after-space nil
+
+ "*If non-nil, typing a space yields a space. Typing two consecutive
+spaces yields a tilde. If nil the behaviour is reversed.")
+
+(make-variable-buffer-local 'CJK-space-after-space)
+
+
+;;;###autoload
+(defun CJK-insert-space (arg)
+
+ "Insert tilde characters instead of spaces for LaTeX CJK documents.
+If `CJK-space-after-space' is non-nil, typing a space yields a space.
+Typing two consecutive spaces yields a tilde. If `CJK-space-after-space'
+is nil, the behaviour is reversed.
+
+With prefix argument, always inserts space characters."
+
+ (interactive "*P")
+
+ (if arg
+ (self-insert-command (prefix-numeric-value arg))
+ (TeX-update-style)
+ (if CJK-space-after-space
+ (insert (cond ((bobp)
+ ?\ )
+ ((not (= (preceding-char) ?\ ))
+ ?\ )
+ ((and (> (point) 2)
+ (save-excursion
+ (forward-char -2)
+ (looking-at (concat "[" CJK-space
+ (regexp-quote TeX-esc) "]"))))
+ ?\ )
+ (t
+ (delete-backward-char 1)
+ CJK-space)))
+ (insert (cond ((bobp)
+ ?\ )
+ ((= (preceding-char) (string-to-char TeX-esc))
+ ?\ )
+ ((= (preceding-char) ?\ )
+ ?\ )
+ ((and (> (point) 2)
+ (save-excursion
+ (forward-char -2)
+ (looking-at (concat (regexp-quote TeX-esc)
+ CJK-space))))
+ CJK-space)
+ ((= (preceding-char) (string-to-char CJK-space))
+ (delete-backward-char 1)
+ ?\ )
+ (t
+ CJK-space))))))
+
+;;; EOF
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/lisp/cjktilde.el b/language/chinese/CJK/cjk-4.8.4/utils/lisp/cjktilde.el
new file mode 100644
index 0000000000..1d075fc688
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/lisp/cjktilde.el
@@ -0,0 +1,111 @@
+;;; cjktilde.el -- minor mode exchanging `~' and ` ' keys.
+
+;; Copyright (C) 1994-2015 Werner Lemberg <wl@gnu.org>
+;;
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 2 of the License, or
+;; (at your option) any later version.
+;;
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+;;
+;; You should have received a copy of the GNU General Public License
+;; along with this program in doc/COPYING; if not, write to the Free
+;; Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+;; MA 02110-1301 USA
+
+;; This file is part of the CJK package Version 4.8.4 (18-Apr-2015)
+
+;; Function `cjk-tilde-mode' activates a minor mode (`cjk-tilde-minor-mode')
+;; which exchanges the tilde key with the space key. This is useful for
+;; writing Chinese or Japanese with the CJK macro package for LaTeX 2e which
+;; redefines the `~' command to insert a shibuaki space (see documentation
+;; of the \CJKtilde macro for further details).
+
+;;; Code:
+
+(provide 'cjktilde)
+
+
+(defvar cjk-tilde-minor-mode nil
+
+ "*Non-nil enables CJK tilde mode.
+Setting this variable makes it local to the current buffer.
+See `cjk-tilde-mode' for details.")
+
+(make-variable-buffer-local 'cjk-tilde-minor-mode)
+
+
+;; the following two functions do the exchange.
+(defun electric-cjk-tilde (arg)
+
+ "insert space if tilde key is pressed provided cjk-tilde-minor-mode is
+activated."
+
+ (if cjk-tilde-minor-mode
+ (char-to-string ?\ )
+ (char-to-string ?\~)
+ )
+)
+
+
+(defun electric-cjk-space (arg)
+
+ "insert tilde if space key is pressed provided cjk-tilde-minor-mode is
+activated."
+
+ (if cjk-tilde-minor-mode
+ (char-to-string ?\~)
+ (char-to-string ?\ )
+ )
+)
+
+
+(or key-translation-map (setq key-translation-map (make-sparse-keymap)))
+
+(define-key key-translation-map " " 'electric-cjk-space)
+(define-key key-translation-map "~" 'electric-cjk-tilde)
+
+
+;; we indicate the minor mode in the mode line.
+(or (assq 'cjk-tilde-minor-mode minor-mode-map-alist)
+ (setq minor-mode-alist
+ (append minor-mode-alist
+ '((cjk-tilde-minor-mode " ~"))
+ )
+ )
+)
+
+;;;###autoload
+(defun cjk-tilde-mode (&optional arg)
+
+ "Toggle CJK tilde mode. If enabled, a tilde character will be inserted if
+the space key is pressed and vice versa.
+
+Use with caution! This minor mode makes only sense for CJK environments
+after insertion of the \\CJKtilde command. See the documentation of the
+CJK package for further details.
+
+With an argument, a positive argument enables CJK tilde mode,
+and a negative argument disables it."
+
+ (interactive "P")
+
+ (if (if arg
+ ;; negative arg: switch off
+ (<= (prefix-numeric-value arg) 0)
+ ;; no arg: toggle
+ cjk-tilde-minor-mode)
+ (setq cjk-tilde-minor-mode nil)
+
+ ;; positive arg: switch on
+ (setq cjk-tilde-minor-mode t)
+ )
+ (force-mode-line-update)
+)
+
+
+;;; end of cjktilde.el
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/lisp/emacs/cjk-enc.el b/language/chinese/CJK/cjk-4.8.4/utils/lisp/emacs/cjk-enc.el
new file mode 100644
index 0000000000..da2052eb56
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/lisp/emacs/cjk-enc.el
@@ -0,0 +1,1162 @@
+;;; cjk-enc.el --- provide a coding system for LaTeX2e CJK package
+
+;; Copyright (C) 1996-2000 Electrotechnical Laboratory, JAPAN.
+
+;; Author: Kenichi HANDA <handa@etl.go.jp>
+;; Werner LEMBERG <wl@gnu.org>
+;; Hin-Tak Leung <htl10@users.sourceforge.net>
+
+;; Keywords: CJK package, LaTeX2e, emacs, xemacs
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 2, or (at your option)
+;; any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs; see the file COPYING. If not, write to
+;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+
+;;
+;; CJK Version 4.8.4 (18-Apr-2015)
+;;
+
+;;; Code
+
+;; This file will work with both Emacs (>=20.3) and XEmacs (>=21). In
+;; the following `Emacs' is used for both Emacs and XEmacs except where
+;; it differs.
+
+;; XXX: Thai stuff not yet ported to XEmacs. I don't know whether it
+;; makes sense currently to support it because the Thai implementation
+;; in XEmacs (version 21.1 and probably the upcoming 21.2) is not
+;; complete: For example, there is no correct display handling of IR
+;; 166 (this is the right part of TIS-620) in an ISO-2022 data stream,
+;; decomposition of precomposed Thai (in xtis character set) doesn't
+;; provide linguistic properties, etc.
+
+;; The following tables map from Emacs's character sets to LaTeX2e
+;; macros. Note that not all macros defined here really do exist. See
+;; MULEenc.sty and cjk-enc.txt for further details.
+;;
+;; MULEenc.sty makes TeX character 0x7F `active' and assigns to it a
+;; multiplex command which executes its first argument. To make the
+;; macro expansion robust against \uppercase and \lowercase, only
+;; numbers are used as parameters which index the various commands.
+;;
+;; 0x7F will be used as a parameter delimiting character also.
+;;
+(defconst cjk-latin-1
+ [;0xa0
+ "99\177" "1\177" "2\177" "3\177"
+ "4\177" "5\177" "6\177" "7\177"
+ "8\177\\ " "9\177" "10\177" "11\177"
+ "12\177" "0\177-{}" "14\177" "15\177\\ "
+
+ ; 0xb0
+ "16\177" "17\177" "18\177" "19\177"
+ "20\177\\ " "21\177" "22\177" "23\177"
+ "24\177\\ " "25\177" "26\177" "27\177"
+ "28\177" "29\177" "30\177" "31\177"
+
+ ; 0xc0
+ "32\177A" "20\177A" "33\177A" "34\177A"
+ "8\177A" "0\177\\AA" "0\177\\AE" "24\177C"
+ "32\177E" "20\177E" "33\177E" "8\177E"
+ "32\177I" "20\177I" "33\177I" "8\177I"
+
+ ; 0xd0
+ "0\177\\DJ" "34\177N" "32\177O" "20\177O"
+ "33\177O" "34\177O" "8\177O" "38\177"
+ "0\177\\O" "32\177U" "20\177U" "33\177U"
+ "8\177U" "20\177Y" "0\177\\TH" "0\177\\ss"
+
+ ; 0xe0
+ "32\177a" "20\177a" "33\177a" "34\177a"
+ "8\177a" "0\177\\aa" "0\177\\ae" "24\177c"
+ "32\177e" "20\177e" "33\177e" "8\177e"
+ "32\177\\i" "20\177\\i" "33\177\\i" "8\177\\i"
+
+ ; 0xf0
+ "0\177\\dj" "34\177n" "32\177o" "20\177o"
+ "33\177o" "34\177o" "8\177o" "45\177"
+ "0\177\\o" "32\177u" "20\177u" "33\177u"
+ "8\177u" "20\177y" "0\177\\th" "8\177y"
+ ])
+
+(defconst cjk-latin-2
+ [; 0xa0
+ "99\177" "48\177A" "49\177\\ " "0\177\\L"
+ "4\177" "51\177L" "20\177S" "7\177"
+ "8\177\\ " "51\177S" "24\177S" "51\177T"
+ "20\177Z" "0\177-{}" "51\177Z" "52\177Z"
+
+ ; 0xb0
+ "16\177" "48\177a" "48\177\\ " "0\177\\l"
+ "20\177\\ " "51\177l" "20\177s" "51\177\\ "
+ "24\177\\ " "51\177s" "24\177s" "51\177t"
+ "20\177z" "55\177\\ " "51\177z" "52\177z"
+
+ ; 0xc0
+ "20\177R" "20\177A" "33\177A" "49\177A"
+ "8\177A" "20\177L" "20\177C" "24\177C"
+ "51\177C" "20\177E" "48\177E" "8\177E"
+ "51\177E" "20\177I" "33\177I" "51\177D"
+
+ ; 0xd0
+ "0\177\\DJ" "20\177N" "51\177N" "20\177O"
+ "33\177O" "55\177O" "8\177O" "38\177"
+ "51\177R" "53\177U" "20\177U" "55\177U"
+ "8\177U" "20\177Y" "24\177T" "0\177\\ss"
+
+ ; 0xe0
+ "20\177r" "20\177a" "33\177a" "49\177a"
+ "8\177a" "20\177l" "20\177c" "24\177c"
+ "51\177c" "20\177e" "48\177e" "8\177e"
+ "51\177e" "20\177\\i" "33\177\\i" "51\177d"
+
+ ; 0xf0
+ "0\177\\dj" "20\177n" "51\177n" "20\177o"
+ "33\177o" "55\177o" "8\177o" "45\177"
+ "51\177r" "53\177u" "20\177u" "55\177u"
+ "8\177u" "20\177y" "24\177t" "52\177\\ "
+ ])
+
+(defconst cjk-latin-3
+ [; 0xa0
+ "99\177" "0\177\\TEXTMALTESEH" "49\177\\ " "3\177"
+ "4\177" "" "33\177H" "7\177"
+ "8\177\\ " "52\177I" "24\177S" "49\177G"
+ "33\177J" "0\177-{}" "" "52\177Z"
+
+ ; 0xb0
+ "16\177" "0\177\\textmalteseh" "18\177" "19\177"
+ "20\177\\ " "21\177" "33\177h" "23\177"
+ "24\177\\ " "0\177\\i" "24\177s" "49\177g"
+ "33\177\\j" "29\177" "" "52\177z"
+
+ ; 0xc0
+ "32\177A" "20\177A" "33\177A" ""
+ "8\177A" "52\177C" "33\177C" "24\177C"
+ "32\177E" "20\177E" "33\177E" "8\177E"
+ "32\177I" "20\177I" "33\177I" "8\177I"
+
+ ; 0xd0
+ "" "34\177N" "32\177O" "20\177O"
+ "33\177O" "52\177G" "8\177O" "38\177"
+ "33\177G" "32\177U" "20\177U" "33\177U"
+ "8\177U" "49\177U" "33\177S" "0\177\\ss"
+
+ ; 0xe0
+ "32\177a" "20\177a" "33\177a" ""
+ "8\177a" "52\177c" "33\177c" "24\177c"
+ "32\177e" "20\177e" "33\177e" "8\177e"
+ "32\177\\i" "20\177\\i" "33\177\\i" "8\177\\i"
+
+ ; 0xf0
+ "" "34\177n" "32\177o" "20\177o"
+ "33\177o" "52\177g" "8\177o" "45\177"
+ "33\177g" "32\177u" "20\177u" "33\177u"
+ "8\177u" "49\177u" "33\177s" "52\177\\ "
+ ])
+
+(defconst cjk-latin-4
+ [; 0xa0
+ "99\177" "48\177A" "59\177" "24\177R"
+ "4\177" "34\177I" "24\177L" "7\177"
+ "8\177\\ " "51\177S" "15\177E" "24\177G"
+ "0\177\\TEXTTSTROKE" "0\177-{}" "51\177Z" "15\177\\ "
+
+ ; 0xb0
+ "16\177" "48\177a" "48\177\\ " "24\177r"
+ "20\177\\ " "34\177\\i" "24\177l" "51\177\\ "
+ "24\177\\ " "51\177s" "15\177e" "24\177g"
+ "0\177\\texttstroke" "0\177\\NG" "51\177z" "0\177\\ng"
+
+ ; 0xc0
+ "15\177A" "20\177A" "33\177A" "34\177A"
+ "8\177A" "0\177\\AA" "0\177\\AE" "48\177I"
+ "51\177C" "20\177E" "48\177E" "8\177E"
+ "52\177E" "20\177I" "33\177I" "15\177I"
+
+ ; 0xd0
+ "0\177\\DJ" "24\177N" "15\177O" "24\177K"
+ "33\177O" "34\177O" "8\177O" "38\177"
+ "0\177\\O" "48\177U" "20\177U" "33\177U"
+ "8\177U" "34\177U" "15\177U" "0\177\\ss"
+
+ ; 0xe0
+ "15\177a" "20\177a" "33\177a" "34\177a"
+ "8\177a" "0\177\\aa" "0\177\\ae" "48\177i"
+ "51\177c" "20\177e" "48\177e" "8\177e"
+ "52\177e" "20\177\\i" "33\177\\i" "15\177\\i"
+
+ ; 0xf0
+ "0\177\\dj" "24\177n" "15\177o" "24\177k"
+ "33\177o" "34\177o" "8\177o" "45\177"
+ "0\177\\o" "48\177u" "20\177u" "33\177u"
+ "8\177u" "34\177u" "15\177u" "52\177\\ "
+ ])
+
+(defconst cjk-latin-5 ; ISO 8859-9
+ [; 0xa0
+ "99\177" "1\177" "2\177" "3\177"
+ "4\177" "5\177" "6\177" "7\177"
+ "8\177\\ " "9\177" "10\177" "11\177"
+ "12\177" "0\177-{}" "14\177" "15\177\\ "
+
+ ; 0xb0
+ "16\177" "17\177" "18\177" "19\177"
+ "20\177\\ " "21\177" "22\177" "23\177"
+ "24\177\\ " "25\177" "26\177" "27\177"
+ "28\177" "29\177" "30\177" "31\177"
+
+ ; 0xc0
+ "32\177A" "20\177A" "33\177A" "34\177A"
+ "8\177A" "0\177\\AA" "0\177\\AE" "24\177C"
+ "32\177E" "20\177E" "33\177E" "8\177E"
+ "32\177I" "20\177I" "33\177I" "8\177I"
+
+ ; 0xd0
+ "49\177G" "34\177N" "32\177O" "20\177O"
+ "33\177O" "34\177O" "8\177O" "38\177"
+ "0\177\\O" "32\177U" "20\177U" "33\177U"
+ "8\177U" "52\177I" "24\177S" "0\177\\ss"
+
+ ; 0xe0
+ "32\177a" "20\177a" "33\177a" "34\177a"
+ "8\177a" "0\177\\aa" "0\177\\ae" "24\177c"
+ "32\177e" "20\177e" "33\177e" "8\177e"
+ "32\177\\i" "20\177\\i" "33\177\\i" "8\177\\i"
+
+ ; 0xf0
+ "49\177g" "34\177n" "32\177o" "20\177o"
+ "33\177o" "34\177o" "8\177o" "45\177"
+ "0\177\\o" "32\177u" "20\177u" "33\177u"
+ "8\177u" "0\177\\i" "24\177s" "8\177y"
+ ])
+
+(defconst cjk-latin-jisx ; JIS X 0201 lower half
+ [; 0xa0
+ "" "0\177!" "37\177" "0\177\\#"
+ "39\177" "0\177\\%" "0\177\\&" "40\177"
+ "0\177(" "0\177)" "0\177*" "0\177+"
+ "0\177," "0\177-" "0\177." "0\177/"
+
+ ; 0xb0
+ "0\1770" "0\1771" "0\1772" "0\1773"
+ "0\1774" "0\1775" "0\1776" "0\1777"
+ "0\1778" "0\1779" "0\177:" "0\177;"
+ "41\177" "0\177=" "42\177" "0\177?"
+
+ ; 0xc0
+ "36\177" "0\177A" "0\177B" "0\177C"
+ "0\177D" "0\177E" "0\177F" "0\177G"
+ "0\177H" "0\177I" "0\177J" "0\177K"
+ "0\177L" "0\177M" "0\177N" "0\177O"
+
+ ; 0xd0
+ "0\177P" "0\177Q" "0\177R" "0\177S"
+ "0\177T" "0\177U" "0\177V" "0\177W"
+ "0\177X" "0\177Y" "0\177Z" "0\177["
+ "5\177" "0\177]" "43\177" "44\177"
+
+ ; 0xe0
+ "46\177" "0\177a" "0\177b" "0\177c"
+ "0\177d" "0\177e" "0\177f" "0\177g"
+ "0\177h" "0\177i" "0\177j" "0\177k"
+ "0\177l" "0\177m" "0\177n" "0\177o"
+
+ ; 0xf0
+ "0\177p" "0\177q" "0\177r" "0\177s"
+ "0\177t" "0\177u" "0\177v" "0\177w"
+ "0\177x" "0\177y" "0\177z" "47\177"
+ "50\177" "54\177" "56\177" ""
+ ])
+
+(defconst cjk-cyrillic ; ISO 8859-5
+ [; 0xa0
+ "99\177" "0\177\\CYRYO" "0\177\\CYRDJE" "20\177\\CYRG"
+ "0\177\\CYRIE" "0\177\\CYRDZE" "0\177\\CYRII" "0\177\\CYRYI"
+ "0\177\\CYRJE" "0\177\\CYRLJE" "0\177\\CYRNJE" "0\177\\CYRTSHE"
+ "20\177\\CYRK" "0\177-{}" "0\177\\CYRUSHRT" "0\177\\CYRDZHE"
+
+ ; 0xb0
+ "0\177\\CYRA" "0\177\\CYRB" "0\177\\CYRV" "0\177\\CYRG"
+ "0\177\\CYRD" "0\177\\CYRE" "0\177\\CYRZH" "0\177\\CYRZ"
+ "0\177\\CYRI" "0\177\\CYRISHRT" "0\177\\CYRK" "0\177\\CYRL"
+ "0\177\\CYRM" "0\177\\CYRN" "0\177\\CYRO" "0\177\\CYRP"
+
+ ; 0xc0
+ "0\177\\CYRR" "0\177\\CYRS" "0\177\\CYRT" "0\177\\CYRU"
+ "0\177\\CYRF" "0\177\\CYRH" "0\177\\CYRC" "0\177\\CYRCH"
+ "0\177\\CYRSH" "0\177\\CYRSHCH" "0\177\\CYRHRDSN" "0\177\\CYRERY"
+ "0\177\\CYRSFTSN" "0\177\\CYREREV" "0\177\\CYRYU" "0\177\\CYRYA"
+
+ ; 0xd0
+ "0\177\\cyra" "0\177\\cyrb" "0\177\\cyrv" "0\177\\cyrg"
+ "0\177\\cyrd" "0\177\\cyre" "0\177\\cyrzh" "0\177\\cyrz"
+ "0\177\\cyri" "0\177\\cyrishrt" "0\177\\cyrk" "0\177\\cyrl"
+ "0\177\\cyrm" "0\177\\cyrn" "0\177\\cyro" "0\177\\cyrp"
+
+ ; 0xe0
+ "0\177\\cyrr" "0\177\\cyrs" "0\177\\cyrt" "0\177\\cyru"
+ "0\177\\cyrf" "0\177\\cyrh" "0\177\\cyrc" "0\177\\cyrch"
+ "0\177\\cyrsh" "0\177\\cyrshch" "0\177\\cyrhrdsn" "0\177\\cyrery"
+ "0\177\\cyrsftsn" "0\177\\cyrerev" "0\177\\cyryu" "0\177\\cyrya"
+
+ ; 0xf0
+ "35\177" "0\177\\cyryo" "0\177\\cyrdje" "20\177\\cyrg"
+ "0\177\\cyrie" "0\177\\cyrdze" "0\177\\cyrii" "0\177\\cyryi"
+ "0\177\\cyrje" "0\177\\cyrlje" "0\177\\cyrnje" "0\177\\cyrtshe"
+ "20\177\\cyrk" "7\177" "0\177\\cyrushrt" "0\177\\cyrdzhe"
+ ])
+
+(defconst cjk-greek ; ISO 8859-7
+ [;0xa0
+ "99\177" "0\177<{}" "0\177>{}" "3\177"
+ "" "" "6\177" "7\177"
+ "8\177\\ " "9\177" "" "0\177(("
+ "12\177" "0\177-{}" "" "0\177---"
+
+ ; 0xb0
+ "16\177" "17\177" "18\177" "19\177"
+ "0\177'{}" "0\177\"'{}" "0\177'A" "0\177;"
+ "0\177'E" "0\177'H" "0\177'I" "0\177))"
+ "0\177'O" "29\177" "0\177'U" "0\177'W"
+
+ ; 0xc0
+ "0\177\"'i" "0\177A" "0\177B" "0\177G"
+ "0\177D" "0\177E" "0\177Z" "0\177H"
+ "0\177J" "0\177I" "0\177K" "0\177L"
+ "0\177M" "0\177N" "0\177X" "0\177O"
+
+ ; 0xd0
+ "0\177P" "0\177R" "" "0\177S"
+ "0\177T" "0\177U" "0\177F" "0\177Q"
+ "0\177Y" "0\177W" "0\177\"I" "0\177\"U"
+ "0\177'a" "0\177'e" "0\177'h" "0\177'i"
+
+ ; 0xe0
+ "0\177\"'u" "0\177a" "0\177b" "0\177g"
+ "0\177d" "0\177e" "0\177z" "0\177h"
+ "0\177j" "0\177i" "0\177k" "0\177l"
+ "0\177m" "0\177n" "0\177x" "0\177o"
+
+ ; 0xf0
+ "0\177p" "0\177r" "0\177c" "0\177s"
+ "0\177t" "0\177u" "0\177f" "0\177q"
+ "0\177y" "0\177w" "0\177\"i" "0\177\"u"
+ "0\177'o" "0\177'u" "0\177'w" ""
+ ])
+
+(defconst cjk-viscii-lower
+ [; 0xA0
+ "" "20\177\\abreve" "32\177\\abreve" "71\177\\abreve"
+ "20\177\\acircumflex" "32\177\\acircumflex" "73\177\\acircumflex" "71\177\\acircumflex"
+ "34\177e" "71\177e" "20\177\\ecircumflex" "32\177\\ecircumflex"
+ "73\177\\ecircumflex" "34\177\\ecircumflex" "71\177\\ecircumflex" "20\177\\ocircumflex"
+
+ ; 0xB0
+ "32\177\\ocircumflex" "73\177\\ocircumflex" "34\177\\ocircumflex" ""
+ "" "71\177\\ocircumflex" "32\177\\ohorn" "73\177\\ohorn"
+ "71\177i" "" "" ""
+ "" "0\177\\ohorn" "20\177\\ohorn" ""
+
+ ; 0xC0
+ "" "" "" ""
+ "" "" "73\177\\abreve" "34\177\\abreve"
+ "" "" "" ""
+ "" "" "" "32\177y"
+
+ ; 0xD0
+ "" "20\177\\uhorn" "" ""
+ "" "71\177a" "73\177y" "32\177\\uhorn"
+ "73\177\\uhorn" "" "" "34\177y"
+ "71\177y" "" "34\177\\ohorn" "0\177\\uhorn"
+
+ ; 0xE0
+ "32\177a" "20\177a" "0\177\\acircumflex" "34\177a"
+ "73\177a" "0\177\\abreve" "34\177\\uhorn" "34\177\\acircumflex"
+ "32\177e" "20\177e" "0\177\\ecircumflex" "73\177e"
+ "32\177i" "20\177i" "34\177i" "73\177i"
+
+ ; 0xF0
+ "0\177\\dj" "71\177\\uhorn" "32\177o" "20\177o"
+ "0\177\\ocircumflex" "34\177o" "73\177o" "71\177o"
+ "71\177u" "32\177u" "20\177u" "34\177u"
+ "73\177u" "20\177y" "71\177\\ohorn" ""
+ ])
+
+(defconst cjk-viscii-upper
+ [; 0xA0
+ "" "20\177\\ABREVE" "32\177\\ABREVE" "71\177\\ABREVE"
+ "20\177\\ACIRCUMFLEX" "32\177\\ACIRCUMFLEX" "73\177\\ACIRCUMFLEX" "71\177\\ACIRCUMFLEX"
+ "34\177E" "71\177E" "20\177\\ECIRCUMFLEX" "32\177\\ECIRCUMFLEX"
+ "73\177\\ECIRCUMFLEX" "34\177\\ECIRCUMFLEX" "71\177\\ECIRCUMFLEX" "20\177\\OCIRCUMFLEX"
+
+ ; 0xB0
+ "32\177\\OCIRCUMFLEX" "73\177\\OCIRCUMFLEX" "34\177\\OCIRCUMFLEX" ""
+ "" "71\177\\OCIRCUMFLEX" "32\177\\OHORN" "73\177\\OHORN"
+ "71\177I" "" "" ""
+ "" "0\177\\OHORN" "20\177\\OHORN" ""
+
+ ; 0xC0
+ "" "" "" ""
+ "" "" "73\177\\ABREVE" "34\177\\ABREVE"
+ "" "" "" ""
+ "" "" "" "32\177Y"
+
+ ; 0xD0
+ "" "20\177\\UHORN" "" ""
+ "" "71\177A" "73\177Y" "32\177\\UHORN"
+ "73\177\\UHORN" "" "" "34\177Y"
+ "71\177Y" "" "34\177\\OHORN" "0\177\\UHORN"
+
+ ; 0xE0
+ "32\177A" "20\177A" "0\177\\ACIRCUMFLEX" "34\177A"
+ "73\177A" "0\177\\ABREVE" "34\177\\UHORN" "34\177\\ACIRCUMFLEX"
+ "32\177E" "20\177E" "0\177\\ECIRCUMFLEX" "73\177E"
+ "32\177I" "20\177I" "34\177I" "73\177I"
+
+ ; 0xF0
+ "0\177\\DJ" "71\177\\UHORN" "32\177O" "20\177O"
+ "0\177\\OCIRCUMFLEX" "34\177O" "73\177O" "71\177O"
+ "71\177U" "32\177U" "20\177U" "34\177U"
+ "73\177U" "20\177Y" "71\177\\OHORN" ""
+ ])
+
+
+;; The following encodings will be selected (if they occur in the input
+;; buffer) at the very beginning of the output buffer to load the
+;; corresponding CJK macros.
+;;
+(defconst cjk-enc-table
+ '((chinese-gb2312 . GB)
+ (katakana-jisx0201 . SJIS)
+ (japanese-jisx0208 . JIS)
+ (japanese-jisx0212 . JIS2)
+ (korean-ksc5601 . KS)
+ (chinese-big5-1 . Bg5)
+ (chinese-big5-2 . Bg5)
+ (chinese-cns11643-1 . CNS1)
+ (chinese-cns11643-2 . CNS2)
+ (chinese-cns11643-3 . CNS3)
+ (chinese-cns11643-4 . CNS4)
+ (chinese-cns11643-5 . CNS5)
+ (chinese-cns11643-6 . CNS6)
+ (chinese-cns11643-7 . CNS7)))
+
+
+;; MULEenc's versions of \CJKspace and \CJKnospace
+;;
+(defconst cjk-space "\17764\177\177")
+(defconst cjk-nospace "\17765\177\177")
+
+;; MULEenc's command to insert a word break.
+;;
+(defconst cjk-word-break "\17761\177\177")
+
+
+;; Here we have the format specification table which defines what to do
+;; for each encoding.
+;;
+;; Later in the code we check to which group of commands the encoding
+;; belongs. This is done by testing how the encoding and its data is
+;; stored, e.g. whether it is a vector, or a cons cell, etc.
+;;
+(defconst cjk-format-spec-table
+ `(
+ ;; Cdr part is a vector VEC. Each character is formatted as:
+ ;;
+ ;; (format "\177%s\177" (aref VEC (- char-position-code-1 32)))
+ ;;
+ (latin-iso8859-1 . ,cjk-latin-1)
+ (latin-iso8859-2 . ,cjk-latin-2)
+ (latin-iso8859-3 . ,cjk-latin-3)
+ (latin-iso8859-4 . ,cjk-latin-4)
+ (latin-iso8859-9 . ,cjk-latin-5)
+ (latin-jisx0201 . ,cjk-latin-jisx)
+ ;; T2A encoding is used for Cyrillic letters. You must explicitly
+ ;; switch between T2 and T1/OT1 encoding.
+ (cyrillic-iso8859-5 . ,cjk-cyrillic)
+ ;; LGR encoding (resp. its ligatures) is used for Greek letters.
+ ;; You must explicitly switch between LGR and T1/OT1 encoding (using
+ ;; e.g. Babel's `greek' option).
+ (greek-iso8859-7 . ,cjk-greek)
+ ;; For Vietnamese a Vietnamese TeX-font has to be used which
+ ;; contains ASCII characters too! You must explicitly switch
+ ;; between Vietnamese T5 and T1/OT1 encoding.
+ (vietnamese-viscii-lower . ,cjk-viscii-lower)
+ (vietnamese-viscii-upper . ,cjk-viscii-upper)
+
+ ;; Cdr part is a cons of header HEAD and formatter FORMAT. HEAD is
+ ;; printed first, then each character is formatted as:
+ ;;
+ ;; (format FORMAT char-code-1 [char-code-2])
+ ;;
+ (katakana-jisx0201 . ("\17770\177\177" . "\177%c\177\177"))
+ (japanese-jisx0208 . ("\17766\177\177" . "\177%c\177%d\177"))
+ (chinese-gb2312 . ("\17767\177\177" . "\177%c\177%d\177"))
+ (chinese-big5-1 . ("\17768\177\177" . "\177%c\177%d\177"))
+ (chinese-big5-2 . ("\17768\177\177" . "\177%c\177%d\177"))
+ (korean-ksc5601 . ("\17769\177\177" . "\177%c\177%d\177"))
+
+ ;; Cdr part is a formatter string FORMAT. Each character is
+ ;; formatted as:
+ ;;
+ ;; (format FORMAT char-code-1 char-code-2)
+ ;;
+ (japanese-jisx0212 . "\17772\177JIS2\177\177%d\177%d\177")
+ (chinese-cns11643-1 . "\17772\177CNS1\177\177%d\177%d\177")
+ (chinese-cns11643-2 . "\17772\177CNS2\177\177%d\177%d\177")
+ (chinese-cns11643-3 . "\17772\177CNS3\177\177%d\177%d\177")
+ (chinese-cns11643-4 . "\17772\177CNS4\177\177%d\177%d\177")
+ (chinese-cns11643-5 . "\17772\177CNS5\177\177%d\177%d\177")
+ (chinese-cns11643-6 . "\17772\177CNS6\177\177%d\177%d\177")
+ (chinese-cns11643-7 . "\17772\177CNS7\177\177%d\177%d\177")
+
+ ;; Cdr part is a list of the form (SYMBOL ARG1 ARG2 ...). SYMBOL
+ ;; indicates how to process the following characters.
+ ;;
+ (thai-tis620 . (thai
+ "\17757\177\177" ; Thai start
+ "\17758\177\177" ; Thai end
+ "\17762\177%d\177" ; Thai base character
+ "\17760\177%d\177" ; Thai upper/lower vowel and tone
+ "\17763\177\177" ; Thai EOL
+ ))
+ ))
+
+
+;; An alist of charsets vs list of features required for processing
+;; the corresponding charset. The feature is loaded then on demand.
+;;
+(defconst cjk-feature-table
+ '((thai-tis620 thai-word)))
+
+
+;; Create an output encoding called `cjk-coding', using the function
+;; cjk-encode to actually convert the output.
+;;
+(if (featurep 'xemacs)
+ (make-coding-system
+ 'cjk-coding 'no-conversion
+ "Coding-system for LaTeX2e CJK Package"
+ '(mnemonic "CJK"
+ pre-write-conversion cjk-encode))
+ (if (< emacs-major-version 23)
+ (make-coding-system
+ 'cjk-coding 0 ?c
+ "Coding-system for LaTeX2e CJK Package"
+ nil
+ '((pre-write-conversion . cjk-encode)))
+ (define-coding-system
+ 'cjk-coding
+ "Coding-system for LaTeX2e CJK Package"
+ :mnemonic ?c
+ :coding-type 'emacs-mule
+ :default-char ?
+ :charset-list '(ascii
+ latin-iso8859-1
+ latin-iso8859-2
+ latin-iso8859-3
+ latin-iso8859-4
+ cyrillic-iso8859-5
+ greek-iso8859-7
+ thai-tis620
+ vietnamese-viscii-lower
+ vietnamese-viscii-upper
+ latin-jisx0201
+ katakana-jisx0201
+ japanese-jisx0208
+ japanese-jisx0212
+ korean-ksc5601
+ chinese-gb2312
+ chinese-big5-1
+ chinese-big5-2
+ chinese-cns11643-1
+ chinese-cns11643-2
+ chinese-cns11643-3
+ chinese-cns11643-4
+ chinese-cns11643-5
+ chinese-cns11643-6
+ chinese-cns11643-7)
+ :pre-write-conversion 'cjk-encode)))
+
+;; XEmacs doesn't have set-buffer-multibyte.
+;;
+(defmacro cjk-set-buffer-multibyte (arg)
+ (if (fboundp 'set-buffer-multibyte)
+ `(set-buffer-multibyte ,arg)))
+
+
+;; The conversion routine. Its main idea is to analyze the character
+;; set for each character and then to do something if the previous
+;; character has a different character set. For Thai, we must
+;; additionally find proper word breaks using a large word list.
+;;
+(defun cjk-encode (from to)
+ (let ((old-buf (current-buffer))
+ (temp-buf (get-buffer-create " *cjk-tmp*"))
+ (work-buf (get-buffer-create " *cjk-work*"))
+ (required-features (copy-sequence cjk-feature-table)))
+ ;; Initialize all working buffers.
+ (set-buffer work-buf)
+ (erase-buffer)
+ (cjk-set-buffer-multibyte nil)
+
+ (set-buffer temp-buf)
+ (erase-buffer)
+ (cjk-set-buffer-multibyte t)
+
+ ;; Copy the original contents into TEMP-BUF.
+ (insert-buffer-substring old-buf from to)
+ (if (and (not (featurep 'xemacs))
+ (string< emacs-version "21.0"))
+ (progn
+ (message "Decomposing...")
+ (decompose-region (point-min) (point-max))))
+
+ (let ((enc nil)
+ (space-state nil)
+ prev-charset charset
+ ch ch1 ch2
+ format-spec
+ (skipped-whitespace nil)
+ (last-pos 0))
+ ;; Now we go to beginning of TEMP-BUF and start the loop.
+ (goto-char (point-min))
+ (setq prev-charset 'ascii)
+
+ (while (not (eobp))
+ ;; In emacs 23+, the `charset' property holds the original
+ ;; encoding value; in emacs 22 and earlier, we get `nil'.
+ (setq tpch (get-text-property (point) 'charset))
+ (setq ch (following-char))
+ (set-buffer work-buf)
+
+ ;; Set CHARSET to the character set of the current character.
+ ;; Use text property in preference to `char-charset'.
+ (if (not (eq tpch nil))
+ (setq charset tpch)
+ (setq charset (char-charset ch)))
+
+ ;; Avoid `tis620-2533' (new with emacs 23+); we replace it with
+ ;; Thai and ASCII (as a new optional argument to
+ ;; `char-charset'.
+ (if (eq charset 'tis620-2533)
+ (setq charset (char-charset ch '(thai-tis620 ascii))))
+
+ ;; Check whether we have Unicode based input.
+ (if (eq charset 'unicode)
+ (let ((l (split-char ch)))
+ (progn
+ ;; Unicode 0x0E00-0x0E7F is Thai. Transform back to TIS620
+ (setq ch2 (nth 2 l)
+ ch3 (nth 3 l))
+ (if (and (eq ch2 14) (< ch3 128))
+ (setq charset 'thai-tis620
+ ch (encode-char ch 'thai-tis620))))))
+
+ ;; `split-char' in emacs 23+ is sensitive to charset priority.
+ (cond ((> emacs-major-version 22)
+ (if (not (eq charset 'ascii))
+ (set-charset-priority charset))))
+
+ (if (eq charset 'ascii)
+ ;; Not a multibyte character.
+ (progn
+ ;; Don't modify PREV-CHARSET for whitespace characters.
+ (setq skipped-whitespace (string-match "[ \t\n]"
+ (string ch)))
+ (if (not skipped-whitespace)
+ (setq prev-charset 'ascii))
+ (insert ch))
+
+ ;; Now we are at a multibyte character. Set the following
+ ;; variables:
+ ;;
+ ;; CH1 -- first character code
+ ;; CH2 -- second character code (of two-byte characters)
+ ;; if any
+ (if (or (eq charset 'chinese-big5-1)
+ (eq charset 'chinese-big5-2))
+ ;; Emacs uses two special character sets for Big5
+ ;; characters. We must decode the current character to
+ ;; get the real Big5 character code.
+ (progn
+ (setq ch (encode-big5-char ch))
+ (if (consp ch)
+ ;; XEmacs
+ (setq ch1 (car ch)
+ ch2 (cdr ch))
+ ;; Emacs
+ (setq ch1 (lsh ch -8)
+ ch2 (logand ch 255)))
+ ;; 128 will be later added again.
+ (setq ch1 (- ch1 128))
+ (setq ch2 (- ch2 128)))
+ ;; For all other character sets, split-char does the right
+ ;; thing. Note that CH2 can be zero in case it is a
+ ;; single-byte character set.
+ (let ((l (split-char ch)))
+ (setq ch1 (nth 1 l)
+ ch2 (or (nth 2 l) 0))))
+
+ ;; FORMAT-SPEC tells how to encode this character.
+ (setq format-spec (cdr (assq charset cjk-format-spec-table)))
+ (if (null format-spec)
+ ;; Unsupported character set. Do nothing.
+ nil
+ ;; Ok, it is supported. If this character set is a CJK
+ ;; character set (i.e., it is in CJK-ENC-TABLE), we need a
+ ;; special header at the beginning of the output file.
+ ;; This information is stored in the ENC list.
+ (let ((tag (cdr (assq charset cjk-enc-table))))
+ (if tag
+ (or (memq tag enc)
+ (setq enc (cons tag enc)))))
+
+ ;; Load all features which are required to handle this
+ ;; character set.
+ (let ((tail (assq charset required-features)))
+ ;; We remove all occurrences of TAIL in the feature list
+ ;; to avoid loading packages multiple times.
+ (setq required-features (delete tail required-features)
+ tail (cdr tail))
+ (while tail
+ (require (car tail))
+ (setq tail (cdr tail))))
+
+ (cond
+ ;; If FORMAT-SPEC has the form (SYMBOL ARG1 ARG2 ...),
+ ;; SYMBOL indicates how to process the following
+ ;; characters.
+ ((and (consp format-spec) (symbolp (car format-spec)))
+ (cond
+ ((eq (car format-spec) 'thai)
+ ;; FORMAT-SPEC has this form:
+ ;; (thai START-STRING END-STRING
+ ;; BASE-CHAR-FORMAT COMBINING-CHAR-FORMAT
+ ;; EOL-STRING)
+ (let ((base-format (nth 3 format-spec))
+ (combining-format (nth 4 format-spec))
+ pos
+ start
+ end
+ str
+ len
+ (i 0))
+ ;; First, insert the code for starting Thai.
+ (if (not (eq prev-charset charset))
+ (insert (nth 1 format-spec)))
+ ;; Analyze the maximum run of Thai characters in
+ ;; TEMP-BUF and insert `|' at all word boundaries.
+ (set-buffer temp-buf)
+ (setq start (point))
+ ;; "\\ct+" searches for characters which have the
+ ;; category `t', i.e. are Thai characters.
+ (re-search-forward "\\ct+" nil t)
+ (setq end (point-marker))
+ (goto-char start)
+ (thai-break-words "|" end)
+ ;; Extract this run.
+ (setq str (buffer-substring start end)
+ len (length str))
+ (goto-char end)
+ (set-marker end nil)
+ ;; Insert characters in STR one by one while
+ ;; converting `|' to `cjk-word-break' and formatting
+ ;; Thai characters according to FORMAT-SPEC.
+ (set-buffer work-buf)
+ (while (< i len)
+ (setq ch (aref str i)
+ i (1+ i))
+ (if (= ch ?|)
+ (insert cjk-word-break)
+ (let* ((split (split-char ch))
+ (category-set (char-category-set ch)))
+ ;; We now analyze the linguistic category
+ ;; assigned to the current character and take
+ ;; the appropriate format. Then we add 128
+ ;; for producing TIS-620 output.
+ (insert (format
+ (if (or (aref category-set ?2)
+ (aref category-set ?3)
+ (aref category-set ?4))
+ combining-format
+ base-format)
+ (+ (nth 1 split) 128))))))
+ ;; It depends on the following characters what to do
+ ;; next. If we have tabs and spaces followed by a
+ ;; Thai character, nothing will be done. If we have
+ ;; a newline character additionally, we insert a
+ ;; special command which usually expands to
+ ;; `\ignorespaces' (which will suppress all
+ ;; whitespace characters). In all other cases, we
+ ;; close the Thai block.
+ ;;
+ ;; Reason for this algorithm is the fact that in the
+ ;; Thai language a space isn't used to separate
+ ;; words but to structure a sentence. A normal line
+ ;; break shall not automatically cause the insertion
+ ;; of a space. The user has rather to explicitly
+ ;; type one or more space characters in the middle
+ ;; of a line to indicate that he or she really wants
+ ;; a space -- note that usually a Thai space is
+ ;; wider than a Roman space resp. can be stretched
+ ;; more.
+ (set-buffer temp-buf)
+ (if (looking-at "[ \t]+\\ct")
+ (setq str "")
+ (if (looking-at "[ \t]*\n[ \t]*\\ct")
+ (setq str (nth 5 format-spec))
+ (setq str (nth 2 format-spec))))
+ ;; To compensate the forward-char at the end of loop.
+ (forward-char -1)
+ (set-buffer work-buf)
+ (insert str)))))
+
+ ;; We may have to insert the car part of the cons and/or
+ ;; space controlling commands (cjk-space/cjk-nospace)
+ ;; depending on the current context.
+ ;;
+ ;; Note that this logic sometimes fails. In the example
+ ;; below, cjk-encode will insert \CJKspace in the comment
+ ;; instead of right after the comment. Since cjk-encode
+ ;; should be a low-level function we can't assume that
+ ;; `%' is always the TeX comment character. Only TeX
+ ;; itself can reliably detect the current comment
+ ;; character.
+ ;;
+ ;; Chinese Text
+ ;; % Korean comment
+ ;; Korean Text
+ ;;
+ ;; Two solutions: Either switch between Korean and other
+ ;; languages only outside of a comment, or manually insert
+ ;; \CJKspace and \CJKnospace commands as needed.
+ ((consp format-spec)
+ (if (eq charset 'korean-ksc5601)
+ (or (eq space-state cjk-space)
+ (insert (setq space-state cjk-space)))
+ (or (eq space-state cjk-nospace)
+ (insert (setq space-state cjk-nospace))))
+
+ ;; Now insert the the header and character(s)
+ ;; according to CJK-FORMAT-SPEC-TABLE. The CJK
+ ;; package needs the characters in GR notation, so
+ ;; we add 0x80.
+ (if (not (eq prev-charset charset))
+ (insert (car format-spec)))
+ (insert (format (cdr format-spec)
+ (+ ch1 128) (+ ch2 128))))
+
+ ;; Since Emacs provides the character sets in GL
+ ;; notation, we simply subtract 0x20 to get the proper
+ ;; index.
+ ((vectorp format-spec)
+ (insert (format "\177%s\177"
+ (aref format-spec (- ch1 32)))))
+
+ ;; Otherwise, FORMAT-SPEC is just a formatting
+ ;; string.
+ (t
+ (insert (format format-spec ch1 ch2)))))
+
+ (setq prev-charset charset))
+
+ ;; We have finished the analysis of the character set. Print
+ ;; some progress information if we have done another 1000
+ ;; characters.
+ (set-buffer temp-buf)
+ (if (> (- (point) last-pos) 1000)
+ (progn
+ (setq last-pos (point))
+ (message "Converting: %2d%%"
+ (/ (* 100 (point)) (point-max)))))
+
+ ;; Advance to the next character and loop.
+ (forward-char 1))
+
+ ;; The remaining task is to insert an appropriate header at the
+ ;; very beginning of the output file. If ENC isn't empty, we need
+ ;; the extra LaTeX commands to load CJK package and to output all
+ ;; collected CJK encodings.
+ (set-buffer work-buf)
+ (goto-char (point-min))
+ (if enc
+ (progn
+ (insert "\\def\\CJKhook{")
+ (while enc
+ (insert (format "\\CJKenc{%s}" (car enc)))
+ (setq enc (cdr enc)))
+ (insert "}")
+ (insert "\\ifx\\CJKpreproc\\undefined")
+ (insert "\\def\\CJKpreproc{cjk-enc}")
+ (insert "\\RequirePackage[global]{CJK}")
+ (insert "\\AtBeginDocument{\\begin{CJK}{}{}\\CJKspace}")
+ (insert "\\AtEndDocument{\\end{CJK}}")
+ (insert "\\else\\CJKhook\\fi "))
+ (insert "\\ifx\\CJKpreproc\\undefined")
+ (insert "\\def\\CJKpreproc{cjk-enc}")
+ (insert "\\RequirePackage{MULEenc}")
+ (insert "\\fi ")))))
+
+
+(defun cjk-get-name (filename)
+ "Replace the extension of the file name with `.cjk'.
+If the extension of FILENAME is `.bib', `-cjk.bib' will be appended
+to the file name without extension."
+
+ (concat (file-name-sans-extension filename)
+ (if (string-equal (file-name-extension filename) "bib")
+ "-cjk.bib"
+ ".cjk")))
+
+
+(defun cjk-write-file ()
+ "Save current buffer and <buffername>.cjk in cjk-coding.
+Files of the form <buffername>.bib are saved as <buffername>-cjk.bib.
+
+If no file is associated with the buffer, you are asked to specify a
+file name."
+
+ (interactive)
+ (save-buffer)
+ (let* ((bufname (buffer-file-name))
+ (newbufname (cjk-get-name bufname)))
+ (message "Saving %s and %s" bufname newbufname)
+ (let ((coding-system-for-write 'cjk-coding))
+ (write-region (point-min) (point-max) newbufname))))
+
+
+(defun cjk-file-write-file (filename &optional load)
+ "Save FILENAME as <FILENAME>.cjk in cjk-coding.
+With prefix arg (noninteractively: 2nd arg LOAD), load FILENAME into
+current buffer also."
+
+ (interactive
+ (let ((file buffer-file-name)
+ (file-name nil)
+ (file-dir nil))
+ (and file
+ ;; If we are in LaTeX mode, we present the file associated
+ ;; with the current buffer as the default.
+ (eq (cdr (assq 'major-mode (buffer-local-variables)))
+ 'latex-mode)
+ (setq file-name (file-name-nondirectory file)
+ file-dir (file-name-directory file)))
+ ;; Now we build the argument list.
+ (list (read-file-name (if current-prefix-arg
+ "Load file and save it in cjk-coding: "
+ "Save file in cjk-coding: ")
+ file-dir file-name nil)
+ current-prefix-arg)))
+
+ (setq filename (expand-file-name filename))
+
+ (let (input-buffer
+ (new-filename (cjk-get-name filename)))
+ (save-excursion
+ (setq input-buffer (get-buffer-create " *cjk-temp*"))
+ (set-buffer input-buffer)
+ (erase-buffer)
+ (cjk-set-buffer-multibyte t)
+ (insert-file-contents filename)
+ (let ((coding-system-for-write 'cjk-coding))
+ (write-region (point-min) (point-max) new-filename))))
+
+ (if load
+ (find-file filename)))
+
+
+;; To be independent from AUC TeX, we copy the TeX-in-comment function.
+
+(defvar cjk-tex-esc "\\"
+ "The TeX escape character.")
+
+
+(defconst cjk-comment-start-skip (concat "\\(\\(^\\|[^\\]\\)\\("
+ (regexp-quote cjk-tex-esc)
+ (regexp-quote cjk-tex-esc)
+ "\\)*\\)\\(%+ *\\)")
+ "A regexp to identify the beginning of a comment in TeX.")
+
+
+(defun cjk-tex-in-comment ()
+ "Return non-nil if point is in a TeX comment."
+
+ (if (or (bolp)
+ (eq (preceding-char) ?\r))
+ nil
+ (save-excursion
+ (let ((pos (point)))
+ (re-search-backward "^\\|\r" nil t)
+ (or (looking-at cjk-comment-start-skip)
+ (re-search-forward cjk-comment-start-skip pos t))))))
+
+
+(defun cjk-write-all-files (filename &optional load force)
+ "Save FILENAME and all files included in FILENAME in cjk-coding.
+This function runs `cjk-file-write-file' on each file if necessary.
+The inclusion commands scanned for are `\\CJKinput', `\\CJKinclude',
+and `\\CJKbibliography'.
+
+With 1 \\[universal-argument] (noninteractively: 2nd arg LOAD),
+ load FILENAME into current buffer also.
+With 2 \\[universal-argument]'s (noninteractively: 3rd arg FORCE),
+ run `cjk-file-write-file' unconditionally.
+With 3 \\[universal-argument]'s, do both."
+
+ (interactive
+ (let ((file buffer-file-name)
+ (file-name nil)
+ (file-dir nil))
+ (and file
+ ;; If we are in LaTeX mode, we present the file associated
+ ;; with the current buffer as the default.
+ (eq (cdr (assq 'major-mode (buffer-local-variables)))
+ 'latex-mode)
+ (setq file-name (file-name-nondirectory file)
+ file-dir (file-name-directory file)))
+ ;; Now we build the argument list.
+ (setq load (member current-prefix-arg '((4) (64))))
+ (setq force (member current-prefix-arg '((16) (64))))
+ (list
+ (read-file-name (if load
+ "Load file and save it in cjk-coding: "
+ "Save file in cjk-coding: ")
+ file-dir file-name nil)
+ load
+ force)))
+
+ (let (input-buffer
+ (dir (file-name-directory filename))
+ (tex-include-regexp "\\\\CJKinclude *{\\(.*\\)}")
+ (tex-input-regexp "\\\\CJKinput *{\\(.*\\)}")
+ (bib-regexp "\\\\CJKbibliography *{\\(.*\\)}")
+ (result '())
+ (newresult '()))
+ (save-excursion
+ ;; First, load the file associated with FILENAME into INPUT-BUFFER
+ (setq input-buffer (get-buffer-create " *cjk-temp*"))
+ (set-buffer input-buffer)
+ (erase-buffer)
+ (cjk-set-buffer-multibyte t)
+ (insert-file-contents filename)
+ (goto-char (point-min))
+
+ ;; Then, search `\CJKinput', `\CJKinclude', and `\CJKbibliography' and
+ ;; append the found filenames to the RESULT list.
+ (while (re-search-forward tex-include-regexp nil t)
+ ;; We assume that the include file name is well behaved and
+ ;; doesn't contain a comment character.
+ (let ((match (match-string 1)))
+ (if (not (cjk-tex-in-comment))
+ (setq result (cons (concat match ".tex") result)))))
+ (while (re-search-forward tex-input-regexp nil t)
+ (let ((match (match-string 1)))
+ (if (not (cjk-tex-in-comment))
+ (if (string-equal (file-name-sans-extension match) match)
+ (setq result (cons (concat match ".tex") result))
+ (setq result (cons match result))))))
+ (while (re-search-forward bib-regexp nil t)
+ (let ((match (match-string 1)))
+ (if (not (cjk-tex-in-comment))
+ (setq result (cons (concat match ".bib") result))))))
+
+ ;; Add directory to each element.
+ (dolist (elt result)
+ (setq newresult (cons (concat dir elt) newresult)))
+
+ ;; Add the master file itself to the list.
+ (setq newresult (cons filename newresult))
+
+ ;; Process file by file.
+ (dolist (source newresult)
+ (if (not (file-readable-p source))
+ (message "Can't operate on %s" source)
+ (if (or (file-newer-than-file-p source (cjk-get-name source))
+ force)
+ (cjk-file-write-file source)))))
+
+ (if load
+ (find-file filename)))
+
+
+(defun batch-cjk-write-file ()
+ "Run `cjk-file-write-file' on the remaining files if necessary.
+Use this from the command line, with `--batch' (or `-batch'); it won't
+work in an interactive Emacs. For example, invoke
+
+ \"emacs -batch -l cjk-enc -f batch-cjk-write-file *.tex\"
+
+Note that if you specify a directory name, all files in this directory
+are processed."
+
+ (do-batch-cjk-write-file))
+
+
+(defun batch-force-cjk-write-file ()
+ "Run `cjk-file-write-file' on the remaining files unconditionally.
+Use this from the command line, with `--batch' (or `-batch'); it won't
+work in an interactive Emacs. For example, invoke
+
+ \"emacs -b -l cjk-enc -f batch-force-cjk-write-file *.tex\"
+
+Note that if you specify a directory name, all files in this directory
+are processed.
+
+This function is useful for Makefiles to let the make program do the
+file time management."
+
+ (do-batch-cjk-write-file t))
+
+
+(defun do-batch-cjk-write-file (&optional force)
+ "Run `cjk-file-write-file' on remaining arguments.
+If optional argument FORCE is non-nil, run it unconditionally."
+
+ (defvar command-line-args-left) ; Avoid `free variable' warning.
+
+ (if (not noninteractive)
+ (error "`batch-write-cjk-file' is to be used only with --batch"))
+
+ (while command-line-args-left
+ (let ((source (car command-line-args-left))
+ dest)
+ (if (file-directory-p (expand-file-name source))
+ ;; Handle all files in directory.
+ (let ((files (directory-files source)))
+ (while files
+ (if (and (not (auto-save-file-name-p (car files)))
+ ;; Replace the directory name saved in `source'
+ ;; with a file name.
+ (setq source
+ (expand-file-name (car files) source))
+ (setq dest (cjk-get-name source))
+ (not (file-directory-p source))
+ (or (file-newer-than-file-p source dest)
+ force))
+ (cjk-file-write-file source))
+ (setq files (cdr files))))
+ ;; Otherwise, process a single file.
+ (if (not (file-readable-p source))
+ (message "Can't operate on %s" source)
+ (if (or (file-newer-than-file-p source (cjk-get-name source))
+ force)
+ (cjk-file-write-file source)))))
+
+ (setq command-line-args-left (cdr command-line-args-left)))
+
+ (message "Done")
+ (kill-emacs 0))
+
+;;; EOF
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/lisp/emacs/thai-word.el b/language/chinese/CJK/cjk-4.8.4/utils/lisp/emacs/thai-word.el
new file mode 100644
index 0000000000..956cf27b06
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/lisp/emacs/thai-word.el
@@ -0,0 +1,11052 @@
+;;; thai-word.el -- find Thai word boundaries
+
+;; Copyright (C) 2000, 2001, 2002, 2003, 2004
+;; Electrotechnical Laboratory, JAPAN.
+
+;; Author: Kenichi HANDA <handa@etl.go.jp>
+
+;; Keywords: thai, word break, emacs
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 2, or (at your option)
+;; any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs; see the file COPYING. If not, write to
+;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+
+;; The used Thai word list has been taken from IBM's ICU4J project
+;; (file `thai6.ucs', version 1.4, converted to TIS encoding, with
+;; removal of three incorrect entries) to which the following license
+;; applies:
+;;
+;; COPYRIGHT AND PERMISSION NOTICE
+;;
+;;
+;; Copyright (c) 1995-2001 International Business Machines
+;; Corporation and others
+;;
+;; All rights reserved.
+;;
+;;
+;; 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, and/or sell copies of
+;; the Software, and to permit persons to whom the Software is
+;; furnished to do so, provided that the above copyright notice(s)
+;; and this permission notice appear in all copies of the Software
+;; and that both the above copyright notice(s) and this permission
+;; notice appear in supporting documentation.
+;;
+;; 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 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE
+;; COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE
+;; FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES,
+;; OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
+;; PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+;; TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+;; PERFORMANCE OF THIS SOFTWARE.
+;;
+;; Except as contained in this notice, the name of a copyright
+;; holder shall not be used in advertising or otherwise to promote
+;; the sale, use or other dealings in this Software without prior
+;; written authorization of the copyright holder.
+
+
+;; This file implements an algorithm to find Thai word breaks using a
+;; dictionary. It is based on the C program `cttex' written by
+;; Vuthichai Ampornaramveth <vuthi@nii.ac.jp>.
+
+
+;; Table of Thai words. It is a nested alist (see `nested-alist-p'),
+;; which means that you can easily index the list character by
+;; character.
+
+(defconst thai-word-table nil)
+
+
+;; Set up `thai-word-table'.
+
+(let
+ ((l
+ '("¡¡"
+ "¡¡Å"
+ "¡¡Ø¸Àѳ±ì"
+ "¡§"
+ "¡§¡ÒÃ"
+ "¡§ÊØÅ"
+ "¡§àµê¡"
+ "¡®"
+ "¡®ËÁÒÂ"
+ "¡°Ô¹"
+ "¡´"
+ "¡µÑ­ªÅÕ"
+ "¡µÑ­­ØµÒ"
+ "¡µÑ­­Ù"
+ "¡µÒ¸Ô¡ÒÃ"
+ "¡µÒÀÔ¹ÔËÒÃ"
+ "¡µÔ¡Ò"
+ "¡µàÇ·ÔµÒ"
+ "¡µàÇ·Õ"
+ "¡¶Ò"
+ "¡·Á"
+ "¡·ÅÕ"
+ "¡¹"
+ "¡¹¡"
+ "¡¹ÔÉ°Ò"
+ "¡º"
+ "¡º¯"
+ "¡º´Ò¹"
+ "¡º·Ù"
+ "¡ºÒÅ"
+ "¡ºÔ¹·Ãì"
+ "¡ºÔÅ"
+ "¡ºÕè"
+ "¡ÁÅ"
+ "¡Ã"
+ "¡Ã¡®"
+ "¡Ã¡®Ò¤Á"
+ "¡Ã¡¯"
+ "¡Ã§"
+ "¡Ã³±ì"
+ "¡Ã³Õ"
+ "¡Ã³Õ¡Ԩ"
+ "¡Ã³ÕÂì"
+ "¡Ã´"
+ "¡Ã¹"
+ "¡Ãº"
+ "¡ÃºÙÃ"
+ "¡ÃÁ"
+ "¡ÃÁ·èÒ"
+ "¡ÃÁ¸ÃÃÁì"
+ "¡ÃÃ"
+ "¡Ãêԧ"
+ "¡Ãó"
+ "¡ÃóԡÒÃì"
+ "¡ÃþØÁ"
+ "¡ÃÃÁ"
+ "¡ÃÃÁ¡Ã"
+ "¡ÃÃÁ¡ÒÃ"
+ "¡ÃÃÁªÇÒµ"
+ "¡ÃÃÁÒª¹"
+ "¡ÃÃÁÒªÕ¾"
+ "¡ÃÃÁÒ¸Ô¡ÒÃ"
+ "¡ÃÃà¨Õ¡"
+ "¡ÃÃàªÕ§"
+ "¡ÃÃá·Ã¡"
+ "¡ÃÃ⪡"
+ "¡ÃÃä¡Ã"
+ "¡ÃÇ´"
+ "¡ÃǺ"
+ "¡ÃÇÂ"
+ "¡ÃÍ"
+ "¡ÃÍ¡"
+ "¡ÃÍ¡á¡Ã¡"
+ "¡Ãͧ"
+ "¡Ãͧ¡ÃÍÂ"
+ "¡ÃÍ´"
+ "¡Ãͺ"
+ "¡ÃÍÁ"
+ "¡ÃÐ"
+ "¡ÃЧ¡¡ÃÐà§Ôè¹"
+ "¡ÃЧèͧ¡ÃÐá§è§"
+ "¡ÃЧè͹¡ÃÐá§è¹"
+ "¡ÃШ¡"
+ "¡ÃШ͡"
+ "¡ÃШͧÍá§"
+ "¡ÃШѧ"
+ "¡ÃШѺ"
+ "¡ÃШҴ"
+ "¡ÃШҺ"
+ "¡ÃШÒÂ"
+ "¡ÃШԴ"
+ "¡ÃШԺ"
+ "¡ÃШÔÃÔ´"
+ "¡ÃШء"
+ "¡ÃШغ¡ÃШԺ"
+ "¡ÃШØÂ"
+ "¡ÃШØ맡ÃШÔë§"
+ "¡ÃШØëÁ¡ÃШÔëÁ"
+ "¡ÃШÙë¡ÃШÕë"
+ "¡ÃШèÒ§"
+ "¡ÃШé͹"
+ "¡ÃЩ͡"
+ "¡ÃЩѺ¡ÃÐ੧"
+ "¡ÃЩٴ"
+ "¡ÃЩè͹"
+ "¡ÃЪ͹"
+ "¡ÃЪѺ"
+ "¡ÃЪÑé¹"
+ "¡ÃЪҡ"
+ "¡ÃЪØ"
+ "¡ÃЫԡ"
+ "¡ÃЫԺ"
+ "¡ÃЮØÁ¾Õ"
+ "¡Ãд¡"
+ "¡Ãдͧ"
+ "¡Ãд͹"
+ "¡Ãдѧ§Ò"
+ "¡Ãдҡ"
+ "¡ÃдҧÅÒ§"
+ "¡Ãдҹ"
+ "¡ÃдÒÉ"
+ "¡Ãдԡ"
+ "¡ÃдÔè§"
+ "¡ÃдÕè"
+ "¡Ãд׺"
+ "¡ÃдØÁ"
+ "¡Ãд١"
+ "¡Ãдé§"
+ "¡ÃдéÒ§"
+ "¡Ãеԡ"
+ "¡ÃеԺ"
+ "¡ÃеÔê´"
+ "¡Ãе×ÍÃ×ÍÃé¹"
+ "¡Ãеء"
+ "¡ÃеØ駡ÃеÔé§"
+ "¡ÃеØé¹"
+ "¡Ãеèͧ¡ÃÐáµè§"
+ "¡ÃеèÒÂ"
+ "¡ÃеéÇÁ¡ÃÐàµÕéÂÁ"
+ "¡Ãеêͺ"
+ "¡ÃжԹ"
+ "¡Ãз§"
+ "¡Ãзº"
+ "¡ÃзÃǧ"
+ "¡ÃзÐ"
+ "¡ÃзÑè§"
+ "¡Ãзԧ"
+ "¡Ãз׺"
+ "¡Ãзا"
+ "¡ÃзÙé"
+ "¡ÃзèÍÁ"
+ "¡Ãзé͹"
+ "¡ÃзéÍÁ¡ÃÐá·éÁ"
+ "¡ÃйÑé¹"
+ "¡Ãкǹ"
+ "¡ÃкÇÂ"
+ "¡Ãк͡"
+ "¡Ãкͧ"
+ "¡ÃкÐ"
+ "¡ÃкÔ"
+ "¡ÃкÕè"
+ "¡Ãк×Í"
+ "¡Ãкا"
+ "¡ÃлÃÕé¡ÃÐà»ÃèÒ"
+ "¡ÃлÑéÇ¡ÃÐà»ÕéÂ"
+ "¡ÃлèÓ"
+ "¡ÃлéÍ¡ÃÐá»é"
+ "¡Ãлëͧ"
+ "¡ÃмÅÕ¡ÃмÅÒÁ"
+ "¡Ãмա"
+ "¡ÃоÕé"
+ "¡Ãо×Í"
+ "¡ÃоØé§"
+ "¡ÃпѴ¡ÃÐà¿Õ´"
+ "¡ÃпÙÁ¡ÃпÒÂ"
+ "¡ÃÐÁÍÁ¡ÃÐáÁÁ"
+ "¡ÃÐÁѧ"
+ "¡ÃÐÂÒ˧ѹ"
+ "¡ÃÐÂÖ¡¡ÃÐÂ×Í"
+ "¡ÃÐÂè͹"
+ "¡ÃÐÃÍ¡"
+ "¡ÃÐÅÍÁ"
+ "¡ÃÐÅÑÁ¾Ã"
+ "¡ÃÐÇÔ¹"
+ "¡ÃÐÇÕ¡ÃÐÇÒ´"
+ "¡ÃÐÉÑÂ"
+ "¡ÃÐÉÒ»³ì"
+ "¡ÃÐÊͺ"
+ "¡ÃÐÊѧ"
+ "¡ÃÐÊѹ"
+ "¡ÃÐÊÒ"
+ "¡ÃÐÊ×Í"
+ "¡ÃÐÊا¡ÃÐÊÔ§"
+ "¡ÃÐÊع"
+ "¡ÃÐ˹¡"
+ "¡ÃÐ˹Һ"
+ "¡ÃÐ˹èÓ"
+ "¡ÃÐËÁÔº"
+ "¡ÃÐËÁèÍÁ"
+ "¡ÃÐËÂÔèÁ"
+ "¡ÃÐËÒÂ"
+ "¡ÃÐËÖÁ"
+ "¡ÃÐËÖèÁ"
+ "¡ÃÐÍͺ"
+ "¡ÃÐÍÑ¡"
+ "¡ÃÐÍÑ¡¡ÃÐÍèǹ"
+ "¡ÃÐà§éÒ¡ÃЧʹ"
+ "¡ÃÐà¨Ò"
+ "¡ÃÐà¨Ô§"
+ "¡ÃÐà¨Ô´¡ÃÐà¨Ô§"
+ "¡ÃÐà¨Õêº"
+ "¡ÃÐàªéÒ"
+ "¡ÃÐà«Í"
+ "¡ÃÐà«Ô§"
+ "¡ÃÐà«ç¹"
+ "¡ÃÐà«éÒ"
+ "¡ÃÐà´Ô´"
+ "¡ÃÐà´Õ´"
+ "¡ÃÐà´×Í¡"
+ "¡ÃÐà´×èͧ"
+ "¡ÃÐà´ç¹"
+ "¡ÃÐà´éÒ"
+ "¡ÃÐ൧"
+ "¡ÃÐàµÒÐ"
+ "¡ÃÐàµ×éͧ"
+ "¡ÃÐàµç¹"
+ "¡ÃÐà¶Ôº"
+ "¡ÃÐà·ÕÂÁ"
+ "¡ÃÐà·×͹"
+ "¡ÃÐູ"
+ "¡ÃÐàºÕ´"
+ "¡ÃÐàº×éͧ"
+ "¡ÃÐà»ÒÐ"
+ "¡ÃÐà»ëÒ"
+ "¡ÃÐà¾ÒÐ"
+ "¡ÃÐà¾×èÍÁ"
+ "¡ÃÐàÂéÍ¡ÃÐáËÂè§"
+ "¡ÃÐàÃÕ¹"
+ "¡ÃÐàÊÕ¹"
+ "¡ÃÐàÊÕÂÃ"
+ "¡ÃÐàÊ繡ÃÐÊÒÂ"
+ "¡ÃÐàÊèÒ"
+ "¡ÃÐàËÁç´¡ÃÐáËÁè"
+ "¡ÃÐá¨Ð"
+ "¡ÃÐá«Ð"
+ "¡ÃÐá´Ð"
+ "¡ÃÐá´èÇ"
+ "¡ÃÐáµ"
+ "¡ÃÐá·¡"
+ "¡ÃÐáÊ"
+ "¡ÃÐáÍÁ"
+ "¡ÃÐ⨹"
+ "¡ÃÐâ¨Á"
+ "¡ÃÐâ©¡¡ÃÐà©¡"
+ "¡ÃÐâ´¡"
+ "¡ÃÐâ´¡¡ÃÐà´¡"
+ "¡ÃÐâ´§"
+ "¡ÃÐâ´´"
+ "¡ÃÐⶹ"
+ "¡ÃÐâºÁ"
+ "¡ÃÐâ»Ã§"
+ "¡ÃÐâËé"
+ "¡ÃÑ¡"
+ "¡Ãѧ"
+ "¡Ãѹ"
+ "¡ÃѺ"
+ "¡ÃÑÁ"
+ "¡ÃÒ¡"
+ "¡ÃÒ§"
+ "¡ÃÒ´"
+ "¡ÃÒ¹"
+ "¡ÃÒº"
+ "¡ÃÒ¿"
+ "¡ÃÒ¿¿Ô¡"
+ "¡ÃÒ¿Ô¡"
+ "¡ÃÒÁ"
+ "¡ÃÒÂ"
+ "¡ÃÒÇ"
+ "¡ÃÓ"
+ "¡ÃÔ¡"
+ "¡ÃÔ§¡ÃÔÇ"
+ "¡ÃÔª"
+ "¡ÃÔº"
+ "¡ÃÔÁ"
+ "¡ÃÔÂÒ"
+ "¡ÃÔÇ"
+ "¡ÃÔè§"
+ "¡ÃÔèÁ"
+ "¡ÃÔéÇ"
+ "¡ÃÔê¡"
+ "¡ÃÔê§"
+ "¡ÃÕ"
+ "¡ÃÕ¡"
+ "¡ÃÕ±Ò"
+ "¡ÃÕ´"
+ "¡ÃÕ¸Ò"
+ "¡ÃÕê´"
+ "¡ÃØ"
+ "¡ÃØ¡"
+ "¡Ãا"
+ "¡Ãا෾"
+ "¡ÃسÒ"
+ "¡ÃسҸԤس"
+ "¡Ãع"
+ "¡Ãغ"
+ "¡ÃØÂ"
+ "¡ÃØè¹"
+ "¡ÃØèÁ"
+ "¡ÃØéÁ¡ÃÔèÁ"
+ "¡ÃØê»"
+ "¡ÃÙ"
+ "¡ÃÙ´"
+ "¡ÃçÍ¡¡ÃëÍÂ"
+ "¡Ãè͹"
+ "¡ÃèÍÂ"
+ "¡ÃèÒ§"
+ "¡ÃèÒÂ"
+ "¡ÃèÓ"
+ "¡ÃéÇÁ"
+ "¡ÃéÍ"
+ "¡ÃéÒ¹"
+ "¡ÃéÒÇ"
+ "¡ÄɮաÒ"
+ "¡ÄɳÒ"
+ "¡Å"
+ "¡Å´"
+ "¡Åº"
+ "¡ÅÁ"
+ "¡ÅÂØ·¸ì"
+ "¡Åǧ"
+ "¡ÅÍ¡"
+ "¡Åͧ"
+ "¡Å͹"
+ "¡ÅÍÂ"
+ "¡ÅÑ¡"
+ "¡ÅÑ´"
+ "¡ÅѺ"
+ "¡ÅÑÇ"
+ "¡ÅÑè¹"
+ "¡ÅÑé¹"
+ "¡ÅÑéÇ"
+ "¡ÅÒ¡"
+ "¡ÅÒ§"
+ "¡ÅÒ´"
+ "¡ÅÒÂ"
+ "¡ÅÒâËÁ"
+ "¡ÅÔè§"
+ "¡ÅÔè¹"
+ "¡ÅÔé§"
+ "¡ÅÔéÁ"
+ "¡ÅÕ"
+ "¡ÅÕº"
+ "¡ÅÕè"
+ "¡ÅÖ§"
+ "¡Å×¹"
+ "¡ÅØèÁ"
+ "¡ÅØéÁ"
+ "¡ÅÙâ¤Ê"
+ "¡ÅàÁç´"
+ "¡Åè¹"
+ "¡Åèͧ"
+ "¡Åè͹"
+ "¡ÅèÍÁ"
+ "¡ÅèÒÇ"
+ "¡ÅèÓ"
+ "¡ÅéÇÂ"
+ "¡ÅéÇÂäÁé"
+ "¡ÅéÍ"
+ "¡Åéͧ"
+ "¡Åé͹"
+ "¡ÅéÍÁá¡ÅéÁ"
+ "¡ÅéÒ"
+ "¡ÅéÒÁ"
+ "¡ÅéÓ"
+ "¡Ç´"
+ "¡Ç¹"
+ "¡ÇÁ"
+ "¡ÇÂ"
+ "¡Ç¨Ñêº"
+ "¡Ç¨Õê"
+ "¡ÇÑ¡"
+ "¡ÇÑ´"
+ "¡ÇÒ§"
+ "¡ÇÒ§µØé§"
+ "¡ÇÒ´"
+ "¡ÇÒÇà¤Ã×Í"
+ "¡ÇÕ"
+ "¡ÇèÒ"
+ "¡ÇéÒ§"
+ "¡ÇéÒ¹"
+ "¡ÇêÒ¹"
+ "¡ÉѵÃÔÂì"
+ "¡ÉÑÂ"
+ "¡ÉÒ»³ì"
+ "¡ÊÔ"
+ "¡ÊÔ¡Ã"
+ "¡ÊÔ¡ÃÃÁ"
+ "¡ÊÔ³"
+ "¡Í"
+ "¡Í¡"
+ "¡Í§"
+ "¡Í«"
+ "¡Í´"
+ "¡Íº"
+ "¡Í»Ã"
+ "¡ÍÂ"
+ "¡ÍÃÔÅÅÒ"
+ "¡ÍÅì¿"
+ "¡ÍàÍÕêÂÐ"
+ "¡Ð"
+ "¡ÐªÖ衡ЪÑè¡"
+ "¡Ð«Ç¡"
+ "¡Ð´Õè"
+ "¡ÐµéÓ"
+ "¡ÐµêÒ¡"
+ "¡Ð·¡Ã¡"
+ "¡Ð·Ñ´ÃÑ´"
+ "¡Ð·Ñ¹Ëѹ"
+ "¡Ð·Ô"
+ "¡Ð·×Í"
+ "¡ÐºÑ§ÅÁ"
+ "¡ÐºÔé§"
+ "¡Ð»ÃÔ´¡Ð»ÃÍÂ"
+ "¡Ð»Ç¡¡Ðà»Õ¡"
+ "¡Ð»Ð"
+ "¡Ð»Ô"
+ "¡Ð¾§"
+ "¡Ð¾ÃÔº"
+ "¡Ð¾Åèͧ¡Ðá¾Åè§"
+ "¡Ð¾éÍ"
+ "¡ÐÃѵ"
+ "¡ÐÃØ觡ÐÃÔè§"
+ "¡ÐÅÇÂ"
+ "¡ÐÅÍ"
+ "¡ÐÅлѧËÒ"
+ "¡ÐÅÐÁѧ"
+ "¡ÐÅÐáÁ"
+ "¡ÐÅÒ"
+ "¡ÐÅÒÊÕ"
+ "¡ÐÅÔéÁ¡ÐàËÅÕèÂ"
+ "¡ÐÅè͹"
+ "¡ÐÅèÍÁ¡ÐáÅèÁ"
+ "¡ÐÅèÍ¡ÐËÅÔº"
+ "¡ÐÊéÒËÍÂ"
+ "¡Ð˹ا¡Ð˹ԧ"
+ "¡Ð˹çͧ¡Ðá˹ç§"
+ "¡ÐËÃÍ´"
+ "¡ÐËÃÕè"
+ "¡ÐËÃçÍÁ¡ÐáËÃçÁ"
+ "¡ÐËÃèͧ"
+ "¡ÐËÅÕè"
+ "¡ÐËÅØ¡¡ÐËÅÔ¡"
+ "¡ÐËÅèÓ"
+ "¡Ðà´¡"
+ "¡Ð൧"
+ "¡Ðà·Â"
+ "¡Ðà·ÒÐ"
+ "¡Ðà»Ô꺡лêÒº"
+ "¡Ðà¼Å¡"
+ "¡ÐàÃÕè¡ÐÃÒ´"
+ "¡ÐàÅÔ´"
+ "¡ÐàÅèÍ¡ÐÅèÒ"
+ "¡ÐàËÃÕè§"
+ "¡ÐàËÅÒÐà»ÒÐ"
+ "¡Ðáªè"
+ "¡Ðⵧ¡Ð൧"
+ "¡Ðâµé§âËè§"
+ "¡Ðâµê¡"
+ "¡Ðâ»Ã§"
+ "¡Ðâ»âÅ"
+ "¡Ðâ¼Å¡¡Ðà¼Å¡"
+ "¡ÐâËÅ¡"
+ "¡Ñ¡"
+ "¡Ñ¡¢ÌÐ"
+ "¡Ñ§"
+ "¡Ñ§¡éÒ"
+ "¡Ñ§¢Ò"
+ "¡Ñ§©Ô¹"
+ "¡Ñ§¿Ù"
+ "¡Ñ§ÇÅ"
+ "¡Ñ§ÇÒ¹"
+ "¡Ñ§Ê´ÒÅ"
+ "¡Ñ§Ëѹ"
+ "¡Ñ§äÊ"
+ "¡Ñ­ªÒ"
+ "¡Ñ­­Ò"
+ "¡Ñ³±ì"
+ "¡Ñ´"
+ "¡Ñ¹"
+ "¡Ñ¹´ÒÃ"
+ "¡Ñ¹µì"
+ "¡Ñ¹ÂÒ¹"
+ "¡Ñ¹Âì"
+ "¡Ñº"
+ "¡Ñ»"
+ "¡Ñ»µÑ¹"
+ "¡ÑÁ»¹Ò·"
+ "¡ÑÁ»ÃÐâ´"
+ "¡ÑÁ¾ÙªÒ"
+ "¡ÑÁÁѹµÀÒ¾ÃѧÊÕ"
+ "¡ÑÁÁѹµÃѧÊÕ"
+ "¡Ñź¡"
+ "¡ÑÅ»¾Ä¡Éì"
+ "¡ÑŻѧËÒ"
+ "¡ÑÅ»ÒÇÊÒ¹"
+ "¡ÑÅ»ì"
+ "¡ÑÅÂÒ"
+ "¡ÑÅÂÒ³"
+ "¡ÑÅÂÒ³ÁÔµÃ"
+ "¡ÑÅÂÒ³Õ"
+ "¡ÑÅâª"
+ "¡Ñè¹"
+ "¡Ñé§"
+ "¡Ñé¹"
+ "¡Ñé¹ËÂÑè¹"
+ "¡Ñê¡"
+ "¡Ò"
+ "¡Ò¡"
+ "¡Ò¡Õ"
+ "¡Ò§"
+ "¡Ò§à¡§"
+ "¡Ò§à¢¹"
+ "¡Ò«ÐÅͧ"
+ "¡Ò­¨¹ºØÃÕ"
+ "¡Ò­¨¹Ò"
+ "¡Ò´"
+ "¡Ò¹"
+ "¡Ò¹´Ò"
+ "¡Ò¹¾ÅÙ"
+ "¡Òº"
+ "¡Ò½Ò¡"
+ "¡Ò¾Âì"
+ "¡ÒÁ"
+ "¡ÒÁÒÃÁ³ì"
+ "¡ÒÂ"
+ "¡Ò¡ÃÃÁ"
+ "¡ÒÂÀÒ¾"
+ "¡ÒÂÇÔÀÒ¤"
+ "¡ÒÂÊÔ·¸Ôì"
+ "¡ÒÂҾ¾"
+ "¡ÒÃ"
+ "¡Òóì"
+ "¡ÒúÙÃ"
+ "¡ÒÃÐà¡´"
+ "¡ÒÃѳÂì"
+ "¡ÒÃѹµì"
+ "¡ÒÃØ­"
+ "¡ÒÃسÂì"
+ "¡ÒÃàÇ¡"
+ "¡ÒÃì"
+ "¡ÒÃì´"
+ "¡ÒÃìµÙ¹"
+ "¡ÒÅ"
+ "¡ÒÅ¡Ô³Õ"
+ "¡ÒÅÕ"
+ "¡ÒÅà·ÈÐ"
+ "¡ÒÇ"
+ "¡ÒÈ"
+ "¡ÒÊ"
+ "¡ÒÊÃ"
+ "¡ÒÊÔâ¹"
+ "¡ÒËŧ"
+ "¡ÒÌ"
+ "¡ÒàËÇèÒ"
+ "¡Òá¿"
+ "¡ÒáÅç¡«Õ"
+ "¡Ó"
+ "¡Ó¡ÇÁ"
+ "¡Ó¡Ñ´"
+ "¡Ó¡Ñº"
+ "¡Ó¨Ã"
+ "¡Ó¨Ñ´"
+ "¡Ó¨ÒÂ"
+ "¡ÓªÑº"
+ "¡Ó«Òº"
+ "¡Ó´Ñ´"
+ "¡Ó¸Ã"
+ "¡Ó¹Ñ¹"
+ "¡Ó¹ÑÅ"
+ "¡ÓºÑ§"
+ "¡Ó»Ñè¹"
+ "¡Ó¾ÃéÒ"
+ "¡Ó¾×´"
+ "¡ÓÁжѹ"
+ "¡ÓÁÐÅÍ"
+ "¡ÓÁÐËÂÕè"
+ "¡ÓÂÒ¹"
+ "¡ÓÂÓ"
+ "¡ÓÃÒº"
+ "¡ÓÅѧ"
+ "¡ÓÊÃÇÅ"
+ "¡Ó˹´"
+ "¡Ó˹Ѵ"
+ "¡Óà´Ò"
+ "¡Óà¹Ô´"
+ "¡ÓàÃÔº"
+ "¡Óà˹ç¨"
+ "¡Óᾧ"
+ "¡Óá˧"
+ "¡ÓäÃ"
+ "¡ÓäÅ"
+ "¡Ô¡"
+ "¡Ô¡Ð"
+ "¡Ô¨"
+ "¡Ô¨¡ÃÃÁ"
+ "¡Ô¨¡ÒÃ"
+ "¡Ô¨¨ÐÅѡɳÐ"
+ "¡Ô¨¨Ò"
+ "¡ÔµµÔ"
+ "¡ÔµµÔ¤Ø³"
+ "¡ÔµµÔÁÈÑ¡´Ôì"
+ "¡ÔµµÔÈѾ·ì"
+ "¡Ô¹"
+ "¡Ô¹¹Ã"
+ "¡Ô¹ÃÕ"
+ "¡ÔÃÔ³Õ"
+ "¡ÔÃÔÂÒ"
+ "¡ÔàŹ"
+ "¡ÔàÅÊ"
+ "¡ÔâÁâ¹"
+ "¡Ôâµչ"
+ "¡ÔâÅ"
+ "¡ÔâÅ¡ÃÑÁ"
+ "¡ÔâÅÅÔµÃ"
+ "¡ÔâÅàÁµÃ"
+ "¡ÔâÅàÎÔõ«ì"
+ "¡Ôè§"
+ "¡ÔèÇ"
+ "¡Ô駡×Í"
+ "¡Ô駡èÒ"
+ "¡Ôê¡"
+ "¡Ôêº"
+ "¡ÔëÇ"
+ "¡Õ¯ÇÔ·ÂÒ"
+ "¡Õ´"
+ "¡ÕµÒÃì"
+ "¡Õº"
+ "¡ÕÌÒ"
+ "¡Õè"
+ "¡Õé"
+ "¡Õë"
+ "¡Ö¡"
+ "¡Ö¡¡éͧ"
+ "¡Öè§"
+ "¡Öë¹"
+ "¡Ø"
+ "¡Ø¡"
+ "¡Ø¡¡Ñ¡"
+ "¡Ø­ªÃ"
+ "¡Ø­á¨"
+ "¡Ø®ØÁ¾Õ"
+ "¡Ø¯°Ñ§"
+ "¡Ø¯Ô"
+ "¡Ø³±Å"
+ "¡Ø´"
+ "¡Ø´Ñ§"
+ "¡Ø´Ñè¹"
+ "¡Ø¹"
+ "¡Ø¹«×Í"
+ "¡Ø¹àªÕ§"
+ "¡Øº"
+ "¡ØÁ"
+ "¡ØÁÀÒ"
+ "¡ØÁÀì"
+ "¡ØÁÒÃ"
+ "¡ØÁÒÃÒ"
+ "¡ØÁÒÃÕ"
+ "¡ØÂ"
+ "¡ØªèÒÂ"
+ "¡ØÂàΧ"
+ "¡ØÅ"
+ "¡ØŸԴÒ"
+ "¡ØźصÃ"
+ "¡ØÅʵÃÕ"
+ "¡ØÅÒ"
+ "¡ØÅÕ"
+ "¡ØÅաبÍ"
+ "¡ØÈÅ"
+ "¡ØÈâźÒÂ"
+ "¡ØËÅÒº"
+ "¡ØèÁ"
+ "¡Øé§"
+ "¡Øê¡"
+ "¡Øê¹"
+ "¡ØêÂ"
+ "¡ØëÂ"
+ "¡Ù"
+ "¡Ù³±ì"
+ "¡Ù´"
+ "¡Ùº"
+ "¡Ùè"
+ "¡Ùé"
+ "¡àÌÇÃÒ¡"
+ "¡ç"
+ "¡è§"
+ "¡è¹"
+ "¡èÍ"
+ "¡èͧ"
+ "¡è͹"
+ "¡èÒÂ"
+ "¡èÓ"
+ "¡é§â¤é§"
+ "¡é¹"
+ "¡éÁ"
+ "¡éÍ"
+ "¡éͧ"
+ "¡é͹"
+ "¡éÍÁ"
+ "¡éÍÂ"
+ "¡éÍÃèÍ¡é͵ԡ"
+ "¡éÒ§"
+ "¡éÒ¹"
+ "¡éÒÁ"
+ "¡éÒÇ"
+ "¡éÓ"
+ "¡éÓ¡Öè§"
+ "¡éÓà¡Ô¹"
+ "¡ê¡"
+ "¡ê§"
+ "¡êÍ¡"
+ "¡êͺ»Õé"
+ "¡êÍ»»Õé"
+ "¡êÒ«"
+ "¡êÒ´"
+ "¡ë§"
+ "¡ëÇÂàµÕëÂÇ"
+ "¡ëÍÂ"
+ "¡ëÒ"
+ "¢§¨×êÍ"
+ "¢¨Ã"
+ "¢¨Ñ´"
+ "¢¨ÒÂ"
+ "¢¨Õ"
+ "¢¨ØÂ"
+ "¢³Ð"
+ "¢´"
+ "¢¹"
+ "¢¹§"
+ "¢¹´"
+ "¢¹¹"
+ "¢¹º"
+ "¢¹Á"
+ "¢¹Áͺ"
+ "¢¹Ñ´"
+ "¢¹Ñ¹"
+ "¢¹Ò¡"
+ "¢¹Ò§"
+ "¢¹Ò´"
+ "¢¹Ò¹"
+ "¢¹Òº"
+ "¢¹ÒÂ"
+ "¢¹ÔÉ°Ò"
+ "¢¹Ø¹"
+ "¢º"
+ "¢º¶"
+ "¢ºÇ¹"
+ "¢Á"
+ "¢ÁÇ´"
+ "¢Áͧ"
+ "¢ÁÍÂ"
+ "¢Áѧ"
+ "¢ÁѺ"
+ "¢ÁÒ"
+ "¢ÁÔº"
+ "¢ÁÔé¹"
+ "¢ÁÕ¢Áѹ"
+ "¢ÁÖ§"
+ "¢ÁØ¡¢ÁÍÁ"
+ "¢ÁØ¡¢ÁÑÇ"
+ "¢Áغ"
+ "¢Áغ¢ÁÔº"
+ "¢ÁèÍÁ"
+ "¢ÁéÓ"
+ "¢ÂÍ¡"
+ "¢Âͧ"
+ "¢ÂÐ"
+ "¢ÂÑ¡"
+ "¢Âѹ"
+ "¢ÂѺ"
+ "¢ÂÑé¹"
+ "¢ÂÒ´"
+ "¢ÂÒº"
+ "¢ÂÒÂ"
+ "¢ÂÓ"
+ "¢ÂÔ¡"
+ "¢ÂÔº"
+ "¢ÂÔèÁ"
+ "¢ÂÕé"
+ "¢ÂØ¡¢ÂÔ¡"
+ "¢ÂØ¡¢ÂØÂ"
+ "¢Âغ"
+ "¢Âغ¢ÂÔº"
+ "¢ÂØÁ"
+ "¢ÂØÂ"
+ "¢ÂØéÁ"
+ "¢ÂèÁ"
+ "¢Âè͹"
+ "¢Âé͹"
+ "¢ÂéÓ"
+ "¢ÃÁ"
+ "¢Ãäì"
+ "¢ÃÑÇ"
+ "¢ÃÔº"
+ "¢ÃÖÁ"
+ "¢ÃØ¢ÃÐ"
+ "¢Åѧ"
+ "¢ÅѺ"
+ "¢ÅÒ"
+ "¢ÅÒ´"
+ "¢ÅÔº"
+ "¢ÅØ¡"
+ "¢ÅØ¡¢ÅÑ¡"
+ "¢ÅØ¡¢ÅÔ¡"
+ "¢Åغ"
+ "¢ÅØÁ"
+ "¢ÅØèÂ"
+ "¢Ç§"
+ "¢Ç´"
+ "¢Ç¹¢ÇÒÂ"
+ "¢Çº"
+ "¢ÇÂ"
+ "¢ÇÑ¡ä¢Çè"
+ "¢ÇÑ­"
+ "¢ÇÑ´"
+ "¢ÇѺ"
+ "¢ÇѺà¢ÇÕÂÇ"
+ "¢ÇÑé¹"
+ "¢ÇÒ"
+ "¢ÇÒ¡"
+ "¢ÇÒ§"
+ "¢ÇÒ´"
+ "¢ÇÒ¹"
+ "¢ÇÒ¢ǹ"
+ "¢ÇÔ´"
+ "¢ÇéÒ§"
+ "¢Í"
+ "¢Í¡"
+ "¢Í§"
+ "¢Í´"
+ "¢Í¹"
+ "¢Íº"
+ "¢Íº¤Ø³"
+ "¢Íºã¨"
+ "¢ÍÁ"
+ "¢ÐÁÍÁ¢ÐáÁÁ"
+ "¢ÐÁÑ¡à¢Áé¹"
+ "¢ÐÁØ¡¢ÐÁÍÁ"
+ "¢ÐÂÔ¡"
+ "¢ÐÂØ¡"
+ "¢ÐàÂéÍá¢Âè§"
+ "¢ÐáÂÐ"
+ "¢Ñ§"
+ "¢Ñ³±Ê¡Ã"
+ "¢Ñ³±ÊÕÁÒ"
+ "¢Ñ´"
+ "¢ÑµµÔÂÁÒ¹Ð"
+ "¢Ñ¹"
+ "¢Ñ¹ªÐà¹ÒÐ"
+ "¢Ñ¹µÔ"
+ "¢Ñ¹·Õ"
+ "¢Ñ¹¸ì"
+ "¢Ñ¹ËÁÒ¡"
+ "¢Ñ¹âµ¡"
+ "¢Ñº"
+ "¢ÑÂ"
+ "¢Ñé¹"
+ "¢ÑéÇ"
+ "¢Ò"
+ "¢Ò¡"
+ "¢Ò¡êÇÂ"
+ "¢Ò§"
+ "¢Ò´"
+ "¢Ò¹"
+ "¢Òº"
+ "¢ÒÁ"
+ "¢ÒÂ"
+ "¢ÒÅ"
+ "¢ÒÇ"
+ "¢Ó"
+ "¢Ô¡"
+ "¢Ô§"
+ "¢ÔÁ"
+ "¢Ôè§"
+ "¢Õ´"
+ "¢Õ»¹ÒÇظ"
+ "¢Õè"
+ "¢Õé"
+ "¢ÕéàËÃè"
+ "¢Ö§"
+ "¢Öé§"
+ "¢Öé¹"
+ "¢Ö鹩èÒÂ"
+ "¢×¹"
+ "¢×è¹"
+ "¢×èÍ"
+ "¢Ø¡"
+ "¢Ø´"
+ "¢Ø¹"
+ "¢Ø¹·Í§"
+ "¢Ø¹á¼¹"
+ "¢ØÁ"
+ "¢ØÂ"
+ "¢Øè¹"
+ "¢Ù´"
+ "¢Ùè"
+ "¢âÁÂ"
+ "¢èÁ"
+ "¢èǹ"
+ "¢èÍ"
+ "¢è͹"
+ "¢èÍÂ"
+ "¢èÒ"
+ "¢èÒ§"
+ "¢èÒÂ"
+ "¢èÒÇ"
+ "¢èÒÇÊÒÃ"
+ "¢é¹"
+ "¢éÍ"
+ "¢éͧ"
+ "¢é͹"
+ "¢éÍÁÙÅ"
+ "¢éÍÂ"
+ "¢éÒ"
+ "¢éÒ§"
+ "¢éÒ¾à¨éÒ"
+ "¢éÒÁ"
+ "¢éÒÇ"
+ "¢éÒÇÊÒÃ"
+ "¢éÒÇàÁèÒ"
+ "¢éÒÇâ¾´"
+ "¢éÒÈÖ¡"
+ "¢éÒËÅǧ"
+ "¤¤¹ÑÁ¾Ã"
+ "¤¤¹Ò§¤ì"
+ "¤¤¹Ò¹µì"
+ "¤§"
+ "¤§¤Ò"
+ "¤ªÃÒª"
+ "¤ªÊÒÃ"
+ "¤ªÒªÒµÔ"
+ "¤ªÒªÕ¾"
+ "¤ªÒ¸ÒÃ"
+ "¤ªÒÀóì"
+ "¤³¹Ò"
+ "¤³º´Õ"
+ "¤³Ð"
+ "¤³Ò¨ÒÃÂì"
+ "¤³Ò¸Ô¡ÒÃ"
+ "¤³Ò¸Ô»äµÂ"
+ "¤³Ò¹Ñº"
+ "¤³Ô¡Ò"
+ "¤³Ôµ"
+ "¤³ÔµÈÒʵÃì"
+ "¤´"
+ "¤´Õ"
+ "¤µÔ"
+ "¤µÔ¸ÃÃÁ"
+ "¤µÔ¾¨¹ì"
+ "¤·Ò"
+ "¤¹"
+ "¤¹¸Ãþì"
+ "¤¹â·"
+ "¤º"
+ "¤Á"
+ "¤Á¹Ò¡ÒÃ"
+ "¤Á¹Ò¤Á"
+ "¤Ã¡"
+ "¤Ãº"
+ "¤ÃêԵ"
+ "¤ÃÃÀ"
+ "¤ÃÃÀì"
+ "¤ÃÃÅͧ"
+ "¤ÃÃâŧ"
+ "¤ÃÃäÅ"
+ "¤ÃÇ­"
+ "¤ÃÇÑ¡"
+ "¤ÃÇÕ"
+ "¤ÃËÒ"
+ "¤ÃÍ¡"
+ "¤Ãͧ"
+ "¤Ãͧá¤Ã§"
+ "¤Ãͺ"
+ "¤Ãͺ¤ÃÑÇ"
+ "¤ÃÐ"
+ "¤ÃÑ´à¤Ãè§"
+ "¤Ãѹ"
+ "¤ÃѺ"
+ "¤ÃÑÇ"
+ "¤ÃÑè§"
+ "¤ÃÑè¹"
+ "¤ÃÑé§"
+ "¤ÃÑé¹"
+ "¤ÃÒ"
+ "¤ÃÒ¡"
+ "¤ÃÒ§"
+ "¤ÃÒ­"
+ "¤ÃÒ´"
+ "¤ÃÒº"
+ "¤ÃÒÁ"
+ "¤ÃÒÇ"
+ "¤ÃÒÊ"
+ "¤ÃÓ"
+ "¤ÃÔʵ¡ÒÅ"
+ "¤ÃÔʵѧ"
+ "¤ÃÔʵì"
+ "¤ÃÔʵìÁÒÊ"
+ "¤ÃÔÊàµÕ¹"
+ "¤ÃÕº"
+ "¤ÃÕÁ"
+ "¤ÃÖ"
+ "¤ÃÖ¡¤Ã×é¹"
+ "¤ÃÖ¡â¤ÃÁ"
+ "¤ÃÖ¹"
+ "¤ÃÖÁ"
+ "¤ÃÖè§"
+ "¤ÃÖéÁ"
+ "¤Ã×´"
+ "¤Ã×¹"
+ "¤Ã×Í"
+ "¤Ã×é¹"
+ "¤Ã×鹤ÃÖ¡"
+ "¤ÃØ"
+ "¤Ãر"
+ "¤ÃØÁà¤Ã×Í"
+ "¤ÃØÂ"
+ "¤ÃØè¹"
+ "¤ÃÙ"
+ "¤ÃÙ´"
+ "¤ÃÙè"
+ "¤Ãè§"
+ "¤ÃèÍÁ"
+ "¤ÃèÒ"
+ "¤ÃèÒÇ"
+ "¤ÃèÓ"
+ "¤ÃéÒ¹"
+ "¤ÃéÒÁ"
+ "¤ÄË"
+ "¤ÄËÑʶì"
+ "¤ÄËÒʹì"
+ "¤ÅÍ"
+ "¤ÅÍ¡"
+ "¤Åͧ"
+ "¤ÅÍ´"
+ "¤Å͹"
+ "¤ÅÍÃÕ¹"
+ "¤ÅÍâÿÍÃìÁ"
+ "¤ÅÍâÿÕÅÅì"
+ "¤ÅÐ"
+ "¤ÅÑ¡"
+ "¤Åѧ"
+ "¤Åѵªì"
+ "¤ÅѺ"
+ "¤ÅÑè¡"
+ "¤ÅÑè§"
+ "¤ÅÒ"
+ "¤ÅÒ§á¤Å§"
+ "¤ÅÒ´"
+ "¤ÅÒ¹"
+ "¤ÅÒÂ"
+ "¤ÅÒÊ"
+ "¤ÅÒÊÊÔ¤"
+ "¤ÅÓ"
+ "¤ÅÔ¹Ô¡"
+ "¤ÅÔé¡"
+ "¤ÅÕ"
+ "¤ÅÕ¹Ô¤"
+ "¤ÅÕè"
+ "¤ÅÖ§"
+ "¤Å×è¹"
+ "¤Å×è¹àËÕ¹"
+ "¤Å×è¹äÊé"
+ "¤ÅØ¡"
+ "¤ÅØÁ"
+ "¤ÅØèÁ"
+ "¤ÅØé§"
+ "¤ÅØéÁ"
+ "¤Åèͧ"
+ "¤Åèͧá¤ÅèÇ"
+ "¤ÅèÓ"
+ "¤Åéͧ"
+ "¤ÅéÍÂ"
+ "¤ÅéÒÂ"
+ "¤ÅéÓ"
+ "¤Ç§"
+ "¤Çº"
+ "¤ÇÃ"
+ "¤ÇÑ¡"
+ "¤Çѹ"
+ "¤ÇÑè¹"
+ "¤ÇÒ¡"
+ "¤ÇÒ­"
+ "¤ÇÒ¹"
+ "¤ÇÒÁ"
+ "¤ÇÒÂ"
+ "¤ÇÔ¹Ô¹"
+ "¤ÇÕ¹"
+ "¤ÇèÓ"
+ "¤ÇéÒ"
+ "¤ÇéÒ§"
+ "¤ÇéÒ¹"
+ "¤Ë¡ÃÃÁ"
+ "¤Ë¡ÃÃÁÈÒʵÃì"
+ "¤Ëº´Õ"
+ "¤Ë»µÒ¹Õ"
+ "¤Í"
+ "¤Í¡"
+ "¤Í´"
+ "¤Í¹"
+ "¤Í¹¡ÃÕµ"
+ "¤Í¹¿Ô¡"
+ "¤Í¹à´¹à«ÍÃì"
+ "¤Í¹àÊÔÃìµ"
+ "¤Í¹àÊÔÃì·"
+ "¤Í¹áǹµì"
+ "¤ÍÁ"
+ "¤ÍÁ¾ÔÇàµÍÃì"
+ "¤ÍÁÁÒ¹â´"
+ "¤ÍÁÁÔǹÔʵì"
+ "¤ÍÁᾤ"
+ "¤ÍÁâ¾à¹¹·ì"
+ "¤ÍÂ"
+ "¤ÍÂÅì"
+ "¤ÍÃÑ»ªÑè¹"
+ "¤ÍÃì«Ô¡Ò"
+ "¤ÍÃì´"
+ "¤ÍÃì»ÍàêÑè¹"
+ "¤ÍÅÑÁ¹ì"
+ "¤ÍʵÒÃÔ¡Ò"
+ "¤ÍफÍ´ì"
+ "¤ÍàÅÊàµÍÃÍÅ"
+ "¤Ð"
+ "¤Ð¹Í§"
+ "¤Ð¹Ö§"
+ "¤Ð¹éÒ"
+ "¤ÐÁÓ"
+ "¤ÐÂÑ鹤ÐÂÍ"
+ "¤Ðà¹"
+ "¤ÐàÂÍ"
+ "¤Ðá¹¹"
+ "¤Ñ¡"
+ "¤Ñ¤¹ÑÁ¾Ã"
+ "¤Ñ¤¹Ò§¤ì"
+ "¤Ñ¤¹Ò¹µì"
+ "¤Ñ³±ÊÙµÃ"
+ "¤Ñ´"
+ "¤Ñ·ÅÕÂÒ"
+ "¤Ñ¹"
+ "¤Ñ¹©ÒÂ"
+ "¤Ñ¹·Ã§"
+ "¤Ñº"
+ "¤ÑÁÀÕÃÀÒ¾"
+ "¤ÑÁÀÕÃì"
+ "¤Ñè¡"
+ "¤Ñè§"
+ "¤Ñè¹"
+ "¤ÑèÇ"
+ "¤Ñé¹"
+ "¤Ò"
+ "¤Ò§"
+ "¤Ò§¤¡"
+ "¤Ò´"
+ "¤Ò¶Ò"
+ "¤Ò·ÍÅÔ¡"
+ "¤Ò¹"
+ "¤Òº"
+ "¤ÒÁ"
+ "¤ÒÁÇÒÊÕ"
+ "¤ÒÂ"
+ "¤ÒÃÁ"
+ "¤ÒÃÇÐ"
+ "¤ÒÃÒÇÒ¹"
+ "¤ÒÃÒàµé"
+ "¤ÒÃÒâÍà¡Ð"
+ "¤ÒÃì"
+ "¤ÒÃìºÍ¹"
+ "¤ÒÃìºÍ¹Á͹͡䫴ì"
+ "¤ÒÃìºÍ¹ä´ÍÍ¡ä«´ì"
+ "¤ÒÃìºÍÅÔ¡"
+ "¤ÒÃìºÍ๵"
+ "¤ÒÃìºÙàÃàµÍÃì"
+ "¤ÒÃìÅ"
+ "¤ÒÃìâºäÎà´Ãµ"
+ "¤ÒÇ"
+ "¤ÒÇÕ"
+ "¤Òà¸Âì"
+ "¤Òà¿è"
+ "¤Ó"
+ "¤Ó¹Ç³"
+ "¤Ó¹Ñº"
+ "¤Ó¹Ö§"
+ "¤Óù"
+ "¤Óú"
+ "¤ÓÃÒÁ"
+ "¤Óá˧"
+ "¤Óãµé"
+ "¤Ô¡"
+ "¤Ô§"
+ "¤Ô´"
+ "¤ÔÁËѹµì"
+ "¤ÔÇ"
+ "¤ÔéÇ"
+ "¤Õµ"
+ "¤Õ¹ÂÒ"
+ "¤Õº"
+ "¤ÕÁ"
+ "¤ÕÂì"
+ "¤ÕÂìºÍÃì´"
+ "¤ÕÃÕ"
+ "¤Õè"
+ "¤Ö¡"
+ "¤Ö¡¤Ñ¡"
+ "¤Öè¡"
+ "¤×¹"
+ "¤×º"
+ "¤×Í"
+ "¤Ø"
+ "¤Ø¡"
+ "¤Ø¡¡Õé"
+ "¤Ø³"
+ "¤Ø³¸ÃÃÁ"
+ "¤Ø³ÀÒ¾"
+ "¤Ø³ÇزÔ"
+ "¤Ø³ÈѾ·ì"
+ "¤Ø³ÊÁºÑµÔ"
+ "¤Ø³Ò¡Ã"
+ "¤Ø³Ù»¡ÒÃ"
+ "¤Ø´"
+ "¤Ø´·ÐÃÒ´"
+ "¤ØÁ"
+ "¤ØÂ"
+ "¤ØÃØ"
+ "¤Øâ³»¡ÒÃ"
+ "¤ØèÁ"
+ "¤Øé§"
+ "¤Øé¹"
+ "¤ØéÁ"
+ "¤ØéÂ"
+ "¤Ù"
+ "¤Ù³"
+ "¤Ù¹"
+ "¤Ù»Í§"
+ "¤ÙËÒ"
+ "¤Ùè"
+ "¤Ùé"
+ "¤à¹¨Ã"
+ "¤çÍ¡à·Å"
+ "¤è͹"
+ "¤èÍÁ"
+ "¤èÍÂ"
+ "¤èÐ"
+ "¤èÒ"
+ "¤èÒ§"
+ "¤èÒÂ"
+ "¤èÓ"
+ "¤é¹"
+ "¤é͹"
+ "¤éÍÁ"
+ "¤éÒ"
+ "¤éÒ§"
+ "¤éÒ§¤ÒÇ"
+ "¤éÒ§àµÔè§"
+ "¤éÒ¹"
+ "¤éÓ"
+ "¦ÃÒÇÒÊ"
+ "¦Òµ"
+ "¦Òµ¡Ã"
+ "¦Òµ¡ÃÃÁ"
+ "¦èÒ"
+ "¦éͧ"
+ "§¡"
+ "§§"
+ "§§§ÇÂ"
+ "§´"
+ "§º"
+ "§Á"
+ "§Ç§"
+ "§Ç´"
+ "§Ç§§"
+ "§Í"
+ "§Í¡"
+ "§Í¡á§¡"
+ "§Í´"
+ "§Í´á§´"
+ "§Í¹"
+ "§Í¹Ë§èÍ"
+ "§Íº"
+ "§ÍÁ"
+ "§ÍÂ"
+ "§Íá§"
+ "§Ð"
+ "§Ñ¡"
+ "§Ñ´"
+ "§Ñ¹"
+ "§Ñº"
+ "§ÑÇ"
+ "§ÑÇà§ÕÂ"
+ "§Ñè¡"
+ "§Ñè§"
+ "§ÑèÇ"
+ "§Ò"
+ "§Ò¹"
+ "§Òº"
+ "§ÒÁ"
+ "§ÒÂ"
+ "§Ó"
+ "§ÔéÇ"
+ "§Õº"
+ "§Ö¡"
+ "§ÖÁ"
+ "§ÖÁ§Ó"
+ "§Ø´"
+ "§Ø¹§§"
+ "§Øº"
+ "§Øº§Ôº"
+ "§ØÂ"
+ "§Ø蹧èÒ¹"
+ "§ØèÁ§èÒÁ"
+ "§ØéÁ"
+ "§Ù"
+ "§ÙÊÇÑ´"
+ "§èǧ"
+ "§èǹ"
+ "§èͧ"
+ "§è͹"
+ "§èÍÂ"
+ "§èÒ"
+ "§èÒ¹"
+ "§èÒÁ"
+ "§èÒÂ"
+ "§èÓ"
+ "§éǹ"
+ "§éÍ"
+ "§éÍÁ"
+ "§éÒ§"
+ "§éÒÇ"
+ "§éÓ"
+ "¨¡"
+ "¨§"
+ "¨§¡Å¹Õ"
+ "¨§ÍÒ§"
+ "¨´"
+ "¨µØ"
+ "¨µØç¤ì"
+ "¨µØþԸ"
+ "¨µØÊ´ÁÀì"
+ "¨¹"
+ "¨º"
+ "¨Á"
+ "¨ÁÙ¡"
+ "¨Ã"
+ "¨Ã¨Ñ´"
+ "¨Ã´"
+ "¨ÃÃÂÒ"
+ "¨ÃÃâŧ"
+ "¨ÃÅÕ"
+ "¨ÃÇ´"
+ "¨ÃÐà¢é"
+ "¨ÃÑÅ"
+ "¨ÃÑÊ"
+ "¨ÃÒ¨Ã"
+ "¨ÃÔ§"
+ "¨ÃÔµ"
+ "¨ÃÔ¸ÃÃÁ"
+ "¨ÃÔÂÈÒʵÃì"
+ "¨ÃÔÂÈÖ¡ÉÒ"
+ "¨ÃÔÂÒ"
+ "¨Ãا"
+ "¨ÃÙ­"
+ "¨Å"
+ "¨Å¹¾ÅÈÒʵÃì"
+ "¨Å¹ÈÒʵÃì"
+ "¨ÅÒ¨Å"
+ "¨Ç¡"
+ "¨Ç§"
+ "¨Ç¹"
+ "¨Çº"
+ "¨ÇÑ¡"
+ "¨Í"
+ "¨Í¡"
+ "¨Í§"
+ "¨Í§Ëͧ"
+ "¨Í´"
+ "¨Í¹"
+ "¨Íº"
+ "¨ÍÁ"
+ "¨ÍÃìá´¹"
+ "¨Íá¨"
+ "¨Ð"
+ "¨Ð¡ÅÐ"
+ "¨Ð¡ÅÒÁ"
+ "¨ÐÅÐËÇÑè¹"
+ "¨ÐÅÐàÁç´"
+ "¨Ðà¢é"
+ "¨Ñ¡"
+ "¨Ñ¡¢Ø"
+ "¨Ñ¡¨Ñè¹"
+ "¨Ñ¡Ã"
+ "¨Ñ¡Ã¾ÃôÔ"
+ "¨Ñ¡ÃÀ¾"
+ "¨Ñ¡ÃÂÒ¹"
+ "¨Ñ¡ÃÇÃôÔ"
+ "¨Ñ¡ÃÇÒÅ"
+ "¨Ñ¡ÃÕ"
+ "¨Ñ¡ÉØ"
+ "¨Ñ¡áËÅè¹"
+ "¨Ñ§"
+ "¨Ñ§¡Íº"
+ "¨Ñ§¡éÒ"
+ "¨Ñ§§Ñ§"
+ "¨Ñ§ËÇÐ"
+ "¨Ñ§ËÇÑ´"
+ "¨Ñ§Ëѹ"
+ "¨Ñ§äÃ"
+ "¨Ñ­äÃ"
+ "¨Ñ³±ÒÅ"
+ "¨Ñ³±ì"
+ "¨Ñ´"
+ "¨Ñ´¡ÒÃ"
+ "¨ÑµÇÒ"
+ "¨ÑµØÃÑÊ"
+ "¨Ñ¹"
+ "¨Ñ¹·¹ì"
+ "¨Ñ¹·ºØÃÕ"
+ "¨Ñ¹·Ã"
+ "¨Ñ¹·Ã¤µÔ"
+ "¨Ñ¹·Ã¤ÃÒÊ"
+ "¨Ñ¹·ÃØ»ÃÒ¤Ò"
+ "¨Ñ¹·Ãì"
+ "¨Ñº"
+ "¨Ñº¡Ñ§"
+ "¨Ñº©èÒÂ"
+ "¨Ñè¹"
+ "¨ÑèÇ"
+ "¨Ñé¡"
+ "¨ÑꡨÕé"
+ "¨Ñê¡à´ÕÂÁ"
+ "¨ÑêÇÐ"
+ "¨Ò¡"
+ "¨Ò§"
+ "¨Ò´"
+ "¨ÒµØç¤Êѹ¹ÔºÒµ"
+ "¨Ò¹"
+ "¨Òº"
+ "¨ÒºÑÅ"
+ "¨ÒºÑÅÂì"
+ "¨ÒÁ"
+ "¨ÒÁ¨ØÃÕ"
+ "¨ÒÁÃ"
+ "¨ÒÁÃÕ"
+ "¨ÒÃ"
+ "¨ÒÃкÕ"
+ "¨ÒÃÐä¹"
+ "¨ÒÃÔ¡"
+ "¨ÒÃÕ"
+ "¨ÒÃÕµ"
+ "¨ÒÃÖ¡"
+ "¨ÒÇ"
+ "¨ÒÇÒ"
+ "¨ÒàÁ¡Ò"
+ "¨Ó"
+ "¨Ó¡Ñ´"
+ "¨Ó¹§"
+ "¨Ó¹¹"
+ "¨Ó¹ÃèÒ"
+ "¨Ó¹Ãèì"
+ "¨Ó¹Ç¹"
+ "¨Ó¹Í§"
+ "¨Ó¹Ó"
+ "¨Ó»Ò"
+ "¨Ó»Õ"
+ "¨Ó¾Ç¡"
+ "¨ÓÃÑÊ"
+ "¨ÓÃÙ­"
+ "¨ÓÅͧ"
+ "¨Ó˹èÒÂ"
+ "¨ÓÍÇ´"
+ "¨Óà¾ÒÐ"
+ "¨ÓàÃÔ­"
+ "¨ÓàÃÕ§"
+ "¨ÓàÅÂ"
+ "¨Óṡ"
+ "¨Ô¡"
+ "¨Ô§â¨é"
+ "¨Ôµ"
+ "¨ÔµÃ"
+ "¨ÔµÃ¡Ã"
+ "¨ÔµÃ¡ÃÃÁ"
+ "¨ÔµÃÅ´Ò"
+ "¨ÔµÇÔ·ÂÒ"
+ "¨ÔµàǪ"
+ "¨Ôµá¾·Âì"
+ "¨Ô¹´Ò"
+ "¨Ô¹µ¡ÇÕ"
+ "¨Ô¹µ¹Ò"
+ "¨Ô¹µ¹Ò¡ÒÃ"
+ "¨Ô¹µÀÒ¾"
+ "¨Ôº"
+ "¨Ô»Ò¶Ð"
+ "¨ÔèÁ"
+ "¨Ô駨¡"
+ "¨Ô駨͡"
+ "¨Ôé§ËÃÕ´"
+ "¨Ôé§àËŹ"
+ "¨ÔéÁ"
+ "¨ÔëÇ"
+ "¨Õ¹"
+ "¨Õ¹áÊ"
+ "¨Õº"
+ "¨ÕÇÃ"
+ "¨Õè"
+ "¨Õé"
+ "¨Õê"
+ "¨Õê´"
+ "¨Õë"
+ "¨Ö§"
+ "¨Öè§"
+ "¨Öé§"
+ "¨×´"
+ "¨Ø"
+ "¨Ø¡"
+ "¨Ø´"
+ "¨ØµÔ"
+ "¨Ø¹"
+ "¨Øº"
+ "¨Øº¨Ôº"
+ "¨ØÁ¾¯"
+ "¨ØÁ¾Ôµ"
+ "¨ØŨÍÁ"
+ "¨ØŪվ"
+ "¨ØŪÕÇѹ"
+ "¨ØŪÕÇÔ¹"
+ "¨ØÅ·ÃÃȹì"
+ "¨ØÅÀÒ¤"
+ "¨ØÅÇÃä"
+ "¨ØÅÈÑ¡ÃÒª"
+ "¨ØÅÊÒÃ"
+ "¨ØÅÔ¹·ÃÕÂì"
+ "¨ØÌÒ"
+ "¨ØÌÒŧ¡Ã³ì"
+ "¨Øè§"
+ "¨Øè¹"
+ "¨ØèÁ"
+ "¨Øé¹"
+ "¨Ø鹨Ùê"
+ "¨ØéÁ"
+ "¨ØéÂ"
+ "¨Øê¡¡ÃÙê"
+ "¨Øêº"
+ "¨Øêºá¨§"
+ "¨Ø맨Ôë§"
+ "¨ØëÁ¨ÔëÁ"
+ "¨Ù"
+ "¨Ù§"
+ "¨Ùº"
+ "¨Ùè"
+ "¨Ùé"
+ "¨Ùê´"
+ "¨Ùë"
+ "¨àÃ"
+ "¨èÍ"
+ "¨èÍÁ"
+ "¨èÒ"
+ "¨èÒ§"
+ "¨èÒÂ"
+ "¨é¹"
+ "¨éǧ"
+ "¨éÍ"
+ "¨éÍ¡"
+ "¨éÍ¡á¨é¡"
+ "¨éͧ"
+ "¨é͹"
+ "¨éÍÂ"
+ "¨éÐ"
+ "¨éÒ"
+ "¨éÒ§"
+ "¨éÒ¹"
+ "¨éÒÅÐËÇÑè¹"
+ "¨éÒÇ"
+ "¨éÓ"
+ "¨éÓ¨Õé"
+ "¨éÓÁèÓ"
+ "¨êÍ¡"
+ "¨êÐ"
+ "¨ëÍ"
+ "¨ëͧ"
+ "¨ëÍÂ"
+ "¨ëÐ"
+ "¨ëÒ"
+ "©¡"
+ "©¡Ãèì"
+ "©¡ÉѵÃÔÂì"
+ "©¡Ò¨"
+ "©¡ÒÁÒ¾¨Ã"
+ "©§¹"
+ "©§ÒÂ"
+ "©¹Ç¹"
+ "©¹Ñ§"
+ "©¹Ò¡"
+ "©¹Ó"
+ "©ºÑ§"
+ "©ºÑº"
+ "©Á"
+ "©ÁÇ¡"
+ "©Áѧ"
+ "©ÁÒ"
+ "©ÁÓ"
+ "©Å"
+ "©ÅÇÂ"
+ "©Åͧ"
+ "©ÅÍÁ"
+ "©ÅÑ¡"
+ "©ÅÒ¡"
+ "©ÅÒ´"
+ "©ÅÒÁ"
+ "©ÅÒÂ"
+ "©ÅÔÇ"
+ "©ÅØ"
+ "©ÅØ¡©ÅÇÂ"
+ "©ÅÙ"
+ "©ÇÂ"
+ "©ÇÑ´à©ÇÕ¹"
+ "©ÇÒ§"
+ "©ÇÕ"
+ "©È¡"
+ "©Í¡"
+ "©Í´"
+ "©ÍàÅÒÐ"
+ "©Ð"
+ "©Ð©Ò¹"
+ "©Ð¹Ñé¹"
+ "©Ð¹Õé"
+ "©ÐÍé͹"
+ "©ÑµÃ"
+ "©Ñ¹"
+ "©Ñ¹·Åѡɳì"
+ "©Ñ¹·Ð"
+ "©Ñ¹·Ò"
+ "©Ñ¹·Ò¹ØÁѵÔ"
+ "©Ñ¹·ì"
+ "©Ñº"
+ "©Ò¡"
+ "©Ò§"
+ "©Ò´"
+ "©Ò¹"
+ "©Òº"
+ "©ÒÂ"
+ "©ÒÂÒ"
+ "©ÒÇ"
+ "©Ó©Ò"
+ "©Ô¹"
+ "©Ôº"
+ "©ÔÁ¾ÅÕ"
+ "©ÔÇ"
+ "©Ôè§"
+ "©Õ¡"
+ "©Õ´"
+ "©Õè"
+ "©Ø"
+ "©Ø¡"
+ "©Ø¡à©Ô¹"
+ "©Ø´"
+ "©Ø¹"
+ "©ØÂ"
+ "©Ù´"
+ "©Ùè"
+ "©èͧ"
+ "©èÍÂ"
+ "©èÒ"
+ "©èÒ§"
+ "©èÓ"
+ "©éÍ"
+ "ª¡"
+ "ª§"
+ "ª§â¤"
+ "ª®Ò"
+ "ª´"
+ "ª¹"
+ "ª¹¡"
+ "ª¹¹Õ"
+ "ª¹Á¾ÃÃÉÒ"
+ "ª¹Áì"
+ "ª¹Ç¹"
+ "ª¹Ð"
+ "ª¹Ñ¡"
+ "ª¹Ô´"
+ "ªºÒ"
+ "ªÁ"
+ "ªÁ´ªÁéÍÂ"
+ "ªÁ¾Ù"
+ "ªÁ¾Ù¹·"
+ "ªÁ¾Ù¹Ø·"
+ "ªÁ¾Ùè"
+ "ªÁÃÁ"
+ "ªÁÒ"
+ "ªÁéÍÂ"
+ "ªÁéÒÂ"
+ "ªÂ"
+ "ªÃ"
+ "ªÃÐ"
+ "ªÃÑÇ"
+ "ªÃÒ"
+ "ªÅ"
+ "ªÅ¸ÒÃ"
+ "ªÅ¸Õ"
+ "ªÅ¹Ò"
+ "ªÅ»Ãзҹ"
+ "ªÅÒÅÑÂ"
+ "ªÅÒÈÑÂ"
+ "ªÇ"
+ "ªÇ´"
+ "ªÇ¹"
+ "ªÇÃ"
+ "ªÇÅÔµ"
+ "ªÇÒ"
+ "ªÇÒÅ"
+ "ªÍ¡"
+ "ªÍ¡ªéÓ"
+ "ªÍ§"
+ "ªÍ¹"
+ "ªÍº"
+ "ªÍ»»Ôé§"
+ "ªÍÁ"
+ "ªÍÅì¡"
+ "ªÍ×éÍ"
+ "ªÍØèÁ"
+ "ªÍèÓ"
+ "ªÐ"
+ "ªÐ§Ñ¡"
+ "ªÐ§Ñ´"
+ "ªÐ§ØéÁ"
+ "ªÐ§è͹"
+ "ªÐ§éÓ"
+ "ªÐµÒ"
+ "ªÐ¹Õ"
+ "ªÐÁ´"
+ "ªÐÁÑ´"
+ "ªÐÃÍÂ"
+ "ªÐÅÍ"
+ "ªÐÅÍÁ"
+ "ªÐÅÙ´"
+ "ªÐÅèÒ"
+ "ªÐà§éÍ"
+ "ªÐà¹ÒÐ"
+ "ªÐá§é"
+ "ªÐáŧ"
+ "ªÐ⧡"
+ "ªÐâ´"
+ "ªÑ¡"
+ "ªÑ§"
+ "ªÑªÇÒÅ"
+ "ªÑ¯"
+ "ªÑ´"
+ "ªÑ¹"
+ "ªÑ¹¹ÐµØ"
+ "ªÑ¹ÉÒ"
+ "ªÑ¹ÊÙµÃ"
+ "ªÑÂ"
+ "ªÑ¾ġÉì"
+ "ªÑÂÀÙÁÔ"
+ "ªÑè§"
+ "ªÑèÇ"
+ "ªÑèÇâÁ§"
+ "ªÑé¹"
+ "ªÑéÇ"
+ "ªÒ"
+ "ªÒ­"
+ "ªÒ´"
+ "ªÒ´¡"
+ "ªÒµÃÕ"
+ "ªÒµÐ"
+ "ªÒµÔ"
+ "ªÒ¹"
+ "ªÒ¹Ø"
+ "ªÒÁ"
+ "ªÒÂ"
+ "ªÒÂÒ"
+ "ªÒÅÒ"
+ "ªÒÇ"
+ "ªÒÇàÅ"
+ "ªÓ"
+ "ªÓ¹Ñ­"
+ "ªÓ¹Ò­"
+ "ªÓ¹Ô"
+ "ªÓÃÐ"
+ "ªÓÃØ´"
+ "ªÓÃèÇÂ"
+ "ªÓà¹Õ¹"
+ "ªÓà¹ÕÂÃ"
+ "ªÓàÃÒ"
+ "ªÓàÅ×ͧ"
+ "ªÓáËÅÐ"
+ "ªÔ"
+ "ªÔ¤Òâ¡"
+ "ªÔ§"
+ "ªÔ§ªéÒ"
+ "ªÔ´"
+ "ªÔ¹"
+ "ªÔ»"
+ "ªÔ¾"
+ "ªÔÁ"
+ "ªÔÁỹ«Õ"
+ "ªÔÇËÒ"
+ "ªÔè§"
+ "ªÔé¹"
+ "ªÕ"
+ "ªÕ»Ð¢ÒÇ"
+ "ªÕ¾"
+ "ªÕ¾ÔµÑ¡ÉÑÂ"
+ "ªÕÇ»ÃÐÇѵÔ"
+ "ªÕÇÇÔ·ÂÒ"
+ "ªÕÇÒµÁì"
+ "ªÕÇÒÅÑÂ"
+ "ªÕÇÔµ"
+ "ªÕÇԵѡÉÑÂ"
+ "ªÕÇÔ¹"
+ "ªÕÇÕ"
+ "ªÕÇà¤ÁÕ"
+ "ªÕé"
+ "ª×´"
+ "ª×è¹"
+ "ª×è¹Á×è¹"
+ "ª×èÍ"
+ "ª×é¹"
+ "ª×éÍ"
+ "ªØ¡"
+ "ªØ´"
+ "ªØ¹"
+ "ªØº"
+ "ªØÁ"
+ "ªØÁ¹ØÁ"
+ "ªØÁ¾Ã"
+ "ªØÅÁع"
+ "ªØÅÕ"
+ "ªØèÁ"
+ "ªØèÂ"
+ "ªØé§"
+ "ªÙ"
+ "ªÙé"
+ "ªâÂ"
+ "ªâÅ·Ã"
+ "ªâÅÁ"
+ "ªäÁ"
+ "ªçÍ¡â¡àŵ"
+ "ªçÍ¡â¡áŵ"
+ "ªèǧ"
+ "ªèÇÂ"
+ "ªèÍ"
+ "ªèͧ"
+ "ªè͹"
+ "ªèÒ§"
+ "ªèÓ"
+ "ªèӪͧ"
+ "ªéͧ"
+ "ªé͹"
+ "ªéÍÂ"
+ "ªéÒ"
+ "ªéÒ§"
+ "ªéÓ"
+ "«¡"
+ "«´"
+ "«¹"
+ "Ǽ"
+ "«Á"
+ "«Ç´à«"
+ "«Ç¹"
+ "«ÇÂ"
+ "«Í"
+ "«Í¡"
+ "«Í§"
+ "«Í¹"
+ "«Í¿µìáÇÃì"
+ "«Í¿·ì"
+ "«Í¿·ìáÇÃì"
+ "«ÍÁ«èÍ"
+ "«ÍÂ"
+ "«ÍÊ"
+ "«Ñ¡"
+ "«Ñ§"
+ "«Ñ´"
+ "«Ñ¹"
+ "«Ñ¹µÒ¤ÅÍÊ"
+ "«Ñº"
+ "«Ñ¾¾ÍÃìµ"
+ "«ÑÅ¿Ò"
+ "«Ò"
+ "«Ò¡"
+ "«Ò¡ØÃÐ"
+ "«Ò§"
+ "«Ò¹"
+ "«Òº«Öé§"
+ "«Òº«èÒ¹"
+ "«ÒÁÙäÃ"
+ "«ÒÅÒà»Ò"
+ "«ÒÇ"
+ "«ÒÇ´ì"
+ "«Ô"
+ "«Ô¡"
+ "«Ô¡ÒÃì"
+ "«Ô¡á«ç¡"
+ "«Ô¹áÊ"
+ "«Ôº"
+ "«Ô»"
+ "«Ô¿ÔÅÔÊ"
+ "«ÔÅԤ͹"
+ "«ÔÇ"
+ "«Ôè¹"
+ "«Õ"
+ "«Õ¡"
+ "«Õ´"
+ "«Õ´Õ"
+ "«Õ¹Í¹"
+ "«ÕÃÍ¡«ì"
+ "«Õà¡ÁÊì"
+ "«ÕàÁ¹µì"
+ "«ÕàÃÕÂ"
+ "«Õè"
+ "«Õé"
+ "«Ö§"
+ "«ÖÁ"
+ "«Öè§"
+ "«Öé§"
+ "«×èÍ"
+ "«×éÍ"
+ "«Ø¡"
+ "«Ø§"
+ "«Ø¹"
+ "«Øº"
+ "«Ø»"
+ "«ØÂ"
+ "«ØèÁ"
+ "«ØèÁ«èÒÁ"
+ "«ØéÁ"
+ "«ÙªÔ"
+ "«Ù´«Ò´"
+ "«Ù´Ò¹"
+ "«Ùº"
+ "«Ùà»ÍÃìÁÒà¡çµ"
+ "«Ùâ¤ÃÊ"
+ "«Ùè"
+ "«è¡"
+ "«èͧ"
+ "«è͹"
+ "«èÍÁ"
+ "«èÒ"
+ "«èÒ¹"
+ "«èÒËÃÔèÁ"
+ "«é¹"
+ "«éͧ"
+ "«é͹"
+ "«éÍÁ"
+ "«éÒÂ"
+ "«éÓ"
+ "¬Ò¹"
+ "¬Ò»¹¡Ô¨"
+ "¬Ò»¹Ê¶Ò¹"
+ "­Ç¹"
+ "­ÑµµÔ"
+ "­Ò³"
+ "­ÒµÔ"
+ "­Õè»Øè¹"
+ "°Ò¹"
+ "°Ò¹Ð"
+ "°Ò¹Ñ¹´Ã"
+ "°Ò»¹Ò"
+ "´¡"
+ "´§"
+ "´¹µÃÕ"
+ "´¹â´è"
+ "´Á"
+ "´Ãê¹Õ"
+ "´ÃÒ¿µì"
+ "´Ãس"
+ "´ÃسÕ"
+ "´Å"
+ "´Ç§"
+ "´Ç´"
+ "´ÇÅ"
+ "´Í¡"
+ "´Í¡àºÕéÂ"
+ "´Í¡äÁé"
+ "´Í§"
+ "´Í´"
+ "´Í¹"
+ "´ÍÁ"
+ "´ÍÂ"
+ "´ÍÅÅÒÃì"
+ "´ÍÊ"
+ "´Ð"
+ "´Ñ¡"
+ "´Ñ¡´Ò¹"
+ "´Ñ¡á´é"
+ "´Ñ§"
+ "´Ñª¹Õ"
+ "´Ñ´"
+ "´Ñµ«ì"
+ "´Ñ¹"
+ "´Ñº"
+ "´ÑºàºÔéÅ"
+ "´ÑÁ¾ì"
+ "´ÑÊ¡Ã"
+ "´Ñè§"
+ "´Ñé§"
+ "´Ñé¹"
+ "´Ò"
+ "´Ò¡"
+ "´Ò´"
+ "´ÒµéÒ"
+ "´Ò¹"
+ "´Òº"
+ "´ÒºÊ"
+ "´ÒÁ"
+ "´ÒÁ¾ì"
+ "´ÒÂ"
+ "´ÒóÕ"
+ "´ÒôÒÉ"
+ "´ÒÃÒ"
+ "´ÒÃì"
+ "´ÒÅ"
+ "´ÒÅÑ´"
+ "´ÒÇ"
+ "´ÒÇ´Ö§Êì"
+ "´ÒǹìâËÅ´"
+ "´ÒÇ⨹Êì"
+ "´ÒÉ"
+ "´ÒÉ´Ò"
+ "´Ó"
+ "´Óç"
+ "´ÓÃÑÊ"
+ "´ÓÃÔ"
+ "´ÓÄɳÒ"
+ "´Óà¡Ô§"
+ "´Óà¹Ô¹"
+ "´Óᤧ"
+ "´Ô"
+ "´Ô¡"
+ "´Ô¨ÔµÍÅ"
+ "´Ô©Ñ¹"
+ "´Ô¶Õ"
+ "´Ô¹"
+ "´Ôº"
+ "´ÔÃѨ©Ò¹"
+ "´ÔÅ¡"
+ "´ÔÇÔªÑè¹"
+ "´ÔʹÕÂì"
+ "´ÔÊࡵ"
+ "´Ôè§"
+ "´ÔèÇ"
+ "´Ôé¹"
+ "´ÔéÇ"
+ "´Õ"
+ "´Õ¡ÃÕ"
+ "´Õ´"
+ "´Õ´Õ·Õ"
+ "´ÕºØ¡"
+ "´ÕÇÕ´Õ"
+ "´Õà«Å"
+ "´Õà»ÃʪÑè¹"
+ "´Õ䫹ì"
+ "´Õä«à¹ÍÃì"
+ "´Ö¡"
+ "´Ö¡´ÓºÃþì"
+ "´Ö§"
+ "´Ö§ÊÐ"
+ "´Öè§"
+ "´ÖèÁ"
+ "´×Í"
+ "´×è¹"
+ "´×èÁ"
+ "´×éÍ"
+ "´Ø"
+ "´Ø¡"
+ "´Ø¨"
+ "´Ø´"
+ "´Ø¹"
+ "´Øº"
+ "´ØÁ"
+ "´Øç¤ì"
+ "´ØÃÔÂÒ§¤ÈÒʵÃì"
+ "´ØÃÔÂÒ§¤ÈÔÅ»ì"
+ "´ØÃÔÂÒ§¤ì"
+ "´ØÅ"
+ "´ØžԹԨ"
+ "´ØÅÀÒ¤"
+ "´ØžԹԨ"
+ "´ØÅÂÀÒ¾"
+ "´ØÉ®Õ"
+ "´ØɳÕ"
+ "´ØÉÔµ"
+ "´ØÊÔµ"
+ "´ØàËÇèÒ"
+ "´ØèÁ"
+ "´ØèÂ"
+ "´Øé§"
+ "´Ø駴Ôé§"
+ "´Øé¹"
+ "´Ù"
+ "´Ù¡Ã"
+ "´Ù´"
+ "´ÙÃÒ"
+ "´èǹ"
+ "´è͹"
+ "´èÍÁ"
+ "´èÒ"
+ "´èÒ§"
+ "´èÒ¹"
+ "´èÒÇ"
+ "´èÓ"
+ "´é§"
+ "´é¹"
+ "´éǧ"
+ "´éǹ"
+ "´éÇÂ"
+ "´éÍÁ"
+ "´éÍÂ"
+ "´éÒ¹"
+ "´éÒÁ"
+ "´éÒÂ"
+ "´éÒÇ"
+ "´éÓ"
+ "µ¡"
+ "µ¡Å§"
+ "µ§"
+ "µ§©Ô¹"
+ "µ§Ô´"
+ "µ´"
+ "µ¶Ò¤µ"
+ "µ¹"
+ "µº"
+ "µºÐ"
+ "µÁ"
+ "µÃ§"
+ "µÃÁ"
+ "µÃÁµÃÍÁ"
+ "µÃáÇÔ·ÂÒ"
+ "µÃáÈÒʵÃì"
+ "µÃáÐ"
+ "µÃǨ"
+ "µÃǹ"
+ "µÃÍ¡"
+ "µÃͧ"
+ "µÃÍÁµÃÁ"
+ "µÃÍÁã¨"
+ "µÃÐ"
+ "µÃСÙÅ"
+ "µÃÐ˧èÒ¹"
+ "µÃÐ˹¡"
+ "µÃÐ˹ѡ"
+ "µÃÐ˹Õè"
+ "µÃÐàǹ"
+ "µÃѧ"
+ "µÃѺ"
+ "µÃÑÂ"
+ "µÃÑÊ"
+ "µÃÒ"
+ "µÃÒ¡µÃÓ"
+ "µÃÒº"
+ "µÃÒÊѧ"
+ "µÃÓ"
+ "µÃÔ"
+ "µÃÕ"
+ "µÃÕÂÑÁ»ÇÒÂ"
+ "µÃÕ⡳"
+ "µÃÖ¡"
+ "µÃÖ§"
+ "µÃØ"
+ "µÃØÉ"
+ "µÃÙ"
+ "µÃÙè"
+ "µÄ³"
+ "揭"
+ "揧"
+ "µÅÍ´"
+ "µÅѺ"
+ "µÅÒ´"
+ "µÅÔè§"
+ "µÇ§"
+ "µÇÑ´"
+ "µÇÒ´"
+ "µÍ"
+ "µÍ¡"
+ "µÍ§"
+ "µÍ´"
+ "µÍ¹"
+ "µÍº"
+ "µÍÁ"
+ "µÍÃì"
+ "µÍÃì»Ôâ´"
+ "µÍáÂ"
+ "µÍáËÅ"
+ "µÐ"
+ "µÐ¡Ãѹ"
+ "µÐ¡ÃØ´"
+ "µÐ¡ÃØÁ"
+ "µÐ¡ÃéÍ"
+ "µÐ¡ÃéÒ"
+ "µÐ¡ÅÐ"
+ "µÐ¡ÅÒÁ"
+ "µÐ¡Í¹"
+ "µÐ¡Ñ§"
+ "µÐ¡ÑèÇ"
+ "µÐ¡Ø¡µÐ¡Ñ¡"
+ "µÐ¢Í"
+ "µÐ¢Òº"
+ "µÐ¢Ô´µÐ¢Ç§"
+ "µÐ¤ÃÔÇ"
+ "µÐ¤Ãغ"
+ "µÐ¤Í¡"
+ "µÐ¹ÍÂ"
+ "µÐºÍ§"
+ "µÐºÍÂ"
+ "µÐºÑ¹"
+ "µÐ»ØèÁµÐ»èÓ"
+ "µÐ¾Òº"
+ "µÐ¾Ö´"
+ "µÐ¾Ö´µÐ¾×Í"
+ "µÐ¾Øè¹"
+ "µÐÅÕµÐÅÒ¹"
+ "µÐÅÖ§"
+ "µÐÅا"
+ "µÐÅØÁºÍ¹"
+ "µÐÅØÁ¾Ø¡"
+ "µÐÅèÍÁ"
+ "µÐÇѹ"
+ "µÐËÅÔÇ"
+ "µÐà¡Õ¡µÐ¡ÒÂ"
+ "µÐà¡Õ§"
+ "µÐà¡Õº"
+ "µÐà¢çº"
+ "µÐà¤Õ¹"
+ "µÐà¦è"
+ "µÐàºç§"
+ "µÐà¾Ô´"
+ "µÐà¾Ôè¹"
+ "µÐà¾Õ¹"
+ "µÐàÀÒ"
+ "µÐàŧ"
+ "µÐá¡Ã§"
+ "µÐᤧ"
+ "µÐầ"
+ "µÐâ¡"
+ "µÐâ¡¡"
+ "µÐ⡹"
+ "µÐâ¡é"
+ "µÐ⢧"
+ "µÐâºÁ"
+ "µÐ⾡"
+ "µÐâ˧¡"
+ "µÐä¡Ã"
+ "µÐä¤Ãè"
+ "µÐä¤Ãé"
+ "µÐäº"
+ "µÐäÅ"
+ "業"
+ "µÑ¡ÉÑÂ"
+ "µÑ§"
+ "µÑ§©èÒÂ"
+ "µÑ§à¡"
+ "µÑ§àÁ"
+ "µÑ§âÍë"
+ "µÑ³ËÒ"
+ "µÑ´"
+ "µÑ´ÊÔ¹"
+ "µÑ¹"
+ "µÑ¹Ë§"
+ "楧"
+ "楀"
+ "µÑè§"
+ "µÑé§"
+ "µÑé§áµè"
+ "µÑéÇâ¼"
+ "µÑê¡áµ¹"
+ "µÑëÇ"
+ "µÒ"
+ "µÒ¡"
+ "µÒ´"
+ "µÒ¹"
+ "µÒ¹Õ"
+ "µÒº"
+ "µÒÁ"
+ "µÒÂ"
+ "µÒÅ"
+ "µÒŻѵÃ"
+ "µÓ"
+ "µÓ¹Ò¹"
+ "µÓºÅ"
+ "µÓÃǨ"
+ "µÓÃѺ"
+ "µÓÃÒ"
+ "µÓÅÖ§"
+ "µÓ˹ѡ"
+ "µÓ˹Ô"
+ "µÓáÂ"
+ "µÓá˹è§"
+ "µÔ"
+ "µÔ¡ÒËÃѧ"
+ "µÔ§"
+ "µÔ³"
+ "µÔ´"
+ "µÔÃѨ©Ò¹"
+ "µÔÅ¡"
+ "µÔè§"
+ "µÔéÇ"
+ "µÔê¡"
+ "µÔë§"
+ "µÕ"
+ "µÕ¹"
+ "µÕº"
+ "µÕè"
+ "µÕë"
+ "µÖ"
+ "µÖ¡"
+ "µÖ§"
+ "µÖ´µ×ëÍ"
+ "µÖé¡"
+ "µÖ页Ñé¡"
+ "µÖê´µ×ëÍ"
+ "µ×´"
+ "µ×ÍÎǹ"
+ "µ×è¹"
+ "µ×é¹"
+ "µ×éÍ"
+ "µ×êÍ"
+ "µ×ëÍ"
+ "µØ"
+ "µØ¡µÔ¡"
+ "µØ§"
+ "µØ¹"
+ "µØ¹Ò˧ѹ"
+ "µØº"
+ "µØáÕ"
+ "µØÅÒ"
+ "µØÅÒ¡ÒÃ"
+ "µØÅÒ¤Á"
+ "µØËÃÑ´µØàËÃè"
+ "µØè¹"
+ "µØèÁ"
+ "µØèÂ"
+ "µØ駡èÒ"
+ "µØ駵Ôé§"
+ "µØéº"
+ "µØéÁ"
+ "µØéÂ"
+ "µØê"
+ "µØê¡"
+ "µØ꡵Ò"
+ "µØê¡á¡"
+ "µØê´"
+ "µØêµêÐ"
+ "µØ꺻èͧ"
+ "µØêÂ"
+ "µØë¹"
+ "µØëÁ"
+ "µØëµØèÂ"
+ "µÙ"
+ "µÙ¡"
+ "µÙ´"
+ "µÙº"
+ "µÙÁ"
+ "µÙè"
+ "µÙé"
+ "µèǹ"
+ "µèÍ"
+ "µèͧáµè§"
+ "µèÍÁ"
+ "µèÍÂ"
+ "µèÒ§"
+ "µèÓ"
+ "µé¹"
+ "µéÁ"
+ "µéÇÁàµÕéÂÁ"
+ "µéÍ"
+ "µéͧ"
+ "µéͧàµ"
+ "µé͹"
+ "µéÍÂ"
+ "µé͵Ôè§"
+ "µé͵ÕÇÔ´"
+ "µéÒ¹"
+ "µêÍ¡"
+ "µêÍ¡µëÍÂ"
+ "µë§"
+ "µëÍÁ"
+ "¶¡"
+ "¶´"
+ "¶¹¹"
+ "¶¹ÍÁ"
+ "¶¹Ñ´"
+ "¶¹Ñ´¶¹Õè"
+ "¶¹ÔÁ"
+ "¶Á"
+ "¶ÁÖ§·Ö§"
+ "¶Å¡"
+ "¶Å¹"
+ "¶ÅÍ¡"
+ "¶Åѹ"
+ "¶ÅÒ"
+ "¶ÅÒ¡"
+ "¶ÅÓ"
+ "¶ÅÕ¶ÅÓ"
+ "¶ÅÖ§µÒ"
+ "¶Åا"
+ "¶Åع"
+ "¶ÅèÁ"
+ "¶ÇÑÅÂì"
+ "¶ÇÒÂ"
+ "¶ÇÔÅ"
+ "¶Í¡"
+ "¶Í§"
+ "¶Í´"
+ "¶Í¹"
+ "¶ÍÂ"
+ "¶Ð"
+ "¶Ñ¡"
+ "¶Ñ§"
+ "¶Ñ´"
+ "¶Ñ¹"
+ "¶ÑÇ"
+ "¶ÑèÇ"
+ "¶Ò"
+ "¶Ò¡"
+ "¶Ò§"
+ "¶Ò´"
+ "¶Ò¹"
+ "¶ÒÁ"
+ "¶ÒÇÃ"
+ "¶Ôè¹"
+ "¶Õº"
+ "¶Õè"
+ "¶Ö¡"
+ "¶Ö§"
+ "¶×Í"
+ "¶Ø§"
+ "¶Ø¹"
+ "¶ØÂ"
+ "¶Ù"
+ "¶Ù¡"
+ "¶èÁ"
+ "¶èǧ"
+ "¶èÍ"
+ "¶èͧ"
+ "¶èÍÁ"
+ "¶èÍÂ"
+ "¶èÒ§"
+ "¶èÒ¹"
+ "¶èÒÂ"
+ "¶éǹ"
+ "¶éÇÂ"
+ "¶éÍÂ"
+ "¶éÒ"
+ "¶éÓ"
+ "·¡"
+ "·¡ÅéÒ"
+ "·´"
+ "·¹"
+ "·¹µì"
+ "·¹ÒÂ"
+ "·¹â·è"
+ "·º"
+ "·º·Ç¹"
+ "·ºÇ§"
+ "·ÁÔÌ"
+ "·ÂÍÂ"
+ "·Ã¡ÃÃÁ"
+ "·Ã§"
+ "·Ãª¹"
+ "·ÃªÒµÔ"
+ "·Ã¾ÔÉ"
+ "·Ã¾Õ"
+ "·ÃÁÒ¹"
+ "·ÃÂÈ"
+ "·ÃÂؤ"
+ "·Ãû"
+ "·ÃÃȹÐ"
+ "·ÃÃÒª"
+ "·ÃÅѡɳì"
+ "·Ãǧ"
+ "·ÃÇ´·Ã§"
+ "·ÃË´"
+ "·ÃѾÂÒ¡Ã"
+ "·ÃѾÂì"
+ "·ÃѾÂìÊÔ¹"
+ "·ÃÑÁà»çµ"
+ "·ÃÒ¹«ÔÊàµÍÃì"
+ "·ÃÒº"
+ "·ÃÒÁ"
+ "·ÃÒÂ"
+ "·ÃØ´"
+ "·ÄÉ®Õ"
+ "·ÅÒÂ"
+ "Ⴄ"
+ "·Ç´"
+ "·Ç¹"
+ "·ÇÂ"
+ "·ÇÒ·È"
+ "·ÇÒÂ"
+ "·ÇÒÃ"
+ "·ÇÔ"
+ "·ÇÕ"
+ "·ÇÕ¸ÒÀÔàÉ¡"
+ "·ÇÕ»"
+ "·ÇèÒ"
+ "·È"
+ "·È¹ÔÂÁ"
+ "·ËÒÃ"
+ "·Í"
+ "·Í¡"
+ "·Í§"
+ "·Í§¡ÇÒÇ"
+ "·Í§ËÅÒ§"
+ "·Í´"
+ "·Í¹"
+ "·Í¹«ÔÅ"
+ "·Í¿¿Õè"
+ "·ÍÂ"
+ "·ÍÅì¤"
+ "·Ð¹§"
+ "·Ð¹Ò¹"
+ "·Ð¹Ø"
+ "·ÐÁÑ´·ÐáÁ§"
+ "·ÐÁÖ¹"
+ "·ÐÁ×è¹"
+ "·ÐÂÒ¹"
+ "·ÐÅǧ"
+ "·ÐÅÑ¡"
+ "·ÐÅÒÂ"
+ "·ÐÅÖè§"
+ "·ÐÅØ"
+ "·ÐÇÒÂ"
+ "·ÐàºÕ¹"
+ "·ÐàÂÍ·ÐÂÒ¹"
+ "·ÐàÅ"
+ "·ÐàÅÒÐ"
+ "·ÐàÅèÍ·ÐÅèÒ"
+ "·ÐàÅé¹"
+ "·ÐáÁè§"
+ "·Ñ¡"
+ "·Ñ¡¢Ô­"
+ "·Ñ¡¢Ô³Ò"
+ "·Ñ¡¢Ô³ÒÇѯ"
+ "·Ñ¡¢ì"
+ "·Ñ¡ÉÐ"
+ "·Ñ¡ÉÔ³"
+ "·Ñ¡ÉÔ³Ò"
+ "·Ñ¡ÉÔ³ÒÇÃõ"
+ "·Ñ¡ÉÔâ³·¡"
+ "·Ñ§Ê൹"
+ "·Ñ³±¡ÃÃÁ"
+ "·Ñ³±¦Òµ"
+ "·Ñ³±Ê¶Ò¹"
+ "·Ñ³±ì"
+ "·Ñ´"
+ "·Ñ¹"
+ "·Ñ¹µá¾·Âì"
+ "·Ñ¹µì"
+ "·Ñ¹·Õ"
+ "ᄼ"
+ "·ÑºÊÁÔ§¤ÅÒ"
+ "·Ñ¾"
+ "·Ñ¾¾Õ"
+ "·Ñȹ¤µÔ"
+ "·ÑȹÇÔÊÑÂ"
+ "·ÑȹÈÖ¡ÉÒ"
+ "·ÑȹÐ"
+ "·ÑȹÒ"
+ "·ÑȹҨÃ"
+ "·ÑȹÕÂÀÒ¾"
+ "·ÑȹÕÂì"
+ "·Ñȹٻ¡Ã³ì"
+ "·Ñȹì"
+ "·ÑÈä¹Â"
+ "·Ñè§"
+ "·ÑèÇ"
+ "·Ñé§"
+ "·Ò"
+ "·Ò¡"
+ "·Ò§"
+ "·Ò¹"
+ "·Òº"
+ "·ÒÁ"
+ "·ÒÂ"
+ "·ÒÂÒ´"
+ "·ÒÂÒ·"
+ "·Òá"
+ "·ÒÃÔ¡Ò"
+ "·ÒÃس"
+ "·ÒÃì«Ò¹"
+ "·ÒÊ"
+ "·Ó"
+ "·Ó¹º"
+ "·Ó¹Í§"
+ "·Ó¹ÒÂ"
+ "·Ó¹Ø"
+ "·ÓÅÒÂ"
+ "·Óà¹Ò"
+ "·Óà¹Õº"
+ "·ÓàÅ"
+ "·ÓäÁ"
+ "·Ô¤ÑÁ¾Ã"
+ "·Ô¦ÑÁ¾Ã"
+ "·Ô§à¨ÍÃì"
+ "·Ô°Ô"
+ "·Ô´"
+ "·Ô¾Â¨Ñ¡ÉØ"
+ "·Ô¾Â­Ò³"
+ "·Ô¾ÂÃÊ"
+ "·Ô¾Â๵Ã"
+ "·Ô¾Âì"
+ "·Ô¾Ò¡Ã"
+ "·ÔÁ"
+ "·ÔÇ"
+ "·Ôǧ¤µ"
+ "·ÔÇ·Ñȹì"
+ "·ÔÇÒ"
+ "·ÔÈ"
+ "·ÔÈÒ"
+ "·ÔÈҹطÔÈ"
+ "·Ôີ"
+ "·ÔèÁ"
+ "·Ôé§"
+ "·Õ"
+ "·Õ¦ªÒµÔ"
+ "·ÕÁ"
+ "·Õà͹·Õ"
+ "·Õè"
+ "·Õè´Ô¹"
+ "·Ö¡"
+ "·Ö¹·Ö¡"
+ "·Öº"
+ "·ÖÁ"
+ "·Öè§"
+ "·ÖèÁ"
+ "·Öé§"
+ "·×èÍ"
+ "·Ø"
+ "·Ø¡"
+ "·Ø¡¢ÅÒÀ"
+ "·Ø¡¢ÒÃÁ³ì"
+ "·Ø¡¢àÇ·¹Ò"
+ "·Ø¡¢ì"
+ "·Ø¡Ã¡ÔÃÔÂÒ"
+ "·Ø¤µÔ"
+ "·Ø¨ÃÔµ"
+ "·Ø´"
+ "·Ø¹"
+ "᯼"
+ "·Ø¾¾Å"
+ "·Ø¾ÀÔ¡¢ÀÑÂ"
+ "·ØÂ"
+ "·Øáѹ´ÒÃ"
+ "·Øê¹"
+ "·ØêҵÔ"
+ "·Øù·ØÃÒÂ"
+ "·ØþÅ"
+ "·ØÅÑ¡·ØàÅ"
+ "·ØÈÕÅ"
+ "·ØàÃÈ"
+ "·ØàÃÕ¹"
+ "·ØàÅÒ"
+ "·Øè§"
+ "·Øè¹"
+ "·ØèÁ"
+ "·Øé§"
+ "·ØéÁ"
+ "·ØéÂ"
+ "·Ù"
+ "·Ùµ"
+ "·ÙµÒ¹Ø·Ùµ"
+ "·Ù¹"
+ "·Ùº"
+ "·ÙÁ"
+ "·ÙÅ"
+ "·Ùè"
+ "·Ùé"
+ "·á¡ÅéÇ"
+ "ᇤ"
+ "·âÁ¹"
+ "·èǧ·Ó¹Í§"
+ "·èǧ·Õ"
+ "·èǧ·èÒ"
+ "·èÇÁ"
+ "·èÍ"
+ "·èͧ"
+ "·è͹"
+ "·èÍÁ"
+ "·èÒ"
+ "·èÒ¹"
+ "·èÒÁ¡ÅÒ§"
+ "·é¹"
+ "·éǧ"
+ "·éǹ"
+ "·éÇÁ"
+ "·éÍ"
+ "·éͧ"
+ "·éÒ"
+ "·éÒÂ"
+ "·éÒÇ"
+ "¸§"
+ "¸¹"
+ "¸¹ºÑµÃ"
+ "¸¹ºØÃÕ"
+ "¸¹ÊÁºÑµÔ"
+ "¸¹ÊÒÃ"
+ "¸¹Ò¤ÒÃ"
+ "¸¹Ò³ÑµÔ"
+ "¸¹ÒÃÑ¡Éì"
+ "¸¹Ù"
+ "¸Á"
+ "¸Ã"
+ "¸Ã³Õ"
+ "¸ÃÃÁ"
+ "¸ÃÃÁ¡ÒÂ"
+ "¸ÃÃÁªÒµÔ"
+ "¸ÃÃÁ´Ò"
+ "¸ÃÃÁÈÒʵÃì"
+ "¸ÃÃÁÐ"
+ "¸ÃÃÁиÑÁâÁ"
+ "¸ÃÃÁÒ·ÔµÂì"
+ "¸ÃÃÁÒ¸ÃÃÁ"
+ "¸ÃÃÁÒ¸Ô»äµÂ"
+ "¸ÃÃÁÒ¸ÔÉ°Ò¹"
+ "¸ÃÃÁÒ¹ØÊÒ¹"
+ "¸ÃÃÁÒÀÔÁØ¢"
+ "¸ÃÃÁÒÀÔÊÁÑÂ"
+ "¸ÃÃÁÒµ¹Ð"
+ "¸ÃÃÁÒÃÁ³ì"
+ "¸ÃÃÁÒʹì"
+ "¸ÃÃÁÔ¡"
+ "¸ÃÒ¸Ã"
+ "¸ÃÒ¸ÒÃ"
+ "¸ÃÒ¸Ôº´Õ"
+ "¸ÃÒ¸Ô»"
+ "¸Ñ­"
+ "¸Ñ­­ÒËÒÃ"
+ "¸Ñ­¾×ª"
+ "¸Ñ¹ÇÒ¤Á"
+ "¸ÑÁÁÐ"
+ "¸ÒµØ"
+ "¸Ò¹Õ"
+ "¸ÒÃ"
+ "¸ÒÃÒ"
+ "¸ÓÁç¤ì"
+ "¸Óç"
+ "¸Ô´Ò"
+ "¸Ôີ"
+ "¸Ø´§¤ì"
+ "¸ØáÃÃÁ"
+ "¸ØáÒÃ"
+ "¸ØáԨ"
+ "¸ØÃÐ"
+ "¸ØÅÕ"
+ "¸ØÇ´ÒÃÒ"
+ "¸ØÇÀÒ¤"
+ "¸ØÇÁ³±Å"
+ "¸Ù»"
+ "¹¡"
+ "¹¤Ã"
+ "¹¤ÃÃÒªÊÕÁÒ"
+ "¹¤ÃÔ¹·Ãì"
+ "¹¤àÃÈ"
+ "¹§¤ÃÒ­"
+ "¹§¹Øª"
+ "¹§¾Ð§Ò"
+ "¹§¾ÒÅ"
+ "¹§ÃÒÁ"
+ "¹§Åѡɳì"
+ "¹§àÂÒÇì"
+ "¹·Õ"
+ "¹¹·ºØÃÕ"
+ "¹¹·ÃÕ"
+ "¹¹·ÅÕ"
+ "¹º"
+ "¹¾"
+ "¹¾»®Å"
+ "¹¾È¡"
+ "¹¾ÈÙÅ"
+ "¹ÀÒ"
+ "¹ÀÒÅÑÂ"
+ "¹Á"
+ "¹ÁÑÊ¡ÒÃ"
+ "¹Ã¡"
+ "¹ÃÊÔ§Ëì"
+ "¹ÃÕàǪ"
+ "¹ÃÕá¾·Âì"
+ "¹Ä¤ËÔµ"
+ "¹Ä¹Ò·"
+ "¹ÄÁÅ"
+ "¹ÄÁÔµ"
+ "¹ÅÒ¯"
+ "¹ÅÔ¹Õ"
+ "¹Ç´"
+ "¹Ç¹ÔÂÒÂ"
+ "¹ÇÁ"
+ "¹ÇÂ"
+ "¹ÇÅ"
+ "¹ÇÅÅÍÍ"
+ "¹ÇÅÅÐÍͧ"
+ "¹Í"
+ "¹Í¡"
+ "¹Í§"
+ "¹Íµ"
+ "¹Í¹"
+ "¹Íº"
+ "¹ÍÂ"
+ "¹ÍÃìàÇÂì"
+ "¹Ð"
+ "¹Ñ¡"
+ "¹Ñ¡¢Ñµ"
+ "¹Ñ¡ÈÖ¡ÉÒ"
+ "¹Ñ¡ÉѵÃ"
+ "¹Ñ¡àÃÕ¹"
+ "¹Ñ§¤ÑÅ"
+ "¹Ñ´"
+ "¹Ñ´´Ò"
+ "¹Ñµ¶Øì"
+ "¹Ñ¹·¹Ò¡ÒÃ"
+ "¹Ñº"
+ "¹ÑÂ"
+ "¹Ñ¹ì"
+ "¹ÑÇ"
+ "¹Ñè§"
+ "¹Ñè¹"
+ "¹Ñé¹"
+ "¹Ò"
+ "¹Ò¡"
+ "¹Ò¤"
+ "¹Ò¤Ã"
+ "¹Ò¤ÃÒª"
+ "¹Ò¤Õ"
+ "¹Ò§"
+ "¹Ò§ÊÒÇ"
+ "¹Ò§áÍè¹"
+ "¹Ò«Ò"
+ "¹Ò¯"
+ "¹Ò´"
+ "¹Ò¶"
+ "¹Ò·"
+ "¹Ò·Õ"
+ "¹Ò¹"
+ "¹Ò¹Ñ»¡ÒÃ"
+ "¹Ò¹Ò"
+ "¹Òº"
+ "¹ÒÀÕ"
+ "¹ÒÁ"
+ "¹ÒÁ¡Ã"
+ "¹ÒÁÊ¡ØÅ"
+ "¹ÒÁҹءÃÁ"
+ "¹ÒÁÒÀÔä¸Â"
+ "¹ÒÂ"
+ "¹Ò¡"
+ "¹ÒÃÒ³ì"
+ "¹ÒÃÕ"
+ "¹ÒÇÒ"
+ "¹ÒÇÔ¡"
+ "¹ÒÇÔ¹"
+ "¹ÒÇÕ"
+ "¹ÒÊÔ¡"
+ "¹ÒÌÔ¡Ò"
+ "¹ÒÌÔà¡"
+ "¹Òâ¹"
+ "¹Ó"
+ "¹Ô"
+ "¹Ô¡Ã"
+ "¹Ô¡ÃÍ´ì"
+ "¹Ô¡ÒÂ"
+ "¹Ô¡à¡ÔÅ"
+ "¹Ô¤Á"
+ "¹Ô¤Ã¹¶ì"
+ "¹Ô¤ËÔµ"
+ "¹Ô¨"
+ "¹Ô´"
+ "¹ÔµÂÊÒÃ"
+ "¹ÔµÂì"
+ "¹ÔµÔ"
+ "¹Ô·ÃÃÈ"
+ "¹Ô·ÃÒ"
+ "¹Ô·Ñȹì"
+ "¹Ô·Ò¹"
+ "¹Ô¹·Ò"
+ "¹ÔºÒµ"
+ "¹Ô¾¹¸ì"
+ "¹Ô¾¾Ò¹"
+ "¹ÔÁ¹µì"
+ "¹ÔÁÁÒ¹"
+ "¹ÔÁÁҹôÕ"
+ "¹ÔÁÔµ"
+ "¹ÔÂÁ"
+ "¹ÔÂÒÁ"
+ "¹ÔÂÒÂ"
+ "¹Ô÷ء¢ì"
+ "¹ÔùÒÁ"
+ "¹ÔÃÀÑÂ"
+ "¹ÔÃÁÅ"
+ "¹ÔÃÁÔµ"
+ "¹ÔÃѹ´Ã"
+ "¹ÔÃÒÈ"
+ "¹ÔÃâ·É"
+ "¹ÔÅ"
+ "¹ÔÅغÅ"
+ "¹ÔÇ¡Ô¹Õ"
+ "¹ÔǤÅÔÍÔ¡"
+ "¹ÔÇ«ÕᏴì"
+ "¹ÔǵÃ͹"
+ "¹ÔÇÂÍÃì¤"
+ "¹ÔÇóì"
+ "¹ÔÇѵ"
+ "¹ÔÇѵ¹ì"
+ "¹ÔÇÒµ"
+ "¹ÔÇÒÊ"
+ "¹ÔÇà¤ÅÕÂÃì"
+ "¹ÔÇà¤ÅÕÂÊ"
+ "¹ÔÊÑÂ"
+ "¹ÔÊÔµ"
+ "¹Ôà·È"
+ "¹ÔàÇÈ"
+ "¹ÔàÇȹì"
+ "¹Ô⤵Թ"
+ "¹Ôâø"
+ "¹ÔâźÅ"
+ "¹Ôè§"
+ "¹ÔèÁ"
+ "¹ÔèÇ"
+ "¹ÔéÇ"
+ "¹Õ"
+ "¹ÕÍ͹"
+ "¹ÕâÍ´ÔàÁÕÂÁ"
+ "¹Õè"
+ "¹Õé"
+ "¹Ö¡"
+ "¹Öè§"
+ "¹Ø§"
+ "¹Øª"
+ "¹Øè§"
+ "¹Øè¹"
+ "¹ØèÁ"
+ "¹ØéÂ"
+ "¹Ù¹"
+ "¹Ùè¹"
+ "¹Ùé¹"
+ "¹àÃÈÇÃ"
+ "¹âºÒÂ"
+ "¹âôÁ"
+ "¹èÇÁ"
+ "¹èͧ"
+ "¹èÒ"
+ "¹èÒ¹"
+ "¹éͧ"
+ "¹éÍÁ"
+ "¹éÍÂ"
+ "¹éÍÂ˹èÒ"
+ "¹éÍÂâ˹è§"
+ "¹éÒ"
+ "¹éÒÇ"
+ "¹éÓ"
+ "¹éÓÁѹ"
+ "¹éÓà§Ô¹"
+ "º¡"
+ "º¡¾Ãèͧ"
+ "º§"
+ "º§¡ª"
+ "º´"
+ "º´Ô¹·Ãà´ªÒ"
+ "º´Ô¹·Ãì"
+ "º´Õ"
+ "º·"
+ "º¹"
+ "º¾ÔµÃ"
+ "º¾Ô¸"
+ "ºÃÁ"
+ "ºÃÁѵ¶ì"
+ "ºÃÃ"
+ "ºÃè§"
+ "ºÃè¶Ã³ì"
+ "ºÃèº"
+ "ºÃèǺ"
+ "ºÃèØ"
+ "ºÃó"
+ "ºÃóҡÒÃ"
+ "ºÃóҤÁ"
+ "ºÃóҸԡÒÃ"
+ "ºÃóҹءÃÁ"
+ "ºÃóÒÃÑ¡ÉÈÒʵÃì"
+ "ºÃóÒÃÑ¡Éì"
+ "ºÃôÒ"
+ "ºÃ÷Á"
+ "ºÃ÷Ѵ"
+ "ºÃ÷ء"
+ "ºÃþ"
+ "ºÃþªÒ"
+ "ºÃþªÔµ"
+ "ºÃþµ"
+ "ºÃþºØÃØÉ"
+ "ºÃç"
+ "ºÃç¡ì"
+ "ºÃÃÂÒ¡ÒÈ"
+ "ºÃÃÂÒÂ"
+ "ºÃÃÅÑÂ"
+ "ºÃÃÅØ"
+ "ºÃÃÉÑ·"
+ "ºÃÃËÒÃ"
+ "ºÃÃà¨Ô´"
+ "ºÃÃà·Ò"
+ "ºÃÃàŧ"
+ "ºÃÃâÅÁ"
+ "ºÃÑè¹´Õ"
+ "ºÃÒÇà«ÍÃì"
+ "ºÃÔ"
+ "ºÃÔ¡ÃÃÁ"
+ "ºÃÔ¡ÒÃ"
+ "ºÃÔ¢ÒÃ"
+ "ºÃÔ¤³Ëì"
+ "ºÃÔ¨Ò¤"
+ "ºÃÔ¨Òá"
+ "ºÃÔ¨ÒÃÔ¡Ò"
+ "ºÃÔºÒÅ"
+ "ºÃÔºÙóì"
+ "ºÃԾѵÃ"
+ "ºÃÔ¾ÒÃ"
+ "ºÃÔÀѳ±ì"
+ "ºÃÔÀÒÉ"
+ "ºÃÔÃÑ¡Éì"
+ "ºÃÔÃÒª"
+ "ºÃÔÇÒÃ"
+ "ºÃÔÉÑ·"
+ "ºÃÔÊØ·¸Ôì"
+ "ºÃÔËÒÃ"
+ "ºÃÔà©·"
+ "ºÃÔ൹"
+ "ºÃÔàdz"
+ "ºÃÔâÀ¤"
+ "ºÅçÍ¡"
+ "ºÇ¡"
+ "ºÇ§"
+ "ºÇª"
+ "ºÇ¹"
+ "ºÇº"
+ "ºÇÁ"
+ "ºÇÃ"
+ "ºÍ"
+ "ºÍ¡"
+ "ºÍ´"
+ "ºÍ´Õé"
+ "ºÍ¹"
+ "ºÍº"
+ "ºÍÃì¡"
+ "ºÍÃì´"
+ "ºÍÃìà¹ÕÂÇ"
+ "ºÍÅ"
+ "ºÍÅÅÙ¹"
+ "ºÐËÁÕè"
+ "ºÑ¡"
+ "ºÑ¤àµÃÕ"
+ "ºÑ§"
+ "ºÑ§¡ÐâÅ"
+ "ºÑ§¤Á"
+ "ºÑ§¤Å"
+ "ºÑ§¤Ñº"
+ "ºÑ§ÊØ¡ØÅ"
+ "ºÑ§ÍÃ"
+ "ºÑ§ÍÒ¨"
+ "ºÑ§à¡Ô´"
+ "ºÑ§àËÕ¹"
+ "ºÑ§àÍÔ­"
+ "ºÑ­ªÃ"
+ "ºÑ­ªÒ"
+ "ºÑ­ªÕ"
+ "ºÑ­­ÑµÔ"
+ "ºÑ³±Ôµ"
+ "ºÑ³±ÔµÂì"
+ "ºÑ³±Ø"
+ "ºÑ³±ÙÃ"
+ "ºÑ³³ÒÊ"
+ "ºÑ³ÃÊ"
+ "ºÑ³ÃÊÕ"
+ "ºÑ³à±ÒСì"
+ "ºÑ³à±ÒÐÇì"
+ "ºÑ´"
+ "ºÑ´¡ÃÕ"
+ "ºÑ´«º"
+ "ºÑ´ÊÕ"
+ "ºÑµÃ"
+ "ºÑ¹"
+ "ºÑ¹´ÒÅ"
+ "ºÑ¹·Ö¡"
+ "ºÑ¹ÂкѹÂѧ"
+ "ºÑ¹Å×Í"
+ "ºÑ¹à·Ô§"
+ "ºÑ¹ä´"
+ "ºÑ»¼ÒÊÐ"
+ "ºÑ¾"
+ "ºÑÅ¡ÒàÃÕÂ"
+ "ºÑÅÅѧ¡ì"
+ "ºÑÅÅÙ¹"
+ "ºÑÇ"
+ "ºÑÊ"
+ "ºÑè¹"
+ "ºÑé§"
+ "ºÑé¹"
+ "ºÑê¡"
+ "ºÒ"
+ "ºÒ¡"
+ "ºÒ§"
+ "ºÒ´"
+ "ºÒ´·ÐÂÑ¡"
+ "ºÒ´ÒÅ"
+ "ºÒµ"
+ "ºÒµÃ"
+ "ºÒ·"
+ "ºÒ·º§ÊØì"
+ "ºÒ·ËÅǧ"
+ "ºÒ·Ò¸Ö¡"
+ "ºÒ·Ø¡Ò"
+ "ºÒ¹"
+ "ºÒ¹ª×è¹"
+ "ºÒ¹ºØÃÕ"
+ "ºÒ¹ÕÂÐ"
+ "ºÒ¹àªéÒ"
+ "ºÒ¹àÂç¹"
+ "ºÒ»"
+ "ºÒÂ"
+ "ºÒÃÁÕ"
+ "ºÒÃÍÁÔàµÍÃì"
+ "ºÒÃì"
+ "ºÒÃìàÃÅ"
+ "ºÒÅ"
+ "ºÒÅÕ"
+ "ºÒÈ"
+ "ºÒÈ¡ì"
+ "ºÒÊࡵºÍÅ"
+ "ºÒËÅÕ"
+ "ºÓ¹Ò­"
+ "ºÓºÑ´"
+ "ºÓÃÒº"
+ "ºÓÃÒÈ"
+ "ºÓÃا"
+ "ºÓÃÙ"
+ "ºÓà¾ç­"
+ "ºÓàÃÍ"
+ "ºÓà˹ç¨"
+ "ºÔ"
+ "ºÔ°"
+ "ºÔ³±ºÒµ"
+ "ºÔ´"
+ "ºÔ´¾ÅÔéÇ"
+ "ºÔ´Ã"
+ "ºÔ´Ò"
+ "ºÔµ"
+ "ºÔ¹"
+ "ºÔÅ"
+ "ºÔÅàÅÕ´"
+ "ºÔè¹"
+ "ºÕ±Ò"
+ "ºÕ¹"
+ "ºÕº"
+ "ºÕé"
+ "ºÖ¡"
+ "ºÖ¡ºÖ¹"
+ "ºÖ§"
+ "ºÖè§"
+ "ºÖé§"
+ "ºØ"
+ "ºØ¡"
+ "ºØ¡ÃØ¡"
+ "ºØ¡É¡"
+ "ºØ¤¤Å"
+ "ºØ¤ÅÒ¡Ã"
+ "ºØ¤ÅÒ¸ÔÉ°Ò¹"
+ "ºØ¤ÅÔ¡"
+ "ºØ¤ÅÔ¡ÀÒ¾"
+ "ºØ­"
+ "ºØ­­Ò¹ØÀÒ¾"
+ "ºØ­­ÒÀÔ¹ÔËÒÃ"
+ "ºØ³±ÃÔ¡"
+ "ºØ³Âì"
+ "ºØµÃ"
+ "ºØµÃÒ"
+ "ºØµÃÕ"
+ "ºØº"
+ "ºØ»¼ªÒµÔ"
+ "ºØ¾¡ÃÃÁ"
+ "ºØ¾¡ÒÃÕ"
+ "ºØ¾¡Ô¨"
+ "ºØ¾ªÒµÔ"
+ "ºØ¾·Ñ¡ÉÔ³"
+ "ºØ¾¹ÔÁÔµ"
+ "ºØ¾º·"
+ "ºØ¾¾Ò¨ÒÃÂì"
+ "ºØ¾à¾Êѹ¹ÔÇÒÊ"
+ "ºØ¿à¿èµì"
+ "ºØþ·ÔÈ"
+ "ºØþº·"
+ "ºØþҨÒÃÂì"
+ "ºØÃÒ³"
+ "ºØÃÔÁ·ÔÈ"
+ "ºØÃÔÁ¾ÃÃÉÒ"
+ "ºØÃÔÁÊÔ·¸Ô"
+ "ºØÃÕ"
+ "ºØÃØÉ"
+ "ºØÉ¡Ã"
+ "ºØɺ§"
+ "ºØɺÒ"
+ "ºØÉÂÁÒÊ"
+ "ºØÉÃÒ¤ÑÁ"
+ "ºØ˧ѹ"
+ "ºØ˧Ò"
+ "ºØËç"
+ "ºØËÃÕè"
+ "ºØËÅѹ"
+ "ºØâ÷Ñè§"
+ "ºØèÁºèÒÁ"
+ "ºØé§"
+ "ºØéÂ"
+ "ºØëÁ"
+ "ºÙªÒ"
+ "ºÙªÒÂÑ­"
+ "ºÙ´"
+ "ºÙµ"
+ "ºÙóÀÒ¾"
+ "ºÙóÐ"
+ "ºÙþÒ"
+ "ºÙþҨÒÃÂì"
+ "ºÙé"
+ "ºÙê"
+ "ºè"
+ "ºè§"
+ "ºè¹"
+ "ºèÁ"
+ "ºèǧ"
+ "ºèÍ"
+ "ºèͧ"
+ "ºè͹"
+ "ºèÍÂ"
+ "ºèÒ"
+ "ºèÒ§"
+ "ºèÒÂ"
+ "ºèÒÇ"
+ "ºéǹ"
+ "ºéͧ"
+ "ºéͧáºêÇ"
+ "ºéÍÁ"
+ "ºéÒ"
+ "ºéÒ§"
+ "ºéÒ¹"
+ "ºéÒÃÐËèÓ"
+ "ºê§àºê§"
+ "ºêÇÂ"
+ "ºêͧ"
+ "ºêÐ"
+ "ºëÍÁ"
+ "ºëÍÂ"
+ "ºëÓ"
+ "»¡"
+ "»¡¤Ãͧ"
+ "»¡µÔ"
+ "»¡Ã³ì"
+ "»¡ÒÃ"
+ "»¡Ô³¡Ð"
+ "»¯Ñ¡"
+ "»¯Ô¡Ã³ì"
+ "»¯Ô¡ÃÃÁ"
+ "»¯Ô¡ÔÃÔÂÒ"
+ "»¯Ô¡ÙÅ"
+ "»¯Ô¤Á"
+ "»¯ÔªÕǹÐ"
+ "»¯Ô­­Ò"
+ "»¯Ô­Ò³"
+ "»¯Ô·Ô¹"
+ "»¯Ôº¶"
+ "»¯ÔºÑµÔ"
+ "»¯Ô»·Ò"
+ "»¯Ô»Ñ¡Éì"
+ "»¯Ô¾Ñ·¸ì"
+ "»¯Ô¾Ò¡Âì"
+ "»¯ÔÀÒ¤"
+ "»¯ÔÀÒ³"
+ "»¯ÔÁÒ"
+ "»¯ÔÁÒ¡Ã"
+ "»¯ÔÂØ·¸ì"
+ "»¯ÔÃÙ»"
+ "»¯ÔÇѵÔ"
+ "»¯ÔÇÒµ"
+ "»¯ÔÇÒ·"
+ "»¯Ôʹ¸Ô"
+ "»¯ÔÊѧ¢Ã³ì"
+ "»¯ÔÊѹ¶ÒÃ"
+ "»¯ÔÊÑÁ¾Ñ¹¸ì"
+ "»¯ÔàǸ"
+ "»¯Ôàʸ"
+ "»¯ÔâÅÁ"
+ "»°¾Õ"
+ "»°Á"
+ "»°Á·Ñȹì"
+ "»°Á¹Ôà·È"
+ "»°Á¾ÂÒºÒÅ"
+ "»°ÁÄ¡Éì"
+ "»°ÁÇÑÂ"
+ "»°Áà·È¹Ò"
+ "»³µ"
+ "»³Ô¸Ò¹"
+ "»´"
+ "»¶¾Õ"
+ "»·Ò¹Ø¡ÃÁ"
+ "»·ØÁ"
+ "»·ØÁ¸Ò¹Õ"
+ "»¹"
+ "»¹Ñ´´Ò"
+ "»¹à»"
+ "ȼ"
+ "»Á"
+ "»Ã¡"
+ "»Ã¡µÔ"
+ "»Ã§"
+ "»Ã¹"
+ "»Ã¹¹ÔºÑµÔ"
+ "»Ã¹ÑÂ"
+ "»Ãº"
+ "»Ã»Ñ¡Éì"
+ "»ÃÁѵ¶ì"
+ "»ÃÁÒ¨ÒÃÂì"
+ "»ÃÁÒ³Ù"
+ "»ÃÁÒÀÔàÉ¡"
+ "»ÃÁÒÀÔä¸Â"
+ "»ÃÇ´"
+ "»Ãǹá»Ã"
+ "»ÃÇÒ·Õ"
+ "»ÃÊÔµ"
+ "»Ãͧ´Í§"
+ "»ÃÍ´"
+ "»ÃÍ·"
+ "»ÃÍÂ"
+ "»ÃÐ"
+ "»ÃСº"
+ "»ÃСǴ"
+ "»ÃСͺ"
+ "»ÃСѹ"
+ "»ÃСѺ"
+ "»ÃСÒÂ"
+ "»ÃСÒÃ"
+ "»ÃСÒÈ"
+ "»ÃСÒȹÕºѵÃ"
+ "»ÃСÒÈÔµ"
+ "»ÃСԴ"
+ "»ÃФº"
+ "»ÃФº»ÃÐ˧Á"
+ "»ÃФͧ"
+ "»ÃФÓ"
+ "»ÃШº"
+ "»ÃШǺ"
+ "»ÃШѡÉì"
+ "»ÃШѭ"
+ "»ÃШѹ"
+ "»ÃШҤ"
+ "»ÃШҹ"
+ "»ÃШÓ"
+ "»ÃШÔÁ"
+ "»ÃШØ"
+ "»ÃШëÍ»ÃÐá¨ë"
+ "»ÃЪ´"
+ "»ÃЪÇÃ"
+ "»ÃЪѹ"
+ "»ÃЪÒ"
+ "»ÃЪҪ¹"
+ "»ÃЪҸԻѵÂì"
+ "»ÃЪҸԻäµÂ"
+ "»ÃЪÒÀÔºÒÅ"
+ "»ÃЪԴ"
+ "»ÃЪØÁ"
+ "»Ãгµ"
+ "»ÃгÁ"
+ "»ÃгÒÁ"
+ "»ÃгԸҹ"
+ "»ÃгԸÔ"
+ "»Ãгյ"
+ "»Ãд¹"
+ "»Ãдǹ"
+ "»Ãд͹"
+ "»Ãдѡ»ÃÐà´Ô´"
+ "»Ãдѧ"
+ "»ÃдѺ"
+ "»ÃдÒ"
+ "»Ãдһ"
+ "»ÃдÒÉ"
+ "»ÃдԴ»ÃдÍÂ"
+ "»ÃдԷԹ"
+ "»ÃдÔÉ°Ò¹"
+ "»ÃдÔÉ°ì"
+ "»Ãдا"
+ "»Ãдب"
+ "»ÃдÙè"
+ "»ÃеÙ"
+ "»ÃжÁ"
+ "»Ãзǹ"
+ "»ÃзѡÉì"
+ "»Ãзѧ"
+ "»ÃзѴ"
+ "»ÃзѺ"
+ "»Ãзҹ"
+ "»ÃзԹ"
+ "»ÃзÔè¹"
+ "»Ãзջ"
+ "»Ãзع"
+ "»ÃзØÉ"
+ "»ÃзØÉÃéÒÂ"
+ "»Ãзéǧ"
+ "»Ãиҹ"
+ "»ÃиҹҸԺ´Õ"
+ "»ÃйÁ"
+ "»ÃйÍÁ"
+ "»ÃйջÃйÍÁ"
+ "»ÃлÃÒÂ"
+ "»ÃлÒ"
+ "»ÃоĵÔ"
+ "»ÃоĸÔì"
+ "»Ãоѷ¸ì"
+ "»Ãоѹ¸ì"
+ "»Ãоҵ"
+ "»ÃоÒÊ"
+ "»ÃоÒÌ"
+ "»ÃоԳ"
+ "»Ãоط¸ì"
+ "»ÃÐÀÑÊÊÃ"
+ "»ÃÐÀÒ"
+ "»ÃÐÀÒ¤ÒÃ"
+ "»ÃÐÀÒ¾"
+ "»ÃÐÀÒÊ"
+ "»ÃÐÁ§"
+ "»ÃÐÁÇ­"
+ "»ÃÐÁÇÅ"
+ "»ÃÐÁÒ³"
+ "»ÃÐÁÒ·"
+ "»ÃÐÁØ¢"
+ "»ÃÐÁØ·"
+ "»ÃÐÁÙÅ"
+ "»ÃÐÂØ¡µì"
+ "»ÃÐÂØ·¸ì"
+ "»ÃÐÂÙÃ"
+ "»ÃÐÅÁ¾ì"
+ "»ÃÐÅͧ"
+ "»ÃÐÅÑÂ"
+ "»ÃÐÅÒµ"
+ "»ÃÐÇÃõ"
+ "»ÃÐÇÃõ¹ì"
+ "»ÃÐÇѵÔ"
+ "»ÃÐÇѵԡÒóì"
+ "»ÃÐÇѵÔÈÒʵÃì"
+ "»ÃÐÇÒµ"
+ "»ÃÐÇÒÅ"
+ "»ÃÐÇÒÊ"
+ "»ÃÐÇÔ§"
+ "»ÃÐÇÔª"
+ "»ÃÐÇÔµÃ"
+ "»ÃÐÇÕ³"
+ "»ÃÐÈÁ"
+ "»ÃÐÈÒʹì"
+ "»ÃÐÊ¡"
+ "»ÃÐʧ¤ì"
+ "»ÃÐʺ"
+ "»ÃÐʺ¡Òóì"
+ "»ÃÐʾ"
+ "»ÃÐÊÒ"
+ "»ÃÐÊÒ·"
+ "»ÃÐÊÒ¹"
+ "»ÃÐÊÔ·¸Ô¼Å"
+ "»ÃÐÊÔ·¸ÔÀÒ¾"
+ "»ÃÐÊÔ·¸Ôì"
+ "»ÃÐÊÙµÔ"
+ "»ÃÐËÁèÒ"
+ "»ÃÐËÂÑ´"
+ "»ÃÐËÅÒ´"
+ "»ÃÐËÅèÓ"
+ "»ÃÐËÒÃ"
+ "»ÃÐÎÒÁ"
+ "»ÃÐह"
+ "»ÃÐਡ"
+ "»ÃÐà¨Ô´»ÃÐà¨éÍ"
+ "»ÃÐà¨Õ´"
+ "»ÃÐà´"
+ "»ÃÐà´ÔÁ"
+ "»ÃÐà´Õ§"
+ "»ÃÐà´ÕëÂÇ"
+ "»ÃÐà´ÕëÂÇ»ÃдëÒÇ"
+ "»ÃÐà´ç¹"
+ "»ÃÐà·È"
+ "»ÃÐà·ÈÃÒª"
+ "»ÃÐà·Èä·Â"
+ "»ÃÐà·×ͧ"
+ "»ÃÐླÕ"
+ "»ÃÐàÀ·"
+ "»ÃÐàÁÔ¹"
+ "»ÃÐàdzÕ"
+ "»ÃÐàÇÈ"
+ "»ÃÐàÇȹì"
+ "»ÃÐàÊÃÔ°"
+ "»ÃÐá¡¡"
+ "»ÃÐá¨"
+ "»ÃÐâ¤Á"
+ "»ÃÐâ¤"
+ "»ÃÐ⪹ì"
+ "»ÃÐâÅÁ"
+ "»ÃÑ¡"
+ "»Ãѧ"
+ "»ÃѪ­Ò"
+ "»ÃѵÂصºÑ¹"
+ "»ÃѵÂغѹ"
+ "»Ãѹ"
+ "»ÃѺ"
+ "»ÃÑÁ»ÃÒ"
+ "»ÃÑȹÕ"
+ "»ÃÑÈÇì"
+ "»ÃÒ¡¯"
+ "»ÃÒ¡ÃÁ"
+ "»ÃÒ¡ÒÃ"
+ "»ÃÒ¤ÀÒÃ"
+ "»ÃÒ§"
+ "»ÃÒ§¤ì"
+ "»ÃÒ¨Õ¹"
+ "»ÃÒª­Ò"
+ "»ÃÒª­ì"
+ "»ÃÒªÑÂ"
+ "»ÃÒªÔµ"
+ "»ÃÒ³"
+ "»ÃÒ³Õ"
+ "»ÃÒ´"
+ "»ÃÒ¹Õ"
+ "»ÃÒº"
+ "»ÃÒº´ÒÀÔàÉ¡"
+ "»ÃÒ»µì"
+ "»ÃÒÀ¾"
+ "»ÃÒÁ"
+ "»ÃÒÁÒÊ"
+ "»ÃÒÂ"
+ "»ÃÒö¹Ò"
+ "»ÃÒÃÀ"
+ "»ÃÒÃÁÀì"
+ "»ÃÒÈ"
+ "»ÃÒÈÃÑÂ"
+ "»ÃÒÈÒÃ"
+ "»ÃÒɳÕ"
+ "»ÃÒÉÒ³"
+ "»ÃÒÊÒ·"
+ "»ÃÒâÁª"
+ "»ÃÒâÁ·Âì"
+ "»ÃÓ"
+ "»ÃÔ"
+ "»ÃÔ¡"
+ "»ÃÔ¤³Ëì"
+ "»ÃÔ¨Ò¤"
+ "»ÃÔ¨ÒÃÔ¡Ò"
+ "»ÃÔ«ÖÁ"
+ "»ÃÔ­­Ò"
+ "»ÃÔ³ÒÁ"
+ "»ÃÔ³Ò¡"
+ "»ÃÔµ"
+ "»ÃÔµµÐ"
+ "»ÃÔµÃ"
+ "»ÃÔ·ÃÃȹì"
+ "»ÃÔ·Ñȹì"
+ "»ÃÔ¹"
+ "»ÃÔ¹Êì"
+ "»ÃÔ¹Ô¾¾Ò¹"
+ "»ÃÔº"
+ "»ÃÔÁ³±Å"
+ "»ÃÔÁÑ·"
+ "»ÃÔÁÒ³"
+ "»ÃÔÁÒµÃ"
+ "»ÃÔÂѵÔ"
+ "»ÃÔÂÒÂ"
+ "»ÃÔÇÃõ"
+ "»ÃÔÇÒÊ"
+ "»ÃÔȹÒ"
+ "»ÃÔà©·"
+ "»ÃÔèÁ"
+ "»ÃÕªÒ"
+ "»ÃÕ´Ò"
+ "»ÃÕ´Ôì"
+ "»ÃÕÂÒ"
+ "»ÃÕè"
+ "»ÃÕê´"
+ "»ÃÖ¡ÉÒ"
+ "»Ã×Í"
+ "»Ã×ëÍ"
+ "»ÃØ"
+ "»Ãا"
+ "»ÃÙ´"
+ "»ÃÙê´»ÃêÒ´"
+ "»ÃÙê¿"
+ "»ÃàÁ¹·Ãì"
+ "»ÃâÅ¡"
+ "»ÃèÒ"
+ "»ÃëÍ"
+ "»Ä¨©Ò"
+ "»Äɮҧ¤ì"
+ "»Å¡"
+ "»Å§"
+ "»Å´"
+ "»ÅÇ¡"
+ "»ÅÍ¡"
+ "»ÅÍ´"
+ "»ÅÍ´ÀÑÂ"
+ "»Åͺ"
+ "»ÅÍÁ"
+ "»ÅÐ"
+ "»ÅÑ¡"
+ "»ÅÑ´"
+ "»ÅÑè§"
+ "»ÅÑê¡"
+ "»ÅÑê¡ÍÔ¹"
+ "»ÅÒ"
+ "»ÅÒµ"
+ "»ÅÒº"
+ "»ÅÒÂ"
+ "»ÅÒÇÒÌ"
+ "»ÅÒʹҡÒÃ"
+ "»ÅÒÊàµÍÃì"
+ "»ÅÔ§"
+ "»ÅÔ´"
+ "»ÅÔÇ"
+ "»ÅÔ⾸"
+ "»ÅÔèÁ"
+ "»ÅÔé¹"
+ "»ÅÕ"
+ "»ÅÕ¡"
+ "»Å×éÁ"
+ "»ÅØ¡"
+ "»ÅÙ¡"
+ "»Åè§"
+ "»Åèͧ"
+ "»ÅèÍÂ"
+ "»Åé¹"
+ "»Åéͧ"
+ "»Åé͹"
+ "»ÅéÓ"
+ "»Ç¡à»Õ¡"
+ "»Ç§"
+ "»Ç´"
+ "»ÇÒóÒ"
+ "»ÈØ"
+ "»Í"
+ "»Í¡"
+ "»Í§"
+ "»Í´"
+ "»Í¹"
+ "»Í¹´ì"
+ "»Íº"
+ "»ÍÂ"
+ "»ÍÃì"
+ "»ÍÃìµØà¡Ê"
+ "»Ð"
+ "»Ð¡¹"
+ "»Ð¡ÒÃѧ"
+ "»Ð¢ÒÇ"
+ "»Ð·Ð"
+ "»Ð·Ø"
+ "»Ð˧Ѻ"
+ "»ÐàËÅÒÐ"
+ "»ÐáÅèÁ"
+ "»Ðâŧ"
+ "»Ñ¡"
+ "»Ñ¡¡Ôè§"
+ "»Ñ¡ÉÒ"
+ "»Ñ¡ÉÒÇÊÒ¹"
+ "»Ñ¡ÉÔ³"
+ "»Ñ¡ÉÔ¹"
+ "»Ñ¡ÉÕ"
+ "»Ñ¡Éì"
+ "»Ñ¡à»éÒ"
+ "»Ñ§"
+ "»Ñ§ÊØ¡ØÅ"
+ "»Ñ¨¨Ñ¹µ¤ÒÁ"
+ "»Ñ¨¨Ñ¹µª¹º·"
+ "»Ñ¨¨Ñ¹µ»ÃÐà·È"
+ "»Ñ¨¨Ñ¹µì"
+ "»Ñ¨¨ÑÂ"
+ "»Ñ¨¨ÒÁÔµÃ"
+ "»Ñ¨¨ØºÑ¹"
+ "»Ñ¨¨ØÊÁÑÂ"
+ "»Ñ¨©Ò"
+ "»Ñ¨©ÔÁ"
+ "»Ñ¨à¨¡"
+ "»Ñ­¨ÇѤ¤ÕÂì"
+ "»Ñ­­Ò"
+ "»Ñ­ËÒ"
+ "»Ñ´"
+ "»ÑµµÒ¹Õ"
+ "»ÑµµÒàÇÕÂ"
+ "»Ñ·Áì"
+ "»Ñ¹"
+ "»Ñº"
+ "»Ñ»¼ÒÊÐ"
+ "»ÑÊÊÒÇÐ"
+ "»ÑÊÊÒÊÐ"
+ "»Ñè¹"
+ "»Ñé¹"
+ "»Ñêº"
+ "»ÑêÁ"
+ "»Ñë§"
+ "»Ò"
+ "»Ò¡"
+ "»Ò¡¡Ò"
+ "»Ò¡Õʶҹ"
+ "»Ò§"
+ "»Ò¯ÔËÒÃÔÂì"
+ "»Ò°¡"
+ "»Ò°¡¶Ò"
+ "»Ò³ÒµÔºÒµ"
+ "»Ò´"
+ "»ÒµÔâÁ¡¢ì"
+ "»Ò·Ñ§¡Ò"
+ "»Ò·èͧâ¡ë"
+ "»Ò¹"
+ "»Ò»ÑÇ"
+ "»ÒÁ"
+ "»ÒÂÒÊ"
+ "»ÒÃÒªÔ¡"
+ "»ÒÃԩѵÃ"
+ "»ÒÃÔªÒµ"
+ "»ÒÃÕÊ"
+ "»ÒÃìࡵì"
+ "»ÒÅÕ"
+ "»ÒÅìÁ"
+ "»ÒÇ"
+ "»Ò˹ѹ"
+ "»ÒËÕè"
+ "»ÒâÁ¡¢ì"
+ "»Ó"
+ "»Ô¡¹Ô¡"
+ "»Ô§»Í§"
+ "»Ô®¡"
+ "»Ô´"
+ "»ÔµÒ"
+ "»ÔµÔ"
+ "»ÔµØ"
+ "»ÔµØ¦Òµ"
+ "»ÔµØÀÙÁÔ"
+ "»ÔµØÅÒ"
+ "»ÔÂÁÔµÃ"
+ "»ÔÂÐ"
+ "»ÔÈÒ¨"
+ "»ÔâµÃàÅÕÂÁ"
+ "»ÔâÂÃÊ"
+ "»Ôè¹"
+ "»Ôè¹âµ"
+ "»ÔèÁ"
+ "»Ôé§"
+ "»ÔéÁ"
+ "»ÔëÇ"
+ "»Õ"
+ "»Õ¡"
+ "»Õ¹"
+ "»Õº"
+ "»ÕÁÐâÇé"
+ "»ÕÈÒ¨"
+ "»Õè"
+ "»Õé"
+ "»Õê´"
+ "»Õêº"
+ "»Õë"
+ "»Ö¡"
+ "»Ö§"
+ "»Öè§"
+ "»Öé´"
+ "»Öë§"
+ "»×¹"
+ "»×é¹"
+ "»×ëÍ"
+ "ȯ"
+ "»Ø¡"
+ "»Ø¨©Ò"
+ "»Ø´"
+ "»Ø¶Øª¹"
+ "»Øº"
+ "»ØÂ"
+ "»ØâÃËÔµ"
+ "»ØèÁ"
+ "»Ø駡Õë"
+ "»ØéÁ"
+ "»Øê"
+ "»Øêº"
+ "»ØëÁ"
+ "»ØëÂ"
+ "»Ù"
+ "»Ùª¹Õºؤ¤Å"
+ "»Ùª¹ÕÂÇѵ¶Ø"
+ "»Ù´"
+ "»Ù¹"
+ "»ÙÁ"
+ "»Ùè"
+ "»ÙéÂÕé»ÙéÂÓ"
+ "»àdzÕ"
+ "»è¹"
+ "»èǧ"
+ "»èǹ"
+ "»èÇÂ"
+ "»èͧ"
+ "»èÒ"
+ "»èÒ¹"
+ "»èÒÂ"
+ "»èÒÇ"
+ "»éǹ"
+ "»éǹà»Õé¹"
+ "»éÍ"
+ "»éͧ"
+ "»éͧ¡Ñ¹"
+ "»é͹"
+ "»éÍÁ"
+ "»éÍÂ"
+ "»éÍá»é"
+ "»éÒ"
+ "»éÒ§"
+ "»éÒ¹"
+ "»éÒº"
+ "»éÒÂ"
+ "»éÓ"
+ "»êÍ¡¡Õé"
+ "»êÒº"
+ "»ëÍ"
+ "»ëÍÁ"
+ "»ëÒ"
+ "¼¡"
+ "¼¡Ò"
+ "¼¡ÒÂ"
+ "¼§"
+ "¼§¡"
+ "¼§Ð"
+ "¼§Ò´"
+ "¼¨§"
+ "¼¨­"
+ "¼´"
+ "¼´Ø§"
+ "¼¹Ç¡"
+ "¼¹Çª"
+ "¼¹Ñ§"
+ "¼¹Ö¡"
+ "¼Á"
+ "¼Áºêͺ"
+ "¼Âͧ"
+ "¼ÃØÊÇÒ·"
+ "¼Å"
+ "¼ÅÐ"
+ "¼ÅÑ¡"
+ "¼ÅÑ´"
+ "¼ÅÑÇÐ"
+ "¼ÅÒ­"
+ "¼ÅÒ¹ÔʧÊì"
+ "¼ÅÒ¼Å"
+ "¼ÅÒËÒÃ"
+ "¼ÅÔ"
+ "¼ÅÔµ"
+ "¼ÅÔµÀѳ±ì"
+ "¼ÅÕ¼ÅÒÁ"
+ "¼ÅÖ¡"
+ "¼ÅÖè§"
+ "¼ÅØ"
+ "¼Åا"
+ "¼ÅØ´"
+ "¼Åع"
+ "¼Åغ"
+ "¼ÅØÂ"
+ "¼ÅÙ"
+ "¼ÅçÍÂ"
+ "¼Ç¹"
+ "¼ÇÂ"
+ "¼ÇÒ"
+ "¼ÊÁ"
+ "¼ÊÒ¹"
+ "¼ÊÒÂ"
+ "¼Í¡"
+ "¼Í§"
+ "¼Í´"
+ "¼Íº"
+ "¼ÍÁ"
+ "¼ÍÇ´"
+ "¼ÍÙ¹"
+ "¼Ð"
+ "¼Ñ¡"
+ "¼Ñ§"
+ "¼Ñ´"
+ "¼Ñ¹"
+ "¼Ñ¹¼Ç¹"
+ "¼Ñº"
+ "¼ÑÇ"
+ "¼ÑÇÐ"
+ "¼Ò"
+ "¼Ò¡"
+ "¼Ò§"
+ "¼Ò³Ôµ"
+ "¼Ò´"
+ "¼ÒÂ"
+ "¼Ô"
+ "¼Ô§"
+ "¼Ô´"
+ "¼Ô¹"
+ "¼ÔÇ"
+ "¼Õ"
+ "¼Ö§"
+ "¼Öè§"
+ "¼Öé§"
+ "¼×¹"
+ "¼×è¹"
+ "¼Ø"
+ "¼Ø´"
+ "¼Ø¼§"
+ "¼Ù¡"
+ "¼Ùé"
+ "¼çÍÂ"
+ "¼èͧ"
+ "¼è͹"
+ "¼èÍÂ"
+ "¼èÒ"
+ "¼èÒ¹"
+ "¼èÒ¼ÍÁ"
+ "¼èÒÇ"
+ "¼éÒ"
+ "½¹"
+ "½ÃÑè§"
+ "½ÃÑè§àÈÊ"
+ "½ÍÂ"
+ "½Ñ¡"
+ "½Ñ§"
+ "½Ñ´"
+ "½Ñ¹"
+ "½Ñè§"
+ "½Ò"
+ "½Ò¡"
+ "½Ò§"
+ "½Ò´"
+ "½Ò¹"
+ "½ÒÂ"
+ "½Ôè¹"
+ "½Õ"
+ "½Ö¡"
+ "½×´"
+ "½×¹"
+ "½Øè¹"
+ "½Ù§"
+ "½èÍ"
+ "½èÒ"
+ "½èÒÂ"
+ "½éÒ"
+ "½éÒÂ"
+ "¾¡"
+ "¾§"
+ "¾§ÈÒÇ´ÒÃ"
+ "¾§Èì"
+ "¾¨¹Ò"
+ "¾¨¹Ò¹Ø¡ÃÁ"
+ "¾¨¹Òö"
+ "¾¨¹ÕÂì"
+ "¾¨¹ì"
+ "¾¨ÁÒ¹"
+ "¾¨Õ"
+ "¾­Ò"
+ "¾­ÒÅÍ"
+ "¾³Ôª"
+ "¾³ÔªÂì"
+ "¾´"
+ "¾¸Ù"
+ "¾¹Á"
+ "¾¹Ñ¡"
+ "¾¹Ñ¡§Ò¹"
+ "¾¹Ñ§"
+ "¾¹Ñ¹"
+ "¾¹ÑÊ"
+ "¾¹Ò"
+ "¾¹Ò´Ã"
+ "¾¹ÒÃÒÁ"
+ "¾¹ÒÅÑÂ"
+ "¾¹Ô´Ò"
+ "¾º"
+ "¾ÁèÒ"
+ "¾Â¹µì"
+ "¾ÂÈ"
+ "¾ÂÑ¡"
+ "¾ÂÑ¡¾àÂÔ´"
+ "¾ÂѤ¦Ò"
+ "¾ÂѤ¦Ô¹"
+ "¾ÂѤ¦Õ"
+ "¾ÂѤ¦ì"
+ "¾ÂÑ­ª¹Ð"
+ "¾Âѵ"
+ "¾ÂѺ"
+ "¾Âҡóì"
+ "¾ÂÒ§¤ì"
+ "¾ÂÒ¸Ô"
+ "¾ÂÒ¹"
+ "¾ÂÒºÒ·"
+ "¾ÂÒºÒÅ"
+ "¾ÂÒÂÒÁ"
+ "¾ÂØ"
+ "¾Âا"
+ "¾ÂØËÂÒµÃÒ"
+ "¾ÂØËÐ"
+ "¾ÂØËàʹÒ"
+ "¾Ã"
+ "¾Ãµ"
+ "¾ÃÁ"
+ "¾ÃÃ"
+ "¾Ãä"
+ "¾Ãäì"
+ "¾Ãó"
+ "¾Ãó¹Ò"
+ "¾ÃÃÉ"
+ "¾ÃÃÉÒ"
+ "¾ÃÇ´"
+ "¾Ãǹ"
+ "¾ÃËÁ"
+ "¾ÃËÁ¨ÃÃÂì"
+ "¾ÃËÁ¨ÒÃÔ³Õ"
+ "¾ÃËÁ¨ÒÃÕ"
+ "¾ÃÍ´"
+ "¾ÃÐ"
+ "¾ÃÐÃÒªÇѧ"
+ "¾ÃÐͧ¤ì"
+ "¾ÃÐà¨éÒÍÂÙèËÑÇ"
+ "¾ÃÑ¡¾ÃéÍÁ"
+ "¾ÃÑ´"
+ "¾ÃÑè§"
+ "¾ÃÑè¹"
+ "¾ÃÒ¡"
+ "¾ÃÒ§"
+ "¾ÃÒ´"
+ "¾ÃÒ¹"
+ "¾ÃÒÂ"
+ "¾ÃÒÇ"
+ "¾ÃÒËÁ³ì"
+ "¾ÃÓ"
+ "¾ÃÔ¡"
+ "¾ÃÔ¹àµÍÃì"
+ "¾ÃÔº"
+ "¾ÃÔé§"
+ "¾ÃÔéÁ"
+ "¾ÃÕàÁÕÂÁ"
+ "¾ÃÕàÁÕÂÃì"
+ "¾ÃÖ§"
+ "¾ÃÖ¹"
+ "¾ÃÖº"
+ "¾Ã×´"
+ "¾ÃØ"
+ "¾ÃØ¡"
+ "¾Ãع"
+ "¾ÃØè§"
+ "¾ÃÙ"
+ "¾ÃÙ´"
+ "¾Ãèͧ"
+ "¾ÃèÍÁ¾ÃéÍ"
+ "¾ÃèÍÂ"
+ "¾ÃèÒ"
+ "¾ÃèÒ§"
+ "¾ÃèÓ"
+ "¾Ãéͧ"
+ "¾ÃéÍÁ"
+ "¾ÃéÍÁ¾ÃÑ¡"
+ "¾ÃéÍÂ"
+ "¾ÃéÒ"
+ "¾ÃéÓ"
+ "¾Ä¡ÉªÒµÔ"
+ "¾Ä¡É·Å"
+ "¾Ä¡ÉÃÒª"
+ "¾Ä¡ÉÈÒʵÃì"
+ "¾Ä¡ÉÒ"
+ "¾Ä¡Éà·Ç´Ò"
+ "¾Ä¡Éì"
+ "¾Ä²"
+ "¾Ä²Ò"
+ "¾Ä²Ò¨ÒÃÂì"
+ "¾Ä²Ô"
+ "¾Äµ"
+ "¾ÄµÔ"
+ "¾ÄµÔ¡ÃÃÁ"
+ "¾ÄµÔ¡Òóì"
+ "¾ÄµÔ¹ÑÂ"
+ "¾Ä·¸Ôì"
+ "¾Ä·¸ì"
+ "¾Ä¹µì"
+ "¾Ä¹·ì"
+ "¾ÄȨÔ"
+ "¾ÄȨԡÒ¹"
+ "¾ÄÉÀ"
+ "¾ÄÉÀÒ¤Á"
+ "¾ÄËÑÊ"
+ "¾ÄËÑʺ´Õ"
+ "¾Å"
+ "¾Å¡ÒÃ"
+ "¾Å¤ÇÒÁ"
+ "¾Åº"
+ "¾Åǧ"
+ "¾ÅÇѵ"
+ "¾ÅÈÖ¡ÉÒ"
+ "¾Åͧ"
+ "¾ÅÍ´"
+ "¾ÅÍÁá¾ÅÁ"
+ "¾ÅÍÂ"
+ "¾ÅÐ"
+ "¾Åѧ"
+ "¾Åѧ§Ò¹"
+ "¾ÅÑ´"
+ "¾Åѹ"
+ "¾ÅѺ"
+ "¾ÅѺ¾ÅÒ"
+ "¾ÅѺ¾ÅÖ§"
+ "¾ÅÑè¡"
+ "¾ÅÑè§"
+ "¾ÅÑèÇ"
+ "¾ÅÑé§"
+ "¾ÅÒ¡Ã"
+ "¾ÅÒ§"
+ "¾ÅÒ´"
+ "¾ÅÒ¸Ô¡ÒÃ"
+ "¾ÅÒ¹ÒÁÑÂ"
+ "¾ÅÒÁ"
+ "¾ÅÒÂ"
+ "¾ÅÒʵԡ"
+ "¾ÅÒÊÁÒ"
+ "¾ÅÒË¡"
+ "¾ÅÔ¡"
+ "¾ÅÔéÇ"
+ "¾ÅÕ"
+ "¾ÅØ"
+ "¾ÅØ¡"
+ "¾ÅØè¡"
+ "¾ÅØè§"
+ "¾ÅØéÂ"
+ "¾ÅÙ"
+ "¾ÅàÁ×ͧ"
+ "¾ÅàÃ×͹"
+ "¾ÅâÅ¡"
+ "¾ÅèÍÂ"
+ "¾ÅèÒ"
+ "¾ÅèÒ¹"
+ "¾ÅèÒÁ"
+ "¾ÅéÓ"
+ "¾Ç¡"
+ "¾Ç§"
+ "¾Ç¹"
+ "¾ÇÂ"
+ "¾Ê¡"
+ "¾ÊظÒ"
+ "¾ËÅ"
+ "¾ËÅâ¸Թ"
+ "¾ËØ"
+ "¾ËÙ"
+ "¾ËÙ¾¨¹ì"
+ "¾ËÙÊÙµ"
+ "¾Í"
+ "¾Í¡"
+ "¾Í§"
+ "¾Í·ÑÅ"
+ "¾ÍÃìµ"
+ "¾Ð"
+ "¾Ð¾Ô§"
+ "¾ÐÂÙ¹"
+ "¾ÐÃا¾ÐÃѧ"
+ "¾Ðǧ"
+ "¾ÐÇÑ¡¾Ðǹ"
+ "¾ÐÇéÒ¾ÐÇѧ"
+ "¾Ðͧ"
+ "¾ÐÍ×´¾ÐÍÁ"
+ "¾Ðà¹Õ§"
+ "¾Ðà¹éҾйÍ"
+ "¾ÐàÂÔº"
+ "¾ÐàÂÔº¾ÐÂÒº"
+ "¾Ðṧ"
+ "¾ÐâÅé"
+ "¾Ñ¡"
+ "¾Ñ¡µÃì"
+ "¾Ñ§"
+ "¾Ñ§§Ò"
+ "¾Ñ§¼×´"
+ "¾Ñ§¾ÇÂ"
+ "¾Ñ§¾Í¹"
+ "¾Ñ§¾Òº"
+ "¾Ñ§à¾Â"
+ "¾ÑªÃ"
+ "¾Ñ²¹Ð"
+ "¾Ñ²¹Ò"
+ "¾Ñ´"
+ "¾ÑµÃ"
+ "¾Ñ·¸ÊÕÁÒ"
+ "¾Ñ·ÂÒ"
+ "¾Ñ·Åا"
+ "¾Ñ¹"
+ "¾Ñ¹·Ò§"
+ "¾Ñ¹¸¡Ã³Õ"
+ "¾Ñ¹¸·Ô¾Âì"
+ "¾Ñ¹¸¹Ò¡ÒÃ"
+ "¾Ñ¹¸ºÑµÃ"
+ "¾Ñ¹¸ÁÔµÃ"
+ "¾Ñ¹¸Ð"
+ "¾Ñ¹¸Ø"
+ "¾Ñ¹¸Øì"
+ "¾Ñ¹¸ì"
+ "¾Ñº"
+ "¾ÑÅÅÀ"
+ "¾ÑÅÇѹ"
+ "¾ÑÇ"
+ "¾ÑÇÐ"
+ "¾ÑÈ´Õ"
+ "¾ÑÊ´Ø"
+ "¾ÑʵÃì"
+ "¾Ñʶҹ"
+ "¾Ò"
+ "¾Ò¡"
+ "¾Ò¡Âì"
+ "¾Ò§"
+ "¾Ò³"
+ "¾Ò³Ôª"
+ "¾Ò³ÔªÂì"
+ "¾Ò³Õ"
+ "¾Ò³Õ¹Õ"
+ "¾Ò´"
+ "¾Òµ"
+ "¾Ò·"
+ "¾Ò·Âì"
+ "¾Ò¸"
+ "¾Ò¸Ò"
+ "¾Ò¹"
+ "¾Ò¹Ã"
+ "¾ÒÁ"
+ "¾ÒÂ"
+ "¾ÒÂѾ"
+ "¾ÒÂØ"
+ "¾Òó"
+ "¾ÒÃÒ"
+ "¾ÒÃÒ¿Ô¹"
+ "¾ÒÃì"
+ "¾ÒÅ"
+ "¾ÒÅÕ"
+ "¾ÒÊ"
+ "¾ÒʹÒ"
+ "¾Òʹì"
+ "¾ÒÊØ¡ÃÕ"
+ "¾ÒÊàÇÔÃì´"
+ "¾Ò˹Ð"
+ "¾ÒËÐ"
+ "¾ÒËÒ"
+ "¾ÒËØ"
+ "¾ÒËØÃÑ´"
+ "¾ÒÌËÐ"
+ "¾Òà¹Å"
+ "¾ÒàËô"
+ "¾ÒàËÕÂÃ"
+ "¾ÒâÅ"
+ "¾Ó"
+ "¾Ó¹Ñ¡"
+ "¾Ô¡Å"
+ "¾Ô¡Ñ´"
+ "¾Ô¡ÑµÔ"
+ "¾Ô¡ÒÃ"
+ "¾Ô¡ØÅ"
+ "¾Ô¦Òµ"
+ "¾Ô¦à¹È"
+ "¾Ô§"
+ "¾Ô¨ÒóÒ"
+ "¾Ô¨Òóì"
+ "¾Ô¨ÔµÃ"
+ "¾ÔªÑÂ"
+ "¾ÔªÒ¹"
+ "¾ÔªÔµ"
+ "¾Ô««èÒ"
+ "¾Ô³"
+ "¾Ô¶Õ¾Ô¶Ñ¹"
+ "¾Ô·ÂÒ"
+ "¾Ô·Ñ¡Éì"
+ "¾Ô¸Ò¹"
+ "¾Ô¸Õ"
+ "¾Ô¹·Ø"
+ "¾Ô¹Íº¾Ôà·Ò"
+ "¾Ô¹ÑÂ"
+ "¾Ô¹ÒÈ"
+ "¾Ô¹Ô¨"
+ "¾Ô¹Ôµ"
+ "¾Ô¹ÔÈ"
+ "¾ÔºÑµÔ"
+ "¾ÔºÙÅ"
+ "¾Ô¾Áì"
+ "¾Ô¾Ñ¡¾Ô¾èǹ"
+ "¾Ô¾Ñ²¹ì"
+ "¾Ô¾Ò¡ÉÒ"
+ "¾Ô¾Ò¡Éì"
+ "¾Ô¾Ò·"
+ "¾Ô¾Ô¸"
+ "¾Ô¾Ô¸Àѳ±Ê¶Ò¹"
+ "¾Ô¾Ô¸Àѳ±ì"
+ "¾ÔÀ¾"
+ "¾ÔÁ¾ì"
+ "¾ÔÁÅ"
+ "¾ÔÁÒ¹"
+ "¾ÔÁØ¢"
+ "¾ÔÁàʹ"
+ "¾ÔÃÍ´"
+ "¾ÔÃÒº"
+ "¾ÔÃÒÅÑÂ"
+ "¾ÔÃÕé¾ÔäÃ"
+ "¾ÔÃس"
+ "¾ÔÃظ"
+ "¾ÔÅÒ»"
+ "¾ÔÅÒÊ"
+ "¾ÔÅÖ¡"
+ "¾ÔÅÖ¡¡Ö¡¡×Í"
+ "¾ÔÅÖ¡¾ÔÅÑè¹"
+ "¾ÔÈ"
+ "¾ÔÈǧ"
+ "¾ÔÈÇÒÊ"
+ "¾ÔÈÒÅ"
+ "¾ÔÈØ·¸Ôì"
+ "¾ÔÈØ·¸ì"
+ "¾ÔÉ"
+ "¾ÔɳØâÅ¡"
+ "¾ÔÉʧ"
+ "¾ÔÊ´ÒÃ"
+ "¾ÔÊÁÑÂ"
+ "¾ÔÊÑÂ"
+ "¾ÔÊÔ°"
+ "¾ÔÊØ·¸Ôì"
+ "¾ÔÊÙ¨¹ì"
+ "¾ÔËÒÃ"
+ "¾ÔÌÒÃ"
+ "¾Ôà¤ÃÒÐËì"
+ "¾ÔàÈÉ"
+ "¾Ô⡾Ôࡹ"
+ "¾Ôâ¤"
+ "¾Ôâø"
+ "¾ÔäÃ"
+ "¾ÔäÅ"
+ "¾Õ"
+ "¾Õª¤³Ôµ"
+ "¾Õ«Õ"
+ "¾ÕÃÐÁÔ´"
+ "¾Õè"
+ "¾Õé"
+ "¾Ö§"
+ "¾ÖÁ"
+ "¾ÖÁ¾Ó"
+ "¾Öè§"
+ "¾Öèº"
+ "¾×ª"
+ "¾×´"
+ "¾×é¹"
+ "¾×é¹·Õè"
+ "¾Ø"
+ "¾Ø¡"
+ "¾Ø§"
+ "¾Ø²"
+ "¾Ø²Ô"
+ "¾Ø´"
+ "¾Ø·¸"
+ "¾Ø·¸Ð"
+ "¾Ø·¸ÒÇÒÊ"
+ "¾Ø·¸Ô"
+ "¾Ø·ÃÒ"
+ "¾Ø·â¸è"
+ "¾Ø¸"
+ "¾Øè§"
+ "¾ØèÁ"
+ "¾ØéÂ"
+ "¾Ù"
+ "¾Ù´"
+ "¾Ù¹"
+ "¾Ùè"
+ "¾Ùé¹"
+ "¾à¹¨Ã"
+ "¾è¹"
+ "¾èǧ"
+ "¾èÍ"
+ "¾èÒ§"
+ "¾èÒ¹"
+ "¾èÒÂ"
+ "¾èÒËì"
+ "¾é¹"
+ "¾éÍ"
+ "¾éͧ"
+ "¾éÍÁ"
+ "¿¡"
+ "¿ÃÍ´ì"
+ "¿ÃÕ"
+ "¿ÅÍàù«ì"
+ "¿ÅÙÍÍÃÕ¹"
+ "¿Í¡"
+ "¿Í§"
+ "¿Í´"
+ "¿Í¹"
+ "¿Í¹µì"
+ "¿ÍÃìÁ"
+ "¿ÍÃìÁÒÅ´Õäδì"
+ "¿ÍÃìÁÒÅÔ¹"
+ "¿ÍÃìáÁµ"
+ "¿ÍÊ«ÔÅ"
+ "¿ÍÊ¿ÍÃÑÊ"
+ "¿ÍÊ࿵"
+ "¿Ñ¡"
+ "¿Ñ§"
+ "¿Ñ§¡ìªÑ¹"
+ "¿Ñ§¡ìªÑè¹"
+ "¿Ñ´"
+ "¿Ñ¹"
+ "¿Ñè¹"
+ "¿Ñé¹"
+ "¿Ò¡"
+ "¿Ò§"
+ "¿Ò´"
+ "¿Ò·ÍÁ"
+ "¿Ò¹"
+ "¿ÒÂ"
+ "¿ÒÃìÁ"
+ "¿ÒÊ«Ôʵì"
+ "¿Ô¡"
+ "¿Ô´"
+ "¿Ô¹áŹ´ì"
+ "¿Ôº"
+ "¿ÔÅ´ì"
+ "¿ÔÅÔ»»Ô¹Êì"
+ "¿ÔÅìÁ"
+ "¿ÔÇÊì"
+ "¿ÔÊÔ¡Êì"
+ "¿Õ¿èÒ"
+ "¿Õè"
+ "¿Õé"
+ "¿×¹"
+ "¿×Á"
+ "¿×é¹"
+ "¿Ø"
+ "¿Øµ"
+ "¿ØµºÍÅ"
+ "¿Ø¹"
+ "¿Øº"
+ "¿Ø¿Ð"
+ "¿ØÅÊá¡ê»"
+ "¿Øèº"
+ "¿ØèÁà¿×ÍÂ"
+ "¿Øé§"
+ "¿Ù"
+ "¿Ù¡"
+ "¿Ù¨Ô"
+ "¿Ù´"
+ "¿ÙÁ"
+ "¿ÙÁ¿ÒÂ"
+ "¿Ùè"
+ "¿èÍ"
+ "¿èͧ"
+ "¿è͹"
+ "¿èÒ§"
+ "¿èÒÁ"
+ "¿éÍ"
+ "¿éͧ"
+ "¿é͹"
+ "¿éÒ"
+ "À¤¹Õ"
+ "À¾"
+ "ÀÁÃ"
+ "ÀÂѹµÃÒÂ"
+ "Àõ"
+ "ÀÃÃ"
+ "ÀÃÃÂÒ"
+ "ÀÃÒ´Ã"
+ "ÀÃÔÂÒ"
+ "ÀǵѳËÒ"
+ "ÀÇѧ¤ì"
+ "ÀÑ¡´Õ"
+ "ÀÑ¡ÉÒ"
+ "ÀÑ¡ÉÒËÒÃ"
+ "Àѳ±ì"
+ "ÀѵµÒ¤ÒÃ"
+ "ÀѵµÒËÒÃ"
+ "ÀÑ·Ã"
+ "ÀѾ"
+ "ÀÑÂ"
+ "ÀÑÊ´Ò"
+ "ÀÑʵÃÒ"
+ "ÀÒ¤"
+ "ÀÒ¤Õ"
+ "ÀÒª¹Ð"
+ "ÀÒ³Ø"
+ "ÀÒ¾"
+ "ÀҾ¹µÃì"
+ "ÀÒÂ"
+ "ÀÒÃ"
+ "ÀÒáԨ"
+ "ÀÒôÕ"
+ "ÀÒõ"
+ "ÀÒÃÐ"
+ "ÀÒÃÒ"
+ "ÀÒÃâç"
+ "ÀÒǹÒ"
+ "ÀÒÇÐ"
+ "ÀÒÉ"
+ "ÀÒÉ¡"
+ "ÀÒɳì"
+ "ÀÒÉÒ"
+ "ÀÒÉÔµ"
+ "ÀÒÉÕ"
+ "ÀÒÊ¡Ã"
+ "ÀÒʹì"
+ "ÀÒÊÇÃ"
+ "ÀÔ¡¢Ò"
+ "ÀÔ¡¢Ò¨ÒÃ"
+ "ÀÔ¡¢Ø"
+ "ÀÔ¡¢Ø¹Õ"
+ "ÀÔ¡ÉÒ"
+ "ÀÔ¡ÉØ"
+ "ÀÔ¡ÉسÕ"
+ "ÀÔ§¤ÒÃ"
+ "ÀÔ­â­"
+ "ÀÔ¹·¹Ò¡ÒÃ"
+ "ÀÔ¹·ì"
+ "ÀÔÃÁÂì"
+ "Àت"
+ "Àت§¤ì"
+ "ÀØÁÃÒ"
+ "ÀØÁÃÔ¹"
+ "ÀØÁÃÕ"
+ "ÀÙ"
+ "ÀÙµ"
+ "ÀÙµÔ"
+ "ÀÙÁÔ"
+ "ÀÙÁÔ»ÃÐà·È"
+ "ÀÙÁÔÀÒ¤"
+ "ÀÙÁÔÅÓà¹Ò"
+ "ÀÙÁÔÈÒʵÃì"
+ "ÀÙÁÕ"
+ "ÀÙÃÔ"
+ "ÀÙÃÕ"
+ "ÀÙÇ´Å"
+ "ÀÙǹҶ"
+ "ÀÙÇ๵Ã"
+ "ÀÙÇä¹Â"
+ "ÀÙÉÒ"
+ "ÀÙÉÔµ"
+ "ÀÙà¡çµ"
+ "ÀÙè"
+ "Á¡"
+ "Á¡Ã"
+ "Á¡ÃÒ¤Á"
+ "Á¡Ø®"
+ "Á¡ØÅ"
+ "Á§¡Ø®"
+ "Á§¤Å"
+ "Á³±¡"
+ "Á³±»"
+ "Á³±Å"
+ "Á³Õ"
+ "Á³à±ÕÂÃ"
+ "Á´"
+ "ÁµÔ"
+ "Á¸Ø"
+ "Á¹"
+ "Á¹µÃÕ"
+ "Á¹µÃì"
+ "Á¹µì"
+ "Á¹ÊÔ¡ÒÃ"
+ "Á¹ÑÊ"
+ "Á¹ÑÊÇÕ"
+ "Á¹ÔÅÒ"
+ "Á¹ØɪҵÔ"
+ "Á¹ØɸÃÃÁ"
+ "Á¹ØÉÂÈÒʵÃì"
+ "Á¹ØÉÂÊÑÁ¾Ñ¹¸ì"
+ "Á¹ØÉÂà·¾"
+ "Á¹ØÉÂâÅ¡"
+ "Á¹ØÉÂì"
+ "Á¹à·ÕÂÃ"
+ "ÁÂØÃÒ"
+ "ÁÂØÃÕ"
+ "ÁÂØàÃÈ"
+ "ÁÂÙÃ"
+ "ÁÃ"
+ "Ááµ"
+ "ÁóÐ"
+ "Áóì"
+ "Áô¡"
+ "ÁÃä"
+ "ÁÃä¹Ò¡"
+ "ÁÃäÒ"
+ "ÁÃÃÂÒ"
+ "ÁÃÃÂÒ·"
+ "ÁÃÊØÁ"
+ "ÁĤ"
+ "ÁĵÂÙ"
+ "ÁÅ"
+ "ÁÅ·Ô¹"
+ "ÁÅÒÂ"
+ "ÁÅÒÂÙ"
+ "ÁÅéÒ§"
+ "Áǹ"
+ "ÁÇÂ"
+ "ÁÇÅ"
+ "ÁË¡ÃÃÁ"
+ "ÁËó¾"
+ "ÁËÃó¾"
+ "ÁËÃʾ"
+ "ÁËѹµâ·É"
+ "ÁËѹµì"
+ "ÁËÑȨÃÃÂì"
+ "ÁËÒ"
+ "ÁËÒª¹"
+ "ÁËÒ´àÅç¡"
+ "ÁËÒ´ä·Â"
+ "ÁËÒµÁÐ"
+ "ÁËÒÂÒ¹"
+ "ÁËÒÃÒª"
+ "ÁËÒÇÔ·ÂÒÅÑÂ"
+ "ÁËÒÈÒÅ"
+ "ÁËÒÊÁØ·Ã"
+ "ÁËÒËÔ§¤Øì"
+ "ÁËÔ§Êì"
+ "ÁËÔ´Å"
+ "ÁËÔÁÒ"
+ "ÁËÖÁÒ"
+ "ÁÍ"
+ "Áͧ"
+ "Áͧâ¡ÅÍ´ì"
+ "ÁÍ­"
+ "ÁÍ´"
+ "Á͹ÔàµÍÃì"
+ "Áͺ"
+ "ÁÍÁ"
+ "ÁÍÁáÁÁ"
+ "ÁÍÃͤâ¤"
+ "ÁÍÃì¿Õ¹"
+ "ÁÍÅâ·Ê"
+ "ÁÍÊâ¤Çì"
+ "ÁÍàµÍÃì"
+ "ÁÐ"
+ "ÁСÃÙ´"
+ "ÁС͡"
+ "ÁСÐâùÕ"
+ "ÁТÇÔ´"
+ "ÁТÒÁ"
+ "ÁТèǧ"
+ "ÁФèÒ"
+ "ÁЧÑèÇ"
+ "ÁЧØÁÁЧÒËÃÒ"
+ "ÁЫҧ"
+ "Áдѹ"
+ "ÁекÐ"
+ "ÁеÖè§"
+ "ÁеÙÁ"
+ "Áеéͧ"
+ "ÁйÒÇ"
+ "ÁлÃÒ§"
+ "ÁоÃéÒÇ"
+ "ÁоÅѺ"
+ "Áоٴ"
+ "ÁÐÁèǧ"
+ "ÁÐÂÁ"
+ "ÁÐÃÐ"
+ "ÁÐÃ×¹"
+ "ÁÐÅСÍ"
+ "ÁÐÅÔ"
+ "ÁÐËÐËÁÑ´"
+ "ÁÐÎÍ¡¡Ò¹Õ"
+ "ÁÐà¡Å×Í"
+ "ÁÐà¢×Í"
+ "ÁÐà´×èÍ"
+ "ÁÐà¿×ͧ"
+ "ÁÐàÃç§"
+ "ÁÐàÊç§"
+ "ÁÐáÁ"
+ "ÁÐâç"
+ "ÁÐä¿"
+ "ÁÑ¡"
+ "ÁÑ¡¡ÐÊѹ"
+ "ÁѤ¤Øà·È¡ì"
+ "ÁѤ¹Ò¡"
+ "ÁѦÇÒ¹"
+ "Áѧ¡Ã"
+ "Áѧ¤Ø´"
+ "Áѧ¤èÒ"
+ "ÁѨ¨Ø"
+ "ÁѨ©Ò"
+ "ÁѪ¬ÔÁÂÒÁ"
+ "ÁѪ¬ÔÁÇÑÂ"
+ "ÁѪ¬ÔÁÒ"
+ "Áѳ±¹ÈÔÅ»ì"
+ "Áѳ±¹Ò"
+ "ÁÑ´"
+ "ÁѵÊÂÒ"
+ "ÁÑ·¹Ð"
+ "ÁÑ·¹ÕÂÐ"
+ "ÁÑ·ÂÐ"
+ "ÁѸ°ҹ"
+ "ÁѸÂÁ"
+ "ÁѸÂÑʶì"
+ "Áѹ"
+ "焼"
+ "ÁÑÁÁÕè"
+ "ÁÑÂ"
+ "ÁÑŵÔ"
+ "ÁÑÅÅÔ¡Ò"
+ "ÁÑÇ"
+ "ÁÑÈÂÒ"
+ "ÁÑʵÒÃì´"
+ "ÁÑÊÁÑè¹"
+ "ÁÑÊÂÔ´"
+ "ÁÑÊÅÔ¹"
+ "ÁÑè§"
+ "ÁÑè¹"
+ "ÁÑèÇ"
+ "ÁÒ"
+ "ÁÒ¡"
+ "ÁÒ¡¡ÇèÒ"
+ "ÁÒ¦ºÙªÒ"
+ "ÁÒ¦Ð"
+ "ÁÒ³¾"
+ "ÁÒ³ÇÔ¡Ò"
+ "ÁÒ´"
+ "ÁÒµÃ"
+ "ÁҵáÒÃ"
+ "Áҵðҹ"
+ "ÁÒµÃÒ"
+ "ÁÒµØ"
+ "ÁÒµØÅÒ"
+ "ÁÒ¹"
+ "ÁÒ¹¾"
+ "ÁÒ¹Ð"
+ "ÁÒ¹Ôµ"
+ "ÁÒ¹Õ"
+ "ÁÒ¹ØÉ"
+ "ÁÒ¹ØÉÂÇÔ·ÂÒ"
+ "ÁÒºµÒ¾Ø´"
+ "ÁÒÂ"
+ "ÁÒÂÒ"
+ "ÁÒÂÒÇÕ"
+ "ÁÒÃ"
+ "ÁÒä"
+ "ÁÒôÃ"
+ "ÁÒôÒ"
+ "ÁÒÃÂÒ"
+ "ÁÒÃÂÒ·"
+ "ÁÒÃÈÃÕ"
+ "ÁÒÃص"
+ "ÁÒÅÑÂ"
+ "ÁÒÅÒàÃÕÂ"
+ "ÁÒÅÕ"
+ "ÁÒÈ"
+ "ÁÒÊ"
+ "ÁÒÊàµÍÃì"
+ "ÁÒàÅà«ÕÂ"
+ "ÁÒâ¤Ã"
+ "ÁÒ⹪­ì"
+ "ÁÓàÅ×ͧ"
+ "ÁÔ"
+ "ÁÔ¤ÊÑ­­Õ"
+ "ÁÔ¨©Ò"
+ "ÁÔ´"
+ "ÁÔµÃ"
+ "ÁÔµÔ"
+ "ÁԶعÒ¹"
+ "ÁÔÂѹÁèÒ"
+ "ÁÔÅÅÔ¡ÃÑÁ"
+ "ÁÔÅÅÔºÒÃì"
+ "ÁÔÅÅÔÅÔµÃ"
+ "ÁÔÅÅÔàÁµÃ"
+ "ÁÔÅÒµ"
+ "ÁÔÇÊÔ¤"
+ "ÁÔÊ"
+ "ÁÔÊ«Ò"
+ "ÁÔÊàµÍÃì"
+ "ÁÔàµÍÃì"
+ "ÁÔè§"
+ "ÁÔéÁ"
+ "ÁÕ"
+ "ÁÕ´"
+ "ÁÕ¹"
+ "ÁÕ¹Ò¤Á"
+ "ÁÕà·¹"
+ "ÁÕè"
+ "ÁÕèÊÑéÇ"
+ "ÁÖ§"
+ "ÁÖ¹"
+ "Á×´"
+ "Á×¹"
+ "Á×Í"
+ "Á×è¹"
+ "Á×éÍ"
+ "ÁØ"
+ "ÁØ¡"
+ "ÁØ¡´Ò"
+ "ÁØ¡´ÒËÒÃ"
+ "ÁØ¢"
+ "篤"
+ "ÁبÅÔ¹·ì"
+ "ÁØ´"
+ "Áص¡Ô´"
+ "ÁØ·ÔµÒ"
+ "ÁØ·Ø"
+ "ÁعԹ·Ãì"
+ "ÁعÕ"
+ "篼"
+ "ÁغÁÔº"
+ "ÁØÁ"
+ "ÁØÊÅÔÁ"
+ "ÁØÊÒ"
+ "ÁØè§"
+ "ÁØè¹"
+ "ÁØèÂ"
+ "ÁØé§"
+ "ÁÙ¡"
+ "ÁÙµÃ"
+ "ÁÙ¹"
+ "ÁÙÁÁÒÁ"
+ "ÁÙÅ"
+ "ÁÙŤèÒ"
+ "ÁÙÅ°Ò¹"
+ "ÁÙŹԸÔ"
+ "ÁÙà«Í"
+ "ÁÙè·Ùè"
+ "ÁÙèÅÕè"
+ "ÁàËÈÇÃ"
+ "ÁàËÊÕ"
+ "ÁàËÒÌÒÃ"
+ "Áâ¹"
+ "Áâ¹ÃÒËì"
+ "Áâ¹ÊÒàÃè"
+ "ÁâËÃʾ"
+ "ÁâËÃз֡"
+ "ÁâËÃÕ"
+ "ÁâËÌÒÃ"
+ "Áèǧ"
+ "Áèǹ"
+ "Áè͵éÍ"
+ "ÁèÍÂ"
+ "ÁèÍÎèÍÁ"
+ "ÁèÒ¹"
+ "ÁèÒÂ"
+ "Áéǹ"
+ "ÁéÇÂ"
+ "ÁéÒ"
+ "ÁéÒ¹"
+ "ÁéÒÁ"
+ "¡"
+ "¡Âèͧ"
+ "§"
+ "§âÂè"
+ "µÔ"
+ "¶ҡÃÃÁ"
+ "¹µÃì"
+ "¹µì"
+ "ÂÁ"
+ "ÂÁ¡"
+ "ÂÃç"
+ "ÂÅ"
+ "傤"
+ "ÂÇ´"
+ "Âǹ"
+ "傼"
+ "ÂÈ"
+ "ÂÍ"
+ "ÂÍ¡"
+ "Âͧ"
+ "ÂÍ´"
+ "Â͹"
+ "Âͺ"
+ "ÂÍÁ"
+ "ÂÐ"
+ "ÂÑ¡"
+ "ÂÑ¡¢Ô¹Õ"
+ "ÂÑ¡¢ì"
+ "ÂÑ¡ÂÍ¡"
+ "ÂÑ¡ÉÔ³Õ"
+ "ÂÑ¡ÉÕ"
+ "ÂÑ¡Éì"
+ "儤"
+ "ÂÑ´"
+ "ÂÑ´àÂÕ´"
+ "Âѹ"
+ "ÂѹµÃ¡ÃÃÁ"
+ "ÂѹµÃì"
+ "Âѹµì"
+ "儼"
+ "ÂÑè§Â×¹"
+ "ÂÑè¹"
+ "ÂÑèÇ"
+ "ÂÑé§"
+ "ÂÑéÇ"
+ "ÂÑéÇàÂÕéÂ"
+ "ÂÒ"
+ "ÂÒ¡"
+ "ÂÒ§"
+ "ÂÒ¨¡"
+ "ÂÒ´"
+ "ÂÒ´Ò"
+ "ÂÒµÃ"
+ "ÂÒµÃÒ"
+ "ÂÒ¹"
+ "ÂÒ¹Õ"
+ "ÂÒº"
+ "ÂÒºéÒ"
+ "ÂÒÁ"
+ "ÂÒÂ"
+ "ÂÒÇ"
+ "ÂÓ"
+ "ÂÔ¡"
+ "ÂÔ§"
+ "ÂÔ¹"
+ "ÂÔº"
+ "ÂÔ»«ÑÁ"
+ "ÂÔ»«Õ"
+ "ÂÔÁ¹Òʵԡ"
+ "ÂÔÇ"
+ "ÂÔËÇÒ"
+ "ÂÔè§"
+ "ÂÔéÁ"
+ "ÂÕ"
+ "ÂÕ¹"
+ "ÂÕÃÒ¿"
+ "ÂÕè"
+ "ÂÕèÊ¡"
+ "ÂÕèʧ"
+ "ÂÕèÊØè¹"
+ "ÂÕèÊèÒ¹"
+ "ÂÕèËÃÐ"
+ "ÂÕèËÃèÒ"
+ "ÂÕèËéÍ"
+ "ÂÖ¡Â×Í"
+ "ÂÖ´"
+ "Â×´"
+ "Â×¹"
+ "Â×Á"
+ "Â×è¹"
+ "Â×éÍ"
+ "ÂØ"
+ "ÂØ¡µì"
+ "Âؤ"
+ "ÂؤÅ"
+ "寤"
+ "ÂØ´"
+ "ÂصÔ"
+ "ÂصԸÃÃÁ"
+ "ÂØ·¸"
+ "ÂØ·¸¡ÒÃ"
+ "ÂØ·¸¹Ò"
+ "ÂØ·¸ì"
+ "Âط⸻¡Ã³ì"
+ "导"
+ "Âؾ´Õ"
+ "Âؾ§"
+ "ÂؾÃÒª"
+ "ÂؾàÂÒÇì"
+ "ÂؾàÃÈ"
+ "ÂØÃÂÒµÃ"
+ "ÂØǪ¹"
+ "ÂØâû"
+ "ÂØè§"
+ "ÂØèÁÂèÒÁ"
+ "ÂØèÂ"
+ "ÂØé§"
+ "ÂØéÂ"
+ "ÂÙ§"
+ "ÂÙ¹Ô¡«ì"
+ "ÂÙÃÂÒµÃ"
+ "ÂÙÃÔ¡"
+ "ÂÙÊà«ÍÃì"
+ "ÂÙàùÑÊ"
+ "ÂÙàÃà¹ÕÂÁ"
+ "ÂÙâ¡ÊÅÒàÇÕÂ"
+ "ÂÙâ´"
+ "ÂÙâÃ"
+ "ÂÙè"
+ "ÂâÊ"
+ "Âè¹"
+ "ÂèÍ"
+ "Âèͧ"
+ "ÂèÍÁ"
+ "ÂèÍÂ"
+ "ÂèÐ"
+ "ÂèÒ"
+ "ÂèÒ§"
+ "ÂèÒ¹"
+ "ÂèÒÁ"
+ "ÂèÓ"
+ "ÂéÇÂ"
+ "Âé͹"
+ "ÂéÍÁ"
+ "ÂéÍÂ"
+ "ÂéÒÂ"
+ "ÂéÓ"
+ "á"
+ "ç"
+ "ç¤Çѵ¶Ø"
+ "ç¤ì"
+ "è¹Ò"
+ "èԵ"
+ "èàè"
+ "èàÅ¢"
+ "ó"
+ "óѰ"
+ "ô"
+ "ôÕ"
+ "õÐ"
+ "õÔ"
+ "ö"
+ "öàÁÅì"
+ "ù"
+ "ú"
+ "þ"
+ "þÕ"
+ "ÃÁ"
+ "ÃÁ³Õ"
+ "ÃÁ³ÕÂì"
+ "ÃÁÂì"
+ "ÃÂÒ§¤ì"
+ "ÃÇ¡"
+ "Ãǧ"
+ "ÃÇ´"
+ "Ãǹ"
+ "ÃǹàÃ"
+ "ÃǺ"
+ "ÃÇÁ"
+ "ÃÇÂ"
+ "ÃÇÔ"
+ "ÃÇÕ"
+ "ÃȹÒ"
+ "ÃÊ"
+ "ÃʹÒ"
+ "ÃÊÒ¹àÇ·"
+ "ÃÊÔ¡"
+ "ÃËÑÊ"
+ "ÃËÔµ"
+ "ÃÍ"
+ "ÃÍ¡"
+ "Ãͧ"
+ "Ãͧà§ç§"
+ "ÃÍ´"
+ "Ã͹"
+ "Ãͺ"
+ "Ãͺ¤Íº"
+ "ÃÍÁ"
+ "ÃÍÂ"
+ "ÃÐ"
+ "ÃСÓ"
+ "ÃФ¹"
+ "ÃФÒÂ"
+ "ÃЦѧ"
+ "ÃЧÁ"
+ "ÃЧѺ"
+ "ÃдÁ"
+ "ÃдѺ"
+ "ÃдÙ"
+ "Ãз´"
+ "ÃзÁ"
+ "ÃзÇÂ"
+ "Ãз֡"
+ "ÃйҴ"
+ "ÃйҺ"
+ "ÃйÒÇ"
+ "Ãкº"
+ "ÃкÁ"
+ "Ãкͺ"
+ "ÃкѺ"
+ "Ãкҭ"
+ "ÃкҴ"
+ "ÃкÒÂ"
+ "ÃкÓ"
+ "ÃкÔÅ"
+ "Ãк×Í"
+ "ÃкØ"
+ "ÃÐÂÐ"
+ "ÃÐÂѺ"
+ "ÃÐÂÓ"
+ "ÃÐÂÔº"
+ "ÃÐÂéÒ"
+ "ÃÐÃÔ¡"
+ "ÃÐÅÍ¡"
+ "ÃÐÅÖ¡"
+ "ÃÐÇѧ"
+ "ÃÐÇÒ§"
+ "ÃÐËÇèÒ§"
+ "ÃÐËØÂ"
+ "ÃÐÍÒ"
+ "ÃÐÍØ"
+ "ÃÐ๹"
+ "ÃÐà¹ÃйҴ"
+ "ÃÐà¹Õ´"
+ "ÃÐàºÔ´"
+ "ÃÐàºÕ§"
+ "ÃÐàºÕ¹"
+ "ÃÐàºÕº"
+ "ÃÐàºç§"
+ "ÃÐàÁÕÂÃ"
+ "ÃÐàËÂ"
+ "ÃÐàËÔ´"
+ "ÃÐàËç¨"
+ "ÃÐá¤Ð"
+ "ÃÐá§é"
+ "ÃÐṧ"
+ "ÃÐáǧ"
+ "ÃÑ¡"
+ "ÃÑ¡¢ì"
+ "ÃÑ¡ºÕé"
+ "ÃÑ¡ÉÒ"
+ "ÃÑ¡Éì"
+ "ÃÑ¡áÃé"
+ "Ãѧ"
+ "ÃѧÊÔµ"
+ "ÃѧÊÕ"
+ "Ãѧá¡"
+ "Ãѧá¤"
+ "ÃѨ©Ò"
+ "ÃѪ"
+ "ÃѪ®ÒÀÔàÉ¡"
+ "ÃѪ´ÒÀÔàÉ¡"
+ "ÃѪ¹Õ"
+ "ÃÑ­¨Ç¹"
+ "ÃÑ°"
+ "ÃÑ°ºÒÅ"
+ "ÃÑ°ºØÃØÉ"
+ "ÃÑ°»ÃÐÈÒʹÈÒʵÃì"
+ "ÃÑ°»ÃÐËÒÃ"
+ "ÃÑ°Á¹µÃÕ"
+ "ÃÑ°ÇÔÊÒË¡Ô¨"
+ "ÃÑ°ÈÒʵÃì"
+ "ÃÑ°ÊÀÒ"
+ "ÃÑ´"
+ "Ãѵ"
+ "ÃѵµÔ"
+ "Ãѵ¹"
+ "Ãѵ¹µÃÑÂ"
+ "Ãѵ¹ºÑÅÅѧ¡ì"
+ "Ãѵ¹Ð"
+ "Ãѵ¹Ò"
+ "Ãѵ¹â¡ÊÔ¹·Ãì"
+ "Ãѵ¹ì"
+ "ÃѶÂÒ"
+ "Ãѹ"
+ "Ãѹ·´"
+ "ÃѺ"
+ "ÃѺÃͧ"
+ "ÃÑÁÀÒ"
+ "ÃÑÁÁÕè"
+ "ÃÑÇ"
+ "ÃÑÈÁÔÁѵ"
+ "ÃÑÈÁÔÁÒ¹"
+ "ÃÑÈÁÕ"
+ "ÃÑɮҡÃ"
+ "ÃÑÊà«ÕÂ"
+ "ÃÑèÇ"
+ "ÃÑé§"
+ "ÃÑé¹"
+ "ÃÑéÇ"
+ "ÃÒ"
+ "ÃÒ¡"
+ "ÃÒ¡ÉÊ"
+ "ÃÒ¤Ð"
+ "ÃÒ¤Ò"
+ "ÃÒ¤Ô¹"
+ "ÃÒ¤Õ"
+ "ÃÒ§"
+ "ÃÒ§ªÒ§"
+ "ÃÒ§ÇÑÅ"
+ "ÃÒª"
+ "ÃÒª¡ÒÃ"
+ "ÃÒª¹Ô¡ØÅ"
+ "ÃÒªºÑ³±ÔµÂʶҹ"
+ "ÃÒªÂì"
+ "ÃҪǧÈì"
+ "ÃÒªÇâç¡ÒÃ"
+ "ÃÒªÊÕÁÒ"
+ "ÃÒªÊÕËì"
+ "ÃҪѹÂì"
+ "ÃÒªÒ"
+ "ÃÒªÒ¸ÔÃÒª"
+ "ÃÒªÒÀÔàÉ¡"
+ "ÃÒªÒÇ´Õ"
+ "ÃÒªÔ¹Ô¡ØÅ"
+ "ÃÒªÔ¹Õ"
+ "ÃÒªÔ¹Ù»¶ÑÁÀì"
+ "ÃÒªÙ»¶ÑÁÀì"
+ "ÃÒªÙ»âÀ¤"
+ "ÃÒ­"
+ "ÃÒ´"
+ "ÃÒµ"
+ "ÃÒµÃ"
+ "ÃÒµÃÕ"
+ "ÃÒ¹"
+ "ÃÒº"
+ "ÃÒ¾³ÒÊÙÃ"
+ "ÃÒÁ"
+ "ÃÒÁ¤Óá˧"
+ "ÃÒÁÊÙÃ"
+ "ÃÒÁÑ­"
+ "ÃÒÁÒ"
+ "ÃÒÁÒ¸Ôº´Õ"
+ "ÃÒÁà¡ÕÂõÔì"
+ "ÃÒÂ"
+ "ÃÒ¡ÒÃ"
+ "ÃÒ§ҹ"
+ "ÃÒÇ"
+ "ÃÒÇÕ"
+ "ÃÒÈÕ"
+ "ÃÒÉ®Ã"
+ "ÃÒÉ®Ãì"
+ "ÃÒËÙ"
+ "ÃÒહ·Ãì"
+ "ÃÒ⪺ÒÂ"
+ "ÃÒâªÇÒ·"
+ "ÃÓ"
+ "ÃÓ¤Ò­"
+ "ÃӨǹ"
+ "ÃӾѹ"
+ "ÃÓ¾Ö§"
+ "ÃÓÁйÒ"
+ "ÃÓÅÖ¡"
+ "ÃÓà¾Â"
+ "ÃÔ"
+ "ÃÔ¡"
+ "ÃÔ´Êմǧ"
+ "ÃÔ¹"
+ "ÃÔº"
+ "ÃÔººÔé¹"
+ "ÃÔÁ"
+ "ÃÔÉÂÒ"
+ "ÃÔé¹"
+ "ÃÔéÇ"
+ "ÃÕ"
+ "ÃÕ¨ÔÊ·ÃÕ"
+ "ÃÕ´"
+ "ÃÕµ"
+ "ÃÕº"
+ "ÃÕÁ"
+ "ÃÕÇÔÇ"
+ "ÃÕàÊÔÃìª"
+ "ÃÕàÊÔÃì«"
+ "ÃÕâÁµ"
+ "ÃÕè"
+ "ÃÕé"
+ "ÃÖ§"
+ "ÃÖé§"
+ "Ã×è¹"
+ "Ã×éÍ"
+ "ÃØ"
+ "ÃØ¡"
+ "ÃØ¡¢¡Ð"
+ "ÃØ¡¢ªÒµÔ"
+ "ÃØ¡¢ÁÙÅ"
+ "ÃØ¡¢à·Ç´Ò"
+ "ÃØ¡¢ì"
+ "ÃاÃѧ"
+ "ÃبÔ"
+ "ÃبÕ"
+ "ÃØ´"
+ "Ãص"
+ "ÃØ·¸ì"
+ "ÃØ·Ã"
+ "Ãع"
+ "Ãعáç"
+ "ÃغÃÙè"
+ "ÃØÁ"
+ "ÃØɯì"
+ "ÃØÊâ«"
+ "ÃØè§"
+ "ÃØè¹"
+ "ÃØèÁ"
+ "ÃØèÁÃèÒÁ"
+ "ÃØèÂ"
+ "ÃØé§"
+ "ÃÙ"
+ "ÃÙ´"
+ "ÃÙ»"
+ "ÃÙÁÒà¹ÕÂ"
+ "ÃÙÊà«ÕÂ"
+ "ÃÙàÁà¹ÕÂ"
+ "ÃÙàÅçµµì"
+ "ÃÙè"
+ "ÃÙé"
+ "ÃÙé¨Ñ¡"
+ "ÃâË"
+ "Ãè¹"
+ "ÃèÁ"
+ "Ãèǧ"
+ "Ãèǹ"
+ "ÃèÇÁ"
+ "ÃèÍ"
+ "Ãèͧ"
+ "Ãè͹"
+ "ÃèÍÂ"
+ "ÃèÒ"
+ "ÃèÒ§"
+ "ÃèÒ¹"
+ "ÃèÒÂ"
+ "ÃèÓ"
+ "ÃèÓÃÇÂ"
+ "Ãé¹"
+ "Ãéͧ"
+ "Ãé͹"
+ "ÃéÍÂ"
+ "ÃéÒ"
+ "ÃéÒ§"
+ "ÃéÒ¹"
+ "ÃéÒÂ"
+ "ÃéÒÇ"
+ "Ä¡Éì"
+ "ĪÒ"
+ "ĪØ"
+ "ij"
+ "Ä´Õ"
+ "Ä´Ù"
+ "ĵ"
+ "Ä·¸Ò"
+ "Ä·¸Ôì"
+ "Ä·ÑÂ"
+ "ÄÉÀ"
+ "ÄÉÕ"
+ "Äå"
+ "ŧ"
+ "Å´"
+ "Å´Ò"
+ "Å´ÒÇÑÅÂì"
+ "Ź"
+ "ź"
+ "žºØÃÕ"
+ "ÅÁ"
+ "ÅŹÒ"
+ "ÅÅÒ¯"
+ "ÅÅÔµ"
+ "ÅÇ¡"
+ "Åǧ"
+ "ÅÇ´"
+ "ÅǹÅÒÁ"
+ "ÅǹÐ"
+ "ÅÇÐ"
+ "ÅËØ"
+ "ÅÍ¡"
+ "ÅÍ¡ÒÃÔ·ÖÁ"
+ "Åͧ"
+ "Åͧ¡Í§"
+ "Åͧ¨Ô¨Ù´"
+ "ÅÍ´"
+ "Å͵àµÍÃÕè"
+ "Å͹"
+ "Å͹´Í¹"
+ "Åͺ"
+ "ÅÍÁ"
+ "ÅÍÂ"
+ "ÅÍÍ"
+ "ÅÐ"
+ "ÅФÃ"
+ "ÅеԨٴ"
+ "ÅеԹ"
+ "ÅкѴ"
+ "ÅÐÁÑè§"
+ "ÅÐÁع"
+ "ÅÐÁèÍÁ"
+ "ÅÐÁéÒÂ"
+ "ÅÐÅÇÂ"
+ "ÅÐËÁÒ´"
+ "ÅÐËÒ¹"
+ "ÅÐËØè§"
+ "ÅÐÍͧ"
+ "ÅÐÍÒÂ"
+ "ÅÐàÁÍ"
+ "ÅÐàÁÒÐ"
+ "ÅÐàÁÔ´"
+ "ÅÐàÁÕ´"
+ "ÅÐàŧ"
+ "ÅÐàÅÔ§"
+ "ÅÐàÅÕ´"
+ "ÅÐàǧ"
+ "ÅÐàËÕèÂ"
+ "ÅÐàÍÕ´"
+ "ÅÐáÇ¡"
+ "ÅÐâÁº"
+ "ÅÐâÇé"
+ "ÅÐäÁ"
+ "ÅÑ¡"
+ "ÅÑ¡¢³Ð"
+ "ÅѡɳÐ"
+ "ÅÑ¡ÉÁÕ"
+ "ÅѤ¤Ð"
+ "ÅѤ¹Ò"
+ "ÅѤ¹ì"
+ "Åѧ"
+ "ÅѧàÅ"
+ "ÅѪªÒ"
+ "ÅѪªÕ"
+ "ÅÑ­¨¡Ã"
+ "ÅÑ­¨¹ì"
+ "ÅÑ­©"
+ "ÅÑ­©¡Ã"
+ "ÅÑ­©¹ì"
+ "ÅÑ´"
+ "ÅÑ´Ò"
+ "ÅÑ·¸Ô"
+ "ÅÑ·¸ì"
+ "Åѹ"
+ "ÅѺ"
+ "ÅѾ¸ì"
+ "ÅÑÂ"
+ "ÅÑè¹"
+ "ÅÑè¹·Á"
+ "ÅÒ"
+ "ÅÒ¡"
+ "ÅÒ§"
+ "ÅÒ­"
+ "ÅÒ´"
+ "ÅÒ¹"
+ "ÅÒº"
+ "ÅÒ»"
+ "ÅÒÀ"
+ "ÅÒÁ"
+ "ÅÒÁ¡"
+ "ÅÒÂ"
+ "ÅÒÂÊ×Í"
+ "ÅÒŹÐ"
+ "ÅÒÅÊ"
+ "ÅÒÇ"
+ "ÅÒÇ¡"
+ "ÅÒÇѳÂì"
+ "ÅÒÇÒ"
+ "ÅÒʹÐ"
+ "ÅÓ"
+ "ÅӴǹ"
+ "ÅӴѺ"
+ "ÅÓºÒ¡"
+ "ÅӾǹ"
+ "ÅӾͧ"
+ "ÅӾѧ"
+ "ÅÓÀآѹ"
+ "ÅÓÂͧ"
+ "ÅÓà¤ç­"
+ "ÅÓà¨Õ¡"
+ "ÅÓà¹Ò"
+ "ÅÓà¾Ò"
+ "ÅÓàÅÔ¡"
+ "ÅÓàÅÕ§"
+ "ÅÓ⾧"
+ "ÅÓäÂ"
+ "ÅÔ"
+ "ÅÔ¡ä¹µì"
+ "ÅÔ¢ÊÔ·¸Ôì"
+ "ÅÔ¢Ôµ"
+ "ÅÔ§"
+ "ÅÔ§¡ì"
+ "ÅÔ§¤ì"
+ "ÅÔ´"
+ "ÅÔµ"
+ "ÅÔµÁÑÊ"
+ "ÅÔµÃ"
+ "ÅÔ¹Ô¹"
+ "ÅÔº"
+ "ÅÔ»´Ò"
+ "ÅÔ»µì"
+ "ÅԻʵԡ"
+ "ÅÔ»Ô"
+ "ÅÔ¿µì"
+ "ÅÔÅÔµ"
+ "ÅÔÇ"
+ "ÅÔʧ"
+ "ÅÔà¡"
+ "ÅÔàºÕÂ"
+ "ÅÔàÇÍÃì¾ÙÅ"
+ "ÅÔèÁ"
+ "ÅÔèÇ"
+ "ÅÔé¹"
+ "ÅÔ鹨Õè"
+ "ÅÔéÁ"
+ "ÅÕ"
+ "ÅÕ¡"
+ "Åչء«ì"
+ "ÅÕº"
+ "ÅÕÅÒ"
+ "ÅÕÅÒÈ"
+ "ÅÕè"
+ "ÅÕé"
+ "ÅÖ¡"
+ "ÅÖ§¤ì"
+ "Å×´"
+ "Å׺"
+ "Å×Á"
+ "Å×Í"
+ "Å×è¹"
+ "Å×èÍ"
+ "Å×é¹"
+ "Å×éÍ"
+ "ÅØ"
+ "ÅØ¡"
+ "Åا"
+ "ÅØÂ"
+ "ÅØè¹"
+ "ÅØèÁ"
+ "ÅØèÂ"
+ "ÅØé§"
+ "ÅØéÂ"
+ "ÅÙ¡"
+ "ÅÙ¡¤éÒ"
+ "ÅÙ¡ºÒÈ¡ì"
+ "ÅÙº"
+ "ÅÙè"
+ "Åç͡ࡵ"
+ "Åè¹"
+ "ÅèÁ"
+ "Åèǧ"
+ "ÅèÇÁ"
+ "ÅèÍ"
+ "Åèͧ"
+ "Åè͹"
+ "ÅèÍÂ"
+ "ÅèÍáÅè"
+ "ÅèÐ"
+ "ÅèÒ"
+ "ÅèÒ§"
+ "ÅèÒ¹"
+ "ÅèÒÁ"
+ "ÅèÓ"
+ "Åé§àÅé§"
+ "Åé¹"
+ "ÅéÁ"
+ "Åéǧ"
+ "Åéǹ"
+ "ÅéÍ"
+ "ÅéÍÁ"
+ "ÅéÒ"
+ "ÅéÒ§"
+ "ÅéÒµéÒ"
+ "ÅéÒ¹"
+ "ÅéÓ"
+ "Ç¡"
+ "Ç¡Ð"
+ "ǧ"
+ "ǧ¡µ"
+ "ǧ¡ì"
+ "ǧ¨Ã"
+ "ǧȡÃ"
+ "ǧÈÒ"
+ "ǧÈì"
+ "Ǩ¹Ð"
+ "ǨÐ"
+ "ǨÕ"
+ "ǪÐ"
+ "ǪÔÃÐ"
+ "ǪÔÃÒÇظ"
+ "dzºÑµÃ"
+ "dz¾Ñ¹¸¹ì"
+ "dzÐ"
+ "dzԪ"
+ "dzԪªÒ"
+ "dzԪÂÒ"
+ "dzԪÂì"
+ "dzԾ¡"
+ "Ç´Õ"
+ "ǵÐ"
+ "Ç·Ð"
+ "Ç·Ñ­­ØµÒ"
+ "ǸءÒ"
+ "ǸÙ"
+ "ǹ"
+ "ǹÑÊ"
+ "ǹÒ"
+ "ǹҹµì"
+ "ǹԴÒ"
+ "ǹԾ¡"
+ "ÇÂÑÊÂì"
+ "Çç¤ì"
+ "ÇóÐ"
+ "ÇÃÁËÒÇÔËÒÃ"
+ "ÇÃä"
+ "ÇÃäÂì"
+ "ÇÃê"
+ "ÇÃêÂì"
+ "ÇÃó¡ÃÃÁ"
+ "ÇÃó¤´Õ"
+ "ÇÃó¹Ò"
+ "ÇÃó¾ÄµÔ"
+ "ÇÃóÂØ¡µì"
+ "ÇÃóÂص"
+ "ÇÃóÈÔÅ»ì"
+ "ÇÃóÐ"
+ "ÇÃó֡"
+ "ÇÃø¡"
+ "ÇÃø¹Ð"
+ "ÇÃÃÉ"
+ "ÇÃÃÉÒ"
+ "ÇÃÇÔËÒÃ"
+ "ÇÃÑ­­Ù"
+ "ÇÃÒ§¤¹Ò"
+ "ÇÃÒËÐ"
+ "ÇÃÒËì"
+ "ÇÃس"
+ "ÇÅÑ­ª¹ì"
+ "ÇÅÑÂ"
+ "ÇÅÒË¡"
+ "ÇÅÕ"
+ "ÇÈÐ"
+ "ÇÊÊÐ"
+ "ÇÊÊÕ"
+ "ÇÊÐ"
+ "ÇÊѹµ´ÔÅ¡"
+ "ÇÊѹµì"
+ "ÇÊÒ"
+ "ÇÊÕ"
+ "ÇÊØ"
+ "ÇÊظÒ"
+ "ÇÊع¸ÃÒ"
+ "ÇÊØÁ´Õ"
+ "ÇËÐ"
+ "ÇËÒ"
+ "ÇÍ"
+ "ÇÍ¡"
+ "ÇÍ¡áÇ¡"
+ "ÇÍ´"
+ "Ç͹"
+ "ÇÍÃìáù·ì"
+ "ÇÍÅÅìʵÃÕ·"
+ "ÇÍÅàÅÂì"
+ "ÇÍÅàÅÂìºÍÅ"
+ "ÇÍáÇ"
+ "ÇÐ"
+ "ÇÑ¡"
+ "ÇÑ¡¡Ð"
+ "ÇѤ"
+ "ÇѤ¤ÕÂì"
+ "ÇѤ¤Ø"
+ "ÇѤ«Õ¹"
+ "Çѧ"
+ "Çѧ¡ì"
+ "Çѧàǧ"
+ "ÇѨ¹Ð"
+ "ÇѪ"
+ "ÇѪ¬ì"
+ "ÇѪÃÐ"
+ "ÇѪÃÔ¹·Ãì"
+ "ÇѪÃÕ"
+ "Çѯ¨Ñ¡Ã"
+ "Çѯ¯Ô"
+ "ÇѯʧÊÒÃ"
+ "ÇѲ¡Ð"
+ "ÇѲ¡Õ"
+ "ÇѲ¹¸ÃÃÁ"
+ "ÇѲ¹Ð"
+ "ÇѲ¹Ò"
+ "Çѳ"
+ "Çѳ¯ì"
+ "Çѳ¹Ò"
+ "ÇÑ´"
+ "Çѵ"
+ "ÇѵµÒ"
+ "Çѵµì"
+ "Çѵ¶Ø"
+ "Çѵ¶ì"
+ "Çѵ¹Ð"
+ "ÇѵÃ"
+ "ÇѵÔ"
+ "Çѹ"
+ "Çѹ·¹Ò"
+ "Çѹ·¹ÕÂì"
+ "Çѹ·ÂËѵ¶ì"
+ "Çѹ·ÂÒÇظ"
+ "Çѹ·Ò"
+ "ÇѺ"
+ "ÇÑ»»Ð"
+ "ÇÑÁÁÔ¡"
+ "ÇÑÂ"
+ "ÇÑÅÂì"
+ "ÇÑÅÅÀ"
+ "ÇÑÅÅÕ"
+ "ÇÑÇ"
+ "ÇÑÊ´Ø"
+ "ÇÑÊÊÐ"
+ "ÇÑÊÊÒ¹Ð"
+ "ÇÑÊâÊ·¡"
+ "ÇÒ"
+ "ÇÒ¡"
+ "ÇÒ¡ÂÊÑÁ¾Ñ¹¸ì"
+ "ÇÒ¡ÂÐ"
+ "ÇÒ§"
+ "ÇÒ¨¡"
+ "ÇÒ¨Ò"
+ "ÇÒ³Ôª"
+ "ÇÒ³ÔªÂì"
+ "ÇÒ³Õ"
+ "ÇÒ´"
+ "ÇÒµÀÑÂ"
+ "ÇÒµÐ"
+ "ÇÒ·"
+ "ÇÒ·¡"
+ "Çҷ¡Ã"
+ "ÇÒ·Âì"
+ "ÇÒ·Ôµ"
+ "ÇÒ·Ô¹"
+ "ÇÒ·Õ"
+ "ÇÒ¹"
+ "ÇÒ¹Ã"
+ "ÇÒ¹ÃÔ¹·Ãì"
+ "ÇÒº"
+ "ÇÒ»Ð"
+ "ÇÒ»ÔµÐ"
+ "ÇÒ»Õ"
+ "ÇÒÁ"
+ "ÇÒÁÐ"
+ "ÇÒÂ"
+ "ÇÒ·Ùà¤"
+ "ÇÒÂÊÐ"
+ "ÇÒÃ"
+ "ÇÒÃÊÒÃ"
+ "ÇÒÃÔ"
+ "ÇÒÃÕ"
+ "ÇÒÃس"
+ "ÇÒÃسÕ"
+ "ÇÒÅ"
+ "ÇÒÅìÇ"
+ "ÇÒÇ"
+ "ÇÒʹÐ"
+ "ÇÒʹÒ"
+ "ÇÒʾ"
+ "ÇÒËÐ"
+ "ÇÒËÔ¹Õ"
+ "ÇÒÌ"
+ "ÇÔ¡ÃÁ"
+ "Çԡĵ"
+ "Çԡĵ¡Òóì"
+ "ÇԡĵÔ"
+ "ÇÔ¡Å"
+ "ÇÔ¡ÊÔµ"
+ "ÇÔ¡Ñ»"
+ "ÇÔ¡ÒÅ"
+ "ÇÔ¤ËÐ"
+ "ÇÔ§"
+ "ÇÔ§Ç͹"
+ "ÇÔ¨Âص"
+ "ÇԨóÐ"
+ "ÇÔ¨Å"
+ "ÇԨѡ¢³ì"
+ "ÇԨѡɳì"
+ "ÇÔ¨ÑÂ"
+ "ÇÔ¨ÒÃ"
+ "ÇÔ¨Òó­Ò³"
+ "ÇÔ¨Òóì"
+ "ÇÔ¨Ô"
+ "ÇÔ¨Ô¡Ô¨©Ò"
+ "ÇÔ¨Ôµ"
+ "ÇÔ¨ÔµÃ"
+ "ÇÔ¨Ô¹"
+ "ÇԨس"
+ "ÇÔ¨Øó"
+ "ÇÔªªÒ"
+ "ÇÔªªØ"
+ "ÇÔªªØÅ´Ò"
+ "ÇÔª­Ð"
+ "ÇÔª¹Õ"
+ "ÇÔªÒ"
+ "ÇÔªÒ¹¹Ð"
+ "ÇÔªÔµ"
+ "ÇÔ­­ÑµÔ"
+ "ÇÔ­­Ò³"
+ "ÇÔ­­Ù"
+ "ÇÔ±ÙÃÂì"
+ "ÇÔ´"
+ "ÇÔ´ÕâÍ"
+ "ÇÔµ¡"
+ "ÇÔµ¶ÒÃ"
+ "ÇÔµÒÁÔ¹"
+ "ÇÔ¶Õ"
+ "ÇԷ°ҹÐ"
+ "ÇÔ·ÂÒ"
+ "ÇÔ·ÂÒÅÑÂ"
+ "ÇÔ·ÂØ"
+ "ÇÔ·Âص"
+ "ÇÔ·ÇÑÊ"
+ "ÇÔ·Òóì"
+ "ÇÔ·ÒŹì"
+ "ÇÔ·Ôµ"
+ "ÇÔ·Ù"
+ "ÇÔ·ÙÃ"
+ "ÇÔ¸"
+ "ÇÔ¸ÇÒ"
+ "ÇÔ¸Ò"
+ "ÇÔ¸Ò¹"
+ "ÇÔ¸Õ"
+ "ÇÔ¸Ù»¹Ð"
+ "ÇԹѹµÙ"
+ "ÇÔ¹ÑÂ"
+ "ÇÔ¹Ò·Õ"
+ "ÇÔ¹ÒÈ"
+ "ÇÔ¹Ô¨"
+ "ÇÔ¹Ô¨©ÑÂ"
+ "ÇÔ¹Ôµ"
+ "ÇÔ¹ÔºÒµ"
+ "ÇÔ¹Ô»ÒµÔ¡"
+ "ÇÔ¹â´ÇÊì"
+ "ÇÔ¹â´Çì"
+ "ÇԺѵÔ"
+ "ÇÔºÒ¡"
+ "ÇÔºØÅ"
+ "ÇÔºØÅÂì"
+ "ÇÔºÙÅ"
+ "ÇÔºÙÅÂì"
+ "ÇÔ»¡ÒÃ"
+ "ÇÔ»¯ÔÊÒÃ"
+ "ÇÔ»ÃСÒÃ"
+ "ÇÔ»ÃеÔÊÒÃ"
+ "ÇÔ»ÃÐÅÒ»"
+ "ÇÔ»ÃÐÇÒÊ"
+ "ÇÔ»ÃÔµ"
+ "ÇÔ»ÅÒ»"
+ "ÇÔ»ÅÒÊ"
+ "ÇÔ»ÇÒÊ"
+ "ÇԻѡÉì"
+ "ÇÔ»ÑÊÊ¡"
+ "ÇÔ»ÑÊʹÒ"
+ "ÇÔ»â¤"
+ "ÇÔ¾Ò¡Éì"
+ "ÇÔ¾Ô¸·ÑȹÒ"
+ "ÇÔÀǵѳËÒ"
+ "ÇÔÀѧ¤ì"
+ "ÇÔÀѪ"
+ "ÇÔÀѵµÔ"
+ "ÇÔÀÒ"
+ "ÇÔÀÒÇ´Õ"
+ "ÇÔÁѵÔ"
+ "ÇÔÁص"
+ "ÇÔÁصµÔ"
+ "ÇÔõÐ"
+ "ÇÔÃÁ³Ð"
+ "ÇÔÃÃø¹ì"
+ "ÇÔÃÇÐ"
+ "ÇÔÃѪ"
+ "ÇÔÃѵ"
+ "ÇÔÃѵÔ"
+ "ÇÔÃÔÂÀÒ¾"
+ "ÇÔÃÔÂÐ"
+ "ÇÔÃظ"
+ "ÇÔÃØÌË¡"
+ "ÇÔÃØÌËì"
+ "ÇÔÅѹ´Ò"
+ "ÇÔÅÒ´"
+ "ÇÔÅÒ»"
+ "ÇÔÅÒÇѳÂì"
+ "ÇÔÅÒÈ"
+ "ÇÔÅÒÊ"
+ "ÇÔÅÒÊÔ¹Õ"
+ "ÇÔÇ"
+ "ÇÔÇóì"
+ "ÇÔÇÃÐ"
+ "ÇÔÇѯ"
+ "ÇÔÇѲ¹Ò¡ÒÃ"
+ "ÇÔÇѲ¹ì"
+ "ÇÔÇÒ·"
+ "ÇÔÇÒËÁ§¤Å"
+ "ÇÔÇÒËÐ"
+ "ÇÔÇÒËì"
+ "ÇÔÇÔ¨"
+ "ÇÔÇÔµ"
+ "ÇÔÇÔ¸"
+ "ÇÔÈÃص"
+ "ÇÔÈÇ¡Ã"
+ "ÇÔÈÇ¡ÃÃÁ"
+ "ÇÔÈÑÅÂì"
+ "ÇÔÈÒ¢Ð"
+ "ÇÔÈÒ¢Ò"
+ "ÇÔÈÒ§¤ì"
+ "ÇÔÈÒÅ"
+ "ÇÔÈÔÉ°ì"
+ "ÇÔÈØ·¸Ôì"
+ "ÇÔÈØ·¸ì"
+ "ÇÔɳØ"
+ "ÇÔɸÃ"
+ "ÇÔÉÑ¡µì"
+ "ÇÔÉÑÂ"
+ "ÇÔÉÒ³"
+ "ÇÔÉØÇѵ"
+ "ÇÔÊ¡Õé"
+ "ÇÔÊÃê¹ÕÂì"
+ "ÇÔÊĵ"
+ "ÇÔÊÊØ¡ÃÃÁ"
+ "ÇÔÊѪ¹Ò"
+ "ÇÔÊÑ­­Õ"
+ "ÇÔÊÑÂ"
+ "ÇÔÊÒ¢ºÙªÒ"
+ "ÇÔÊÒ¢Ð"
+ "ÇÔÊÒÁÑ­"
+ "ÇÔÊÒÊÐ"
+ "ÇÔÊÒË¡Ô¨"
+ "ÇÔÊÔ°"
+ "ÇÔÊا¤ÒÁÊÕÁÒ"
+ "ÇÔÊØ·¸Ôì"
+ "ÇÔÊØ·¸ì"
+ "ÇÔÊÙµÃ"
+ "ÇÔˤ"
+ "ÇÔ˧¤ì"
+ "ÇÔËÅÑè¹"
+ "ÇÔËÒÂÊÐ"
+ "ÇÔËÒÃ"
+ "ÇÔËÔ§ÊÐ"
+ "ÇÔËÔ§ÊÒ"
+ "ÇÔÌѧ¤ì"
+ "ÇÔÌÒÃ"
+ "ÇÔÌÒÃì"
+ "ÇÔà¤ÃÒÐËì"
+ "ÇÔàªÕÂÃ"
+ "ÇÔà·ÇÉ"
+ "ÇÔà·È"
+ "ÇÔà·âȺÒÂ"
+ "ÇÔ๵"
+ "ÇÔà¹"
+ "ÇÔàù·Ãì"
+ "ÇÔàÅ»"
+ "ÇÔàÇ¡"
+ "ÇÔàÈÉ"
+ "ÇÔàÈɳì"
+ "ÇÔàÊ·"
+ "ÇÔàËÊÒ"
+ "ÇÔâ¹·¡"
+ "ÇÔâÁ¡¢ì"
+ "ÇÔâ¤"
+ "ÇÔâè"
+ "ÇÔâè¹ì"
+ "ÇÔâò"
+ "ÇÔâø"
+ "ÇÔâø¹ì"
+ "ÇÔâŨ¹Ð"
+ "ÇÔäÅ"
+ "ÇÔè§"
+ "ÇÔè§à»ÕéÂÇ"
+ "ÇÔè¹"
+ "ÇÕ"
+ "ÇÕ¨Ô"
+ "ÇÕª¹Õ"
+ "ÇÕ«èÒ"
+ "ÇÕ³Ò"
+ "ÇÕáÃÃÁ"
+ "ÇÕê¹"
+ "ÇÕúØÃØÉ"
+ "ÇÕÃʵÃÕ"
+ "ÇÕèÇѹ"
+ "ÇÕèáÇÇ"
+ "ÇÕé´"
+ "ÇØ°Ô"
+ "Çز"
+ "ÇزÔ"
+ "ÇØ´"
+ "Çغ"
+ "ÇØè¹"
+ "ÇØé§"
+ "ÇØé¹"
+ "ÇØéÂ"
+ "ÇÙ´ÇÒ´"
+ "ÇÙ¸Ù"
+ "ÇÙº"
+ "ÇÙèÇÒÁ"
+ "ÇÙé"
+ "Ç๨Ã"
+ "Çâ¹·ÂÒ¹"
+ "ÇâÃ"
+ "ÇâáÒÊ"
+ "ÇâôÁ"
+ "Çèͧ"
+ "Çè͹"
+ "ÇèÒ"
+ "ÇèÒ§"
+ "ÇèÒ¹"
+ "ÇèÒÂ"
+ "ÇèÒÇ"
+ "ÇéÒ"
+ "ÇéÒ§"
+ "ÇéÒÂ"
+ "È¡"
+ "ȵ"
+ "ȵÇÃÃÉ"
+ "Ⱦ"
+ "ÈÃ"
+ "ÈÃÑ·¸Ò"
+ "ÈÃÑÂ"
+ "ÈÃÕ"
+ "ÈÃÕÇÔäÅÄ·¸Ôì"
+ "ÈÃÕÉÐà¡É"
+ "Èħ¤ÒÃ"
+ "ÈÈÔ"
+ "ÈÍ"
+ "ÈÍ¡"
+ "ÈÑ¡´Ò"
+ "ÈÑ¡´Ô¹Ò"
+ "ÈÑ¡´Ôì"
+ "ÈÑ¡ÂÀÒ¾"
+ "ÈÑ¡ÂÐ"
+ "ÈÑ¡Âì"
+ "ÈÑ¡ÃÒª"
+ "ÈѵÃÙ"
+ "ÈѾ·ì"
+ "ÈÑÅ¡ÃÃÁ"
+ "ÈÑÅÂÈÒʵÃì"
+ "ÈÑÅÂá¾·Âì"
+ "ÈÑÅÂì"
+ "Èҡ¾ط¸"
+ "ÈÒ¡ÂÁعÕ"
+ "ÈÒ¡ÂÐ"
+ "ÈÒµÃÒ¨ÒÃÂì"
+ "ÈÒ¹µÔ"
+ "ÈÒ¹µì"
+ "ÈÒ÷"
+ "ÈÒ÷ÙÅ"
+ "ÈÒÅ"
+ "ÈÒÅÒ"
+ "ÈÒÊ¡"
+ "ÈÒÊ´Ò"
+ "ÈÒʵÃÒ"
+ "ÈÒʵÃÒ¨ÒÃÂì"
+ "ÈÒʵÃì"
+ "ÈÒʹ¨Ñ¡Ã"
+ "ÈÒʹÒ"
+ "ÈÒʹٻ¶ÑÁÀ¡"
+ "ÈÒʹì"
+ "ÈÔ¢ÃÔ¹"
+ "ÈÔÃÔÃÒª"
+ "ÈÔÅ»¡Ã"
+ "ÈÔÅ»¡ÃÃÁ"
+ "ÈÔÅ»¡ÒÃ"
+ "ÈÔÅ»¡Ô¨"
+ "ÈÔÅ»ÇÔ·ÂÒ"
+ "ÈÔÅ»ÈÒʵÃì"
+ "ÈÔÅ»Ð"
+ "ÈÔŻҡÃ"
+ "ÈÔŻԹ"
+ "ÈÔÅ»Õ"
+ "ÈÔÅ»ì"
+ "ÈÔÅÒ"
+ "ÈÔÇÅÖ§¤ì"
+ "ÈÔÇÐ"
+ "ÈÔÇàÇ·"
+ "ÈÔÇâÁ¡¢ì"
+ "ÈÔÉÂì"
+ "ÈÔâÃÃÒº"
+ "ÈÕÃÉÐ"
+ "ÈÕÅ"
+ "ÈÖ¡"
+ "ÈÖ¡ÉÒ"
+ "ÈÖ¡ÉÒ¸Ô¡ÒÃ"
+ "ÈÖ¡ÉÒ¹Ôà·È¡ì"
+ "ÈØ¡Ãì"
+ "ÈØÀ¡Ã"
+ "ÈØÀ¹ÔÁÔµ"
+ "ÈØÀÁÑÊ´Ø"
+ "ÈØÀÁÒµÃÒ"
+ "ÈØÀÁÒÊ"
+ "ÈØÀÍÑ¡ÉÃ"
+ "ÈØÀÒ§¤ì"
+ "ÈØÀà¤ÃÒÐËì"
+ "ÈØÅ¡Ò¡Ã"
+ "ÈØÅ¡ÒÃÑ¡Éì"
+ "ÈØÅÕ"
+ "ÈÙ·Ã"
+ "ÈÙ¹Âì"
+ "Ê¡"
+ "Ê¡¹¸ì"
+ "Ê¡»Ã¡"
+ "Ê¡Å"
+ "Ê¡ÇÒ·Õ"
+ "ʡ͵Ᏼì"
+ "Ê¡Ñ´"
+ "Ê¡Ò"
+ "Ê¡ÒÇ"
+ "Ê¡Õ"
+ "ʡس"
+ "ʡسÒ"
+ "ʡسÕ"
+ "ʡعµì"
+ "Ê¡ØÅ"
+ "Ê¡ç͵Ᏼì"
+ "ʧ"
+ "ʧ¡ÃÒ¹µì"
+ "ʧ¡Ò"
+ "ʧ¢ÅÒ"
+ "ʧ¤ÃÒÁ"
+ "ʧ¦ì"
+ "椼"
+ "ʧǹ"
+ "ʧÊÑÂ"
+ "ʧÊÒÃ"
+ "ʧÊÒÃÇѯ"
+ "ʧѴ"
+ "ʧà¤ÃÒÐËì"
+ "ʧèÒ"
+ "ʳ±ì"
+ "Ê´"
+ "Ê´ÁÀì"
+ "ʴѺ"
+ "Ê´Ø´Õ"
+ "ʵÃÕ"
+ "ʵ͡"
+ "ʵѿ¿ì"
+ "ʵҧ¤ì"
+ "ʵÒÃì·"
+ "ʵÔ"
+ "ʵÔê¡à¡ÍÃì"
+ "ʵÙ"
+ "ʵêÍ¡"
+ "榁"
+ "ʶҹ"
+ "ʶҹ¡Òóì"
+ "ʶҹÐ"
+ "ʶҹÕ"
+ "ʶҺѹ"
+ "ʶһ¹Ò"
+ "ʶһ¹Ô¡"
+ "ʶһѵ¡ÃÃÁ"
+ "ʶҾÃ"
+ "ʶÒÇÃ"
+ "ʶԵ"
+ "ʶԵÂ"
+ "ʶԵÂÈÒʵÃì"
+ "ʶԵÂì"
+ "ʶԵÔ"
+ "ʶØÅ"
+ "ʶٻ"
+ "ʷ;"
+ "ʹ"
+ "ʹ·¹Ò"
+ "ʹ¸ÂÒ"
+ "ʹ¸Ô"
+ "ʹ¹ÃÒ¤Ò"
+ "ʹÁ"
+ "ʹͧ"
+ "ʹѺ"
+ "ʹѺʹع"
+ "ʹÑè¹"
+ "ʹҹ"
+ "ʹÒÁ"
+ "ʹԷ"
+ "ʹÔÁ"
+ "ʹء"
+ "ʹØè¹"
+ "ʹà·È"
+ "ʹà·èËì"
+ "ʹã¨"
+ "ʺ"
+ "漤"
+ "漦"
+ "ʺÒÂ"
+ "ʺÙè"
+ "Ê»ÃÔ§"
+ "Ê»ÒÂ"
+ "Ê»ÒࡵµÕ"
+ "Ê»ÔÃÔµ"
+ "ÊÀÒ"
+ "ÊÀÒ¾"
+ "ÊÀҾѲ¹ì"
+ "ÊÀÒÇÐ"
+ "ÊÁ"
+ "ÊÁ¡ÒÃ"
+ "ÊÁ¤ÇÃ"
+ "ÊÁ­Ò"
+ "ÊÁ³ÈÑ¡´Ôì"
+ "ÊÁ³Ð"
+ "ÊÁ´ØÅ"
+ "ÊÁ¶Ð"
+ "ÊÁ¹Ò¤Ø³"
+ "ÊÁºÑµÔ"
+ "ÊÁºÙóҭÒÊÔ·¸ÔÃÒªÂì"
+ "ÊÁºÙóì"
+ "ÊÁ»ÃдÕ"
+ "ÊÁ»Ä´Õ"
+ "ÊÁÀ¾"
+ "ÊÁÀÒÃ"
+ "ÊÁÁµ"
+ "ÊÁÁµÔ"
+ "ÊÁÁÒµÃ"
+ "ÊÁÁصÔ"
+ "ÊÁÃ"
+ "ÊÁÃö"
+ "ÊÁÃö¹Ð"
+ "ÊÁÃÊ"
+ "ÊÁÍ"
+ "ÊÁͧ"
+ "ÊÁѤÃ"
+ "ÊÁѪªÒ"
+ "ÊÁѹ"
+ "ÊÁÑÂ"
+ "ÊÁÒ"
+ "ÊÁÒ¤Á"
+ "ÊÁÒ¨ÒÃ"
+ "ÊÁÒªÔ¡"
+ "ÊÁÒ¸Ô"
+ "ÊÁÒ¹"
+ "ÊÁҺѵÔ"
+ "ÊÁÒÊ"
+ "ÊÁÔ§"
+ "ÊÁÔµ"
+ "ÊÁÕ"
+ "ÊÁد°Ò¹"
+ "ÊÁØ´"
+ "ÊÁØ·Ã"
+ "ÊÁØ·ÑÂ"
+ "ÊÁع"
+ "ÊÁعä¾Ã"
+ "ÊÁØËì"
+ "ÊÁà´ç¨"
+ "ÊÁྪ"
+ "ÊÁàÊÃç¨"
+ "ÊÁ⾸Ô"
+ "ÊÁâÀ¤"
+ "ÊÁâÀª"
+ "ÊÁèÓàÊÁÍ"
+ "Ê´"
+ "ʺ"
+ "ÊÂÁÀÙ"
+ "ÊÂͧ"
+ "ÊÂÒÁ"
+ "ÊÂÒÂ"
+ "ÊÂÔÇ"
+ "ÊÂØÁ¾Ã"
+ "ÊÂØÁÀÙ"
+ "Êç"
+ "ÊóÐ"
+ "ÊóҤÁ¹ì"
+ "ÊõÐ"
+ "ÊÃÃ"
+ "ÊÃäì"
+ "ÊÃþ"
+ "ÊÃþҡÃ"
+ "ÊÃþҧ¤ì"
+ "ÊÃÃྪ­"
+ "ÊÃÃàÊÃÔ­"
+ "ÊÃǧ"
+ "ÊÃÇÁ"
+ "ÊÃÇÅ"
+ "ÊÃÐ"
+ "ÊÃÒ­"
+ "ÊÃÕáԨ"
+ "ÊÃÕøҵØ"
+ "ÊÃÕÃÇÔ·ÂÒ"
+ "ÊÃÕÃÈÒʵÃì"
+ "ÊÃÕÃÐ"
+ "ÊÃØ»"
+ "ÊÃè§"
+ "ÊÃèÒ§"
+ "ÊÃéÍÂ"
+ "ÊÃéÒ§"
+ "ÊÃéÒÇàÊÕÂÇ"
+ "怵"
+ "ÊÄɯì"
+ "ÊÅ"
+ "ÊÅ´"
+ "恼"
+ "ÊÅǹ"
+ "ÊÅÇÂ"
+ "ÊÅÍ´"
+ "ÊÅ͹"
+ "ÊÅÍÂ"
+ "ÊÅÐ"
+ "ÊÅÑ¡"
+ "ÊÅÑ¡àµé"
+ "ÊÅÑ´"
+ "ÊÅÑ´ä´"
+ "ÊÅѺ"
+ "ÊÅÑÁ"
+ "ÊÅÑÇ"
+ "ÊÅÒ"
+ "ÊÅÒ¡"
+ "ÊÅÒ´"
+ "ÊÅҵѹ"
+ "ÊÅÒº"
+ "ÊÅÒÂ"
+ "ÊÅÔ´"
+ "ÊÅÔÅ"
+ "ÊÅÖ¡"
+ "ÊÅÖ§"
+ "ÊÅص"
+ "ÊÅغ"
+ "ÊÅØÁ¾Ã"
+ "ÊÅç͵"
+ "ÊÅéÒ§"
+ "ÊÇ¡"
+ "ÊÇ´"
+ "Êǹ"
+ "ÊǹÐ"
+ "ÊǹҡÒÃ"
+ "悼"
+ "ÊÇÁ"
+ "ÊÇÂ"
+ "ÊÇÃ"
+ "ÊÇÃäµ"
+ "ÊÇÃäÒÅÑÂ"
+ "ÊÇÃäì"
+ "ÊÇÃÃÂÒ"
+ "ÊÇÍ»"
+ "ÊÇÐ"
+ "ÊÇÑÊ´Ô¡ÒÃ"
+ "ÊÇÑÊ´ÔÀÒ¾"
+ "ÊÇÑÊ´Ôì"
+ "ÊÇÑÊ´Õ"
+ "ÊÇÑʵԡÐ"
+ "ÊÇÒ"
+ "ÊÇÒ§"
+ "ÊÇÒ´"
+ "ÊÇÒ·"
+ "ÊÇÒÁÔ"
+ "ÊÇÒÁÕ"
+ "ÊÇÒÂ"
+ "ÊÇÒÊ´Ôì"
+ "ÊÇÒËÐ"
+ "ÊÇÔ§"
+ "ÊÇÔµªì"
+ "ÊÇÔµ«ì"
+ "ÊÇÔÊà«ÍÃìᏴì"
+ "ÊÇÕà´¹"
+ "ÊÇèÒ§"
+ "ÊÇèÒ¹"
+ "ÊÇéÒ¹"
+ "ÊÊÒÃ"
+ "Êˡóì"
+ "ÊË¡ÒÃ"
+ "Ê˨Ã"
+ "Ê˪ҵÔ"
+ "ÊË»ÃЪҪҵÔ"
+ "Ê˾ѹ¸ÃÑ°"
+ "Ê˾ѹ¸ì"
+ "ÊËÀÒ¾"
+ "ÊËÃÑ°"
+ "ÊËÇÔÃÔÂÒ"
+ "ÊËÈÖ¡ÉÒ"
+ "ÊËѪ"
+ "ÊËÑÁº´Õ"
+ "ÊËÑʹѹì"
+ "ÊËÑÊÇÃÃÉ"
+ "ÊËÑÊÊÐ"
+ "ÊËÑÊÊÒ"
+ "ÊËÒÂ"
+ "ÊÍ"
+ "Êͧ"
+ "ÊÍ´"
+ "Ê͹"
+ "Êͺ"
+ "Ê;ÅÍ"
+ "ÊÍÂ"
+ "ÊÐ"
+ "ÊС´"
+ "ÊСԴ"
+ "ÊФÃÒ­"
+ "ÊдÁ"
+ "Êдǡ"
+ "ÊдÔé§"
+ "Êд֧"
+ "Êд×Í"
+ "Êдش"
+ "ÊдØé§"
+ "ÊеÍ"
+ "ÊеÖ"
+ "Êе×Í"
+ "Êзé͹"
+ "ÊзéÒ¹"
+ "Êкѡ"
+ "ÊкѴ"
+ "ÊкѴÊкÔé§"
+ "ÊкÑé¹"
+ "ÊкéÒ"
+ "ÊоÃÑ¡"
+ "ÊоÃÑè§"
+ "ÊоѴ"
+ "ÊоÑé¹"
+ "Êоҹ"
+ "ÊоÒÂ"
+ "ÊÐÃеÐ"
+ "ÊÐÃÐá˹è"
+ "ÊÐÅÖÁÊÐÅ×Í"
+ "ÊÐÇÕé´ÊÐÇéÒ´"
+ "ÊÐÊÁ"
+ "ÊÐÊÒ§"
+ "ÊÐÍÒ§"
+ "ÊÐÍÒ´"
+ "ÊÐÍÔ´ÊÐàÍÕ¹"
+ "ÊÐÍÔé§"
+ "ÊÐÍÖ¡"
+ "ÊÐÍ×é¹"
+ "ÊÐÍéÒ¹"
+ "ÊÐà¡ç´"
+ "ÊÐà´ç´"
+ "ÊÐà·Ôé¹"
+ "ÊÐà·×͹"
+ "ÊÐà·×é͹"
+ "ÊÐà¾ÃèÒ"
+ "ÊÐàÍÍÐ"
+ "ÊÐ⾡"
+ "ÊÐâÍ´ÊÐͧ"
+ "ÊÐãÀé"
+ "ÊÑ¡"
+ "ÊÑ¡¢Õ"
+ "ÊÑ¡ÇÒ"
+ "ÊÑ¡ËÅÒ´"
+ "ÊÑ¢ÂÐ"
+ "Êѧ¡Á·ÃѾÂì"
+ "Êѧ¡Ã"
+ "Êѧ¡Ã³Õ"
+ "Êѧ¡ÐµÑ§"
+ "Êѧ¡ÐÊÕ"
+ "Êѧ¡Ñ´"
+ "Êѧ¡Ñ»»Ð"
+ "Êѧ¡Ò"
+ "Êѧ¡ÒÈ"
+ "Êѧ¢ÂÒ"
+ "Êѧ¢ÒÃ"
+ "Êѧ¢ì"
+ "Êѧ¤­ÒµÔ"
+ "Êѧ¤Á"
+ "Êѧ¤Ñ§"
+ "Êѧ¤Ò¹Ò"
+ "Êѧ¤Ò¹ÒÂ"
+ "Êѧ¤Õµ"
+ "Êѧ¤ì"
+ "Êѧ¦¡ÃÃÁ"
+ "Êѧ¦¹Ò¡"
+ "Êѧ¦Á³±Å"
+ "Êѧ¦Á¹µÃÕ"
+ "Êѧ¦ÃÒª"
+ "Êѧ¦ÊÀÒ"
+ "Êѧ¦Ò¯Ô"
+ "Êѧ¦ÒÇÒÊ"
+ "ÊѧÇÃ"
+ "ÊѧÇѸÂÒÂ"
+ "ÊѧÇÒÅ"
+ "ÊѧÇÒÊ"
+ "ÊѧʴÁÀì"
+ "ÊѧÊÃäì"
+ "ÊѧÊÒÃÇѯ"
+ "ÊѧËÃ"
+ "ÊѧËóì"
+ "ÊѧËÒÃ"
+ "ÊѧËÒÃÔÁ·ÃѾÂì"
+ "ÊѧËÔµ"
+ "Êѧࡵ"
+ "Êѧࢻ"
+ "Êѧà¤ÃÒÐËì"
+ "ÊѧàǤÐ"
+ "ÊѧàǪ"
+ "ÊѧàÇÂ"
+ "ÊѧàÇÕ¹"
+ "Êѧâ¤"
+ "Êѧ⪹ì"
+ "愬"
+ "ÊѨ¡ÔÃÔÂÒ"
+ "ÊѨ¨Ð"
+ "ÊѨ­Ò³"
+ "ÊѨ¹ÔÂÁ"
+ "ÊѨ¾¨¹ì"
+ "愻¯"
+ "ÊÑ­¨Ã"
+ "ÊÑ­¨ÒÃ"
+ "ÊÑ­ªÒµ­Ò³"
+ "ÊÑ­ªÒµÔ"
+ "ÊÑ­¬Ò"
+ "ÊÑ­­Ò"
+ "ÊÑ­­Ò³"
+ "ÊÑ­­Õ"
+ "ÊÑ­»ÃСÒÈ"
+ "ÊÑ­Åѡɳì"
+ "Êѭਵ¹Ò"
+ "Êѳ°Ò¹"
+ "Êѳ±ì"
+ "ÊѳËì"
+ "ÊÑ´"
+ "愵"
+ "ÊѵµÐ"
+ "ÊѵºÃó"
+ "ÊѵÂҺѹ"
+ "ÊѵÂì"
+ "ÊѵǺÒÅ"
+ "ÊѵÇÇÔ·ÂÒ"
+ "ÊѵÇÒ"
+ "ÊѵÇÒÃ"
+ "ÊѵÇá¾·Âì"
+ "ÊѵÇâÅ¡"
+ "ÊѵÇì"
+ "ÊÑ·¸ÃÃÁ"
+ "ÊÑ·¸Ò"
+ "ÊÑ·ÈÒʵÃì"
+ "Êѹ"
+ "Êѹ´Ò¹"
+ "Êѹ´Ò»"
+ "ÊѹµÐ»Ò»Ò"
+ "ÊѹµÔ"
+ "Êѹµì"
+ "Êѹ¶ÇäÁµÃÕ"
+ "Êѹ¶Ñµ"
+ "Êѹ¶ÒÃ"
+ "Êѹ·¹Ð"
+ "Êѹ·¹Ò¡ÒÃ"
+ "Êѹ·Ð"
+ "Êѹ·Ñ´"
+ "Êѹ¸Ò¹"
+ "Êѹ¹ÔºÒµ"
+ "Êѹ¹ÔÇÒÊ"
+ "Êѹ¹ÔÉ°Ò¹"
+ "Êѹ¹ÔàÇÊ"
+ "Êѹʡĵ"
+ "Êѹâ´É"
+ "愼"
+ "ÊѺ»ÅѺ"
+ "ÊѺ»Ðô"
+ "ÊÑ»¤Ñº"
+ "ÊÑ»´¹"
+ "ÊÑ»´ÒËì"
+ "ÊÑ»·¹"
+ "ÊÑ»ÃÐÂØ·¸ì"
+ "Êѻ˧¡"
+ "ÊÑ»àËÃèÍ"
+ "ÊѾ"
+ "ÊѾ¾Ð"
+ "ÊѾ¾Ñ­­Ù"
+ "ÊѾÂÍ¡"
+ "ÊѾà¾àËÃÐ"
+ "ÊÑÁºÙóì"
+ "ÊÑÁ»ªÑ­­Ð"
+ "ÊÑÁ»·Ò"
+ "ÊÑÁ»·Ò¹"
+ "ÊÑÁ»Âص"
+ "ÊÑÁ»ÃÐÊÔ·¸Ôì"
+ "ÊÑÁ»ÃÐËÒÃ"
+ "ÊÑÁ»ÃÒÂÀ¾"
+ "ÊÑÁ»ÃÒÂÔ¡À¾"
+ "ÊÑÁ»â¤"
+ "ÊÑÁ¼ÑÊ"
+ "ÊÑÁ¾Ñ·¸ì"
+ "ÊÑÁ¾Ñ¹¸¹ì"
+ "ÊÑÁ¾Ñ¹¸ÀÒ¾"
+ "ÊÑÁ¾Ñ¹¸ÁÔµÃ"
+ "ÊÑÁ¾Ñ¹¸äÁµÃÕ"
+ "ÊÑÁ¾Ñ¹¸ì"
+ "ÊÑÁ¾Ò¸Ð"
+ "ÊÑÁ¾Ø·¸Ð"
+ "ÊÑÁÀÒÃÐ"
+ "ÊÑÁÀÒɳì"
+ "ÊÑÁÁ¹Ò"
+ "ÊÑÁÁÒ"
+ "ÊÑÁÁÒªÕ¾"
+ "ÊÑÁÄ·¸Ôì"
+ "ÊÑÁ⾸Ô"
+ "ÊÑÁâÁ·¹Õ¡¶Ò"
+ "ÊÑÊ´Õ"
+ "ÊÑÊÊÐ"
+ "ÊÑè§"
+ "ÊÑè¹"
+ "ÊÑé¹"
+ "ÊÒ"
+ "ÊÒ¡"
+ "ÊÒ¡Ãèì"
+ "ÊÒ¡Å"
+ "ÊÒ¢Ò"
+ "ÊÒ¤Ã"
+ "ÊÒ¤Ù"
+ "ÊÒ¤àÃÊ"
+ "ÊÒ§"
+ "ÊÒ´"
+ "ÊÒ·Ã"
+ "ÊÒ·ÔÊ"
+ "ÊÒ¸¡"
+ "ÊÒ¸ÂÒÂ"
+ "ÊÒ¸ÒóÀÑÂ"
+ "ÊÒ¸ÒóÃÑ°"
+ "ÊÒ¸ÒóÊØ¢"
+ "ÊÒ¸ÒóÐ"
+ "ÊÒ¸Òóٻ¡ÒÃ"
+ "ÊÒ¸ÒóٻâÀ¤"
+ "ÊÒ¸Ôµ"
+ "ÊÒ¸Ø"
+ "ÊÒ¹"
+ "ÊÒ¹ØÈÔÉÂì"
+ "ÊÒº"
+ "ÊÒºÊÙ­"
+ "ÊÒºÒ¹"
+ "ÊÒ»"
+ "ÊÒÁ"
+ "ÊÒÁѤ¤Õ"
+ "ÊÒÁÑ­"
+ "ÊÒÁÒ¹Âì"
+ "ÊÒÁÒö"
+ "ÊÒÁÔµ"
+ "ÊÒÁÔÀÑ¡´Ôì"
+ "ÊÒÁÕ"
+ "ÊÒÁà³Ã"
+ "ÊÒÂ"
+ "ÊÒªÙ"
+ "ÊÒÂÂÙ"
+ "ÊÒÂѳËì"
+ "ÊÒÃ"
+ "ÊÒä´Õ"
+ "ÊÒöÕ"
+ "ÊÒ÷"
+ "ÊÒùÔà·È"
+ "ÊÒúº"
+ "ÊÒúÃó"
+ "ÊÒúѭ"
+ "ÊÒúѺ"
+ "ÊÒúҭ"
+ "ÊÒþѴ"
+ "ÊÒþѹ"
+ "ÊÒþҧ¤ì"
+ "ÊÒÃÀÒ¾"
+ "ÊÒÃÀÕ"
+ "ÊÒÃÇѵÃ"
+ "ÊÒÃÐ"
+ "ÊÒÃÐá¹"
+ "ÊÒÃÑ·¸ì"
+ "ÊÒÃÑÁÀì"
+ "ÊÒÃÒ³Õ¡Ã"
+ "ÊÒÃҹءÃÁ"
+ "ÊÒÃÕÃÔ¡¸ÒµØ"
+ "ÊÒÅÐǹ"
+ "ÊÒÅÔ¡Ò"
+ "ÊÒÅÔ¹Õ"
+ "ÊÒÅÕ"
+ "ÊÒÅÕè"
+ "ÊÒÇ"
+ "ÊÒÇ¡"
+ "ÊÒÇÔ¡Ò"
+ "ÊÒÇÔµÃ"
+ "ÊÒÇÔµÃÕ"
+ "ÊÒʹì"
+ "ÊÒÊì¹"
+ "ÊÒËÃèÒÂ"
+ "ÊÒËÑÊ"
+ "ÊÒà¡"
+ "ÊÒà˵Ø"
+ "ÊÒáËá"
+ "ÊÒâ·"
+ "ÊÒâê"
+ "ÊÒä¶Â"
+ "ÊÓ"
+ "ÊӤѭ"
+ "ÊӷѺ"
+ "Êӹǹ"
+ "Êӹѡ"
+ "ÊÓ¹Ö¡"
+ "ÊӺѴÊӹǹ"
+ "ÊÓ»ÐËÅѧ"
+ "ÊÓ»Ñé¹"
+ "ÊÓÁÐËÒ"
+ "ÊÓÁÐàÅà·àÁÒ"
+ "ÊÓÁÐ⹤ÃÑÇ"
+ "ÊÓÃǨ"
+ "ÊÓÃÇÁ"
+ "ÊÓÃÇÂ"
+ "ÊÓÃÇÅ"
+ "ÊÓÃÍ¡"
+ "ÊÓÃͧ"
+ "ÊÓÃѺ"
+ "ÊÓÃÒ¡"
+ "ÊÓÃÒ­"
+ "ÊÓÃÔ´"
+ "ÊÓÅÑ¡"
+ "ÊÓÅÒ¹"
+ "ÊÓÅÕ"
+ "ÊÓÊè͹"
+ "ÊÓËÃѺ"
+ "ÊÓËÒ"
+ "ÊÓÍÍÂ"
+ "ÊÓÍÒ§"
+ "ÊÓà¹Ò"
+ "ÊÓà¹Õ§"
+ "ÊÓàÀÒ"
+ "ÊÓàÃÔ§"
+ "ÊÓàÃç¨"
+ "ÊÓà˹Õ¡"
+ "ÊÓàËÃè"
+ "ÊÓá´§"
+ "ÊÓáŧ"
+ "ÊÓâç"
+ "ÊÔ"
+ "ÊÔ¡¢Ò"
+ "ÊÔ¢Ã"
+ "ÊÔ¤ÒÅ"
+ "ÊÔ§"
+ "ÊÔ§¢Ã"
+ "ÊÔ§¤ÒÃ"
+ "ÊÔ§¤ÒÅ"
+ "ÊÔ§¤â»Ãì"
+ "ÊÔ§¤ì"
+ "ÊÔ§ÊÒÃÒÊѵÇì"
+ "Êԧ˹ҷ"
+ "Êԧ˺ѭªÃ"
+ "ÊÔ§ËÃÒª"
+ "ÊÔ§ËÅ"
+ "ÊÔ§ËÒ¤Á"
+ "ÊÔ§ËÒʹì"
+ "ÊÔ§Ëì"
+ "ÊÔ§âµ"
+ "ÊÔ­¨¹ì"
+ "ÊÔµ"
+ "ÊÔ¶ÔÅ"
+ "ÊÔ·¸"
+ "ÊÔ·¸Ò"
+ "ÊÔ·¸Òö"
+ "ÊÔ·¸Ô"
+ "ÊÔ·¸Ôì"
+ "ÊÔ¹"
+ "ÊÔ¹¤éÒ"
+ "ÊÔ¹¸Ø"
+ "ÊÔ¹Õ"
+ "ÊÔ¹à¸ÒÇì"
+ "ÊÔº"
+ "ÊÔÁ¾ÅÕ"
+ "ÊÔÃÔ"
+ "ÊÔÃÔ¡ÔµÔì"
+ "ÊÔÅÒ"
+ "ÊÔÇ"
+ "ÊÔà¹Ë¡"
+ "ÊÔà¹ËÒ"
+ "ÊÔà¹èËÒ"
+ "ÊÔè§"
+ "ÊÔèÇ"
+ "ÊÔé¹"
+ "ÊÕ"
+ "ÊÕ¡Ò"
+ "ÊÕ´Í"
+ "ÊÕè"
+ "ÊÖ¡"
+ "Ê׺"
+ "Ê×èÍ"
+ "ÊØ"
+ "ÊØ¡"
+ "ÊØ¡¢ì"
+ "ÊØ¡Ã"
+ "ÊØ¡ÕéÂÒ¡Õé"
+ "ÊØ¢"
+ "ÊØ¢Ð"
+ "ÊØ¢Ò"
+ "ÊØ¢ÒÀÔºÒÅ"
+ "ÊØ¢ÒÃÁ³ì"
+ "ÊØ¢ÒÇ´Õ"
+ "ÊØ¢Õ"
+ "ÊØ¢ØÁ"
+ "ÊØ¢ØÁÒÅ"
+ "Êؤµ"
+ "ÊؤµÔ"
+ "Êؤ¹¸ÃÊ"
+ "Êؤ¹¸ì"
+ "Êؤѹ¸ì"
+ "Êا¡Ò¡Ã"
+ "ÊاÊÔ§"
+ "ÊبÃÔµ"
+ "Êب˹Õè"
+ "ÊبÔ"
+ "Êت¹"
+ "ÊتҴÒ"
+ "ÊØ­"
+ "ÊØ­­Ò¡ÒÈ"
+ "Êس"
+ "ÊسÔÊÒ"
+ "ÊØ´"
+ "ÊØ´Ò"
+ "毵"
+ "ÊصµÐ"
+ "ÊصÔ"
+ "ÊØ·¸ÒÇÒÊ"
+ "ÊØ·¸Ô"
+ "ÊØ·¸ì"
+ "ÊØ·Ñȹì"
+ "ÊظÒ"
+ "ÊظÕ"
+ "Êع·Ã"
+ "Êع·ÃÕ"
+ "Êع·ÃÕÂÀÒ¾"
+ "Êع·ÃÕÂÈÒʵÃì"
+ "ÊعѢ"
+ "Êعѹ·ì"
+ "ÊغÃó"
+ "ÊغԹ"
+ "ÊؾÃó"
+ "ÊØÀѤ"
+ "ÊØÀÒ¾"
+ "ÊØÀÒÉÔµ"
+ "ÊØÁ"
+ "ÊØÁ·ØÁ"
+ "ÊØÁ¹"
+ "ÊØÁ¹Ò"
+ "ÊØÁÒÅÕ"
+ "ÊØÃÊÕ˹ҷ"
+ "ÊØÃѵÔ"
+ "ÊØÃÑÊÇ´Õ"
+ "ÊØÃÒ"
+ "ÊØÃÒ§¤¹Ò"
+ "ÊØÃÒ§¤¹Ò§¤ì"
+ "ÊØÃÒÃÑ¡Éì"
+ "ÊØÃÒÅÑÂ"
+ "ÊØÃÒÉ®Ãì"
+ "ÊØÃÔ¹·Ãì"
+ "ÊØÃÔ¡ÒÃ"
+ "ÊØÃÔ¡ÒÅ"
+ "ÊØÃÔ¤µÔ"
+ "ÊØÃÔ¤ÃÒÊ"
+ "ÊØÃÔ§"
+ "ÊØÃÔ¹"
+ "ÊØÃÔÂÁ³±Å"
+ "ÊØÃÔÂÐ"
+ "ÊØÃÔÂѹ"
+ "ÊØÃÔÂÒ"
+ "ÊØÃÔÂØ»ÃÒ¤Ò"
+ "ÊØÃÔÂà¤ÃÒÐËì"
+ "ÊØÃÔ๷Ãì"
+ "ÊØÃÔàÂÈ"
+ "ÊØÃÔâÂ"
+ "ÊØÃÕÂì"
+ "ÊØÃØèÂÊØÃèÒÂ"
+ "ÊØÃàÊÕ§"
+ "ÊØŵèÒ¹"
+ "ÊØÇÀÒ¾"
+ "ÊØÇÃó"
+ "ÊØÇÒ¹"
+ "ÊØÇÔ·Âì"
+ "ÊØÇÔ¹ÑÂ"
+ "ÊØÇÔÁÅ"
+ "ÊØÊÒ¹"
+ "ÊØ˹ѵ"
+ "ÊØËÃèÒÂ"
+ "ÊØàÁ¸"
+ "ÊØàÁÃØ"
+ "ÊØàËÃèÒ"
+ "ÊØàÍ«"
+ "ÊØèÁ"
+ "ÊØéÁ"
+ "ÊÙ"
+ "ÊÙ§"
+ "ÊÙ¨Ô"
+ "ÊÙ­"
+ "ÊÙ´"
+ "ÊÙµ"
+ "ÊÙµÃ"
+ "ÊÙµÔ"
+ "ÊÙµÔ¡ÃÃÁ"
+ "ÊٵԺѵÃ"
+ "ÊÙµÔÈÒʵÃì"
+ "ÊÙµÔá¾·Âì"
+ "ÊÙ·"
+ "ÊÙº"
+ "ÊÙÊÕ"
+ "ÊÙè"
+ "ÊÙé"
+ "Êࡵ"
+ "ÊàµÍÃÔâÍ"
+ "Êàµç¡"
+ "Êà¹èËì"
+ "Ê໡"
+ "Ê໡µÃÑÁ"
+ "Ê໹"
+ "Êà»Ã´ªÕµ"
+ "Ê᡹"
+ "Êáŧ"
+ "ÊâÁÊÃ"
+ "Êâê"
+ "ÊäµÅì"
+ "押"
+ "ÊäÅ´ì"
+ "揤"
+ "Êèǹ"
+ "ÊèÇÂ"
+ "ÊèÍ"
+ "Êèͧ"
+ "Êè͹"
+ "ÊèÒ"
+ "ÊèÒ¹"
+ "ÊèÒÂ"
+ "ÊèÒËÃÕè"
+ "ÊèÒàËÅéÒ"
+ "ÊèÓ"
+ "Êé¹"
+ "ÊéÁ"
+ "ÊéÁ»èÍÂ"
+ "Êéǧ"
+ "ÊéÇÁ"
+ "ÊéÇÂ"
+ "Êéͧ"
+ "ÊéÍÁ"
+ "Ë¡"
+ "˧"
+ "˧Êì"
+ "˧Í"
+ "˧͡"
+ "˧ʹ"
+ "˧͹"
+ "˧ÍÂ"
+ "˧ѡ"
+ "˧Ѻ"
+ "˧ÒÂ"
+ "˧Ó"
+ "˧ԡ"
+ "˧ԧ"
+ "˧ÔÁ"
+ "˧֡"
+ "˧ا˧ԧ"
+ "˧ش˧Դ"
+ "˧غ"
+ "˧ØèÂ"
+ "˧èÍÁ"
+ "˧èÒ§"
+ "˧èÒÇ"
+ "Ë­Ô§"
+ "Ë­Ôº"
+ "Ë­éÒ"
+ "Ë´"
+ "Ë·ÑÂ"
+ "˹"
+ "˹ǡ"
+ "˹Ǵ"
+ "˹Í"
+ "˹͡"
+ "˹ͧ"
+ "˹͹"
+ "˹ѡ"
+ "˹ѧ"
+ "˹ѧÊ×Í"
+ "˹Ѻ"
+ "˹Ñè¹"
+ "˹Ò"
+ "˹Ҵ"
+ "˹ҹ"
+ "˹ÒÁ"
+ "˹ÒÇ"
+ "˹Ó"
+ "˹ÓàÅÕéº"
+ "˹Õ"
+ "˹պ"
+ "˹Õé"
+ "˹ֺ"
+ "˹Öè§"
+ "˹״"
+ "˹Ø"
+ "˹ع"
+ "˹غ"
+ "˹ØèÁ"
+ "˹ØèÂ"
+ "˹Ù"
+ "˹çÍÂá¹è"
+ "˹èǧ"
+ "˹èÇÂ"
+ "˹èÇ¡Ե"
+ "˹èÍ"
+ "˹èÍÂ"
+ "˹èÒ"
+ "˹èÒ§"
+ "˹èÒÂ"
+ "˹éÒ"
+ "˹éÒ·Õè"
+ "ËÁ¡"
+ "ËÁ´"
+ "ËÁÇ¡"
+ "ËÁÇ´"
+ "ËÁÍ"
+ "ËÁÍ¡"
+ "ËÁͧ"
+ "ËÁ͹"
+ "ËÁͺ"
+ "ËÁÍÂ"
+ "ËÁÑ¡"
+ "ËÁÑ´"
+ "ËÁѹ"
+ "ËÁѺ"
+ "ËÁÑè¹"
+ "ËÁÑé¹"
+ "ËÁÒ"
+ "ËÁÒ¡"
+ "ËÁÒ¡ÎÍÊ"
+ "ËÁÒ§"
+ "ËÁÒ´"
+ "ËÁÒÂ"
+ "ËÁÔè¹"
+ "ËÁÕ"
+ "ËÁÕè"
+ "ËÁÖ¡"
+ "ËÁ×è¹"
+ "ËÁØ´"
+ "ËÁع"
+ "ËÁغ"
+ "ËÁغËÁÔº"
+ "ËÁØèÂ"
+ "ËÁÙ"
+ "ËÁÙè"
+ "ËÁè¹"
+ "ËÁèͧ"
+ "ËÁè͹"
+ "ËÁèÍÁ"
+ "ËÁèÒ"
+ "ËÁèÓ"
+ "ËÁéÍ"
+ "ËÁéÒÂ"
+ "Ë¡"
+ "Ë´"
+ "ËÂÇ¡"
+ "ËÂǺ"
+ "ËÂÍ¡"
+ "ËÂÍ¡àÍÔ¹"
+ "ËÂͧ"
+ "ËÂÍ´"
+ "ËÂÍÁáËÂÁ"
+ "ËÂÍÂ"
+ "ËÂÑ¡"
+ "ËÂѧ"
+ "ËÂÑ´"
+ "ËÂѹ"
+ "ËÂѺ"
+ "ËÂÑè§"
+ "ËÂÒ¡äÂè"
+ "ËÂÒ´"
+ "ËÂÒº"
+ "ËÂÒÁ"
+ "ËÂÒÇ"
+ "ËÂÓà»"
+ "ËÂÔ¡"
+ "ËÂÔº"
+ "ËÂÔÁ"
+ "ËÂÔè§"
+ "ËÂÕ"
+ "ËÂØ¡ËÂÔ¡"
+ "ËÂØ´"
+ "ËÂغ"
+ "ËÂØÁËÂÔÁ"
+ "ËÂØè¹"
+ "ËÂÙ¡ÂÒ"
+ "ËÂçͧáËÂç§"
+ "ËÂè§"
+ "ËÂèͧ"
+ "ËÂè͹"
+ "ËÂèÍÁ"
+ "ËÂèÍÂ"
+ "ËÂèÒ"
+ "ËôÕ"
+ "ËÃÃÉÒ"
+ "ËÃÍ"
+ "ËÃÍ¡"
+ "ËÃÍÂ"
+ "ËÃÒ"
+ "ËÃÔ"
+ "ËÃÔè§"
+ "ËÃÕ´"
+ "ËÃÕè"
+ "ËÃ×Í"
+ "ËÃغ"
+ "ËÃغÃÙè"
+ "ËÃغËÃÙè"
+ "ËÃØèÁ"
+ "ËÃÙ"
+ "ËÃçÍÁáËÃçÁ"
+ "ËÄ·ÑÂ"
+ "ËÄËÃÃÉì"
+ "ËÄâË´"
+ "ËÅ"
+ "聤"
+ "ËÅ´"
+ "ËŹ"
+ "聼"
+ "ËÅǧ"
+ "ËÅÇÁ"
+ "ËÅÍ"
+ "ËÅÍ¡"
+ "ËÅÍ´"
+ "ËÅ͹"
+ "ËÅÍÁ"
+ "ËÅÐ"
+ "ËÅÑ¡"
+ "ËÅѧ"
+ "ËÅÑ´"
+ "ËÅѺ"
+ "ËÅÑÇ"
+ "ËÅÑè§"
+ "ËÅÑè¹"
+ "ËÅÒ"
+ "ËÅÒ¡"
+ "ËÅÒ¹"
+ "ËÅÒº"
+ "ËÅÒÁ"
+ "ËÅÒÂ"
+ "ËÅÒÇ"
+ "ËÅÔ¡"
+ "ËÅÔÁ"
+ "ËÅÔÇ"
+ "ËÅÔèÇ"
+ "ËÅÕ"
+ "ËÅÕ¡"
+ "ËÅÕÎ×éÍ"
+ "ËÅ׺"
+ "ËÅØ¡ËÅÔ¡"
+ "ËÅØ´"
+ "ËÅع"
+ "ËÅغ"
+ "ËÅØÁ"
+ "ËÅÙè"
+ "ËÅè¹"
+ "ËÅèÁ"
+ "ËÅèÍ"
+ "ËÅè͹"
+ "ËÅèÐ"
+ "ËÅéÒ"
+ "肤"
+ "ËÇ´"
+ "Ëǹ"
+ "ËÇÂ"
+ "ËÇÍ"
+ "ËÇÍ´"
+ "ËÇÐ"
+ "ËÇѧ"
+ "ËÇÑ´"
+ "ËÇÑÇ"
+ "ËÇÑÇÃèÍ"
+ "ËÇÑè¹"
+ "ËÇÒ"
+ "ËÇÒ´"
+ "ËÇÒ¹"
+ "ËÇÒÁ"
+ "ËÇÒÂ"
+ "ËÇÓ"
+ "ËÇÔ´"
+ "ËÇÔÇ"
+ "ËÇÕ"
+ "ËÇÕ´"
+ "ËÇÕè"
+ "ËÇ×Í"
+ "ËÇØ´ËÇÔ´"
+ "ËÇØÁ"
+ "ËÇÙ´"
+ "ËÇçÍÂ"
+ "ËÇèÒ"
+ "ËÇèÒ§"
+ "ËÇèÒ¹"
+ "ËÇéÒ"
+ "ËÍ"
+ "ËÍ¡"
+ "Ëͧ"
+ "Ë͹"
+ "Ëͺ"
+ "ËÍÁ"
+ "ËÍÂ"
+ "ËÐáá"
+ "ËÑ¡"
+ "ËÑ´"
+ "Ëѵ¶¡ÃÃÁ"
+ "Ëѵ¶¡ÒÃ"
+ "Ëѵ¶¡Ô¨"
+ "Ëѵ¶ºÒÊ"
+ "Ëѵ¶ÈÔÅ»ì"
+ "Ëѵ¶ÈÖ¡ÉÒ"
+ "Ëѵ¶Õ"
+ "Ëѵ¶ì"
+ "Ëѹ"
+ "脼"
+ "ËÑÇ"
+ "ËÑǺء"
+ "ËÑÇ˹éÒ"
+ "ËÑÇàÃÒÐ"
+ "ËÑÊ"
+ "ËÑè¹"
+ "ËÑé¹"
+ "ËÒ"
+ "ËÒ¡"
+ "ËÒ§"
+ "ËÒ­"
+ "ËÒ´"
+ "ËÒ¹"
+ "ËÒº"
+ "ËÒÁ"
+ "ËÒÂ"
+ "ËÒ¹Ð"
+ "ËÒÃ"
+ "ËÒÃ×Í"
+ "ËÒÇ"
+ "ËÓ"
+ "ËÔ§ÊÒ"
+ "ËÔ§ËéÍÂ"
+ "ËÔ´"
+ "ËÔ¹"
+ "ËÔÁÐ"
+ "ËÔÁÒÅÑÂ"
+ "ËÔÃÑ­"
+ "ËÔÃÔ"
+ "ËÔÇ"
+ "ËÔè§ËéÍÂ"
+ "ËÔé§"
+ "ËÔéÇ"
+ "ËÕ¹ÂÒ¹"
+ "ËÕº"
+ "ËÖ"
+ "ËÖ§"
+ "ËÖè§"
+ "Ë×´"
+ "Ë×¹"
+ "Ë×Í"
+ "Ë×è¹"
+ "Ë×éÍ"
+ "诤"
+ "Ëع"
+ "诼"
+ "ËØÂÎÒ"
+ "ËØè¹"
+ "ËØé¹"
+ "ËØéÁ"
+ "ËÙ"
+ "ËÙ¡"
+ "ËÙ´"
+ "ËÙè"
+ "Ëâ´Á"
+ "ËèÁ"
+ "Ëèǧ"
+ "ËèÇÂ"
+ "ËèÍ"
+ "Ëè͹"
+ "ËèÒ"
+ "ËèÒ§"
+ "ËèÒ¹"
+ "ËèÒÁ"
+ "Ëéǧ"
+ "Ëéǹ"
+ "ËéÇÂ"
+ "ËéÍ"
+ "Ëéͧ"
+ "ËéÍÁ"
+ "ËéÍÂ"
+ "ËéÒ"
+ "ËéÒ§"
+ "ËéÒÁ"
+ "ËéÒÇ"
+ "ËéÓ"
+ "Í¡"
+ "Í¡µÑ­­ØµÒ"
+ "Í¡µÑ­­Ù"
+ "Í¡¹ÔÉ°ì"
+ "͡óÕÂì"
+ "Í¡ÃÃÁ¡ÃÔÂÒ"
+ "Í¡ØÈÅ"
+ "ͤµÔ"
+ "ͤҸ"
+ "ͧ¡ì"
+ "ͧ¤ªÒµÔ"
+ "ͧ¤Á¹µÃÕ"
+ "ͧ¤ÁÃÃÉ"
+ "ͧ¤ÃÑ¡Éì"
+ "ͧ¤ÇÔ·ÂÒ"
+ "ͧ¤Ò¾Â¾"
+ "ͧ¤ØÅ"
+ "ͧ¤ØÅÕ"
+ "ͧ¤ì"
+ "ͧ¤ì¡Ã"
+ "ͧ¤ì¡ÒÃ"
+ "ͧÈÒ"
+ "ͧÍÒ¨"
+ "ͧØè¹"
+ "ͨÅÒ"
+ "ͨԵµÔ"
+ "ͨԹµÒ"
+ "ͨԹäµÂ"
+ "ͨÔÃÐ"
+ "ͪ"
+ "ͪÒ"
+ "ͪԹ"
+ "ͪԹÕ"
+ "ͪÔÃ"
+ "ͯÇÕ"
+ "ͳÔ"
+ "ͳØ"
+ "ͳÙ"
+ "Í´"
+ "Í´Ô¶Õ"
+ "Í´ÔÈÃ"
+ "Í´ÔÈÇÃ"
+ "Í´ÔÈÑÂ"
+ "Í´Ôà·¾"
+ "Í´Ôàá"
+ "Í´Õµ"
+ "Í´ØÅ"
+ "Í´ØÅÂ"
+ "Í´ØÅÂì"
+ "͵Ԫҵ"
+ "͵ÔÁÒ¹Ð"
+ "͵ÔÃÒª"
+ "͵ÔÊÒÃ"
+ "͵Ôàá"
+ "Í·Ô¹¹Ò·Ò¹"
+ "͸ÃÃÁ"
+ "͸ԡÁÒÊ"
+ "͸ԡóì"
+ "͸ԡÇÒÃ"
+ "͸ԡÊØ÷Թ"
+ "͸ԡÒÃ"
+ "͸ԤÁ"
+ "͸ԯ°Ò¹"
+ "͸Ժ´Õ"
+ "͸ԺÒÂ"
+ "͸Ի"
+ "͸ԻäµÂ"
+ "͸ÔÃÒª"
+ "͸ÔÉ°Ò¹"
+ "͸֡"
+ "͹§¤³Ð"
+ "͹§¤àÅ¢Ò"
+ "͹§¤ì"
+ "͹§àÅ¢"
+ "͹¸¡ÒÃ"
+ "͹ѵµÒ"
+ "͹ѹµì"
+ "͹Ҥµ"
+ "͹ҤÒÁÕ"
+ "͹ҨÒÃ"
+ "͹Ҷ"
+ "͹ҶÒ"
+ "͹ҷÃ"
+ "͹ҸԻäµÂ"
+ "͹ÒÁÑÂ"
+ "͹Òê¹"
+ "͹ÒøÃÃÁ"
+ "͹ÒÃÂÐ"
+ "͹ÒÅÑÂ"
+ "͹Ԩ"
+ "͹Ԩ¨Ñ§"
+ "͹Ԩ¨Ò"
+ "͹ԯ°ÒÃÁÂì"
+ "͹ÔÂÁ"
+ "͹Öè§"
+ "͹Ø"
+ "͹ءÃ"
+ "͹ءÃÁ"
+ "͹ءÃÃÁ¡ÒÃ"
+ "͹ءҪҴ"
+ "͹ءÒÃ"
+ "͹ءÙÅ"
+ "͹بÃ"
+ "͹ت¹"
+ "͹تÒ"
+ "͹تҵ"
+ "͹تԵ"
+ "͹حҵ"
+ "͹حÒâµµØÅÒ¡ÒÃ"
+ "͹طԹ"
+ "͹غ·"
+ "͹غÒÅ"
+ "͹ػÃÔ­­Ò"
+ "͹ؾ§Èì"
+ "͹ؾѹ¸ì"
+ "͹ØÀÃÃÂÒ"
+ "͹ØÀÃÔÂÒ"
+ "͹ØÀÒ¤"
+ "͹ØÁѵÔ"
+ "͹ØÁÒµÃÒ"
+ "͹ØÁÒ¹"
+ "͹ØÁÙÅ"
+ "͹ØÃѡɹÔÂÁ"
+ "͹ØÃÑ¡Éì"
+ "͹ØÃÒª"
+ "͹ØÃÙ»"
+ "͹ØǧÈì"
+ "͹ØÇѵ"
+ "͹ØÈÒÊ¡"
+ "͹ØÈÒʵÃÒ¨ÒÃÂì"
+ "͹ØÈÒʹì"
+ "͹ØÈÔɯì"
+ "͹ØʵÔ"
+ "͹Øʹ¸Ô"
+ "͹ØÊÃ"
+ "͹ØÊóì"
+ "͹ØÊÑ­­Ò"
+ "͹ØÊÑÂ"
+ "͹ØÊÒÇÃÕÂì"
+ "͹ØÊÒʹÕ"
+ "͹Øà¤ÃÒÐËì"
+ "͹Øà¶ÃÐ"
+ "͹ØâÁ·¹Ò"
+ "͹Øâ¤"
+ "͹ØâÅÁ"
+ "ͺ"
+ "ͺÒÂ"
+ "ͺÒÂÀÙÁÔ"
+ "ͺÒÂÁØ¢"
+ "Í»Á§¤Å"
+ ";¾"
+ ";ÒÃìµàÁ¹µì"
+ "ÍÀÑÂ"
+ "ÍÀÔª¹"
+ "ÍÀÔªÒµ"
+ "ÍÀÔ­­Ò"
+ "ÍÀÔ¸ÃÃÁ"
+ "ÍÀÔ¸Ò¹"
+ "ÍÀԹѹ·ì"
+ "ÍÀÔ¹ÑÂ"
+ "ÍÀÔ¹ÔËÒÃ"
+ "ÍÀÔºÒÅ"
+ "ÍÀÔ»ÃѪ­Ò"
+ "ÍÀÔ»ÃÒÂ"
+ "ÍÀÔÁËÒÍÓ¹Ò¨"
+ "ÍÀÔÁÒ¹Ð"
+ "ÍÀÔÁØ¢"
+ "ÍÀÔôÕ"
+ "ÍÀÔÃÁÂì"
+ "ÍÀÔÃÑ¡Éì"
+ "ÍÀÔÅÑ¡¢ÔµÊÁÑÂ"
+ "ÍÀÔÇѹ·ì"
+ "ÍÀÔÇÒ·¹ì"
+ "ÍÀÔÊÁÑÂ"
+ "ÍÀÔÊÁÒ¨ÒÃ"
+ "ÍÀÔÊÁ⾸Ô"
+ "ÍÀÔÊÑÁ⾸Ô"
+ "ÍÀÔÊÔ·¸Ôì"
+ "ÍÀÔàÅ»¹ì"
+ "ÍÀÔàÉ¡"
+ "ÍÀÔä¸Â"
+ "ÍÁ"
+ "ÍÁµÐ"
+ "ÍÁ¹ØÉÂì"
+ "ÍÁÃ"
+ "ÍÁÃÒ"
+ "ÍÁÃÒÇ´Õ"
+ "ÍÁÃÔ¹·Ãì"
+ "ÍÁĵ"
+ "ÍÁĵÂÙ"
+ "ÍÁÔµÃ"
+ "ÍÁàÃÈ"
+ "ÍÂÒ¡"
+ "ÍÂظÂÒ"
+ "ÍÂÙè"
+ "ÍÂèÒ"
+ "ÍÂèÒ§"
+ "ÍÃ"
+ "ÍêÃ"
+ "ÍÃó¾"
+ "ÍÃö"
+ "ÍÃöҸԺÒÂ"
+ "ÍÃËÐ"
+ "ÍÃËѧ"
+ "ÍÃËѹµì"
+ "ÍÃÑ­"
+ "ÍÃÔ"
+ "ÍÃÔºؤ¤Å"
+ "ÍÃÔÂÐ"
+ "ÍÃÔÊâµàµÔÅ"
+ "ÍÃس"
+ "ÍÃØâ³·ÑÂ"
+ "ÍÃä·"
+ "ÍÃèÍÂ"
+ "ÍÃèÒÁ"
+ "Íŧ¡µ"
+ "Íŧ¡Ã³ì"
+ "Íŧ¡ÒÃ"
+ "ÍÅǹ"
+ "ÍÅËÁèÒ¹"
+ "ÍÅѧ¡ÒÃ"
+ "ÍÅѪªÕ"
+ "ÍÅÖ觩Öè§"
+ "ÍÅàǧ"
+ "ÍÅèͧ©èͧ"
+ "ÍÅèÒ§©èÒ§"
+ "ÍÇ¡ÒÈ"
+ "ÍÇ´"
+ "ÍǵÒÃ"
+ "Íǹ"
+ "ꂼ"
+ "ÍÇÁ§¤Å"
+ "ÍÇÂ"
+ "ÍÇÅ"
+ "ÍÇÊÒ¹"
+ "ÍÇËÒÃ"
+ "ÍÇÑÂÇÐ"
+ "ÍÇÔªªÒ"
+ "Íʧä¢Â"
+ "Íʹպҵ"
+ "ÍÊÁ¡ÒÃ"
+ "ÍÊÁÁÒµÃ"
+ "ÍÊþÔÉ"
+ "ÍÊѧËÒÃÔÁ·ÃѾÂì"
+ "ÍÊÑ­­Õ"
+ "ÍÊÑ­á´ËÇÒ"
+ "ÍÊѵÂì"
+ "ÍÊÕµÔ"
+ "ÍÊبÔ"
+ "ÍÊعպҵ"
+ "ÍÊØáÒÂ"
+ "ÍÊØÃÕ"
+ "ÍÊÙÃ"
+ "ÍËѧ¡ÒÃ"
+ "ÍËÔ§ÊÒ"
+ "ÍËÔÇÒµ¡âä"
+ "ÍÍ"
+ "ÍÍ¡"
+ "ÍÍ¡«Ôਹ"
+ "ÍÍ¡«Ôപѹ"
+ "ÍÍ¡­Ò"
+ "ÍÍ¡ä«´ì"
+ "ÍÍ´"
+ "ÍÍ´ÔâÍ"
+ "Í͹ªÍÃì"
+ "Í͹«Í¹"
+ "Í͹«ì"
+ "Í͹äŹì"
+ "ÍÍ»ªÑ¹"
+ "ÍÍ»à¨ç¡µì"
+ "ÍÍ¿"
+ "ÍÍ¿ªÍÃì"
+ "ÍÍ¿¿ÔÈ"
+ "ÍÍÁ"
+ "ÍÍÃÒà¤ÔÅ"
+ "ÍÍÃì᡹"
+ "ÍÍÊ"
+ "ÍÍÊàµÃàÅÕÂ"
+ "ÍФÃéÒÇ"
+ "ÍдÃÕ¹ÒÅÔ¹"
+ "ÍеÍÁ"
+ "ÍÐÃéÒÍÃèÒÁ"
+ "ÍÐÅØèÁÍÅèÇÂ"
+ "ÍÐÅØéÁÍÅèÇÂ"
+ "ÍÐÅÙÁÔà¹ÕÂÁ"
+ "ÍÐà¤×éÍ"
+ "ÍÐà«·ÔÅÕ¹"
+ "ÍÐäÃ"
+ "ÍÐäËÅè"
+ "ÍÑ¡"
+ "ÍÑ¡¢"
+ "ÍÑ¡¢ÃÇÔ¸Õ"
+ "ÍÑ¡¢ÃÇԺѵÔ"
+ "ÍÑ¡¢ÃÊÁÑÂ"
+ "ÍÑ¡¢ÃÐ"
+ "ÍÑ¡ÉÃ"
+ "ÍÑ¡ÉÐ"
+ "ÍÑ¡àʺ"
+ "ÍÑ¡â¢"
+ "ÍѤ¤Ð"
+ "ÍѤ¤Õ"
+ "ÍѤ¹Õ"
+ "ÍѤêÒÂÒ"
+ "ÍѤÃÁàËÊÕ"
+ "ÍѤÃÃÒª·Ùµ"
+ "ꄤ"
+ "Íѧ¡ÄÉ"
+ "Íѧ¡ÐÅا"
+ "Íѧ¤³Ò"
+ "Íѧ¤ÒÃ"
+ "Íѧ¤ÒÊ"
+ "ÍѧʵÃÍÁ"
+ "ÍѧʹÒ"
+ "ÍѨ¡ÅѺ"
+ "ÍѨ¨Ñ¹µì"
+ "ÍѨ¨ÑÂ"
+ "ÍѨ¨Ô"
+ "ÍѨ©ÃÒ"
+ "ÍѨ©ÃÔºؤ¤Å"
+ "ÍѨ©ÃÔÂÐ"
+ "ÍѨ¹Ò"
+ "ÍѪ¬Ò"
+ "ÍѪ¬ÒÊÑÂ"
+ "ÍÑ­ª¹Ð"
+ "ÍÑ­ªÅÕ"
+ "ÍÑ­ªÑ¹"
+ "ÍÑ­»ÃСÒÈ"
+ "ÍÑ­Á³Õ"
+ "ÍÑ­ÁÑ­­Ð"
+ "ÍÑ­ÃÙ»"
+ "ÍÑ­àªÔ­"
+ "Íѯ"
+ "Íѯ°Ð"
+ "ÍÑ°"
+ "ÍÑ°ÌÊ"
+ "ÍÑ°Ô"
+ "ÍѲ¨Ñ¹·Ãì"
+ "ÍѲÀÒ¤"
+ "ÍѲÁ³±Å"
+ "ÍѲÁÒÊ"
+ "ÍѲÃѵµÔ"
+ "Íѳ±ªÐ"
+ "Íѳ±Ð"
+ "Íѳ±Ò¡ÒÃ"
+ "ÍÑ´"
+ "Íѵ¤Ñ´"
+ "ÍѵªÕÇ»ÃÐÇѵÔ"
+ "ÍѵµÐ"
+ "ÍѵµÒ"
+ "ÍѵµÒ¸Ô»äµÂ"
+ "Íѵ¹ÑÂ"
+ "ÍѵÀÒ¾"
+ "ÍѵÃÒ"
+ "ÍѵÇÔ¹ÔºÒµ¡ÃÃÁ"
+ "Íѵâ¹ÁѵÔ"
+ "ÍѸÂÒÈÑÂ"
+ "Íѹ"
+ "Íѹ´Ñº"
+ "ÍѹµÃ¸Ò¹"
+ "ÍѹµÃÒÂ"
+ "Íѹ¸¡ÒÃ"
+ "Íѹ¸¾ÒÅ"
+ "Íѹà´ÍÃì"
+ "ꄼ"
+ "ÍÑ»ÀÒ¤Âì"
+ "ÍÑ»Á§¤Å"
+ "ÍÑ»ÂÈ"
+ "ÍÑ»ÃÐÁÒ³"
+ "ÍÑ»ÃÒªÑÂ"
+ "ÍÑ»ÃÕÂì"
+ "ÍÑ»Åѡɳì"
+ "ÍÑ»ÊÃ"
+ "ÍÑ»à»ËÔ"
+ "ÍѾà¡Ã´"
+ "ÍѾവ"
+ "ÍѾഷ"
+ "ÍÑ¿"
+ "ÍÑÁ¾Ã"
+ "ÍÑÁ¾Ä¡Éì"
+ "ÍÑÁ¾Ò"
+ "ÍÑÁ¾Òµ"
+ "ÍÑÁ¾Øª"
+ "ÍÑÁÊàµÍÃì´ÑÁ"
+ "ÍÑ¡Ò"
+ "ÍÑ¡ÒÃ"
+ "ÍÑÂÂÔ¡Ò"
+ "ÍÑŨÕàÃÕÂ"
+ "ÍÑźÑéÁ"
+ "ÍÑźÒà¹ÕÂ"
+ "ÍÑÅàºà¹ÕÂ"
+ "ÍÑȨÃÃÂì"
+ "ÍÑÈÇÔ¹"
+ "ÍÑÈÇÔ¹Õ"
+ "ÍÑÈà¨ÃÕÂì"
+ "ÍÑÉ®ÒÂØ·"
+ "ÍÑÉ®ÒÇظ"
+ "ÍÑÊ´§"
+ "ÍÑÊ´§¤µ"
+ "ÍÑÊ´Ã"
+ "ÍÑʹÕ"
+ "ÍÑÊÊÐ"
+ "ÍÑÊÊÒÊÐ"
+ "ÍÑÊÊØ"
+ "ÍÑé¡"
+ "ÍÑé§ÂÕè"
+ "ÍÑé§âÅè"
+ "ÍÑé¹"
+ "ÍÑê¡"
+ "ÍÑë¹"
+ "ÍÒ"
+ "ÍÒ¡Ã"
+ "ÍÒ¡Ñ»¡ÔÃÔÂÒ"
+ "ÍÒ¡ÒÃ"
+ "ÍÒ¡ÒÈ"
+ "ÍÒ¡ÙÅ"
+ "ÍÒ¡éÒ"
+ "ÍÒ¢ÂÒ¹"
+ "ÍÒ¤Á"
+ "ÍҤѹµØ¡Ð"
+ "ÍÒ¤ÒÃ"
+ "ÍÒ¤à¹Âì"
+ "ÍÒ¦Òµ"
+ "ÍÒ§¢¹Ò§"
+ "ÍÒ¨"
+ "ÍÒ¨Á"
+ "ÍÒ¨ÃÔÂÇѵÃ"
+ "ÍÒ¨Ò´"
+ "ÍÒ¨ÒÃÂì"
+ "ÍÒ¨Ô³"
+ "ÍÒª­Ò"
+ "ÍÒªÒ"
+ "ÍÒªÒä¹Â"
+ "ÍÒªÕ¾"
+ "ÍÒªÕÇÈÖ¡ÉÒ"
+ "ÍÒªÕÇÐ"
+ "ÍÒ­Ò"
+ "ÍҳѵÔ"
+ "ÍÒ³Ò"
+ "ÍÒ´"
+ "ÍÒ´ÙÃ"
+ "ÍÒµÁÀÒ¾"
+ "ÍÒµÁÒ"
+ "ÍÒ¶Ãþ³ì"
+ "ÍÒ¶Ãþì"
+ "ÍÒ·Ã"
+ "ÍÒ·Ô"
+ "ÍÒ·ÔµÂì"
+ "ÍÒ¹"
+ "ÍÒ¹ÔʧÊì"
+ "ÍÒ¹ØÀÒ¾"
+ "ÍÒº"
+ "ÍҺѵÔ"
+ "ÍÒ¾Ò¸"
+ "ÍÒ¿¡Ò¹Ôʶҹ"
+ "ÍÒ¿ÃÔ¡Ò"
+ "ÍÒÀóì"
+ "ÍÒÀѾ"
+ "ÍÒÀÒ"
+ "ÍÒÁÔÊ"
+ "ÍÒÂ"
+ "ÍÒµ¹Ð"
+ "ÍÒÂÑ´"
+ "ÍÒÂØ"
+ "ÍÒÂØÃÈÒʵÃì"
+ "ÍÒÂØÃàǪ"
+ "ÍÒÂØÃá¾·Âì"
+ "ÍÒúԤ"
+ "ÍÒÃÁ³ì"
+ "ÍÒê¹"
+ "ÍÒêҵÔ"
+ "ÍÒøÃÃÁ"
+ "ÍÒûÃÐà·È"
+ "ÍÒÃÂÐ"
+ "ÍÒÃÂѹ"
+ "ÍÒÃÑ¡¢Ò"
+ "ÍÒÃÑ¡Éì"
+ "ÍÒÃÑÁÀ¡¶Ò"
+ "ÍÒÃÑÁÀº·"
+ "ÍÒÃÒ¸¹Ò"
+ "ÍÒÃÒÁ"
+ "ÍÒÃÒÁÔ¡"
+ "ÍÒÃÒàºÕÂ"
+ "ÍÒÃÕ"
+ "ÍÒÃ줵ԡ"
+ "ÍÒÃìૹÍÅ"
+ "ÍÒÅ»¹Ð"
+ "ÍÒÅÐÇÒ´"
+ "ÍÒÅѡɳì"
+ "ÍÒÅÑÂ"
+ "ÍÒÅÑÇ"
+ "ÍÒÇ"
+ "ÍÒÇóì"
+ "ÍÒÇÒÊ"
+ "ÍÒÇÒËÐ"
+ "ÍÒÇظ"
+ "ÍÒÇØâÊ"
+ "ÍÒÇì"
+ "ÍÒÈÃÁ"
+ "ÍÒÈÑÂ"
+ "ÍÒÈÔÃÇÒ·"
+ "ÍÒʹÐ"
+ "ÍÒʹì"
+ "ÍÒÊÑ­"
+ "ÍÒÊÒ"
+ "ÍÒÊÒÌ˺٪Ò"
+ "ÍÒÊÙÃ"
+ "ÍÒËÃѺ"
+ "ÍÒËÒÃ"
+ "ÍÒà¨Õ¹"
+ "ÍÒà«ÕÂ"
+ "ÍÒàÃàºÕÂ"
+ "ÍÒàǤ"
+ "ÍÒàÇÈ"
+ "ÍÒàÈÕÂÃÇÒ·"
+ "ÍÓ"
+ "ÍÓ¹ÇÂ"
+ "ÍÓ¹Ò¨"
+ "ÍӾйÓ"
+ "ÍӾѹ"
+ "ÍÓÁĵ"
+ "ÍÓÁËÔµ"
+ "ÍÓÁÒµÂì"
+ "ÍÓÅÒ"
+ "ÍÓàÀÍ"
+ "ÍÓä¾"
+ "ÍÔ§"
+ "ÍÔ§¤ì"
+ "ÍÔ§¤ìà¨çµ"
+ "ÍÔ¨©Ò"
+ "Íԩѹ"
+ "ÍÔ¯°ÒÃÁ³ì"
+ "ÍÔ°"
+ "ÍÔ´"
+ "ÍÔµ¶Õ"
+ "ÍÔµÒÅÕ"
+ "ÍÔµÒàÅÕ¹"
+ "ÍÔ·¸Ô"
+ "ÍÔ¹"
+ "ÍÔ¹«ÙÅÔ¹"
+ "ÍÔ¹·¹ÔÅ"
+ "ÍÔ¹·¼ÅÑÁ"
+ "ÍÔ¹·Ã¸¹Ù"
+ "ÍÔ¹·ÃǧÈì"
+ "ÍÔ¹·ÃÇÔàªÕÂÃ"
+ "ÍÔ¹·ÃÒ"
+ "ÍÔ¹·ÃÒà¹çµ"
+ "ÍÔ¹·ÃÕ"
+ "ÍÔ¹·ÃÕÂÊѧÇÃ"
+ "ÍÔ¹·ÃÕÂì"
+ "ÍÔ¹·Ãì"
+ "ÍÔ¹¾Øµ"
+ "ÍÔ¹¿ÃÒàô"
+ "ÍÔ¹¿ÍÃìÁÔ¡"
+ "ÍԹѧ"
+ "ÍÔ¹à´ÕÂ"
+ "ÍÔ¹à´Õ¹ᴧ"
+ "ÍÔ¹àµÍÃì"
+ "ÍÔ¹àµÍÃìà¹çµ"
+ "ÍÔ¹àµÍÃìà¿«"
+ "ÍÔ¹à·Å"
+ "ÍÔ¹à·ÍÃì๵"
+ "ÍÔ¹à·ÍÃìà¹çµ"
+ "ÍÔ¹à·ÍÃìà¿«"
+ "ÍԹⴹÔà«ÕÂ"
+ "ÍԹⴹÕà«ÕÂ"
+ "ÍÔ¹â´à«ÕÂ"
+ "ÍÔÁ¾ÍÃìµ"
+ "ÍÔÁàÁ¨"
+ "ÍÔÂÔ»µì"
+ "ÍÔÃÔÂÒº¶"
+ "ÍÔÈÇÃ"
+ "ÍÔɯÕ"
+ "ÍÔɯì"
+ "ÍÔÊ"
+ "ÍÔʵÃÕ"
+ "ÍÔÊÃÀÒ¾"
+ "ÍÔÊÃÐ"
+ "ÍÔÊÃÒàÍÅ"
+ "ÍÔÊÃÔÂÂÈ"
+ "ÍÔÊÃÔÂÐ"
+ "ÍÔÊÃÔÂÒÀóì"
+ "ÍÔÊÊÒ"
+ "ÍÔÊÔ"
+ "ÍÔÊÕ"
+ "ÍÔËÁèÒÁ"
+ "ÍÔËÃèÒ¹"
+ "ÍÔËÅÑ¡ÍÔàËÅ×èÍ"
+ "ÍÔàÅ硵Ã͹"
+ "ÍÔàÅç¡·Ã͹ԡÊì"
+ "ÍÔàÅç¡â·¹"
+ "ÍÔèÁ"
+ "ÍÕ"
+ "ÍÕ¡"
+ "ÍÕ¡Ò"
+ "ÍÕ¡éÍ"
+ "ÍÕ¤ÍÁàÁÔÃì«"
+ "ÍչاµØ§¹Ñ§"
+ "ÍÕÁÙ"
+ "ÍÕÂÔ»µì"
+ "ÍÕÅØè©ØÂá©¡"
+ "ÍÕÅØéÁ"
+ "ÍÕÊÒ¹"
+ "ÍÕÊØ¡ÍÕãÊ"
+ "ÍÕËÃͺ"
+ "ÍÕËÅÑ¡ÍÔàËÅ×èÍ"
+ "ÍÕËÅÕ"
+ "ÍÕàµéÍ"
+ "ÍÕà·ÍÃì"
+ "ÍÕàÁÅì"
+ "ÍÕàËÅÐà¢Ð¢Ð"
+ "ÍÕâËÅ¡â¢Å¡à¢Å¡"
+ "ÍÕê´"
+ "ÍÕë"
+ "ÍÖ"
+ "ÍÖ¡"
+ "ÍÖ¡·Ö¡"
+ "ÍÖ¡ÍÑ¡"
+ "ÍÖ§"
+ "ÍÖ§ÁÕè"
+ "ÍÖ§ÍÅ"
+ "ÍÖ´"
+ "ÍÖè§"
+ "ÍÖé§"
+ "ÍÖé´·Öè´"
+ "ÍÖê¡"
+ "Í×´"
+ "Í×Í"
+ "Í×è¹"
+ "Í×é¹"
+ "Í×éÍ"
+ "ÍØ"
+ "ÍØ¡"
+ "ÍØ¡¡ÒºÒµ"
+ "ÍØ¡Äɯì"
+ "Íب¨ÒÃÐ"
+ "ÍبҴ"
+ "ÍبÒÃÁÃä"
+ "Íب੷"
+ "ÍتØ"
+ "Íد°Ò¡ÒÃ"
+ "ÍسËÀÙÁÔ"
+ "ÍسËÐ"
+ "ÍسËÒ¡ÒÃ"
+ "ÍسËÔÊ"
+ "ÍسÒ"
+ "ÍØ´"
+ "ÍØ´Á"
+ "ÍØ´Ã"
+ "Íش˹ع"
+ "Íص¾Ô´"
+ "ÍصôԵ¶ì"
+ "ÍصÃÔ"
+ "ÍصÅØ´"
+ "ÍصÊÒË¡ÃÃÁ"
+ "ÍصÊÒËÐ"
+ "ÍصÊèÒËì"
+ "ÍصØ"
+ "ÍØ·¡"
+ "ÍØ·¸Ã³ì"
+ "ÍØ·¸Ñ¨"
+ "ÍØ·ÂÒ¹"
+ "ÍØ·Ã"
+ "ÍØ·ÅØÁ"
+ "ÍطѪ"
+ "ÍØ·ÑÂ"
+ "ÍØ·Ò¹"
+ "ÍØ·ÒÃ"
+ "ÍØ·ÒËóì"
+ "ÍØ·ÔÈ"
+ "ÍØ·ØÁ¾Ã"
+ "ÍظѨ"
+ "꯼"
+ "ÍغÅ"
+ "ÍغÍÔº"
+ "ÍغÐ"
+ "ÍغѵÔ"
+ "Íغҷ"
+ "ÍغҷÇì"
+ "ÍغÒÂ"
+ "ÍغÒÊ¡"
+ "ÍغÒÊÔ¡Ò"
+ "ÍغêÐ"
+ "ÍØ»"
+ "ÍØ»¡Ã³ì"
+ "ÍØ»¡ÃÁ"
+ "ÍØ»¡ÒÃÐ"
+ "ÍØ»¡ÒÃÕ"
+ "ÍØ»¶ÑÁÀ¡"
+ "ÍØ»¶ÑÁÀì"
+ "ÍØ»·Ò¹"
+ "ÍØ»·Ùµ"
+ "ÍØ»¹ÑÂ"
+ "ÍØ»¹Ò¡"
+ "ÍØ»¹ÔÊÑÂ"
+ "ÍØ»ÁÒ"
+ "ÍØ»ÁÒ¹"
+ "ÍØ»ÃÒª"
+ "Íػʧ¤ì"
+ "ÍØ»ÊÁº·"
+ "ÍØ»ÊÃä"
+ "ÍØ»ÊÑÁ»·Ò"
+ "ÍػѪ¬ÒÂÐ"
+ "ÍػѪ¬ÒÂì"
+ "Íػѯ°Ò¡"
+ "Íػѯ°Ò¹Ð"
+ "ÍػѷÇѹµÃÒÂ"
+ "ÍػѷÇà˵Ø"
+ "Íػҷҹ"
+ "ÍØ»âÀ¤"
+ "ÍØ»â¤"
+ "ÍØ»âÅ¡¹ì"
+ "ÍØ»äÁÂ"
+ "ÍØÂ"
+ "ÍØÃÐ"
+ "ÍØÃѧÍصѧ"
+ "ÍØÃÒ"
+ "ÍØÃØ"
+ "ÍØÃاÍصѧ"
+ "ÍØɳÕÂì"
+ "ÍØÉÒ"
+ "ÍØÊÒ"
+ "ÍØÊØ"
+ "ÍØມ¢Ò"
+ "ÍØàËÁè"
+ "ÍØáÇé"
+ "ÍØâ¦É"
+ "ÍØâºÊ¶"
+ "ÍØâÁ§¤ì"
+ "ÍØäÃ"
+ "ÍØè¹"
+ "ÍØèÂ"
+ "ÍØé§"
+ "ÍØéÁ"
+ "ÍØéÂ"
+ "ÍØêÂ"
+ "ÍÙ"
+ "ÍÙ°"
+ "ÍÙ´"
+ "ÍÙÁ"
+ "ÍÙÃØ"
+ "ÍÙè"
+ "ÍÙé"
+ "ÍÙéÍÕé"
+ "ÍÙëÍÕë"
+ "Íà¨Å¡"
+ "Íà¨ÅÐ"
+ "Í๡"
+ "Í๡¤Ø³"
+ "Í๨͹Ҷ"
+ "Íà»ËÔ"
+ "ÍàÁ"
+ "ÍàÁÃԡѹ"
+ "ÍàÁÃÔ¡Ò"
+ "ÍàǨÕ"
+ "Íá´»àµÍÃì"
+ "Íâ¦ÉÐ"
+ "Íâ³·ÑÂ"
+ "Í⹪Ò"
+ "Íâ¹´Òµ"
+ "ÍâÅËÐ"
+ "ÍâÈ¡"
+ "ÍâËÊÔ"
+ "Íèͧ"
+ "Íè͹"
+ "ÍèÍÂ"
+ "ÍèÒ"
+ "ÍèÒ§"
+ "ÍèÒ¹"
+ "ÍèÒÇ"
+ "ÍèÓ"
+ "Íé¹"
+ "ÍéÇ¡"
+ "Íéǹ"
+ "ÍéÍ"
+ "Íé͹"
+ "Íé͹áÍé¹"
+ "ÍéÍÁ"
+ "ÍéÍÂ"
+ "ÍéÍÂÊéÍÂ"
+ "ÍéÍÂÍÔè§"
+ "ÍéÒ"
+ "ÍéÒ§"
+ "ÍéÒÂ"
+ "ÍéÒÇ"
+ "ÍéÓÍÖé§"
+ "ÍêÍ´"
+ "ÍêÐ"
+ "ÍëÍ"
+ "Íëͧ"
+ "ÍëÍÂ"
+ "Ρà¡Õé¹"
+ "Îǧ«ØéÂ"
+ "Îǹ"
+ "낼"
+ "ÎÍ¡¡Õé"
+ "ÎÍ´"
+ "Î͹â¹ÅÙÅÙ"
+ "ÎÍÃìâÁ¹"
+ "ÎÍÅѹ´Ò"
+ "ÎÍÅᏴì"
+ "ÎÐ"
+ "ÎÑ¡"
+ "Îѧ¡ÒÃÕ"
+ "ÎÑè¹"
+ "ÎÑéÇ"
+ "ÎÒ"
+ "ÎÒÁ"
+ "ÎÒÃì´´Ôʤì"
+ "ÎÒÃì´áÇÃì"
+ "ÎÒàÃçÁ"
+ "ÎÒâÅÇÕ¹"
+ "ÎÔµ"
+ "ÎÔ¹´Ù"
+ "ÎÔ»â»â»àµÁÑÊ"
+ "ÎÔÊ·ÕàÃÕÂ"
+ "ÎÕàÅÕÂÁ"
+ "ÎÕâÃè"
+ "ÎÖ"
+ "ÎÖ¡"
+ "ÎÖ´"
+ "ÎÖ´ÎÑ´"
+ "ÎÖÁ"
+ "ÎÖÂ"
+ "ÎÖèÁ"
+ "Î×´ÎÒ´"
+ "Î×Í"
+ "Î×èÍ"
+ "Î×éÍ"
+ "민"
+ "ÎØÂàÅÎØÂ"
+ "ÎÙ¡"
+ "ÎÙÁ"
+ "ÎÙé"
+ "ÎèÍ"
+ "Îèͧ¡§"
+ "Îèͧàµé"
+ "ÎéÍ"
+ "ÎéÒ"
+ "à¡"
+ "à¡¡ÁÐàËá"
+ "ࡨÔÍÒ¨ÒÃÂì"
+ "ࡳ±ì"
+ "à¡´"
+ "ࡵØ"
+ "ࡹ"
+ "à¡Á"
+ "à¡ÁÊì"
+ "à¡Â"
+ "à¡Ã§"
+ "à¡Ã´"
+ "à¡ÃÍÐ"
+ "à¡ÃÒÐ"
+ "à¡ÃÔ¡"
+ "à¡ÃÔè¹"
+ "à¡ÃÕ¡"
+ "à¡ÃÕ§"
+ "à¡ÃÕ¹"
+ "à¡ÃÕº"
+ "à¡ÃÕÂÁ"
+ "à¡ÃÕÂÇ"
+ "à¡ÃÕéÂÇ"
+ "à¡Ãç§"
+ "à¡Ãç´"
+ "à¡ÃèÍ"
+ "à¡Å"
+ "à¡ÅÍ"
+ "à¡ÅÒ"
+ "à¡ÅÕ§"
+ "à¡ÅÕ´"
+ "à¡ÅÕÂÇ"
+ "à¡ÅÕèÂ"
+ "à¡ÅÕéÂ"
+ "à¡ÅÕé§"
+ "à¡Å×Í"
+ "à¡Å×Í¡"
+ "à¡Å×è͹"
+ "à¡Å×éÍ"
+ "à¡Å×é͹"
+ "à¡Åç´"
+ "à¡ÅéÒ"
+ "à¡ÇÕ¹"
+ "à¡È"
+ "à¡ÈÒ"
+ "à¡ÈÔ¹Õ"
+ "à¡ÉµÃ"
+ "à¡ÉµÃ¡Ã"
+ "à¡ÉµÃ¡ÃÃÁ"
+ "à¡ÉÁ"
+ "à¡ÉÕ³"
+ "à¡ÉÕ¹"
+ "à¡ÊÃ"
+ "à¡Í"
+ "à¡ÍÃì"
+ "à¡ÍÔªÒ"
+ "à¡Ð"
+ "à¡Ð¡Ð"
+ "à¡Ò"
+ "à¡Òµì"
+ "à¡Ò·Ñ³±ì"
+ "à¡ÒÅÑ´"
+ "à¡ÒËÅÕ"
+ "à¡ÒÐ"
+ "à¡ÒàËÅÒ"
+ "à¡Ô§"
+ "à¡Ô´"
+ "à¡Ô¹"
+ "à¡ÕÂ"
+ "à¡Õ§"
+ "à¡Õ¨"
+ "à¡Õ´"
+ "à¡Õ¹"
+ "à¡ÕÂõÔ"
+ "à¡ÕÂõԤس"
+ "à¡ÕÂõԹÔÂÁ"
+ "à¡ÕÂõԻÃÐÇѵÔ"
+ "à¡ÕÂõÔÀÙÁÔ"
+ "à¡ÕÂõÔÂÈ"
+ "à¡ÕÂõÔÈÑ¡´Ôì"
+ "à¡ÕÂõÔì"
+ "à¡ÕÂÃì"
+ "à¡ÕèÂ"
+ "à¡Õè§"
+ "à¡ÕèÂÇ"
+ "à¡ÕéÂÁÍÕë"
+ "à¡ÕéÂÁä©è"
+ "à¡ÕéÂÇ"
+ "à¡ÕêÂÇ"
+ "à¡ÕêÂÐ"
+ "à¡×Í¡"
+ "à¡×ͺ"
+ "à¡×éÍ"
+ "à¡àÃ"
+ "à¡ç§"
+ "à¡ç¨"
+ "à¡çº"
+ "à¡è§"
+ "à¡è§¡Ò¨"
+ "à¡è¹"
+ "à¡èÒ"
+ "à¡é"
+ "à¡é§"
+ "à¡é§¡éÒ§"
+ "à¡éÍ"
+ "à¡éÒ"
+ "à¡éÒÍÕé"
+ "à¡ê"
+ "à¡ê¡"
+ "à¡ê¡ÎÇÂ"
+ "à¡ë"
+ "à¡ë§"
+ "à¡ëÒ"
+ "à¢"
+ "ࢡ"
+ "ࢵ"
+ "ࢹ"
+ "ࢹ§"
+ "ࢹÂ"
+ "ࢹç´"
+ "ࢺ稢ºÇ¹"
+ "ࢺçµ"
+ "à¢ÁÃ"
+ "à¢ÁÒ"
+ "à¢Á×ͺ"
+ "à¢Áç§"
+ "à¢Áç´á¢Áè"
+ "à¢Áè¹"
+ "à¢ÁèÒ"
+ "à¢Áé¹"
+ "à¢Â"
+ "à¢Â¡"
+ "à¢ÂÔº"
+ "à¢Â×é͹"
+ "à¢Âè§"
+ "à¢ÂèÒ"
+ "à¢ÂéÍá¢Âè§"
+ "à¢ÃÍÐ"
+ "à¢Å§"
+ "à¢ÅÍÐ"
+ "à¢ÅÐ"
+ "à¢ÅÒ"
+ "à¢ÅÒÐ"
+ "à¢Ç"
+ "à¢ÉÁ"
+ "à¢ÌÐ"
+ "à¢Ð¢Ð"
+ "à¢Ò"
+ "à¢Ô¹"
+ "à¢Õ§"
+ "à¢Õ´"
+ "à¢Õ¹"
+ "à¢ÕÂÁ"
+ "à¢ÕÂÇ"
+ "à¢ÕèÂ"
+ "à¢ÕéÂÇ"
+ "à¢×Í"
+ "à¢×èͧ"
+ "à¢×è͹"
+ "à¢ç­"
+ "à¢ç´"
+ "à¢ç¹"
+ "à¢çÁ"
+ "à¢è§"
+ "à¢è¹"
+ "à¢èÒ"
+ "à¢éÁ"
+ "à¢éÒ"
+ "हÂÒ"
+ "à¤ÁÕ"
+ "à¤Â"
+ "à¤Ã§"
+ "à¤Ã´Ôµ"
+ "à¤ÃÒ"
+ "à¤ÃÒÐËì"
+ "à¤ÃÕ´"
+ "à¤Ã×Í"
+ "à¤Ã×èͧ"
+ "à¤Ã×èͧ¾ÔÁ¾ì"
+ "à¤Ãè§"
+ "à¤Ã觤ÃÑ´"
+ "à¤ÅÔºà¤ÅÔéÁ"
+ "à¤ÅÔéÁ"
+ "à¤ÅÕÂ"
+ "à¤Å×ͺ"
+ "à¤Å×è͹"
+ "à¤Åç´"
+ "à¤Åé¹"
+ "à¤ÅéÒ"
+ "à¤Çé§"
+ "à¤Ë"
+ "à¤ËÐ"
+ "à¤ËÒ"
+ "à¤ÍÃìà¹Å"
+ "à¤ÍÐ"
+ "à¤Ò¹ìàµÍÃì"
+ "à¤Òþ"
+ "à¤ÒÐ"
+ "à¤Õ§"
+ "à¤Õ´"
+ "à¤Õ¹"
+ "à¤ÕÂÇ"
+ "à¤ÕèÂÁ"
+ "à¤ÕèÂÇ"
+ "à¤ÕéÂÇ"
+ "à¤×ͧ"
+ "à¤àºÔÅ"
+ "à¤çÁ"
+ "à¤é¡"
+ "à¤é¹"
+ "à¤éÒ"
+ "à¤éà¡é"
+ "à¦Õè¹"
+ "ৡ"
+ "à§Â"
+ "à§ÍÐ"
+ "à§ÍЧÐ"
+ "à§Ò"
+ "à§ÒÐ"
+ "à§Ô¹"
+ "à§Õº"
+ "à§Õè§"
+ "à§Õè¹"
+ "à§ÕèÂËÙ"
+ "à§ÕéÂÇ"
+ "à§×Í¡"
+ "à§×Í´"
+ "à§×ͺ"
+ "à§×èͧ"
+ "à§×è͹"
+ "à§×è͹ä¢"
+ "à§×éÍ"
+ "à§×éÍÁ"
+ "à§èÒ"
+ "à§éÒ"
+ "à¨"
+ "਴ÕÂʶҹ"
+ "਴ÕÂì"
+ "ਵ"
+ "ਵ¤µÔ"
+ "ਵ¨Ó¹§"
+ "ਵ¹Ò"
+ "ਵ¹ÒÃÁ³ì"
+ "ਵÀÙµ"
+ "ਵÊÔ¡"
+ "ਹ"
+ "à¨ÁÊì"
+ "à¨Ã¨Ò"
+ "à¨ÃÔ­"
+ "à¨ÃÔ´"
+ "à¨Çç´"
+ "à¨É®Ò"
+ "à¨Í"
+ "à¨ÍÃì"
+ "à¨ÍÐ"
+ "à¨ÒÐ"
+ "à¨Ô´"
+ "à¨ÔÁ"
+ "à¨Ôè§"
+ "à¨Ôè¹"
+ "à¨Õ´"
+ "à¨Õ¹"
+ "à¨ÕÂÁ"
+ "à¨ÕÂÃÐä¹"
+ "à¨ÕÂÇ"
+ "à¨Õêº"
+ "à¨ÕêÂÇ"
+ "à¨ÕêÂǨêÒÇ"
+ "à¨Õë¹"
+ "à¨ÕëÂÁà¨ÕéÂÁ"
+ "à¨×Í"
+ "à¨×è͹"
+ "à¨×éÍÂ"
+ "à¨ç´"
+ "à¨çº"
+ "à¨èÍ"
+ "à¨èÒ"
+ "à¨éÒ"
+ "à¨éÒªÙé"
+ "à¨ê"
+ "à¨ê¡"
+ "à¨ê§"
+ "à¨êµ"
+ "à¨êÒ"
+ "à¨ëÍ"
+ "à©"
+ "à©¡"
+ "à©´"
+ "੾ÒÐ"
+ "à©Â"
+ "à©ÂàÁÂ"
+ "à©ÅÂ"
+ "à©ÅÒ"
+ "à©ÅÔÁ"
+ "à©ÅÕ§"
+ "à©ÅÕÂÇ"
+ "à©ÅÕèÂ"
+ "à©ÇÕ§"
+ "à©ÇÕ¹"
+ "à©ÍÐá©Ð"
+ "à©Ò"
+ "à©Ò¡êÇÂ"
+ "à©ÒÐ"
+ "à©Ô´"
+ "à©Ôº"
+ "à©Õ§"
+ "à©Õ´"
+ "à©Õº"
+ "à©ÕÂÇ"
+ "à©ÕèÂÇ"
+ "à©×͹"
+ "à©×èÍÂ"
+ "à©â¡"
+ "à©è§"
+ "હ"
+ "àªÂ"
+ "àªÅ"
+ "àªÅÂ"
+ "àªÉ°Ò"
+ "àªÍ"
+ "àªÍÃì"
+ "àªÒǹì"
+ "àªÒÇì"
+ "àªÔ§"
+ "àªÔ­"
+ "àªÔ´"
+ "àªÔéµ"
+ "àªÕ§"
+ "àªÕ§ãËÁè"
+ "àªÕº"
+ "àªÕÂÃì"
+ "àªÕÂÇ"
+ "àªÕè¹"
+ "àªÕèÂÇ"
+ "àª×Í¡"
+ "àª×Í´"
+ "àª×͹"
+ "àª×èÍ"
+ "àª×èͧ"
+ "àª×èÍÁ"
+ "àª×éÍ"
+ "àªç¤"
+ "àªç´"
+ "àªè¹"
+ "àªèÒ"
+ "àªé§"
+ "àªéÒ"
+ "à«"
+ "૵"
+ "ૹ"
+ "ૹµÔ¡ÃÑÁ"
+ "ૹµÔÅÔµÃ"
+ "ૹµÔà¡Ã´"
+ "ૹµÔàÁµÃ"
+ "ૹµì"
+ "ૻѡµÃСÃéÍ"
+ "à«¿"
+ "à«ÃØèÁ"
+ "à«ÅÅÙÅÍ´ì"
+ "à«ÅÅÙâÅÊ"
+ "à«ÅÅì"
+ "à«ÅÊì"
+ "à«Åà«ÕÂÊ"
+ "à«Í"
+ "à«ÍÃì"
+ "à«ÍÃìÇÔÊ"
+ "à«ÍÐ"
+ "à«Ò"
+ "à«ÒÐ"
+ "à«Ô§"
+ "à«ÔÃì¿àÇÍÃì"
+ "à«Ôé§"
+ "à«Õ¹"
+ "à«ÕÂÁ«Õ"
+ "à«ÕÂÇ"
+ "à«Õè§äÎé"
+ "à«×èͧ"
+ "à«ç¡àÁ¹µì"
+ "à«ç§"
+ "à«ç¹"
+ "à«ç¹àµÍÃì"
+ "à«è§"
+ "à«è¹"
+ "à«èÍ"
+ "à«é§"
+ "à«éÒ«Õé"
+ "à¬Í"
+ "à¬ÍàÍÁ"
+ "à²èÒ"
+ "à³Ã"
+ "à´¡«ìâ·ÃÊ"
+ "à´¤Ò¡ÃÑÁ"
+ "à´¤ÒÅÔµÃ"
+ "à´¤ÒàÁµÃ"
+ "à´ª"
+ "à´ªÐ"
+ "à´«Ô¡ÃÑÁ"
+ "à´«ÔÅÔµÃ"
+ "à´«ÔàÁµÃ"
+ "à´¹"
+ "à´¹ÁÒÃì¡"
+ "à´¹ÁÒÃì¤"
+ "à´ºÔµ"
+ "à´ÃѨ©Ò¹"
+ "à´ÅÅì"
+ "à´ÇÔ´"
+ "à´Ê¡ì·Í»"
+ "à´ÍÐ"
+ "à´Ò"
+ "à´ÒÐ"
+ "à´Ô¹"
+ "à´ÔÁ"
+ "à´ÕÂ"
+ "à´Õ§"
+ "à´Õ´"
+ "à´ÕÂÃ"
+ "à´ÕÂôÒÉ"
+ "à´ÕÂöÕÂì"
+ "à´ÕÂÃѨ©Ò¹"
+ "à´ÕÂÇ"
+ "à´ÕÂÐ"
+ "à´ÕèÂÇ"
+ "à´ÕéÂ"
+ "à´ÕëÂÇ"
+ "à´×Í´"
+ "à´×͹"
+ "à´×ÍÂ"
+ "à´âª"
+ "à´ç¡"
+ "à´ç¨"
+ "à´ç´"
+ "à´è"
+ "à´è¹"
+ "à´èÒ"
+ "à´é§"
+ "à´éÒ"
+ "à´ëÍ"
+ "à´ëÍ´ëÒ"
+ "àµÂ"
+ "àµÃÕÂ"
+ "àµÃÕ´"
+ "àµÃÕÂÁ"
+ "àµÃç´"
+ "àµÃè"
+ "àµÅÔ´"
+ "àµÇç´"
+ "àµÍÃì"
+ "àµÍÃì¡Õ"
+ "àµÍÐ"
+ "àµÐ"
+ "àµÒ"
+ "àµÒÐáµÐ"
+ "àµÔº"
+ "àµÔÁ"
+ "àµÔè§"
+ "àµÕ§"
+ "àµÕ¹"
+ "àµÕº"
+ "àµÕèÂ"
+ "àµÕèÂÇ"
+ "àµÕéÂ"
+ "àµÕëÂÁ"
+ "àµ×͹"
+ "àµ×éÍ"
+ "àµç§"
+ "àµç¹·ì"
+ "àµçÁ"
+ "àµè§"
+ "àµèÍ"
+ "àµèÒ"
+ "àµé¹"
+ "àµéÒ"
+ "àµéÒ·Ö§"
+ "àµéÒÊèǹ"
+ "àµéÒËÙé"
+ "àµéÒÎÇÂ"
+ "àµéÒà¨ÕéÂÇ"
+ "àµéÒàÊÕº"
+ "àµê¡"
+ "àµêÐ"
+ "àµëÒ"
+ "ඡԧ"
+ "ඹ"
+ "à¶Ã"
+ "à¶ÃÐ"
+ "à¶ÃÒ¹Øà¶ÃÐ"
+ "à¶ÅÔ§"
+ "à¶Å×Í¡¶Å¹"
+ "à¶Åä¶Å"
+ "à¶ÍÐ"
+ "à¶Ò"
+ "à¶ÒÇÑÅÂì"
+ "à¶ÒÐ"
+ "à¶Ô¡"
+ "à¶Ô´"
+ "à¶Ô´à·Ô§"
+ "à¶Ô¹"
+ "à¶Õ§"
+ "à¶×Í"
+ "à¶×Í¡"
+ "à¶×è͹"
+ "à¶èÍ"
+ "à¶éÒ"
+ "à·"
+ "à·¤¹Ô¤"
+ "à·¤â¹âÅÂÕ"
+ "à·¹¹ÔÊ"
+ "à·»"
+ "à·¾"
+ "à·¾´Ò"
+ "à·¾¸Ô´Ò"
+ "à·¾¹Á"
+ "෾´Ò"
+ "à·¾Âà¨éÒ"
+ "à·¾ÒÃÑ¡Éì"
+ "à·¾Õ"
+ "à·¾à¨éÒ"
+ "à·Á»ØÃÐ"
+ "à·Ã´à´ÍÃì"
+ "à·Ã¹à¹ÍÃì"
+ "à·Ç´Ò"
+ "à·Ç·Ñ³±ì"
+ "à·Ç·Ùµ"
+ "à·Ç¸ÃÃÁ"
+ "à·Ç¸Ô´Ò"
+ "à·Ç¹ÔÂÁ"
+ "à·ÇÃÙ»"
+ "à·ÇÉ"
+ "à·Çʶҹ"
+ "à·ÇÑ­"
+ "à·Çѹ"
+ "à·ÇÒÅÑÂ"
+ "à·ÇÕ"
+ "à·ÇâÅ¡"
+ "à·È"
+ "à·È¡ÒÅ"
+ "à·È¹Ò"
+ "à·È¹ì"
+ "à·ÈºÒÅ"
+ "à·ÈÁ¹µÃÕ"
+ "à·ÈÒÀÔºÒÅ"
+ "à·Êµì"
+ "à·ËÇѵ¶Ø"
+ "à·Ëì"
+ "à·Í­"
+ "à·ÍÁ"
+ "à·ÍÃìâÁÁÔàµÍÃì"
+ "à·ÍзÐ"
+ "à·Ò"
+ "à·Ô´"
+ "à·Ô¹"
+ "à·Ôº"
+ "à·Ôè§"
+ "à·ÔéÁ"
+ "à·Õ¹"
+ "à·Õº"
+ "à·ÕÂÁ"
+ "à·ÕÂÇ"
+ "à·Õè§"
+ "à·ÕèÂÇ"
+ "à·×Í¡"
+ "à·àºÔÅ"
+ "à·àŤÍÁ"
+ "à·àÇÈÃì"
+ "à·àÇÈÇÃì"
+ "à·â¾"
+ "à·ç¨"
+ "à·è"
+ "à·èÍ"
+ "à·èÒ"
+ "à·é§àµé§"
+ "à·éÍ"
+ "à·éÒ"
+ "ู"
+ "ูÊì"
+ "à¸Í"
+ "๤ä·"
+ "๵"
+ "๵Ã"
+ "๵Êऻ"
+ "๵Ô"
+ "๺ÔÇÅÒ"
+ "๻¨Ù¹"
+ "๻ÒÅ"
+ "à¹Â"
+ "à¹Ã¤Ø³"
+ "à¹ÃÁÔµ"
+ "à¹Ãà·È"
+ "à¹Ò"
+ "à¹Ô¹"
+ "à¹Ôº"
+ "à¹Ôè¹"
+ "à¹ÕÂ"
+ "à¹Õ¹"
+ "à¹ÕÂÁ"
+ "à¹×ͧ"
+ "à¹×ÍÂ"
+ "à¹×èͧ"
+ "à¹×éÍ"
+ "à¹çµ"
+ "à¹çµàÇÔÃì¡"
+ "à¹çµàÇÔÃì¤"
+ "à¹èÒ"
+ "à¹é¹"
+ "à¹éÍ"
+ "àº"
+ "຤͹"
+ "ວ¡ÍÅ"
+ "ອ¨"
+ "ອ¨¡"
+ "ອ¨¡ÑÅÂÒ³Õ"
+ "ອ¨¡ÒÁ¤Ø³"
+ "ອ¨¸ÃÃÁ"
+ "ອ¨ºÃþµ"
+ "ອ¨ÁÒÈ"
+ "ອ¨Ã§¤ì"
+ "ອ¨Ò"
+ "ອ¨Ò§¤»ÃдÔÉ°ì"
+ "ອ¨Ò§¤ì"
+ "ອ¨à¾Ê"
+ "ີéÒ"
+ "ູ"
+ "ູ«Ô¹"
+ "ູ«ì"
+ "àºÃ¡"
+ "àºÃì¡"
+ "àºÅàÂÕèÂÁ"
+ "àºÈ"
+ "àºÊ"
+ "àºÊºÍÅ"
+ "àºÍÃì"
+ "àºÍÃìÅÔ¹"
+ "àºÍÐ"
+ "àºÍкÐ"
+ "àºÐ"
+ "àºÒ"
+ "àºÒÐ"
+ "àºÒÐáÊ"
+ "àºÔ¡"
+ "àºÔÃì¡"
+ "àºÔè§"
+ "àºÕ´"
+ "àºÕ¹"
+ "àºÕÂÃì"
+ "àºÕè§"
+ "àºÕéÂ"
+ "àºÕéÂÇ"
+ "àº×Í"
+ "àº×͹"
+ "àº×èÍ"
+ "àº×éÍ"
+ "àº×éͧ"
+ "àºç´"
+ "àºç´àµÅç´"
+ "àºç´àÊÃç¨"
+ "àºè§"
+ "àºé"
+ "àºéÍ"
+ "àºéÍàÃÔèÁ"
+ "àºéÍàÃèÍ"
+ "àºéÒ"
+ "໡"
+ "à»Ãµ"
+ "à»ÃÁ"
+ "à»ÃÂ"
+ "à»ÃÍ"
+ "à»ÃÍÐ"
+ "à»ÃÒÐ"
+ "à»ÃÕ§"
+ "à»ÃÕ­"
+ "à»ÃÕº"
+ "à»ÃÕÂÇ"
+ "à»ÃÕÂÐ"
+ "à»ÃÕé§"
+ "à»ÃÕéÂÇ"
+ "à»ÃÕêÂÐ"
+ "à»Ã×èͧ"
+ "à»Ã×éÍÂ"
+ "à»Å"
+ "à»ÅÇ"
+ "à»ÅÒÐ"
+ "à»ÅÕè¹"
+ "à»ÅÕèÂÇ"
+ "à»ÅÕéÂ"
+ "à»Å×Í¡"
+ "à»Å×ͧ"
+ "à»Å×ÍÂ"
+ "à»Å×éͧ"
+ "à»Åè§"
+ "à»ÅèÒ"
+ "à»Í"
+ "à»ÍÃì"
+ "à»ÍÃìà«ç¹µì"
+ "à»Ð"
+ "à»Ò"
+ "à»ÒÐ"
+ "à»Òà»Ò"
+ "à»Ô¡"
+ "à»Ô§"
+ "à»Ô´"
+ "à»Ôº"
+ "à»Ôè¹"
+ "à»Ôêº"
+ "à»ÕÂ"
+ "à»Õ¡"
+ "à»ÕèÂÁ"
+ "à»ÕéÂÇ"
+ "à»Õê¡"
+ "à»ÕêÂÐ"
+ "à»×Í¡"
+ "à»×èÍÂ"
+ "à»×é͹"
+ "à»ç´"
+ "à»ç¹"
+ "à»ç¹µé¹"
+ "à»è§"
+ "à»èÒ"
+ "à»é"
+ "à»é§"
+ "à»éÒ"
+ "à»ê¡"
+ "à»ë"
+ "à»ë§"
+ "à»ëÍ"
+ "à»ëÍàËÅÍ"
+ "à»ëÒ"
+ "à»ëÒÎ×éÍ"
+ "à¼"
+ "༧"
+ "༪ԭ"
+ "༴ÔÁ"
+ "༴Õ§"
+ "༴ç¨"
+ "à¼Â"
+ "à¼ÂÍ"
+ "à¼ÅÍ"
+ "à¼ÅÍä¼Å"
+ "à¼ÅÐ"
+ "à¼ÅÒÐ"
+ "à¼Åè"
+ "à¼ÍÔ­"
+ "à¼ÍàÃÍ"
+ "à¼Ð"
+ "à¼Ò"
+ "à¼ÒÐ"
+ "à¼Ô¹"
+ "à¼×Í¡"
+ "à¼×Í´"
+ "à¼×èÍ"
+ "à¼ç´"
+ "à¼è¹"
+ "à¼èÒ"
+ "à¼éÒ"
+ "à½×Í"
+ "à½×Í¡"
+ "à½×è͹"
+ "à½éÒ"
+ "à¾"
+ "ྨ"
+ "ྪ¬¦Òµ"
+ "ྪÃ"
+ "ྪÃÒÂظ"
+ "ྴҹ"
+ "ྷ¹Ò"
+ "ྷÒÂ"
+ "ྷغÒÂ"
+ "ྐྵ¡ÇÔ¹"
+ "ྐྵÕ´"
+ "ྐྵà·ÕÂÁ"
+ "à¾Ã§"
+ "à¾ÃÒ"
+ "à¾ÃÒÐ"
+ "à¾ÃÔ´"
+ "à¾ÃÔÈ"
+ "à¾ÃÕ¡"
+ "à¾ÃÕ§"
+ "à¾ÃÕº"
+ "à¾ÃÕÂÇ"
+ "à¾Ã×èÍ"
+ "à¾Å"
+ "à¾Å§"
+ "à¾ÅÒ"
+ "à¾ÅÒÐ"
+ "à¾ÅÔ§"
+ "à¾ÅÔ´à¾ÅÔ¹"
+ "à¾ÅÔ¹"
+ "à¾ÅÕÂ"
+ "à¾ÅÕè§"
+ "à¾ÅÕéÂ"
+ "à¾È"
+ "à¾ÒÐ"
+ "à¾Ô¡"
+ "à¾Ô§"
+ "à¾Ôè§"
+ "à¾ÔèÁ"
+ "à¾Õ§"
+ "à¾Õº"
+ "à¾ÕÂÃ"
+ "à¾ÕéÂ"
+ "à¾Õé§"
+ "à¾Õé¹"
+ "à¾×èÍ"
+ "à¾×è͹"
+ "à¾ç§"
+ "à¾ç¨"
+ "à¾ç­"
+ "à¾ç´·ÙÅ"
+ "à¾è§"
+ "à¾è¹¾èÒ¹"
+ "à¾èÍ"
+ "à¾éÍ"
+ "à¿´"
+ "à¿Í"
+ "à¿ÍÃì"
+ "à¿ÍÃì¹Ôà¨ÍÃì"
+ "à¿ÍÃìàÁÕÂÁ"
+ "à¿ÍÐ"
+ "à¿Ð"
+ "à¿Ô¹"
+ "à¿ÕéÂÁ"
+ "à¿ÕéÂÇ"
+ "à¿×Í"
+ "à¿×ͧ"
+ "à¿×͹"
+ "à¿×ÍÂ"
+ "à¿×èͧ"
+ "à¿×éÍ"
+ "à¿×éͧ"
+ "à¿×éÍÂ"
+ "à¿ç´"
+ "à¿é¹"
+ "à¿éÍ"
+ "àÀµÃÒ"
+ "àÀ·"
+ "àÀ·ØºÒÂ"
+ "àÀÃÕ"
+ "àÀÊѪ"
+ "àÁ"
+ "àÁ¡Ð"
+ "àÁ¡ÐàÎÔõ«ì"
+ "àÁ¢ÅÒ"
+ "àÁ¦"
+ "àÁ¦Ò"
+ "àÁ¦Ô¹·Ãì"
+ "àÁ¦Õ"
+ "àÁµµÒ"
+ "àÁµÃ"
+ "àÁµÃÔ¡"
+ "àÁ¶Ø¹"
+ "àÁ·¹Õ"
+ "àÁ·Ô¹Õ"
+ "àÁ¸Ò"
+ "àÁ¸Õ"
+ "àÁ¹·ÍÅ"
+ "àÁ¹ºÍÃì´"
+ "àÁ¹Ù"
+ "àÁÁâÁÃÕ"
+ "àÁÃÑÂ"
+ "àÁÃØ"
+ "àÁÅ×ͧ"
+ "àÁÅ×èÍÂ"
+ "àÁÅ×éÍÂ"
+ "àÁÅç´"
+ "àÁÅì"
+ "àÁÉ"
+ "àÁÉÒ¹"
+ "àÁÐ"
+ "àÁÒ"
+ "àÁÒÅÕ"
+ "àÁÒÊì"
+ "àÁÒÌÕ"
+ "àÁÒÐ"
+ "àÁÔ¹"
+ "àÁÕÂ"
+ "àÁÕ§"
+ "àÁÕè§"
+ "àÁÕé¹"
+ "àÁ×Í¡"
+ "àÁ×ͧ"
+ "àÁ×èÍ"
+ "àÁ×èÍÂ"
+ "àÁâÁÃÕ"
+ "àÁç¡«Ôâ¡"
+ "àÁç´"
+ "àÁè¹"
+ "àÁèÒ"
+ "àÁéÁ"
+ "àÁéÒÊì"
+ "àÂ"
+ "à§"
+ "à«Ù"
+ "à¹"
+ "àÂÍ"
+ "àÂÍÃÁѹ"
+ "àÂÍÃÁѹ¹Õ"
+ "àÂÍÃÁѹÕ"
+ "àÂÍÐ"
+ "àÂÒ"
+ "àÂÒǪ¹"
+ "àÂÒǾÒ"
+ "àÂÒǾҹ"
+ "àÂÒÇÁÒÅÂì"
+ "àÂÒÇÂÍ´"
+ "àÂÒÇÃÒª"
+ "àÂÒÇÅѡɳì"
+ "àÂÒÇàÃÈ"
+ "àÂÒÇì"
+ "àÂÒÐ"
+ "àÂÔ¹"
+ "àÂÔº"
+ "àÂÔè¹"
+ "àÂÔè¹àÂéÍ"
+ "àÂÔéÁ"
+ "àÂÕÂ"
+ "àÂÕ¹"
+ "àÂÕº"
+ "àÂÕÂÇ"
+ "àÂÕè§"
+ "àÂÕèÂÁ"
+ "àÂÕèÂÇ"
+ "àÂ×Í¡"
+ "àÂ×͹"
+ "àÂ×èÍ"
+ "àÂ×éÍ"
+ "àÂ×éͧ"
+ "àÂ×é͹"
+ "àÂç¹"
+ "àÂçº"
+ "àÂè¹"
+ "àÂèÍ"
+ "àÂé"
+ "àÂéÂ"
+ "àÂéÒ"
+ "àâ"
+ "àâÒ"
+ "àâҤ³Ôµ"
+ "àóÙ"
+ "àô͹"
+ "àôÒÃì"
+ "àÃÃǹ"
+ "àÃÇ´Õ"
+ "àÃÍ"
+ "àÃÒ"
+ "àÃÒÐ"
+ "àÃÔ§"
+ "àÃÔ´"
+ "àÃÔÁ"
+ "àÃÔèÁ"
+ "àÃÔéÁ"
+ "àÃÕ¡"
+ "àÃÕ§"
+ "àÃÕ´"
+ "àÃÕ¹"
+ "àÃÕº"
+ "àÃÕÂÁ"
+ "àÃÕÂÇ"
+ "àÃÕèÂ"
+ "àÃÕèÂÁ"
+ "àÃÕèÂÇ"
+ "àÃÕéÂÇá"
+ "àÃ×Í"
+ "àÃ×Í¡"
+ "àÃ×ͧ"
+ "àÃ×Í´"
+ "àÃ×͹"
+ "àÃ×èÍ"
+ "àÃ×èͧ"
+ "àÃ×èÍÂ"
+ "àÃ×éÍ"
+ "àÃ×é͹"
+ "àÃäÃ"
+ "àÃçÇ"
+ "àÃè"
+ "àÃè§"
+ "àÃèÍ"
+ "àÃèÒ"
+ "àÃé¹"
+ "àÃéÒ"
+ "àÅ¢"
+ "àÅ¢Ò"
+ "àÅ¢Ò¸Ô¡ÒÃ"
+ "àŢҹءÒÃ"
+ "àÅ´Õé"
+ "àŵ"
+ "àŹ"
+ "àŹÊì"
+ "àźҹ͹"
+ "àÅÂ"
+ "àÅÇ"
+ "àÅÈ"
+ "àÅËÅѧ"
+ "àÅÍ"
+ "àÅÍÐ"
+ "àÅÍÐà·ÍÐ"
+ "àÅÐ"
+ "àÅÐà·Ð"
+ "àÅÒ"
+ "àÅÒÐ"
+ "àÅÔ¡"
+ "àÅÔ¡ÅÑè¡"
+ "àÅÔ¹àÅèÍ"
+ "àÅÔÈ"
+ "àÅÔé§"
+ "àÅÕÂ"
+ "àÅÕ§"
+ "àÅÕ¹"
+ "àÅÕº"
+ "àÅÕÂÁ"
+ "àÅÕÂÇ"
+ "àÅÕè§"
+ "àÅÕè¹"
+ "àÅÕèÂÁ"
+ "àÅÕé§"
+ "àÅÕéÂÇ"
+ "àÅ×Í¡"
+ "àÅ×Í´"
+ "àÅ×͹"
+ "àÅ×èͧ"
+ "àÅ×è͹"
+ "àÅ×èÍÁ"
+ "àÅ×èÍÁãÊ"
+ "àÅ×èÍÂ"
+ "àÅ×éÍÂ"
+ "àÅà«ÍÃì"
+ "àÅà¾"
+ "àÅç¡"
+ "àÅç§"
+ "àÅç´"
+ "àÅç¹"
+ "àÅçº"
+ "àÅçÁ"
+ "àÅè¹"
+ "àÅèÁ"
+ "àÅèËì"
+ "àÅèÍ"
+ "àÅèÒ"
+ "àÅé§"
+ "àÅéÒ"
+ "àǤ"
+ "àǤԹ"
+ "àǤÕ"
+ "àǨ"
+ "àǪ"
+ "àǪ¡ÃÃÁ"
+ "àÇ°¹ì"
+ "àdzÐ"
+ "àdzÔ"
+ "àdzԡ"
+ "àdzØ"
+ "àǵ¹ì"
+ "àǵÃ"
+ "àǵÒÅ"
+ "àÇ·"
+ "àÇ·¹Ò"
+ "àÇ·Âì"
+ "àÇ·Ò§¤ÈÒʵÃì"
+ "àÇ·Ò§¤ì"
+ "àÇ·Ò¹µÐ"
+ "àÇ·Ò¹µì"
+ "àÇ·Ô"
+ "àÇ·Õ"
+ "àǸÐ"
+ "àǹ"
+ "àǹÔÊ"
+ "àǹäµÂ"
+ "àǺ䫵ì"
+ "àÇÁºÅÕÂì"
+ "àÇÁÐ"
+ "àÇÁѵ"
+ "àÇÁÒµÔ¡"
+ "àÇÃ"
+ "àÇÃÁ³Õ"
+ "àÇÃѳ"
+ "àÇÃѳ³ÔÂÐ"
+ "àÇÃÕ"
+ "àÇÅÊì"
+ "àÇÅÒ"
+ "àÇÈÁì"
+ "àÇÈÂÒ"
+ "àÇÈÂì"
+ "àÇʵì"
+ "àÇʹì"
+ "àÇÊÀÙ"
+ "àÇÊÁÐ"
+ "àÇÊÁì"
+ "àÇÊÇѳ"
+ "àÇÊÊÐ"
+ "àÇÊÊѹ´Ã"
+ "àÇÊÊØ¡ÃÃÁ"
+ "àÇÊÊØÇѳ"
+ "àÇÊÒÃѪ"
+ "àÇÊÔ"
+ "àÇÊÔÂÒ"
+ "àÇ˹"
+ "àÇËÐ"
+ "àÇËѧ¤ì"
+ "àÇËÑ»µÔ"
+ "àÇËÒ"
+ "àÇËÒÂÊ"
+ "àÇËÒÊ"
+ "àÇÌØ"
+ "àÇÍ"
+ "àÇÍÃì"
+ "àÇÍÃìªÑ¹"
+ "àÇÔ¡"
+ "àÇÔÃì¡Ê൪ѹ"
+ "àÇÔÃì´"
+ "àÇÔé§"
+ "àÇÕ§"
+ "àÇÕ´¹ÒÁ"
+ "àÇÕ¹"
+ "àÇâè¹ì"
+ "àÇä¹Â"
+ "àÇçº"
+ "àÇç»"
+ "àÇèÍ"
+ "àÇé"
+ "àÇé¹"
+ "àÇéÂ"
+ "àÇéÒ"
+ "àÈÃÉ°¡Ô¨"
+ "àÈÃÉ°ÈÒʵÃì"
+ "àÈÃÉ°Ò¹Ð"
+ "àÈÃÉ°Õ"
+ "àÈÃÉ°ì"
+ "àÈÃéÒ"
+ "àÈǵ"
+ "àÈÉ"
+ "àÈÕÂÃ"
+ "àÊ"
+ "àÊ¡"
+ "àʧÕèÂÁ"
+ "àʩǹ"
+ "àÊ´"
+ "àÊ´ç¨"
+ "àʶÕÂÃ"
+ "àʶÕÂÃÀÒ¾"
+ "àʹ"
+ "àʹ§"
+ "àʹËÒ"
+ "àʹÍ"
+ "àʹÐ"
+ "àʹÒ"
+ "àʹҸԡÒÃ"
+ "àʹҺ´Õ"
+ "àʹÒʹÐ"
+ "àʹÒÐ"
+ "àʹÕ´"
+ "àʹÕÂì"
+ "àʹè§"
+ "àʹèËÒ"
+ "àʹèËì"
+ "àʹèÒ"
+ "àʺÂ"
+ "àʺÕ§"
+ "àʾ"
+ "àʾÂì"
+ "àÊÀÒ"
+ "àÊÁËÐ"
+ "àÊÁÍ"
+ "àÊÁÒ"
+ "àÊÁÕ¹"
+ "àÊÁ×͹"
+ "àÊÁç´"
+ "àÊÂ"
+ "àÊÃÔ´"
+ "àÊÃÔ¿"
+ "àÊÃÔÁ"
+ "àÊÃÕ"
+ "àÊÃç¨"
+ "àÊÅ´"
+ "àÊÅÒ"
+ "àÊÅÕè§"
+ "àÊÅ×Í¡ÊŹ"
+ "àÊÇ¡"
+ "àÊÇ¡ÒÁÒµÂì"
+ "àÊǹÐ"
+ "àÊǹÒ"
+ "àÊÇÂ"
+ "àÊÇÕ¹"
+ "àÊÒ"
+ "àÊÒÃÀÂì"
+ "àÊÒÃì"
+ "àÊÒǤ¹¸ì"
+ "àÊÒdzԵ"
+ "àÊÒǹÒ"
+ "àÊÒǹÕÂì"
+ "àÊÒÇÀÒ"
+ "àÊÒÇÀÒ¤Âì"
+ "àÊÒÇÀÒ¾"
+ "àÊÒÇÃÊ"
+ "àÊÒÇÅѡɳì"
+ "àÊÒÐ"
+ "àÊÔÃì¿"
+ "àÊÕÂ"
+ "àÊÕ§"
+ "àÊÕ´"
+ "àÊÕº"
+ "àÊÕÂÁ"
+ "àÊÕÂÇ"
+ "àÊÕèÂ"
+ "àÊÕè§"
+ "àÊÕèÂÇ"
+ "àÊÕé¹"
+ "àÊÕéÂÁ"
+ "àÊÕéÂÇ"
+ "àÊ×Í"
+ "àÊ×Í¡"
+ "àÊ×èÍ"
+ "àÊ×èÍÁ"
+ "àÊ×éÍ"
+ "àÊà¾Å"
+ "àÊâ·"
+ "àÊâÅ"
+ "àÊç§à¤Ãç§"
+ "àÊé§"
+ "àÊé¹"
+ "àÊéÒ"
+ "àË"
+ "à˧"
+ "à˧Ò"
+ "à˧×Í¡"
+ "à˧×èÍ"
+ "à˧è§"
+ "à˵Ø"
+ "à˵ءÒóì"
+ "à˹ÍÐ"
+ "à˹ÍÐ˹Ð"
+ "à˹ÒÐ"
+ "à˹Õ§"
+ "à˹ÕÂÁ"
+ "à˹ÕÂÇ"
+ "à˹ÕèÂÇ"
+ "à˹×Í"
+ "à˹×èÍÂ"
+ "à˹ç´"
+ "à˹çº"
+ "à˹è§"
+ "à˹èÍ"
+ "à˹éÒ"
+ "àËÁ"
+ "àËÁÇ´Õ"
+ "àËÁѹµì"
+ "àËÁÒ"
+ "àËÁÒÐ"
+ "àËÁÕÂÇ"
+ "àËÁÕèÂÇ"
+ "àËÁ×ͧ"
+ "àËÁ×Í´"
+ "àËÁ×͹"
+ "àËÁç¹"
+ "àËÁè"
+ "àËÁè§"
+ "àËÁèÍ"
+ "àËÂ"
+ "à˧"
+ "àËÂÒÐ"
+ "àËÂÔ§"
+ "àËÂÕ´"
+ "àËÂÕº"
+ "àËÂÕèÂÇ"
+ "àËÂ×Í¡"
+ "àËÂ×èÍ"
+ "àËÂéÒ"
+ "àËÃÑ­­Ô¡"
+ "àËÃÒ"
+ "àËÃÕ­"
+ "àËŹ"
+ "àËÅÇ"
+ "àËÅÍ"
+ "àËÅÒ"
+ "àËÅÒÐáËÅÐ"
+ "àËÅÔ§"
+ "àËÅÕ¹"
+ "àËÅÕÂÇ"
+ "àËÅÕèÂÁ"
+ "àËÅ×Í"
+ "àËÅ×Í¡"
+ "àËÅ×ͧ"
+ "àËÅ×ͺ"
+ "àËÅ×èÍÁ"
+ "àËÅç¡"
+ "àËÅè"
+ "àËÅèÒ"
+ "àËÅéÒ"
+ "àËÇ"
+ "àËǧ"
+ "àËÇÂ"
+ "àËÇÍÐ"
+ "àËÇÍÐËÇÐ"
+ "àËÇÕè§"
+ "àËÇè"
+ "àËÍÐ"
+ "àËÒ"
+ "àËÒÐ"
+ "àËÔ¹"
+ "àËÔÁ"
+ "àËÕ¹"
+ "àËÕèÂÇ"
+ "àËÕéÂ"
+ "àËÕé¹"
+ "àËÕéÂÁ"
+ "àË×Í´"
+ "àË×èÍ"
+ "àËç¨"
+ "àËç´"
+ "àËç¹"
+ "àËçº"
+ "àËè"
+ "àËèÍ"
+ "àËèÒ"
+ "àÍ"
+ "àÍ¡"
+ "àÍ¡©Ñ¹·ì"
+ "àÍ¡ª¹"
+ "àÍ¡«àÃÂì"
+ "àÍ¡«â»"
+ "àÍ¡À¾"
+ "àÍ¡ÀÒ¾"
+ "àÍ¡ÁÑÂ"
+ "àÍ¡Ãö»ÃÐâ¤"
+ "àÍ¡ÃÒª"
+ "àÍ¡Åѡɳì"
+ "àÍ¡ÊÒÃ"
+ "à͡ѤµÒ"
+ "àÍ¡Ò¸Ô»äµÂ"
+ "à͡ࢹ¡"
+ "àÍ¡à·È"
+ "àͧ"
+ "àͪ¾Õ"
+ "àÍ´Êì"
+ "àÍ´ÔàµÍÃì"
+ "à͵·Ñ¤¤Ð"
+ "àÍ·ÕàÍçÁ"
+ "à͹"
+ "à͹·ÃÒ¹«ì"
+ "à͹ä«Áì"
+ "àÍ»Êѹ"
+ "àÍÁ"
+ "àÍÂ"
+ "àÍÃÒÇѳ"
+ "àÍÃç´ÍÃèÍÂ"
+ "àÍÇ"
+ "àÍÇѧ"
+ "àÍÊ"
+ "àÍÌ¡"
+ "àÍÌÒ"
+ "àÍÍ"
+ "àÍÐÍÐ"
+ "àÍÐã¨"
+ "àÍÒ"
+ "àÍÒ·ì¾Øµ"
+ "àÍÒÌÒÃ"
+ "àÍÔ¡"
+ "àÍÔº"
+ "àÍÔé¹"
+ "àÍÕ§"
+ "àÍÕ´"
+ "àÍÕ¹"
+ "àÍÕè¹"
+ "àÍÕèÂÁ"
+ "àÍÕèÂÇ"
+ "àÍÕé§"
+ "àÍÕéÂÁà¿ÕéÂÁ"
+ "àÍÕéÂÇ"
+ "àÍÕê´"
+ "àÍÕêÂÁ"
+ "àÍÕêÂÁ¨Øê¹"
+ "àÍ×͹"
+ "àÍ×ÍÁ"
+ "àÍ×èÍÂ"
+ "àÍ×éÍ"
+ "àÍ×éͧ"
+ "àÍ×é͹"
+ "àÍ×éÍÁ"
+ "àÍ×éÍÂ"
+ "àÍà¤ÍÃì"
+ "àÍàªÕÂ"
+ "àÍàªÕè¹à¡ÁÊì"
+ "àÍà«ÕÂ"
+ "àÍàÂè¹µì"
+ "àÍẤ"
+ "àÍç¡«ì"
+ "àÍç¡«ì¾ÅÍàÃÍÃì"
+ "àÍç¡«ìà¾ÃÊ"
+ "àÍç§"
+ "àÍç´"
+ "àÍç´µÐâÃ"
+ "àÍç´ÍÖ§"
+ "àÍç¹"
+ "àÍç¹´Ù"
+ "àÍç¹àµÍÃìà·¹"
+ "àÍèÂ"
+ "àÍèÍ"
+ "àÍé"
+ "àÍé¡Ò"
+ "àÍéÍÃÐàËÂ"
+ "àÍéÍàÎÍ"
+ "àÍê¡"
+ "àÍêÂ"
+ "àÍêÐ"
+ "àÍë"
+ "àÍë§"
+ "àÍëÂ"
+ "àÎ"
+ "àΧ"
+ "àÎÂ"
+ "àÎÅԤͻàµÍÃì"
+ "àÎÔõ«ì"
+ "àÎÕÂ"
+ "àÎÕé¹"
+ "àÎÕéº"
+ "àÎÕéÂÇ"
+ "àÎ×Í¡"
+ "àÎ×͹"
+ "àÎâÃÍÕ¹"
+ "àÎâÅ"
+ "àÎéÂ"
+ "àÎéÇ"
+ "àÎéÍ"
+ "á¡"
+ "ᡧ"
+ "᡹"
+ "á¡Á"
+ "á¡ÁÁÒ"
+ "á¡Ã¡"
+ "á¡Ã¹Ôµ"
+ "á¡ÃÐ"
+ "á¡Ã俵ì"
+ "á¡Ãç¹"
+ "á¡Ãè§"
+ "á¡ÃèÇ"
+ "á¡Å"
+ "á¡Åº"
+ "á¡ÅÅ͹"
+ "á¡ÅÐ"
+ "á¡ÅàÅÕÂÁ"
+ "á¡Åé§"
+ "á¡ÅéÁ"
+ "á¡ÅéÇ"
+ "á¡Ç"
+ "á¡Çè§"
+ "á¡Çè¹"
+ "á¡Ð"
+ "á¡â´ÅÔà¹ÕÂÁ"
+ "á¡è"
+ "á¡è§"
+ "á¡è§áÂè§"
+ "á¡è¹"
+ "á¡é"
+ "á¡é§"
+ "á¡éÁ"
+ "á¡éÇ"
+ "á¡ê§"
+ "á¡ê»"
+ "á¡êÊ"
+ "á¢"
+ "ᢡ"
+ "ᢹ"
+ "ᢹ§"
+ "á¢Á"
+ "á¢Áçº"
+ "á¢ÁèÇ"
+ "á¢Â§"
+ "á¢Âç¡"
+ "á¢Âè§"
+ "á¢Ç¡"
+ "á¢Ç§"
+ "á¢Ç¹"
+ "á¢ÇÐ"
+ "á¢ç§"
+ "á¢è§"
+ "á¢è§¢Ñ¹"
+ "á¢é§"
+ "á¢é¹"
+ "á¤"
+ "ᤪàªÕÂÃì"
+ "ᤪàÁÕÂÃì"
+ "ᤵµÒÅͤ"
+ "᤹"
+ "᤺"
+ "᤻«ÙÅ"
+ "á¤Á"
+ "á¤Ã§"
+ "á¤ÃÐ"
+ "á¤Ãè"
+ "á¤Ãì"
+ "á¤Å¤ÙÅÑÊ"
+ "á¤Å§"
+ "á¤Å¹"
+ "á¤ÅÍÃÕ"
+ "á¤ÅÔ¿ÍÃìà¹ÕÂ"
+ "á¤Åà«ÕÂÁ"
+ "á¤ÅèǤÅèͧ"
+ "á¤ÅéÇ"
+ "á¤Ç"
+ "á¤Ç¡"
+ "á¤Çé¹"
+ "á¤Ð"
+ "á¤è"
+ "á¤è¹"
+ "á¤é¹"
+ "á§"
+ "á§Ð"
+ "á§è"
+ "á§è§"
+ "á§è¹"
+ "á§éÁ"
+ "á¨"
+ "ᨡ"
+ "ᨧ"
+ "á¨Ç"
+ "á¨Ð"
+ "á¨èÁ"
+ "á¨èÇ"
+ "á¨é"
+ "á¨é§"
+ "á¨é¹"
+ "á¨éÇ"
+ "á¨ê´"
+ "á¨ë"
+ "á¨ëÇ"
+ "á¨ëÇáËÇÇ"
+ "á©"
+ "á©¡"
+ "ᩧ"
+ "á©Åº"
+ "á©ÅÐ"
+ "á©ÅéÁ"
+ "á©Ð"
+ "á©è"
+ "á©è§"
+ "áª"
+ "áªÁ»ì"
+ "áªÁà»­"
+ "áªÃì"
+ "áªÅèÁ"
+ "áªè"
+ "áªè§"
+ "áªèÁ"
+ "᫧"
+ "á«´"
+ "᫹´ìÇÔª"
+ "᫺"
+ "á«Á"
+ "á«ÂÔ´"
+ "á«Ç"
+ "á«Ð"
+ "á«è"
+ "á«èÇ"
+ "á´"
+ "á´¡"
+ "á´§"
+ "á´´"
+ "á´¹"
+ "á´Ð"
+ "á´ç¡"
+ "á´è"
+ "á´è¹"
+ "á´èÇ"
+ "ᵡ"
+ "ᵧ"
+ "ᵧ¡ÇÒ"
+ "ᵧàÁ"
+ "ᵧâÁ"
+ "áµ´"
+ "áµ¹"
+ "áµÃ"
+ "áµÐ"
+ "áµè"
+ "áµè§"
+ "áµé"
+ "áµé¨ÔëÇ"
+ "áµéÁ"
+ "áµê´áµë"
+ "á¶"
+ "ᶡ"
+ "ᶺ"
+ "á¶Á"
+ "á¶Å§"
+ "á¶Ç"
+ "á·§"
+ "á·¹"
+ "á·¹·ÒÅÑÁ"
+ "á·º"
+ "á·Ã¡"
+ "á·Ã¡àµÍÃì"
+ "á·Ð"
+ "á·ç¡«Õè"
+ "á·ç§¡ì¹éÓ"
+ "á·è§"
+ "á·è¹"
+ "á·é"
+ "á·é§"
+ "Ṻ"
+ "á¹Á"
+ "á¹Ç"
+ "á¹Ð"
+ "á¹è"
+ "á¹è§"
+ "á¹è¹"
+ "á¹èÇ"
+ "á¹èÐ"
+ "áº"
+ "ạ"
+ "Ấ·ÕàÃÕÂ"
+ "ầ¡ì"
+ "ầ¤ì"
+ "ẴÁÔ¹µÑ¹"
+ "ẵàµÍÃÕè"
+ "ẹ"
+ "ẹâ¨"
+ "Ẻ"
+ "áºÐ"
+ "áºàÃÕÂÁ"
+ "áºçº"
+ "áºè§"
+ "á»"
+ "ừԿԤ"
+ "á»´"
+ "Ỻ"
+ "á»Ã"
+ "á»Ã¡"
+ "á»Ã§"
+ "á»Ã»Ãǹ"
+ "á»ÃÐ"
+ "á»Ãè§"
+ "á»Ãé¹"
+ "á»Ãê´"
+ "á»Ãë"
+ "á»Å"
+ "á»Å¡"
+ "á»Å§"
+ "á»Å¹"
+ "á»Åº"
+ "á»Åé"
+ "á»Ð"
+ "á»é§"
+ "á»é¹"
+ "á»éÇ"
+ "á»ê´"
+ "á»êº"
+ "á»êÐ"
+ "á»êЫÐ"
+ "á»ë§"
+ "á»ëÇ"
+ "ἡ"
+ "ἧ"
+ "á¼´"
+ "á¼¹"
+ "á¼¹¡"
+ "á¼Å"
+ "á¼Å§"
+ "á¼ÅÐ"
+ "á¼Åçº"
+ "á¼ÅçÇ"
+ "á¼è"
+ "á¼è¹"
+ "á¼èÇ"
+ "á¼éÇ"
+ "ὡ"
+ "ὧ"
+ "á½´"
+ "á¾"
+ "ᾧ"
+ "ᾧ¾ÇÂ"
+ "á¾·ÂÈÒʵÃì"
+ "á¾·ÂÊÀÒ"
+ "á¾·ÂÒ"
+ "á¾·Âì"
+ "á¾¹"
+ "á¾¹¡"
+ "á¾¹§àªÔ­"
+ "á¾Ã"
+ "á¾Ã¡"
+ "á¾ÃÇ"
+ "á¾Ãè"
+ "á¾Ãè§"
+ "á¾ÃéÇ"
+ "á¾Å§"
+ "á¾Åµ¿ÍÃìÁ"
+ "á¾Å·Ô¹ÑÁ"
+ "á¾ÅÁ"
+ "á¾ÈÂÒ"
+ "á¾ÈÂì"
+ "á¾Ð"
+ "á¾ç¡"
+ "á¾ç¤à¡¨"
+ "á¾è§"
+ "á¾è¹"
+ "á¾é"
+ "á¾éÇ"
+ "á¿¡«ì"
+ "ῧ"
+ "ῪÑè¹"
+ "Ό"
+ "Ό«Õ"
+ "Ὼ"
+ "á¿Ãì"
+ "á¿Å¡«ì"
+ "á¿Åµ"
+ "á¿Ð"
+ "á¿éÁ"
+ "áÁ¡"
+ "áÁ¡¹Õà«ÕÂÁ"
+ "áÁ¤â¤Ã"
+ "áÁ§"
+ "áÁ§¡Ò¹ÕÊ"
+ "áÁ¹"
+ "áÁ¹¨ÙàÃÕÂ"
+ "áÁŧ"
+ "áÁÇ"
+ "áÁÐ"
+ "áÁè"
+ "áÁè¹"
+ "áÁèÎèͧÊ͹"
+ "áÁé"
+ "áÁé¹"
+ "áÁéÇ"
+ "á¡"
+ "á§"
+ "áº"
+ "áÂÁ"
+ "áÂÐ"
+ "áÂáÊ"
+ "áÂçº"
+ "áÂè"
+ "áÂè§"
+ "áÂé"
+ "áÂé§"
+ "áÂéÁ"
+ "áÃ"
+ "áá"
+ "áç"
+ "áô"
+ "áÃÁ"
+ "áÃÐ"
+ "áÃç¡à¡µ"
+ "áÃè"
+ "áÃè§"
+ "áÃé§"
+ "áÃé¹á¤é¹"
+ "áÃéÇ"
+ "áÅ"
+ "áÅ¡"
+ "áŧ"
+ "áŹ"
+ "Ᏼ"
+ "Ᏼì"
+ "áź"
+ "áÅÐ"
+ "áÅç¡â·Ê"
+ "áÅè"
+ "áÅè§"
+ "áÅè¹"
+ "áÅé"
+ "áÅé§"
+ "áÅéÇ"
+ "áǧ"
+ "áÇ´"
+ "áǺ"
+ "áÇÁ"
+ "áÇÇ"
+ "áÇÐ"
+ "áÇè¹"
+ "áÇèÇ"
+ "áÇé"
+ "áÇé§"
+ "áÊ"
+ "áÊ¡"
+ "áʧ"
+ "áÊ´"
+ "áÊ´§"
+ "áʵÁ»ì"
+ "áʹ"
+ "áʹÂÒ¡Ã"
+ "áʹÂÒ¹ØÀÒ¾"
+ "áʺ"
+ "áÊÁ"
+ "áÊ¡"
+ "áʧ"
+ "áÊÂÐ"
+ "áÊÃé§"
+ "áÊŧ"
+ "áÊǧ"
+ "áÊÐ"
+ "áÊè"
+ "áÊé"
+ "áÊéÁéÒ"
+ "áË"
+ "áË¡"
+ "á˧"
+ "á˧¹"
+ "á˧á¡ë"
+ "á˧è"
+ "á˧è§"
+ "á˹"
+ "á˹§"
+ "á˹º"
+ "á˹Á"
+ "á˺"
+ "áËÁ"
+ "áËÁÐ"
+ "áËÁè"
+ "áËÁèÁ"
+ "áËÂ"
+ "á˧"
+ "áËÂÁ"
+ "áËÂÐ"
+ "áËÂè"
+ "áËÂè§"
+ "áËÅ"
+ "áËÅ¡"
+ "áËŹ"
+ "áËÅÁ"
+ "áËÅÐ"
+ "áËÅè"
+ "áËÅè§"
+ "áËÇ"
+ "áËÇ¡"
+ "áËǹ"
+ "áËÇÐ"
+ "áËÇè§"
+ "áËÐ"
+ "áËè"
+ "áËè§"
+ "áËé"
+ "áËé§"
+ "áËéÇ"
+ "áÍ"
+ "áÍ¡"
+ "áÍ´"
+ "áÍ´ÇÒ¹«ì"
+ "áÍ´à´ÃÊ"
+ "á͹"
+ "á͹´ì"
+ "á͹µÒÃ졵ԡ"
+ "á͹µÔºÍ´Õ"
+ "á͹µÔਹ"
+ "á͹µÕé"
+ "áͺ"
+ "á;¾ÅÔपѹ"
+ "á;à¾Åçµ"
+ "áÍ¿ÃÔ¡Ò"
+ "áÍÁÁÔàµÍÃì"
+ "áÍÁá»Ãì"
+ "áÍÁâÁà¹ÕÂ"
+ "áÍÃèÁ"
+ "áÍÃì"
+ "áÍÅ"
+ "áÍÅ¡ÍÎÍÅì"
+ "áÍÅ¿Ò"
+ "áÍÊ¿Ñŵì"
+ "áÍÊä¾ÃÔ¹"
+ "áÍÍÑ´"
+ "áÍâ¹´"
+ "áÍè§"
+ "áÍè¹"
+ "áÍèÇ"
+ "áÍé"
+ "áÍé§áÁé§"
+ "áÍé´"
+ "áÍéÁ"
+ "áÍꤪÑè¹"
+ "áÍê´"
+ "áÍë"
+ "áÎ"
+ "áι´ìºÍÅ"
+ "áÎÁ"
+ "áÎÁàºÍÃìà¡ÍÃì"
+ "áÎÐ"
+ "áÎè"
+ "áÎè¡Öê¹"
+ "â¡"
+ "â¡¡"
+ "⡧"
+ "⡧¡Ò§"
+ "⡯Ô"
+ "⡴ѧ"
+ "⡹"
+ "â¡ÁÅ"
+ "â¡ÁØ·"
+ "â¡Â"
+ "â¡Ã¡"
+ "â¡Ã§"
+ "â¡Ã¸"
+ "â¡Ã¸Ò"
+ "â¡Ãè§"
+ "â¡Ãë¹"
+ "â¡Å´ì"
+ "â¡Å¹"
+ "â¡ÅÒËÅ"
+ "â¡ÈÅ"
+ "â¡Ê¹"
+ "â¡ÊÔ¹·Ãì"
+ "â¡ÊÕÂì"
+ "â¡ÊØÁ"
+ "â¡Ë¡"
+ "â¡àÁ¹"
+ "â¡â¡é"
+ "â¡âÃâ¡âÊ"
+ "â¡äÊÂ"
+ "â¡è§"
+ "â¡é"
+ "â¡é§â¤é§"
+ "â¡ë"
+ "â¡ë¹"
+ "â¢"
+ "⢡"
+ "⢧"
+ "⢴"
+ "⢹"
+ "⢹§"
+ "â¢Á"
+ "â¢Á§"
+ "â¢Á´"
+ "â¢Â¡"
+ "â¢Â§"
+ "â¢Âè§"
+ "â¢Å¡"
+ "â¢Å§"
+ "â¢è§"
+ "â¤"
+ "⤡"
+ "⤨Ã"
+ "⤵Ã"
+ "⤹"
+ "⤹Á"
+ "⤺Íŵì"
+ "â¤Á"
+ "â¤ÁèÒ"
+ "â¤Ã¡"
+ "â¤Ã§"
+ "â¤Ã§¡ÒÃ"
+ "â¤ÃÁ"
+ "â¤ÃÒª"
+ "â¤ÃàÁÕÂÁ"
+ "â¤ÃâÁâ«Á"
+ "â¤Ãè§"
+ "â¤Å"
+ "â¤Å§"
+ "â¤Å§à¤Å§"
+ "â¤Å¹"
+ "â¤Å¹¹Ôè§"
+ "â¤ÅÍÁàºÕÂ"
+ "â¤ÇµÒ"
+ "â¤à¤¹"
+ "â¤è§"
+ "â¤è¹"
+ "â¤é§"
+ "â¤éª"
+ "â¤é´"
+ "â¦É¡"
+ "â¦É³Ò"
+ "â¦ÉÐ"
+ "â¦ÉÔµ"
+ "â§"
+ "⧡"
+ "⧧"
+ "⧧১"
+ "⧹"
+ "â§à§"
+ "â§è"
+ "â§è§"
+ "â§è§à§è§"
+ "â§é§"
+ "â¨"
+ "⨡"
+ "⨧"
+ "⨧â¤Ãè§"
+ "⨷"
+ "⨷¡ì"
+ "⨷Âì"
+ "⨹"
+ "â¨Á"
+ "â¨Ã"
+ "â¨Ã¡ÃÃÁ"
+ "â¨É"
+ "â¨É¨Ñ¹"
+ "â¨è§¤ÃÖèÁ"
+ "â¨è§á¨é§"
+ "â¨ê¡"
+ "â¨ë§¤ÃÖèÁ"
+ "â©"
+ "⩧੧"
+ "â©´"
+ "⩹´"
+ "⩺"
+ "â©Á"
+ "â©Å¡"
+ "â©è"
+ "â©è§©èÒ§"
+ "⪡"
+ "⪡ع"
+ "⪤"
+ "⪴¡"
+ "⪴֡"
+ "⪵Ô"
+ "⪹"
+ "âªÂ"
+ "âªÇì"
+ "â«"
+ "â«¡"
+ "â«´Ò"
+ "â«Á"
+ "â«ÃÁ"
+ "â«ÅÒ"
+ "â«ÅÙªÑè¹"
+ "â«à´ÕÂÁ"
+ "â«àÇÕµ"
+ "â«è"
+ "â´"
+ "â´¡à´¡"
+ "â´´"
+ "â´¹"
+ "ⴹѷ"
+ "â´Á"
+ "â´ÁÔâ¹"
+ "â´Â"
+ "â´è"
+ "â´è§"
+ "â´ê»"
+ "âµ"
+ "ⵡ"
+ "ⵧ൧"
+ "âµ¹"
+ "âµ¹´"
+ "âµÁÃ"
+ "âµÃ¡"
+ "âµà¡ÕÂÇ"
+ "âµè§"
+ "âµé"
+ "âµé§"
+ "âµéâ¼"
+ "âµê´"
+ "âµêÐ"
+ "âµêÐÍÔËÁèÒÁ"
+ "â¶"
+ "⶧"
+ "ⶺ"
+ "â¶Á"
+ "â·"
+ "â·¡à·¡"
+ "â·§"
+ "ⷧ෧"
+ "â·¹"
+ "â·Á¹ÑÊ"
+ "â·Ã"
+ "â·Ã¤Á¹Ò¤Á"
+ "â·Ã·ÃÃȹì"
+ "â·Ã·Ñȹì"
+ "â·Ã¾ÔÁ¾ì"
+ "â·ÃÀÒ¾"
+ "â·ÃÁ"
+ "â·ÃÈѾ·ì"
+ "â·ÃàÅ¢"
+ "â·É"
+ "â·É·Ñ³±ì"
+ "â·ÉÒ¹Øâ·É"
+ "â·ÉÒÃÁ³ì"
+ "â·ÊÐ"
+ "â·ÊÒ¤µÔ"
+ "â·âÊ"
+ "â·è"
+ "â¸è"
+ "â¹"
+ "â¹¹"
+ "â¹ÃÒ"
+ "â¹ÃÕ"
+ "â¹è¹"
+ "â¹éµ"
+ "â¹éµºØê¡"
+ "â¹éµÊì"
+ "â¹é¹"
+ "â¹éÁ"
+ "âº"
+ "⺡"
+ "⺡¢Ã³Õ"
+ "⺡Õé"
+ "⺵"
+ "⺵Ñë¹"
+ "⺹ÑÊ"
+ "âºÂ"
+ "âºÃÁÕ¹"
+ "âºÃ͹"
+ "âºÃÒ³"
+ "âºÅÔàÇÕÂ"
+ "âºÇìÅÔè§"
+ "âºÊ¶ì"
+ "âºêàºê"
+ "âºë"
+ "â»"
+ "⻡"
+ "⻧"
+ "⻧ÅÒ§"
+ "⻹"
+ "â»Ã"
+ "â»Ã§"
+ "â»Ã´"
+ "â»ÃµÍ¹"
+ "â»ÃµÕ¹"
+ "â»ÃµØà¡Ê"
+ "â»ÃÂ"
+ "â»Ãà«Êà«ÍÃì"
+ "â»ÃàµÊáµ¹µì"
+ "â»Ãá¡ÃÁ"
+ "â»Ãá¡ÃÁàÁÍÃì"
+ "â»ÃâÁªÑ¹"
+ "â»ÃâÁµ"
+ "â»Ãè§"
+ "â»Ãì"
+ "â»ÅÔâÍ"
+ "â»Åè§"
+ "â»Ê¡ÒÃì´"
+ "â»ÊàµÍÃì"
+ "â»Ð"
+ "â»áŹ´ì"
+ "â»âÅ"
+ "â»è§"
+ "â»è§¢èÒÁ"
+ "â»é"
+ "â»é§"
+ "â»ê"
+ "â»ê¡"
+ "â»ê¡à¡ÍÃì"
+ "â»êÂà«Õ¹"
+ "â»êÐ"
+ "â¼"
+ "⼧"
+ "â¼¹"
+ "â¼Â"
+ "â¼Å¡à¼Å¡"
+ "â¼Å¹"
+ "â¼ÅÐ"
+ "â¼Åè"
+ "â¼Ð"
+ "â¾"
+ "⾡"
+ "⾧"
+ "⾧¾Ò§"
+ "⾫ԵÃ͹"
+ "⾸ԭҳ"
+ "⾸ԺÑÅÅѧ¡ì"
+ "⾸ÔÊÁÀÒÃ"
+ "⾸ÔÊѵÇì"
+ "⾸Ôì"
+ "â¾¹"
+ "â¾¹·Ð¹Ò"
+ "â¾Â"
+ "â¾Â¡êǹ"
+ "â¾ÂÁ"
+ "â¾Ã¡"
+ "â¾Ã§"
+ "â¾Ãд¡"
+ "â¾ÃⵤÍÅ"
+ "â¾Å§"
+ "â¾Å¹"
+ "â¾ÅÐ"
+ "â¾Åè§"
+ "â¾Åé§"
+ "â¾Åéà¾Åé"
+ "â¾Ê¾"
+ "â¾á·Êà«ÕÂÁ"
+ "â¾é¹"
+ "â¿¡ÑÊ"
+ "⿹"
+ "â¿Åìà´ÍÃì"
+ "âÀ¤"
+ "âÀ¤Ô¹"
+ "âÀ¤Õ"
+ "âÀª¹Ð"
+ "âÀª¹Ò"
+ "âÀª¹Ò¡Ã"
+ "âÀª¹Ò¡ÒÃ"
+ "âÀª¹ÒËÒÃ"
+ "âÀª¹ì"
+ "âÁ"
+ "âÁ¡"
+ "âÁ¡¢ì"
+ "âÁ¦¡ÃÃÁ"
+ "âÁ¦ÊÑ­­Ò"
+ "âÁ¦Ð"
+ "âÁ¦Õ¡ÃÃÁ"
+ "âÁ¦ÕÂÐ"
+ "âÁ§"
+ "âÁ§¤ÃØèÁ"
+ "âÁ´ÙÅ"
+ "âÁ·¹Ò"
+ "âÁÅÔº´Õ¹ÑÁ"
+ "âÁÅÕ"
+ "âÁËÐ"
+ "âÁËѹ¸ì"
+ "âÁËÒ¤µÔ"
+ "âÁà´Å"
+ "âÁà´çÁ"
+ "âÁàÁ"
+ "âÁàÁ¹µì"
+ "âÁàÅ¡ØÅ"
+ "âÁàÊ¡"
+ "âÁàÊÊ"
+ "âÁâ¹"
+ "âÁâË"
+ "âÁä¹Â"
+ "âÁè"
+ "âÁè§"
+ "âÁé"
+ "âÂ"
+ "â¡"
+ "⡵Ãì"
+ "â¤Ð"
+ "â¤Õ"
+ "â§"
+ "⪹ì"
+ "â¸Ò"
+ "â¸Թ"
+ "â¹"
+ "â¹Õ"
+ "âÂÁ"
+ "âÂàÂ"
+ "âÂâÊ"
+ "âÂè§"
+ "âÂè§âÂè"
+ "âÂé"
+ "âÃ"
+ "âä"
+ "âä¨ÔµàÀ·"
+ "âäÒ"
+ "âäҾҸ"
+ "âç"
+ "âç¤ÑÅ"
+ "âçàÃÕ¹"
+ "âçáÃÁ"
+ "âè"
+ "âè¹ì"
+ "âõÕ"
+ "âø"
+ "âøÃ"
+ "âÃÁ"
+ "âÃÁѹ"
+ "âÃÁÒà¹ÕÂ"
+ "âÃÂ"
+ "âÃÉ"
+ "âÃËÔµ"
+ "âÃà¹ÕÂÇ"
+ "âÃè"
+ "âÅ¡"
+ "âÅ¡ÇÔ·Ù"
+ "âšѹµÃì"
+ "âÅ¡Ò"
+ "âÅ¡Ò¸Ôº´Õ"
+ "âÅ¡Ò¸ÔäµÂ"
+ "âÅ¡ÒÁÔÊ"
+ "âÅ¡ÒÇÔ¹ÒÈ"
+ "âÅ¡ÔÂÐ"
+ "âÅ¡ÕÂÇѵÃ"
+ "âÅ¡ÕÂì"
+ "âšصøÃÃÁ"
+ "âšصÃÐ"
+ "âŧ"
+ "âŨ¹Ð"
+ "âųÐ"
+ "âÅ´"
+ "âŵÑÊ"
+ "âŹ"
+ "âÅÀ"
+ "âÅÁ"
+ "âÅÁÒ"
+ "âÅËÐ"
+ "âÅËѪ"
+ "âÅËÔµ"
+ "âÅÐ"
+ "âÅàÅ"
+ "âÅè"
+ "âÅè§"
+ "âÅé"
+ "âÅé¹"
+ "âÇ"
+ "âÇÂ"
+ "âÇÂÇÒÂ"
+ "âÇËÒÃ"
+ "âÇè"
+ "âÇè§"
+ "âÇéÂ"
+ "âÇéàÇé"
+ "âÈ¡"
+ "âÈ¡Ò"
+ "âÈ¡Ò´ÙÃ"
+ "âÈ¡ÒÅÑÂ"
+ "âÈ¡Õ"
+ "âÊ"
+ "âʡѹµì"
+ "âʳ"
+ "âʳ±ì"
+ "âÊ´"
+ "âÊ´Ò"
+ "âʴҺѹ"
+ "âʵ"
+ "âÊ·¡"
+ "âÊ·Ã"
+ "âʸ¡"
+ "âʸ¹Ð"
+ "âʹ"
+ "âÊÀ³"
+ "âÊÀÒ"
+ "âÊÀÔ³Õ"
+ "âÊÀÕ"
+ "âÊÁ"
+ "âÊÁ¹ÑÊ"
+ "âÊÁÁ"
+ "âÊÁÂì"
+ "âÊè"
+ "âÊÃè§"
+ "âÊÇÃó"
+ "âÊËØéÂ"
+ "âÊÌÊ"
+ "âÊàÀ³Õ"
+ "âÊâ¤Ã¡"
+ "â˧"
+ "âË´"
+ "â˹"
+ "â˹¡"
+ "â˹è§"
+ "âËÁ"
+ "âËÁ´"
+ "âËÁè§"
+ "âËÂ"
+ "âË¡àË¡"
+ "â˧"
+ "âËÂè§"
+ "âËÃ"
+ "âËçàËç"
+ "âËÃоÒ"
+ "âËÃÒ"
+ "âËÃÒ¨ÒÃÂì"
+ "âËÃÒÈÒʵÃì"
+ "âËÅ"
+ "âËŧâ¨é§"
+ "âËŹ"
+ "âËÅè"
+ "âËÇ"
+ "âËÇ¡àËÇ¡"
+ "âËǧ"
+ "âËÇ´"
+ "âËǵ"
+ "âËÇè"
+ "âËè"
+ "âÍ"
+ "âÍ¡"
+ "âÍ¡ÒÊ"
+ "âÍ¡Ô¹ÒÇÒ"
+ "âͧ¡ÒÃ"
+ "âͧ⢴§"
+ "âͪÐ"
+ "âͪÒ"
+ "âÍ´"
+ "â͵µÑ»»Ð"
+ "â͹"
+ "âͺ"
+ "âÍÀÒ"
+ "âÍÀÒÊ"
+ "âÍÁ"
+ "âÍÂ"
+ "âÍÃÊ"
+ "âÍÅоèÍ"
+ "âÍÅÔÁ»Ô¡"
+ "âÍÇÒ·"
+ "âÍÉ°ÀÑÂ"
+ "âÍÉ°ì"
+ "âÍʶ"
+ "âÍËѧ"
+ "âÍËìÁ"
+ "âÍÌÒÃ"
+ "âÍÌÒÃÔ¡"
+ "âÍÌÒÃÖ¡"
+ "âÍ໡"
+ "âÍàÅÕé§"
+ "âÍàÇÍÃì"
+ "âÍàÍ«ÔÊ"
+ "âÍàÍÊ"
+ "âÍ⫹"
+ "âÍè"
+ "âÍè§"
+ "âÍèÍèÒ"
+ "âÍé"
+ "âÍé¡"
+ "âÍéàÍé"
+ "âÍéâÅÁ"
+ "âÍéâÎ"
+ "âÍê¡"
+ "âÍêÂ"
+ "âÍë"
+ "âÎ"
+ "âΡ"
+ "âÎÁ"
+ "âÎÅìÁ"
+ "âÎʵì"
+ "âÎÊàµÊ"
+ "âÎàµçÅ"
+ "ã¡Åé"
+ "ã¤Ã"
+ "ã¤Ãè"
+ "ã¨"
+ "ãªè"
+ "ãªé"
+ "ã´"
+ "ãµé"
+ "ã¹"
+ "ã¹ËÅǧ"
+ "ãº"
+ "ãºé"
+ "ã½è"
+ "ãÂ"
+ "ãÊ"
+ "ãÊè"
+ "ãË­è"
+ "ãËÁè"
+ "ãËé"
+ "ä¡"
+ "ä¡Ã"
+ "ä¡ÃÅÒÊ"
+ "ä¡ÃÈÃ"
+ "ä¡ÃÊÃ"
+ "ä¡Å"
+ "ä¡Åè"
+ "ä¡Ç"
+ "ä¡è"
+ "ä¡ê´ì"
+ "ä¡ë"
+ "ä¢"
+ "ä¢Çè"
+ "ä¢Çé"
+ "ä¢Ê×Í"
+ "ä¢è"
+ "ä¢è´Ñ¹"
+ "ä¢èÁØ¡"
+ "ä¢é"
+ "ä¤"
+ "ä¤Ãé"
+ "ä¤Å"
+ "ä¤ÅàÍç¹µì"
+ "ä¤Åá͹µì"
+ "ä¤Åé"
+ "ä¤é"
+ "ä§"
+ "ä¨"
+ "䩹"
+ "ä©äÅ"
+ "äª"
+ "äªÂ"
+ "äªâÂ"
+ "ä«"
+ "䫵ì"
+ "䫹ì"
+ "䫺ÕàÃÕÂ"
+ "ä«»ÃÑÊ"
+ "ä«ÂÒä¹´ì"
+ "ä«Ãé"
+ "ä«à¡ÔÅ"
+ "ä«àºÍÃì"
+ "ä«àù"
+ "ä«â¤Å¹"
+ "ä«âÅ"
+ "ä«é"
+ "ä´"
+ "ä´¹ÒâÁ"
+ "ä´¹ÒäÁµì"
+ "ä´ÃàÇÍÃì"
+ "ä´Ãì¿"
+ "ä´ÍÐÅçÍ¡"
+ "ä´ÍÐÅçÍ¡ºçÍ¡«ì"
+ "ä´ÍÒÃÕè"
+ "ä´àá·ÍÃÕ"
+ "ä´â¹àÊÒÃì"
+ "ä´é"
+ "äµ"
+ "äµÃ"
+ "äµÃÁÒÊ"
+ "äµÃèµÃͧ"
+ "äµè"
+ "äµé"
+ "äµé¡ë§"
+ "äµé½Øè¹"
+ "äµéËÇѹ"
+ "äµë"
+ "ä¶"
+ "ä¶Å"
+ "ä¶è"
+ "ä¶é"
+ "ä·"
+ "ä·¡Í"
+ "ä·¿Í´ì"
+ "ä·Â"
+ "ä·ÂÃÑ°"
+ "ä·Ã"
+ "ä·ÃÍ´ì"
+ "ä·à·à¹ÕÂÁ"
+ "ä·é"
+ "ä¹"
+ "ä¹µì¤ÅѺ"
+ "ä¹Å͹"
+ "ä¹Åì"
+ "ä¹âµÃਹ"
+ "亵ì"
+ "äºÍÍÊ"
+ "äºàºÔÅ"
+ "ä»"
+ "ä»ÂÒÅ"
+ "ä»ÃɳÕºÃó"
+ "ä»ÃɳÕºѵÃ"
+ "ä»ÃɳÕÂÀѳ±ì"
+ "ä»ÃɳÕÂÇѵ¶Ø"
+ "ä»ÃɳÕÂÒ¡Ã"
+ "ä»ÃɳÕÂì"
+ "ä»Åè"
+ "ä»è"
+ "ä»ë"
+ "ä¼"
+ "ä¼·"
+ "ä¼è"
+ "ä½"
+ "ä¾"
+ "侨ԵÃ"
+ "ä¾±ÙÃÂì"
+ "侺ÙÅÂì"
+ "ä¾Ã"
+ "ä¾Ã¨ÔµÃ"
+ "ä¾Ã±ÙÃÂì"
+ "ä¾ÃѪ"
+ "ä¾ÃÔ¹"
+ "ä¾ÃÕ"
+ "ä¾Ãè"
+ "ä¾ÅÔ¹"
+ "ä¾Åè"
+ "ä¾ÈÒÅ"
+ "ä¾àÃÒÐ"
+ "ä¾âè¹ì"
+ "ä¾è"
+ "ä¾è»êÍ¡"
+ "ä¿"
+ "ä¿Åì"
+ "ä¿á¹¹«ì"
+ "äÁ¤Ã͹"
+ "äÁµÃÕ"
+ "äÁÂÃÒº"
+ "äÁÅì"
+ "äÁâ¤Ã"
+ "äÁâ¤Ã«Í¿·ì"
+ "äÁâ¤ÃàÇ¿"
+ "äÁâ¤Ã⿹"
+ "äÁè"
+ "äÁé"
+ "äÂ"
+ "äÂè"
+ "äÃ"
+ "äÃè"
+ "äÃé"
+ "äÅÂ"
+ "äÅૹÊì"
+ "äÅè"
+ "äÅèàÅÕèÂ"
+ "äÅé"
+ "äÇ"
+ "äÇ¡Ù³°ì"
+ "äDZÙÃÂì"
+ "äÇ·Âì"
+ "äǹì"
+ "äǾ¨¹ì"
+ "äÇÂҡóì"
+ "äÇÂÒÇѨ¡Ã"
+ "äÇÂÒÇѨÁÑÂ"
+ "äÇÃÑÊ"
+ "äÇâÍÅÔ¹"
+ "äÇé"
+ "äÈÅ"
+ "äÊ"
+ "äÊÂ"
+ "äÊÂÒ"
+ "äÊÃé"
+ "äÊÇ"
+ "äÊé"
+ "äË"
+ "ä˹"
+ "äËÁ"
+ "äËÁé"
+ "äËÃè"
+ "äËÅ"
+ "äËÅè"
+ "äËÇ"
+ "äËÇé"
+ "äËËÅÓ"
+ "äËè"
+ "äËé"
+ "äÍ"
+ "äͤ͹"
+ "äÍ·Õ"
+ "äͺÕàÍçÁ"
+ "äÍÂÃÒ"
+ "äÍÂàÃÈ"
+ "äÍÃÒÇѳ"
+ "äÍÃìᏴì"
+ "äÍÈ¡ÃÕÁ"
+ "äÍÈÇÃÃÂì"
+ "äÍÈÙÃÂì"
+ "äÍÍ͹"
+ "äÍâ«â·»"
+ "äÍâÍ´Õ¹"
+ "äÍé"
+ "äδÃÒ"
+ "äÎâ¡ÃÁÔàµÍÃì"
+ "äÎâ´Ã¤ÒÃìºÍ¹"
+ "äÎâÅ"
+ )))
+ (setq thai-word-table (list 'thai-words))
+ (while l
+ (set-nested-alist (car l) 1 thai-word-table)
+ (setq l (cdr l))))
+
+
+(defun thai-update-word-table (file &optional append)
+ "Update Thai word table by replacing the current word list with
+FILE. If called with a prefix argument, FILE is appended instead to
+the current word list."
+ (interactive "FThai word table file: \nP")
+ (let ((buf (generate-new-buffer "*thai-work*"))
+ (coding-system-for-read 'thai-tis620)
+ (table (if append thai-word-table (list 'thai-words))))
+ (unwind-protect
+ (save-excursion
+ (set-buffer buf)
+ (insert-file-contents file)
+ (goto-char (point-min))
+ (while (re-search-forward "\\ct+" nil t)
+ (set-nested-alist (match-string 0) 1 table)))
+ (kill-buffer buf))
+ (setq thai-word-table table)))
+
+
+;; Two special Thai characters regarded as suffix of words.
+
+(defconst thai-MaiYaMok (make-char 'thai-tis620 ?\xE6))
+(defconst thai-PaiYanNoi (make-char 'thai-tis620 ?\xCF))
+
+
+;; Find Thai words starting at POS and return a list of positions of
+;; the Thai word ends. It doesn't move point. LIMIT limits the
+;; maximum position. IGNORE is a list of positions to ignore. It is
+;; assumed that all following characters to LIMIT are Thai. If the
+;; following char is not Thai (i.e., POS is equal to LIMIT), return t.
+;;
+;; Note that the longest word position comes first.
+
+(defun thai-find-word-ends (pos limit &optional ignore)
+ (if (>= pos limit)
+ t
+ (let* ((char (char-after pos))
+ (this (cdr (assq char (cdr thai-word-table))))
+ category-set
+ positions)
+ ;; Look up the following character sequence in `thai-word-table'
+ ;; character by character.
+ (while this
+ (setq pos (1+ pos)
+ char (char-after pos)
+ category-set (char-category-set char))
+ ;; If the current sequence is recorded in `thai-word-table'
+ ;; (i.e. (car THIS) is 1) and the following Thai character is
+ ;; not an upper-vowel, lower-vowel, or tone-mark, we have
+ ;; found a possible word ending position.
+ (if (and (eq (car this) 1)
+ (not (or (aref category-set ?2)
+ (aref category-set ?3)
+ (aref category-set ?4))))
+ (progn
+ ;; Skip possible Thai suffices.
+ (while (or (eq char thai-MaiYaMok) (eq char thai-PaiYanNoi))
+ (setq pos (1+ pos)
+ char (char-after pos)))
+ ;; Skip character positions in IGNORE list.
+ (or (memq pos ignore)
+ (setq positions (cons pos positions)))))
+ ;; Set up next loop.
+ (setq this (and (< pos limit) (cdr (assq char this)))))
+ positions)))
+
+
+;; Move point forward to the end of Thai word which follows point and
+;; update VEC. VEC is a vector of three elements used to cache word
+;; end positions. The Nth element, if non-nil, is a list of end
+;; points of the Nth word, or t indicating that there is no Thai
+;; character. LIMIT limits the point movement.
+
+(defun thai-forward-word-update-info (vec limit)
+ (let ((pos (point))
+ v0 v1 v2 v3
+ second-best
+ tried
+ positions)
+ (if
+ ;; If four succeeding Thai words are found, throw t, otherwise
+ ;; throw nil.
+ (catch 'tag
+ ;; Start with first vector element.
+ (setq v0 (aref vec 0))
+ (unless v0
+ ;; Update VEC if V0 is empty.
+ (setq v0 (thai-find-word-ends pos limit))
+ (aset vec 0 v0)
+ (aset vec 1 nil))
+ ;; In case we haven't found any wordbreaks resp. point has
+ ;; reached LIMIT, exit the catch body.
+ (if (symbolp v0) ; i.e. nil or t?
+ (throw 'tag nil))
+ ;; OK, V0 holds possible word ends for the current position.
+ ;; We save V0 for later reference.
+ (setq tried v0)
+ (setq v1 (aref vec 1))
+ ;; Now we try all end word positions to find the next word.
+ (while v0
+ (setq pos (car v0))
+ (unless v1
+ ;; Update VEC if V1 is empty, ignoring positions already
+ ;; found -- for Thai, we need the longest match, so if
+ ;; we have
+ ;;
+ ;; start(long-word) = start(short-word1)
+ ;; end(short-word1) = start(short-word2)
+ ;; end(short-word2) = end(long-word)
+ ;;
+ ;; only long-word is used.
+ (setq v1 (thai-find-word-ends pos limit tried))
+ (aset vec 1 v1)
+ (aset vec 2 nil))
+ ;; If point has reached LIMIT, exit the catch body.
+ (if (eq v1 t)
+ (throw 'tag t))
+ ;; Save SECOND-BEST, if this hasn't been done already.
+ ;; The `second best' solution is the end position of the
+ ;; longest first word followed by the longest second word.
+ (or second-best
+ (not v1)
+ (setq second-best (cons v0 v1)))
+ ;; Update the already tried end word positions.
+ (setq tried (append tried v1))
+ ;; Now repeat the whole process to find a third word.
+ (when v1
+ (setq v2 (aref vec 2))
+ (while v1
+ (setq pos (car v1))
+ (unless v2
+ (setq v2 (thai-find-word-ends pos limit tried))
+ (aset vec 2 v2))
+ (if (eq v2 t)
+ (throw 'tag t))
+ (setq tried (append tried v2))
+ ;; And the same for a fourth word.
+ (while v2
+ (setq pos (car v2))
+ (setq v3 (thai-find-word-ends pos limit tried))
+ (if v3
+ (throw 'tag t))
+ (setq v2 (cdr v2)))
+ (setq v1 (cdr v1))))
+ (setq v0 (cdr v0)))
+ ;; No success.
+ nil)
+ (progn
+ ;; We found four succeeding Thai words (or LIMIT has been
+ ;; reached). Move to the end of the first word.
+ (goto-char (car v0))
+ ;; Update VEC for the next function call. If no larger word
+ ;; positions have been found, set the corresponding vector
+ ;; element to nil.
+ (if (and (consp v1) (< (car v1) (car (aref vec 1))))
+ (aset vec 0 nil)
+ (aset vec 0 v1)
+ (if (and (consp v2) (< (car v2) (car (aref vec 2))))
+ (aset vec 1 nil)
+ (aset vec 1 v2)
+ (aset vec 2 v3)))) ; exit function successfully
+
+ ;; We didn't find four consecutive words. If we have found a
+ ;; `second best' solution and the length of those two words is
+ ;; longer than the longest word we can see at the current point,
+ ;; adopt the second best solution. This decision is based on
+ ;; heuristic tests.
+ (if (and second-best
+ (< (car (aref vec 0)) (car (cdr second-best))))
+ (progn
+ (goto-char (car (car second-best)))
+ (aset vec 0 (cdr second-best)))
+ ;; We finally failed to find a word break. For Thai, the best
+ ;; solution is to extend the first longest word so that the
+ ;; end point starts a second word.
+ (setq pos (or (car (aref vec 0)) pos))
+ (while (and (< pos limit)
+ (not (setq positions (thai-find-word-ends pos limit))))
+ (setq pos (1+ pos)))
+ (goto-char pos)
+ (aset vec 0 positions))
+ (aset vec 1 nil)
+ nil)))
+
+
+;; Return a list of Thai word boundary positions after the current
+;; point. LIMIT, if non-nil, limits the region to check.
+
+(defun thai-find-word-boundaries (&optional limit)
+ (or limit
+ (setq limit (point-max)))
+ (save-excursion
+ (let ((vec (make-vector 3 nil))
+ (boundaries nil)
+ this-limit)
+ ;; Loop over all (consecutive) Thai regions by using the
+ ;; character property `t' until LIMIT is reached.
+ (while (and (< (point) limit)
+ (re-search-forward "\\ct+" nil t))
+ (setq this-limit (point))
+ (goto-char (match-beginning 0))
+ (fillarray vec nil)
+ ;; Check the first word, initializing VEC.
+ (thai-forward-word-update-info vec this-limit)
+ ;; Then loop over the remaining words in the current Thai
+ ;; region, collecting the boundaries.
+ (while (< (point) this-limit)
+ (setq boundaries (cons (point) boundaries))
+ (thai-forward-word-update-info vec this-limit)))
+ boundaries)))
+
+
+(defun thai-break-words (separator &optional limit)
+ "Break Thai words by inserting a separator string at word boundaries."
+ (interactive "sSeparator: ")
+ (save-excursion
+ (let ((boundaries (thai-find-word-boundaries limit)))
+ (while boundaries
+ (goto-char (car boundaries))
+ (insert separator)
+ (setq boundaries (cdr boundaries))))))
+
+
+(defun thai-forward-word (count)
+ "Move point forward COUNT words considering Thai word boundaries.
+If COUNT is negative, move point backward (- COUNT) words."
+ (interactive "p")
+ (if (> count 0)
+ (while (> count 0)
+ (skip-syntax-forward "^w")
+ (if (looking-at "\\ct+")
+ ;; We have reached a Thai region, so we must do something
+ ;; special instead of using forward-word.
+ (let ((start (point))
+ (limit (match-end 0))
+ boundaries
+ tail)
+ ;; If thai-forward-word has been called within a Thai
+ ;; region, we must go back until the Thai region starts
+ ;; to do the contextual analysis for finding word
+ ;; breaks.
+ (while (aref (char-category-set (preceding-char)) ?t)
+ (forward-char -1))
+ ;; OK, we ask for the list of word boundaries in
+ ;; reversed order.
+ (setq boundaries (nreverse (thai-find-word-boundaries limit)))
+ ;; Now we search for the next boundary after START.
+ (while (and boundaries (<= (car boundaries) start))
+ (setq boundaries (cdr boundaries)))
+ ;; Adjust loop for next while loop.
+ (setq count (1- count))
+ ;; Now we skip Thai words until the BOUNDARIES list is
+ ;; empty or count-1 words have been passed.
+ (if (not boundaries)
+ (goto-char limit)
+ (while (and (> count 0)
+ boundaries)
+ (setq boundaries (cdr boundaries)
+ count (1- count)))
+ ;; If BOUNDARIES is empty, the word counter is not
+ ;; zero yet (remember that we have decreased COUNT by
+ ;; one), so we go to LIMIT. Otherwise go to next
+ ;; boundary.
+ (if boundaries
+ (goto-char (car boundaries))
+ (goto-char limit))))
+ ;; No Thai region.
+ (forward-word 1)
+ (setq count (1- count))))
+ ;; The symmetrical action for negative values.
+ (if (< count 0)
+ (while (< count 0)
+ (skip-syntax-backward "^w")
+ (if (aref (char-category-set (preceding-char)) ?t)
+ (let ((start (point))
+ (limit (if (looking-at "\\ct+") (match-end 0)
+ (point)))
+ boundaries)
+ (forward-char -1)
+ (while (aref (char-category-set (preceding-char)) ?t)
+ (forward-char -1))
+ (setq boundaries (thai-find-word-boundaries limit))
+ (while (and boundaries (>= (car boundaries) start))
+ (setq boundaries (cdr boundaries)))
+ (setq count (1+ count))
+ (if boundaries
+ (progn
+ (while (and (< count 0) boundaries)
+ (setq boundaries (cdr boundaries)
+ count (1+ count)))
+ (if boundaries
+ (goto-char (car boundaries))))))
+ (forward-word -1)
+ (setq count (1+ count)))))))
+
+
+(defun thai-backward-word (count)
+ "Move point backward COUNT words considering Thai word boundaries.
+If COUNT is negative, move point forward (- COUNT) words."
+ (interactive "p")
+ (thai-forward-word (- count)))
+
+
+(provide 'thai-word)
+
+
+;; Local Variables:
+;; coding: tis-620
+;; End:
+
+;; end of thai-word.el
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/lisp/mule-2.3/cjk-enc.el b/language/chinese/CJK/cjk-4.8.4/utils/lisp/mule-2.3/cjk-enc.el
new file mode 100644
index 0000000000..d93d53e5ca
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/lisp/mule-2.3/cjk-enc.el
@@ -0,0 +1,625 @@
+;;; cjk-enc.el --- provide a coding system for LaTeX2e CJK package
+
+;; Copyright (C) 1996, 1998 Electrotechnical Laboratory, JAPAN.
+
+;; Author: Kenichi HANDA <handa@etl.go.jp>
+;; Werner LEMBERG <wl@gnu.org>
+
+;; Keywords: CJK package, LaTeX2e, mule
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 2, or (at your option)
+;; any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs; see the file COPYING. If not, write to
+;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+
+;;
+;; CJK Version 4.8.4 (18-Apr-2015)
+;;
+
+;;; Code
+
+;; The following tables map from Mule's internal encoding to LaTeX2e
+;; macros. Note that not all macros defined here really do exist. See
+;; MULEenc.sty and cjk-enc.txt for further details.
+;;
+;; The active TeX character 0x80 is defined as a multiplex command which
+;; executes its first argument. To make the macro expansion robust
+;; against \uppercase and \lowercase, numbers are used as parameters which
+;; index the various commands.
+;;
+;; 0xFF will be used as a parameter delimiting character.
+
+(defconst cjk-latin-1
+ [;0xa0
+ "99\177" "1\177" "2\177" "3\177"
+ "4\177" "5\177" "6\177" "7\177"
+ "8\177\\ " "9\177" "10\177" "11\177"
+ "12\177" "0\177-{}" "14\177" "15\177\\ "
+
+ ; 0xb0
+ "16\177" "17\177" "18\177" "19\177"
+ "20\177\\ " "21\177" "22\177" "23\177"
+ "24\177\\ " "25\177" "26\177" "27\177"
+ "28\177" "29\177" "30\177" "31\177"
+
+ ; 0xc0
+ "32\177A" "20\177A" "33\177A" "34\177A"
+ "8\177A" "0\177\\AA" "0\177\\AE" "24\177C"
+ "32\177E" "20\177E" "33\177E" "8\177E"
+ "32\177I" "20\177I" "33\177I" "8\177I"
+
+ ; 0xd0
+ "0\177\\DJ" "34\177N" "32\177O" "20\177O"
+ "33\177O" "34\177O" "8\177O" "38\177"
+ "0\177\\O" "32\177U" "20\177U" "33\177U"
+ "8\177U" "20\177Y" "0\177\\TH" "0\177\\ss"
+
+ ; 0xe0
+ "32\177a" "20\177a" "33\177a" "34\177a"
+ "8\177a" "0\177\\aa" "0\177\\ae" "24\177c"
+ "32\177e" "20\177e" "33\177e" "8\177e"
+ "32\177\\i" "20\177\\i" "33\177\\i" "8\177\\i"
+
+ ; 0xf0
+ "0\177\\dj" "34\177n" "32\177o" "20\177o"
+ "33\177o" "34\177o" "8\177o" "45\177"
+ "0\177\\o" "32\177u" "20\177u" "33\177u"
+ "8\177u" "20\177y" "0\177\\th" "8\177y"
+ ])
+
+(defconst cjk-latin-2
+ [; 0xa0
+ "99\177" "48\177A" "49\177\\ " "0\177\\L"
+ "4\177" "51\177L" "20\177S" "7\177"
+ "8\177\\ " "51\177S" "24\177S" "51\177T"
+ "20\177Z" "0\177-{}" "51\177Z" "52\177Z"
+
+ ; 0xb0
+ "16\177" "48\177a" "48\177\\ " "0\177\\l"
+ "20\177\\ " "51\177l" "20\177s" "51\177\\ "
+ "24\177\\ " "51\177s" "24\177s" "51\177t"
+ "20\177z" "55\177\\ " "51\177z" "52\177z"
+
+ ; 0xc0
+ "20\177R" "20\177A" "33\177A" "49\177A"
+ "8\177A" "20\177L" "20\177C" "24\177C"
+ "51\177C" "20\177E" "48\177E" "8\177E"
+ "51\177E" "20\177I" "33\177I" "51\177D"
+
+ ; 0xd0
+ "0\177\\DJ" "20\177N" "51\177N" "20\177O"
+ "33\177O" "55\177O" "8\177O" "38\177"
+ "51\177R" "53\177U" "20\177U" "55\177U"
+ "8\177U" "20\177Y" "24\177T" "0\177\\ss"
+
+ ; 0xe0
+ "20\177r" "20\177a" "33\177a" "49\177a"
+ "8\177a" "20\177l" "20\177c" "24\177c"
+ "51\177c" "20\177e" "48\177e" "8\177e"
+ "51\177e" "20\177\\i" "33\177\\i" "51\177d"
+
+ ; 0xf0
+ "0\177\\dj" "20\177n" "51\177n" "20\177o"
+ "33\177o" "55\177o" "8\177o" "45\177"
+ "51\177r" "53\177u" "20\177u" "55\177u"
+ "8\177u" "20\177y" "24\177t" "52\177\\ "
+ ])
+
+(defconst cjk-latin-3
+ [; 0xa0
+ "99\177" "0\177\\TEXTMALTESEH" "49\177\\ " "3\177"
+ "4\177" "" "33\177H" "7\177"
+ "8\177\\ " "52\177I" "24\177S" "49\177G"
+ "33\177J" "0\177-{}" "" "52\177Z"
+
+ ; 0xb0
+ "16\177" "0\177\\textmalteseh" "18\177" "19\177"
+ "20\177\\ " "21\177" "33\177h" "23\177"
+ "24\177\\ " "0\177\\i" "24\177s" "49\177g"
+ "33\177\\j" "29\177" "" "52\177z"
+
+ ; 0xc0
+ "32\177A" "20\177A" "33\177A" ""
+ "8\177A" "52\177C" "33\177C" "24\177C"
+ "32\177E" "20\177E" "33\177E" "8\177E"
+ "32\177I" "20\177I" "33\177I" "8\177I"
+
+ ; 0xd0
+ "" "34\177N" "32\177O" "20\177O"
+ "33\177O" "52\177G" "8\177O" "38\177"
+ "33\177G" "32\177U" "20\177U" "33\177U"
+ "8\177U" "49\177U" "33\177S" "0\177\\ss"
+
+ ; 0xe0
+ "32\177a" "20\177a" "33\177a" ""
+ "8\177a" "52\177c" "33\177c" "24\177c"
+ "32\177e" "20\177e" "33\177e" "8\177e"
+ "32\177\\i" "20\177\\i" "33\177\\i" "8\177\\i"
+
+ ; 0xf0
+ "" "34\177n" "32\177o" "20\177o"
+ "33\177o" "52\177g" "8\177o" "45\177"
+ "33\177g" "32\177u" "20\177u" "33\177u"
+ "8\177u" "49\177u" "33\177s" "52\177\\ "
+ ])
+
+(defconst cjk-latin-4
+ [; 0xa0
+ "99\177" "48\177A" "59\177" "24\177R"
+ "4\177" "34\177I" "24\177L" "7\177"
+ "8\177\\ " "51\177S" "15\177E" "24\177G"
+ "0\177\\TEXTTSTROKE" "0\177-{}" "51\177Z" "15\177\\ "
+
+ ; 0xb0
+ "16\177" "48\177a" "48\177\\ " "24\177r"
+ "20\177\\ " "34\177\\i" "24\177l" "51\177\\ "
+ "24\177\\ " "51\177s" "15\177e" "24\177g"
+ "0\177\\texttstroke" "0\177\\NG" "51\177z" "0\177\\ng"
+
+ ; 0xc0
+ "15\177A" "20\177A" "33\177A" "34\177A"
+ "8\177A" "0\177\\AA" "0\177\\AE" "48\177I"
+ "51\177C" "20\177E" "48\177E" "8\177E"
+ "52\177E" "20\177I" "33\177I" "15\177I"
+
+ ; 0xd0
+ "0\177\\DJ" "24\177N" "15\177O" "24\177K"
+ "33\177O" "34\177O" "8\177O" "38\177"
+ "0\177\\O" "48\177U" "20\177U" "33\177U"
+ "8\177U" "34\177U" "15\177U" "0\177\\ss"
+
+ ; 0xe0
+ "15\177a" "20\177a" "33\177a" "34\177a"
+ "8\177a" "0\177\\aa" "0\177\\ae" "48\177i"
+ "51\177c" "20\177e" "48\177e" "8\177e"
+ "52\177e" "20\177\\i" "33\177\\i" "15\177\\i"
+
+ ; 0xf0
+ "0\177\\dj" "24\177n" "15\177o" "24\177k"
+ "33\177o" "34\177o" "8\177o" "45\177"
+ "0\177\\o" "48\177u" "20\177u" "33\177u"
+ "8\177u" "34\177u" "15\177u" "52\177\\ "
+ ])
+
+(defconst cjk-latin-5 ; ISO 8859-9
+ [; 0xa0
+ "99\177" "1\177" "2\177" "3\177"
+ "4\177" "5\177" "6\177" "7\177"
+ "8\177\\ " "9\177" "10\177" "11\177"
+ "12\177" "0\177-{}" "14\177" "15\177\\ "
+
+ ; 0xb0
+ "16\177" "17\177" "18\177" "19\177"
+ "20\177\\ " "21\177" "22\177" "23\177"
+ "24\177\\ " "25\177" "26\177" "27\177"
+ "28\177" "29\177" "30\177" "31\177"
+
+ ; 0xc0
+ "32\177A" "20\177A" "33\177A" "34\177A"
+ "8\177A" "0\177\\AA" "0\177\\AE" "24\177C"
+ "32\177E" "20\177E" "33\177E" "8\177E"
+ "32\177I" "20\177I" "33\177I" "8\177I"
+
+ ; 0xd0
+ "49\177G" "34\177N" "32\177O" "20\177O"
+ "33\177O" "34\177O" "8\177O" "38\177"
+ "0\177\\O" "32\177U" "20\177U" "33\177U"
+ "8\177U" "52\177I" "24\177S" "0\177\\ss"
+
+ ; 0xe0
+ "32\177a" "20\177a" "33\177a" "34\177a"
+ "8\177a" "0\177\\aa" "0\177\\ae" "24\177c"
+ "32\177e" "20\177e" "33\177e" "8\177e"
+ "32\177\\i" "20\177\\i" "33\177\\i" "8\177\\i"
+
+ ; 0xf0
+ "49\177g" "34\177n" "32\177o" "20\177o"
+ "33\177o" "34\177o" "8\177o" "45\177"
+ "0\177\\o" "32\177u" "20\177u" "33\177u"
+ "8\177u" "0\177\\i" "24\177s" "8\177y"
+ ])
+
+(defconst cjk-latin-jisx ; JIS X 0201 lower half
+ [; 0xa0
+ "" "0\177!" "37\177" "0\177\\#"
+ "39\177" "0\177\\%" "0\177\\&" "40\177"
+ "0\177(" "0\177)" "0\177*" "0\177+"
+ "0\177," "0\177-" "0\177." "0\177/"
+
+ ; 0xb0
+ "0\1770" "0\1771" "0\1772" "0\1773"
+ "0\1774" "0\1775" "0\1776" "0\1777"
+ "0\1778" "0\1779" "0\177:" "0\177;"
+ "41\177" "0\177=" "42\177" "0\177?"
+
+ ; 0xc0
+ "36\177" "0\177A" "0\177B" "0\177C"
+ "0\177D" "0\177E" "0\177F" "0\177G"
+ "0\177H" "0\177I" "0\177J" "0\177K"
+ "0\177L" "0\177M" "0\177N" "0\177O"
+
+ ; 0xd0
+ "0\177P" "0\177Q" "0\177R" "0\177S"
+ "0\177T" "0\177U" "0\177V" "0\177W"
+ "0\177X" "0\177Y" "0\177Z" "0\177["
+ "5\177" "0\177]" "43\177" "44\177"
+
+ ; 0xe0
+ "46\177" "0\177a" "0\177b" "0\177c"
+ "0\177d" "0\177e" "0\177f" "0\177g"
+ "0\177h" "0\177i" "0\177j" "0\177k"
+ "0\177l" "0\177m" "0\177n" "0\177o"
+
+ ; 0xf0
+ "0\177p" "0\177q" "0\177r" "0\177s"
+ "0\177t" "0\177u" "0\177v" "0\177w"
+ "0\177x" "0\177y" "0\177z" "47\177"
+ "50\177" "54\177" "56\177" ""
+ ])
+
+(defconst cjk-cyrillic ; ISO 8859-5
+ [; 0xa0
+ "99\177" "0\177\\CYRYO" "0\177\\CYRDJE" "20\177\\CYRG"
+ "0\177\\CYRIE" "0\177\\CYRDZE" "0\177\\CYRII" "0\177\\CYRYI"
+ "0\177\\CYRJE" "0\177\\CYRLJE" "0\177\\CYRNJE" "0\177\\CYRTSHE"
+ "20\177\\CYRK" "0\177-{}" "0\177\\CYRUSHRT" "0\177\\CYRDZHE"
+
+ ; 0xb0
+ "0\177\\CYRA" "0\177\\CYRB" "0\177\\CYRV" "0\177\\CYRG"
+ "0\177\\CYRD" "0\177\\CYRE" "0\177\\CYRZH" "0\177\\CYRZ"
+ "0\177\\CYRI" "0\177\\CYRISHRT" "0\177\\CYRK" "0\177\\CYRL"
+ "0\177\\CYRM" "0\177\\CYRN" "0\177\\CYRO" "0\177\\CYRP"
+
+ ; 0xc0
+ "0\177\\CYRR" "0\177\\CYRS" "0\177\\CYRT" "0\177\\CYRU"
+ "0\177\\CYRF" "0\177\\CYRH" "0\177\\CYRC" "0\177\\CYRCH"
+ "0\177\\CYRSH" "0\177\\CYRSHCH" "0\177\\CYRHRDSN" "0\177\\CYRERY"
+ "0\177\\CYRSFTSN" "0\177\\CYREREV" "0\177\\CYRYU" "0\177\\CYRYA"
+
+ ; 0xd0
+ "0\177\\cyra" "0\177\\cyrb" "0\177\\cyrv" "0\177\\cyrg"
+ "0\177\\cyrd" "0\177\\cyre" "0\177\\cyrzh" "0\177\\cyrz"
+ "0\177\\cyri" "0\177\\cyrishrt" "0\177\\cyrk" "0\177\\cyrl"
+ "0\177\\cyrm" "0\177\\cyrn" "0\177\\cyro" "0\177\\cyrp"
+
+ ; 0xe0
+ "0\177\\cyrr" "0\177\\cyrs" "0\177\\cyrt" "0\177\\cyru"
+ "0\177\\cyrf" "0\177\\cyrh" "0\177\\cyrc" "0\177\\cyrch"
+ "0\177\\cyrsh" "0\177\\cyrshch" "0\177\\cyrhrdsn" "0\177\\cyrery"
+ "0\177\\cyrsftsn" "0\177\\cyrerev" "0\177\\cyryu" "0\177\\cyrya"
+
+ ; 0xf0
+ "35\177" "0\177\\cyryo" "0\177\\cyrdje" "20\177\\cyrg"
+ "0\177\\cyrie" "0\177\\cyrdze" "0\177\\cyrii" "0\177\\cyryi"
+ "0\177\\cyrje" "0\177\\cyrlje" "0\177\\cyrnje" "0\177\\cyrtshe"
+ "20\177\\cyrk" "7\177" "0\177\\cyrushrt" "0\177\\cyrdzhe"
+ ])
+
+(defconst cjk-greek ; ISO 8859-7
+ [;0xa0
+ "99\177" "0\177<{}" "0\177>{}" "3\177"
+ "" "" "6\177" "7\177"
+ "8\177\\ " "9\177" "" "0\177(("
+ "12\177" "0\177-{}" "" "0\177---"
+
+ ; 0xb0
+ "16\177" "17\177" "18\177" "19\177"
+ "0\177'{}" "0\177\"'{}" "0\177'A" "0\177;"
+ "0\177'E" "0\177'H" "0\177'I" "0\177))"
+ "0\177'O" "29\177" "0\177'U" "0\177'W"
+
+ ; 0xc0
+ "0\177\"'i" "0\177A" "0\177B" "0\177G"
+ "0\177D" "0\177E" "0\177Z" "0\177H"
+ "0\177J" "0\177I" "0\177K" "0\177L"
+ "0\177M" "0\177N" "0\177X" "0\177O"
+
+ ; 0xd0
+ "0\177P" "0\177R" "" "0\177S"
+ "0\177T" "0\177U" "0\177F" "0\177Q"
+ "0\177Y" "0\177W" "0\177\"I" "0\177\"U"
+ "0\177'a" "0\177'e" "0\177'h" "0\177'i"
+
+ ; 0xe0
+ "0\177\"'u" "0\177a" "0\177b" "0\177g"
+ "0\177d" "0\177e" "0\177z" "0\177h"
+ "0\177j" "0\177i" "0\177k" "0\177l"
+ "0\177m" "0\177n" "0\177x" "0\177o"
+
+ ; 0xf0
+ "0\177p" "0\177r" "0\177c" "0\177s"
+ "0\177t" "0\177u" "0\177f" "0\177q"
+ "0\177y" "0\177w" "0\177\"i" "0\177\"u"
+ "0\177'o" "0\177'u" "0\177'w" ""
+ ])
+
+(defconst cjk-viscii-lower
+ [; 0xA0
+ "" "20\177\\abreve" "32\177\\abreve" "71\177\\abreve"
+ "20\177\\acircumflex" "32\177\\acircumflex" "73\177\\acircumflex" "71\177\\acircumflex"
+ "34\177e" "71\177e" "20\177\\ecircumflex" "32\177\\ecircumflex"
+ "73\177\\ecircumflex" "34\177\\ecircumflex" "71\177\\ecircumflex" "20\177\\ocircumflex"
+
+ ; 0xB0
+ "32\177\\ocircumflex" "73\177\\ocircumflex" "34\177\\ocircumflex" ""
+ "" "71\177\\ocircumflex" "32\177\\ohorn" "73\177\\ohorn"
+ "71\177i" "" "" ""
+ "" "0\177\\ohorn" "20\177\\ohorn" ""
+
+ ; 0xC0
+ "" "" "" ""
+ "" "" "73\177\\abreve" "34\177\\abreve"
+ "" "" "" ""
+ "" "" "" "32\177y"
+
+ ; 0xD0
+ "" "20\177\\uhorn" "" ""
+ "" "71\177a" "73\177y" "32\177\\uhorn"
+ "73\177\\uhorn" "" "" "34\177y"
+ "71\177y" "" "34\177\\ohorn" "0\177\\uhorn"
+
+ ; 0xE0
+ "32\177a" "20\177a" "0\177\\acircumflex" "34\177a"
+ "73\177a" "0\177\\abreve" "34\177\\uhorn" "34\177\\acircumflex"
+ "32\177e" "20\177e" "0\177\\ecircumflex" "73\177e"
+ "32\177i" "20\177i" "34\177i" "73\177i"
+
+ ; 0xF0
+ "0\177\\dj" "71\177\\uhorn" "32\177o" "20\177o"
+ "0\177\\ocircumflex" "34\177o" "73\177o" "71\177o"
+ "71\177u" "32\177u" "20\177u" "34\177u"
+ "73\177u" "20\177y" "71\177\\ohorn" ""
+ ])
+
+(defconst cjk-viscii-upper
+ [; 0xA0
+ "" "20\177\\ABREVE" "32\177\\ABREVE" "71\177\\ABREVE"
+ "20\177\\ACIRCUMFLEX" "32\177\\ACIRCUMFLEX" "73\177\\ACIRCUMFLEX" "71\177\\ACIRCUMFLEX"
+ "34\177E" "71\177E" "20\177\\ECIRCUMFLEX" "32\177\\ECIRCUMFLEX"
+ "73\177\\ECIRCUMFLEX" "34\177\\ECIRCUMFLEX" "71\177\\ECIRCUMFLEX" "20\177\\OCIRCUMFLEX"
+
+ ; 0xB0
+ "32\177\\OCIRCUMFLEX" "73\177\\OCIRCUMFLEX" "34\177\\OCIRCUMFLEX" ""
+ "" "71\177\\OCIRCUMFLEX" "32\177\\OHORN" "73\177\\OHORN"
+ "71\177I" "" "" ""
+ "" "0\177\\OHORN" "20\177\\OHORN" ""
+
+ ; 0xC0
+ "" "" "" ""
+ "" "" "73\177\\ABREVE" "34\177\\ABREVE"
+ "" "" "" ""
+ "" "" "" "32\177Y"
+
+ ; 0xD0
+ "" "20\177\\UHORN" "" ""
+ "" "71\177A" "73\177Y" "32\177\\UHORN"
+ "73\177\\UHORN" "" "" "34\177Y"
+ "71\177Y" "" "34\177\\OHORN" "0\177\\UHORN"
+
+ ; 0xE0
+ "32\177A" "20\177A" "0\177\\ACIRCUMFLEX" "34\177A"
+ "73\177A" "0\177\\ABREVE" "34\177\\UHORN" "34\177\\ACIRCUMFLEX"
+ "32\177E" "20\177E" "0\177\\ECIRCUMFLEX" "73\177E"
+ "32\177I" "20\177I" "34\177I" "73\177I"
+
+ ; 0xF0
+ "0\177\\DJ" "71\177\\UHORN" "32\177O" "20\177O"
+ "0\177\\OCIRCUMFLEX" "34\177O" "73\177O" "71\177O"
+ "71\177U" "32\177U" "20\177U" "34\177U"
+ "73\177U" "20\177Y" "71\177\\OHORN" ""
+ ])
+
+
+;; The following encodings will be selected (if they occur in the input
+;; buffer) at the very beginning of the output buffer to load the
+;; corresponding CJK macros.
+(defconst cjk-enc-table
+ (let ((vec (make-vector 256 nil)))
+ (aset vec lc-cn "GB")
+ (aset vec lc-kana "SJIS")
+ (aset vec lc-jp "JIS")
+ (aset vec lc-jp2 "JIS2")
+ (aset vec lc-kr "KS")
+ (aset vec lc-big5-1 "Bg5")
+ (aset vec lc-big5-2 "Bg5")
+ (aset vec lc-cns1 "CNS1")
+ (aset vec lc-cns2 "CNS2")
+ (aset vec lc-cns3 "CNS3")
+ (aset vec lc-cns4 "CNS4")
+ (aset vec lc-cns5 "CNS5")
+ (aset vec lc-cns6 "CNS6")
+ (aset vec lc-cns7 "CNS7")
+ vec))
+
+(defconst cjk-space "\17764\177\177")
+(defconst cjk-nospace "\17765\177\177")
+
+;; here we have the format specification table which defines what to do
+;; for each encoding.
+(defconst cjk-format-spec-table
+ (let ((vec (make-vector 256 nil)))
+ ;; Element is a vector VEC. Each character is formatted as:
+ ;; (format "\177%s\177" (aref VEC (- char-code 160)))
+ (aset vec lc-ltn1 cjk-latin-1)
+ (aset vec lc-ltn2 cjk-latin-2)
+ (aset vec lc-ltn3 cjk-latin-3)
+ (aset vec lc-ltn4 cjk-latin-4)
+ (aset vec lc-ltn5 cjk-latin-5)
+ (aset vec lc-roman cjk-latin-jisx)
+ ;; T2A encoding is used for Cyrillic letters. You must explicitly
+ ;; switch between T2 and T1/OT1 encoding.
+ (aset vec lc-crl cjk-cyrillic)
+ ;; LGR encoding (resp. its ligatures) is used for Greek letters. You
+ ;; must explicitly switch between LGR and T1/OT1 encoding (using
+ ;; e.g. Babel's `greek' option).
+ (aset vec lc-grk cjk-greek)
+ ;; for Vietnamese a Vietnamese TeX-font has to be used which contains
+ ;; ASCII characters too! You must explicitly switch between Vietnamese
+ ;; T5 and T1/OT1 encoding.
+ (aset vec lc-vn-1 cjk-viscii-lower)
+ (aset vec lc-vn-2 cjk-viscii-upper)
+
+ ;; Element is a cons of header HEAD and formatter FORMAT. HEAD is
+ ;; printed first, then each character is formatted as:
+ ;; (format FORMAT char-code-1 char-code-2)
+ (aset vec lc-kana '("\17770\177\177" . "\177%c\177\177"))
+ (aset vec lc-jp '("\17766\177\177" . "\177%c\177%d\177"))
+ (aset vec lc-cn '("\17767\177\177" . "\177%c\177%d\177"))
+ (aset vec lc-big5-1 '("\17768\177\177" . "\177%c\177%d\177"))
+ (aset vec lc-big5-2 '("\17768\177\177" . "\177%c\177%d\177"))
+ (aset vec lc-kr '("\17769\177\177" . "\177%c\177%d\177"))
+
+ ;; Element is a formatter string FORMAT. Each character is
+ ;; formatted as:
+ ;; (format FORMAT char-code-1 char-code-2)
+ (aset vec lc-jp2 "\17772\177JIS2\177\177%d\177%d\177")
+ (aset vec lc-cns1 "\17772\177CNS1\177\177%d\177%d\177")
+ (aset vec lc-cns2 "\17772\177CNS2\177\177%d\177%d\177")
+ (aset vec lc-cns3 "\17772\177CNS3\177\177%d\177%d\177")
+ (aset vec lc-cns4 "\17772\177CNS4\177\177%d\177%d\177")
+ (aset vec lc-cns5 "\17772\177CNS5\177\177%d\177%d\177")
+ (aset vec lc-cns6 "\17772\177CNS6\177\177%d\177%d\177")
+ (aset vec lc-cns7 "\17772\177CNS7\177\177%d\177%d\177")
+ vec))
+
+
+(make-coding-system
+ '*cjk-coding* 0 ?c
+ "Coding-system for LaTeX2e CJK Package" 1)
+
+
+(put '*cjk-coding* 'pre-write-conversion 'cjk-encode)
+
+
+(defun cjk-encode (from to)
+ (save-excursion
+ (save-restriction
+ (narrow-to-region from to)
+ (let ((mc-flag t)
+ (re-multibyte-char "[\177-\237][\240-\177]+")
+ (enc (make-vector 256 nil))
+ (space-state nil)
+ (require-cjk-execute nil)
+ prev-lc lc ch ch1 ch2 format-spec)
+ (goto-char (point-min))
+ (if (null (let (mc-flag) (re-search-forward re-multibyte-char nil t)))
+ ;; No multilingual text. Nothing to do.
+ nil
+ (goto-char (match-beginning 0))
+ (setq prev-lc lc-ascii)
+ (while (not (eobp))
+ ;; Now we are at a multibyte character.
+ ;; Set the following variables:
+ ;; LC -- leading char
+ ;; CH1 -- first char code
+ ;; CH2 -- second char code (of two byte chars)
+ (setq ch (following-char))
+ (delete-char 1)
+ (setq lc (char-component ch 0))
+ (if (or (= lc lc-big5-1) (= lc lc-big5-2))
+ ;; Mule has special encoding for Big5 characters. We
+ ;; must decode them to the normal Big5 codes.
+ (let ((vec (g2b ch)))
+ (setq ch1 (aref vec 0) ch2 (aref vec 1)))
+ (setq ch1 (char-component ch 1)
+ ch2 (char-component ch 2)))
+
+ ;; FORMAT-SPEC tells how to encode this character.
+ (setq format-spec (aref cjk-format-spec-table lc))
+ (if (null format-spec)
+ ;; Unsupported character set.
+ nil
+ ;; Ok, it is supported. If this character set is one of
+ ;; CJK, we need a special header at the beginning of the
+ ;; file.
+ (if (aset enc lc (aref cjk-enc-table lc))
+ (setq require-cjk-execute t))
+
+ (cond ((consp format-spec)
+ ;; We may have to insert the car part of the cons
+ ;; and/or space controlling commands
+ ;; (cjk-space/cjk-nospace) depending on the current
+ ;; context.
+ (if (= lc lc-kr)
+ (or (eq space-state cjk-space)
+ (insert (setq space-state cjk-space)))
+ (or (eq space-state cjk-nospace)
+ (insert (setq space-state cjk-nospace))))
+ (if (/= prev-lc lc)
+ (insert (car format-spec)))
+ (insert (format (cdr format-spec) ch1 ch2)))
+
+ ((vectorp format-spec)
+ (insert (format "\177%s\177"
+ (aref format-spec (- ch1 160)))))
+ (t ; FORMAT-SPEC is just a formatting string.
+ (insert (format format-spec ch1 ch2)))))
+
+ ;; Prepare the next loop.
+ (setq prev-lc lc)
+ ;; Skip spaces, etc.
+ (skip-chars-forward " \t\n")
+ ;; If there are any ASCII chars, skip them also, but set
+ ;; PREV-LC to LC-ASCII.
+ (if (and (< (following-char) 128)
+ (let (mc-flag)
+ (re-search-forward re-multibyte-char nil 'move)))
+ (progn
+ (goto-char (match-beginning 0))
+ (setq prev-lc lc-ascii))))
+
+ ;; Now, insert an appropriate header at the head of the file.
+ (goto-char (point-min))
+ (if require-cjk-execute
+ (let ((i 128))
+ (insert "\\def\\CJKhook{")
+ (while (< i 256)
+ (if (aref enc i)
+ (insert (format "\\CJKenc{%s}" (aref enc i))))
+ (setq i (1+ i)))
+ (insert "}")
+ (insert "\\ifx\\CJKpreproc\\undefined")
+ (insert "\\def\\CJKpreproc{cjk-enc}")
+ (insert "\\RequirePackage[global]{CJK}")
+ (insert "\\AtBeginDocument{\\begin{CJK}{}{}\\CJKspace}")
+ (insert "\\AtEndDocument{\\end{CJK}}")
+ (insert "\\else\\CJKhook\\fi "))
+ (insert "\\ifx\\CJKpreproc\\undefined")
+ (insert "\\def\\CJKpreproc{cjk-enc}")
+ (insert "\\RequirePackage{MULEenc}")
+ (insert "\\fi ")))))))
+
+
+(defun cjk-write-file ()
+ "Save current buffer and <buffername>.cjk in *cjk-coding*.
+Files of the form <buffername>.bib are saved as <buffername>-cjk.bib"
+
+ (interactive)
+ (let ((bufname (buffer-file-name))
+ body
+ extension
+ newbufname)
+ (save-buffer)
+ (string-match "\\(.*\\)\\(\\.[^/]*$\\)" bufname)
+ (setq body (match-string 1 bufname)
+ extension (match-string 2 bufname))
+ (setq newbufname
+ (concat body
+ (if (string-equal extension ".bib")
+ "-cjk.bib"
+ ".cjk")))
+ (message "Saving %s and %s" bufname newbufname)
+ (let ((set-file-coding-system *cjk-coding*))
+ (write-region (point-min) (point-max) newbufname))))
+
+
+;;; EOF
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/pyhyphen/pinyin.c b/language/chinese/CJK/cjk-4.8.4/utils/pyhyphen/pinyin.c
new file mode 100644
index 0000000000..a728991c73
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/pyhyphen/pinyin.c
@@ -0,0 +1,480 @@
+/*
+
+ This is the file pinyin.c of the CJK macro package ver. 4.8.4
+ (18-Apr-2015).
+
+ Use this file to generate a hyphenation input file for patgen.
+
+ Usage:
+
+ pinyin > pinyin.dic
+
+ */
+
+/*
+ Copyright (C) 1994-2015 Werner Lemberg <wl@gnu.org>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program in doc/COPYING; if not, write to the Free
+ Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+ MA 02110-1301 USA
+ */
+
+#include <stdio.h>
+
+
+/* A list of all Chinese syllables. We use latin-1 encoding for the
+ `umlaut u' character. */
+
+char *py[] =
+{
+ "a",
+ "ai",
+ "an",
+ "ang",
+ "ao",
+ "ba",
+ "bai",
+ "ban",
+ "bang",
+ "bao",
+ "bei",
+ "ben",
+ "beng",
+ "bi",
+ "bian",
+ "biao",
+ "bie",
+ "bin",
+ "bing",
+ "bo",
+ "bu",
+ "ca",
+ "cai",
+ "can",
+ "cang",
+ "cao",
+ "ce",
+ "cen",
+ "ceng",
+ "cha",
+ "chai",
+ "chan",
+ "chang",
+ "chao",
+ "che",
+ "chen",
+ "cheng",
+ "chi",
+ "chong",
+ "chou",
+ "chu",
+ "chuai",
+ "chuan",
+ "chuang",
+ "chui",
+ "chun",
+ "chuo",
+ "ci",
+ "cong",
+ "cou",
+ "cu",
+ "cuan",
+ "cui",
+ "cun",
+ "cuo",
+ "da",
+ "dai",
+ "dan",
+ "dang",
+ "dao",
+ "de",
+ "dei",
+ "deng",
+ "di",
+ "dian",
+ "diao",
+ "die",
+ "ding",
+ "diu",
+ "dong",
+ "dou",
+ "du",
+ "duan",
+ "dui",
+ "dun",
+ "duo",
+ "e",
+ "ei",
+ "en",
+ "eng",
+ "er",
+ "fa",
+ "fan",
+ "fang",
+ "fei",
+ "fen",
+ "feng",
+ "fiao",
+ "fo",
+ "fou",
+ "fu",
+ "ga",
+ "gai",
+ "gan",
+ "gang",
+ "gao",
+ "ge",
+ "gei",
+ "gen",
+ "geng",
+ "gong",
+ "gou",
+ "gu",
+ "gua",
+ "guai",
+ "guan",
+ "guang",
+ "gui",
+ "gun",
+ "guo",
+ "ha",
+ "hai",
+ "han",
+ "hang",
+ "hao",
+ "he",
+ "hei",
+ "hen",
+ "heng",
+ "hong",
+ "hou",
+ "hu",
+ "hua",
+ "huai",
+ "huan",
+ "huang",
+ "hui",
+ "hun",
+ "huo",
+ "ji",
+ "jia",
+ "jian",
+ "jiang",
+ "jiao",
+ "jie",
+ "jin",
+ "jing",
+ "jiong",
+ "jiu",
+ "ju",
+ "juan",
+ "jue",
+ "jun",
+ "ka",
+ "kai",
+ "kan",
+ "kang",
+ "kao",
+ "ke",
+ "kei",
+ "ken",
+ "keng",
+ "kong",
+ "kou",
+ "ku",
+ "kua",
+ "kuai",
+ "kuan",
+ "kuang",
+ "kui",
+ "kun",
+ "kuo",
+ "la",
+ "lai",
+ "lan",
+ "lang",
+ "lao",
+ "le",
+ "lei",
+ "leng",
+ "li",
+ "lia",
+ "lian",
+ "liang",
+ "liao",
+ "lie",
+ "lin",
+ "ling",
+ "liu",
+ "long",
+ "lou",
+ "lu",
+ "luan",
+ "lun",
+ "luo",
+ "lü",
+ "lüe",
+ "ma",
+ "mai",
+ "man",
+ "mang",
+ "mao",
+ "me",
+ "mei",
+ "men",
+ "meng",
+ "mi",
+ "mian",
+ "miao",
+ "mie",
+ "min",
+ "ming",
+ "miu",
+ "mo",
+ "mou",
+ "mu",
+ "na",
+ "nai",
+ "nan",
+ "nang",
+ "nao",
+ "ne",
+ "nei",
+ "nen",
+ "neng",
+ "ni",
+ "nian",
+ "niang",
+ "niao",
+ "nie",
+ "nin",
+ "ning",
+ "niu",
+ "nong",
+ "nou",
+ "nu",
+ "nuan",
+ "nuo",
+ "nü",
+ "nüe",
+ "o",
+ "ou",
+ "pa",
+ "pai",
+ "pan",
+ "pang",
+ "pao",
+ "pei",
+ "pen",
+ "peng",
+ "pi",
+ "pian",
+ "piao",
+ "pie",
+ "pin",
+ "ping",
+ "po",
+ "pou",
+ "pu",
+ "qi",
+ "qia",
+ "qian",
+ "qiang",
+ "qiao",
+ "qie",
+ "qin",
+ "qing",
+ "qiong",
+ "qiu",
+ "qu",
+ "quan",
+ "que",
+ "qun",
+ "ran",
+ "rang",
+ "rao",
+ "re",
+ "ren",
+ "reng",
+ "ri",
+ "rong",
+ "rou",
+ "ru",
+ "ruan",
+ "rui",
+ "run",
+ "ruo",
+ "sa",
+ "sai",
+ "san",
+ "sang",
+ "sao",
+ "se",
+ "sen",
+ "seng",
+ "sha",
+ "shai",
+ "shan",
+ "shang",
+ "shao",
+ "she",
+ "shei",
+ "shen",
+ "sheng",
+ "shi",
+ "shou",
+ "shu",
+ "shua",
+ "shuai",
+ "shuan",
+ "shuang",
+ "shui",
+ "shun",
+ "shuo",
+ "si",
+ "song",
+ "sou",
+ "su",
+ "suan",
+ "sui",
+ "sun",
+ "suo",
+ "ta",
+ "tai",
+ "tan",
+ "tang",
+ "tao",
+ "te",
+ "tei",
+ "teng",
+ "ti",
+ "tian",
+ "tiao",
+ "tie",
+ "ting",
+ "tong",
+ "tou",
+ "tu",
+ "tuan",
+ "tui",
+ "tun",
+ "tuo",
+ "wa",
+ "wai",
+ "wan",
+ "wang",
+ "wei",
+ "wen",
+ "weng",
+ "wo",
+ "wu",
+ "xi",
+ "xia",
+ "xian",
+ "xiang",
+ "xiao",
+ "xie",
+ "xin",
+ "xing",
+ "xiong",
+ "xiu",
+ "xu",
+ "xuan",
+ "xue",
+ "xun",
+ "ya",
+ "yan",
+ "yang",
+ "yao",
+ "ye",
+ "yi",
+ "yin",
+ "ying",
+ "yo",
+ "yong",
+ "you",
+ "yu",
+ "yuan",
+ "yue",
+ "yun",
+ "za",
+ "zai",
+ "zan",
+ "zang",
+ "zao",
+ "ze",
+ "zei",
+ "zen",
+ "zeng",
+ "zha",
+ "zhai",
+ "zhan",
+ "zhang",
+ "zhao",
+ "zhe",
+ "zhei",
+ "zhen",
+ "zheng",
+ "zhi",
+ "zhong",
+ "zhou",
+ "zhu",
+ "zhua",
+ "zhuai",
+ "zhuan",
+ "zhuang",
+ "zhui",
+ "zhun",
+ "zhuo",
+ "zi",
+ "zong",
+ "zou",
+ "zu",
+ "zuan",
+ "zui",
+ "zun",
+ "zuo"
+};
+
+
+int main(void)
+{
+ int i, j, off;
+ size_t size = sizeof (py) / sizeof (char*);
+ char s[20];
+
+ /* Now we loop through all possible syllable combinations. */
+
+ for (i = 0; i < size; i++)
+ for (j = 0; j < size; j++)
+ {
+ /* The seldom used `%n' construct yields the number of processed
+ characters so far. */
+
+ sprintf(s, "%s%n%s", py[i], &off, py[j]);
+
+ /* We check the first character of the second syllable. If it is
+ a vowel, a quote will be inserted. Example: Tian'anmen. */
+
+ if (s[off] == 'a' || s[off] == 'e' || s[off] == 'o')
+ printf("%s'-%s\n", py[i], py[j]);
+
+ /* No special case. */
+
+ else
+ printf("%s-%s\n", py[i], py[j]);
+ }
+
+ return 0;
+}
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/pyhyphen/pinyin.ldf b/language/chinese/CJK/cjk-4.8.4/utils/pyhyphen/pinyin.ldf
new file mode 100644
index 0000000000..9fbe8e4fa9
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/pyhyphen/pinyin.ldf
@@ -0,0 +1,62 @@
+% This is the file pinyin.ldf of the CJK package
+% for hyphenating Chinese pinyin syllables.
+%
+% We use the latin-1 character code for `umlaut u' (0xfc). Additionally,
+% the quote character "'" is used in its standard sense (resolving syllabic
+% ambiguities).
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.4 (18-Apr-2015)
+
+% Copyright (C) 1994-2015 Werner Lemberg <wl@gnu.org>
+%
+% This program is free software; you can redistribute it and/or modify
+% it under the terms of the GNU General Public License as published by
+% the Free Software Foundation; either version 2 of the License, or
+% (at your option) any later version.
+%
+% This program is distributed in the hope that it will be useful,
+% but WITHOUT ANY WARRANTY; without even the implied warranty of
+% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+% GNU General Public License for more details.
+%
+% You should have received a copy of the GNU General Public License
+% along with this program in doc/COPYING; if not, write to the Free
+% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+% MA 02110-1301 USA
+
+\ProvidesLanguage{pinyin}
+ [CJK 4.8.4 pinyin support for the babel system]
+
+\LdfInit{pinyin}{captionspinyin}
+
+\ifx\l@pinyin\@undefined
+ \@nopatterns{pinyin}
+ \adddialect\l@pinyin0
+\fi
+
+\def\pinyinhyphenmins{11}
+\def\captionspinyin{}
+\def\datepinyin{}
+
+\initiate@active@char{"}
+
+\addto\extraspinyin{\languageshorthands{pinyin}}
+\addto\extraspinyin{\bbl@activate{"}}
+\addto\extraspinyin{\babel@save\"\umlautlow}
+\addto\extraspinyin{%
+ \babel@savevariable{\lccode"27}%
+ \lccode"27 "27}
+
+\addto\noextraspinyin{\umlauthigh}
+
+\declare@shorthand{pinyin}{"u}{\textormath{\"{u}}{\ddot u}}
+\declare@shorthand{pinyin}{"U}{\textormath{\"{U}}{\ddot U}}
+
+\def\mdqon{\shorthandon{"}}
+\def\mdqoff{\shorthandoff{"}}
+
+\ldf@finish{pinyin}
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/pyhyphen/pinyin.tr b/language/chinese/CJK/cjk-4.8.4/utils/pyhyphen/pinyin.tr
new file mode 100644
index 0000000000..8002b91033
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/pyhyphen/pinyin.tr
@@ -0,0 +1,52 @@
+ 1 1
+%% This is the file pinyin.tr of the CJK package
+%% defining the letters used for generating pinyin hyphenation patterns
+%% with patgen.
+%
+%% created by Werner Lemberg <wl@gnu.org>
+%%
+%% Version 4.8.4 (18-Apr-2015)
+%%
+%% Copyright (C) 1994-2015 Werner Lemberg <wl@gnu.org>
+%%
+%% This program is free software; you can redistribute it and/or modify
+%% it under the terms of the GNU General Public License as published by
+%% the Free Software Foundation; either version 2 of the License, or
+%% (at your option) any later version.
+%%
+%% This program is distributed in the hope that it will be useful,
+%% but WITHOUT ANY WARRANTY; without even the implied warranty of
+%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+%% GNU General Public License for more details.
+%%
+%% You should have received a copy of the GNU General Public License
+%% along with this program in doc/COPYING; if not, write to the Free
+%% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+%% MA 02110-1301 USA
+ a A
+ b B
+ c C
+ d D
+ e E
+ f F
+ g G
+ h H
+ i I
+ j J
+ k K
+ l L
+ m M
+ n N
+ o O
+ p P
+ q Q
+ r R
+ s S
+ t T
+ u U
+ ü Ü
+ w W
+ x X
+ y Y
+ z Z
+ '
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/pyhyphen/pyhyph.tex b/language/chinese/CJK/cjk-4.8.4/utils/pyhyphen/pyhyph.tex
new file mode 100644
index 0000000000..f118f42001
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/pyhyphen/pyhyph.tex
@@ -0,0 +1,236 @@
+% This is the file pyhyph.tex of the CJK package
+% for hyphenating Chinese pinyin syllables.
+%
+% We use the latin-1 character code for `umlaut u' (0xfc). Additionally,
+% the quote character "'" is used in its standard sense (resolving syllabic
+% ambiguities).
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.4 (18-Apr-2015)
+
+% Copyright (C) 1994-2015 Werner Lemberg <wl@gnu.org>
+%
+% This program is free software; you can redistribute it and/or modify
+% it under the terms of the GNU General Public License as published by
+% the Free Software Foundation; either version 2 of the License, or
+% (at your option) any later version.
+%
+% This program is distributed in the hope that it will be useful,
+% but WITHOUT ANY WARRANTY; without even the implied warranty of
+% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+% GNU General Public License for more details.
+%
+% You should have received a copy of the GNU General Public License
+% along with this program in doc/COPYING; if not, write to the Free
+% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+% MA 02110-1301 USA
+
+\message{Hyphenation patterns for unaccented pinyin syllables (CJK 4.8.4)}
+
+\begingroup
+
+\catcode"0FC = 11 % umlaut u
+\catcode"027 = 11 % quote (')
+\lccode"0FC = "0FC
+\lccode"027 = "027
+
+\patterns{
+a1b
+a1c
+a1d
+a1f
+a1g
+a1h
+a1j
+a1k
+a1l
+a1m
+a1p
+a1q
+a1r
+a1s
+a1t
+a1w
+a1x
+a1y
+a1z
+e1b
+e1c
+e1d
+e1f
+e1g
+e1h
+e1j
+e1k
+e1l
+e1m
+e1p
+e1q
+e1s
+e1t
+e1w
+e1x
+e1y
+e1z
+1ga
+g1b
+g1c
+g1d
+1ge
+g1f
+g1g
+g1h
+g1j
+g1k
+g1l
+g1m
+g1n
+1go
+g1p
+g1q
+g1r
+g1s
+g1t
+1gu
+g1w
+g1x
+g1y
+g1z
+i1b
+i1c
+i1d
+i1f
+i1g
+i1h
+i1j
+i1k
+i1l
+i1m
+i1p
+i1q
+i1r
+i1s
+i1t
+i1w
+i1x
+i1y
+i1z
+1na
+n1b
+n1c
+n1d
+1ne
+n1f
+n1h
+1ni
+n1j
+n1k
+n1l
+n1m
+n1n
+1no
+n1p
+n1q
+n1r
+n1s
+n1t
+1nu
+1n^^fc
+n1w
+n1x
+n1y
+n1z
+o1b
+o1c
+o1d
+o1f
+o1g
+o1h
+o1j
+o1k
+o1l
+o1m
+o1p
+o1q
+o1r
+o1s
+o1t
+o1w
+o1x
+o1y
+o1z
+1ra
+r1b
+r1c
+r1d
+1re
+r1f
+r1g
+r1h
+1ri
+r1j
+r1k
+r1l
+r1m
+r1n
+1ro
+r1p
+r1q
+r1r
+r1s
+r1t
+1ru
+r1w
+r1x
+r1y
+r1z
+u1b
+u1c
+u1d
+u1f
+u1g
+u1h
+u1j
+u1k
+u1l
+u1m
+u1p
+u1q
+u1r
+u1s
+u1t
+u1w
+u1x
+u1y
+u1z
+^^fc1b
+^^fc1c
+^^fc1d
+^^fc1f
+^^fc1g
+^^fc1h
+^^fc1j
+^^fc1k
+^^fc1l
+^^fc1m
+^^fc1n
+^^fc1p
+^^fc1q
+^^fc1r
+^^fc1s
+^^fc1t
+^^fc1w
+^^fc1x
+^^fc1y
+^^fc1z
+'1a
+'1e
+'1o
+}
+\endgroup
+
+\lefthyphenmin 1
+\righthyphenmin 1
+
+\endinput
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/pyhyphen/pytest.tex b/language/chinese/CJK/cjk-4.8.4/utils/pyhyphen/pytest.tex
new file mode 100644
index 0000000000..adf37d3c32
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/pyhyphen/pytest.tex
@@ -0,0 +1,51 @@
+% This is the file pytest.tex of the CJK package
+% for testing Chinese pinyin hyphenation.
+%
+% created by Werner Lemberg <wl@gnu.org>
+%
+% Version 4.8.4 (18-Apr-2015)
+%
+%%
+%% Attention! This will work only if you have created a new format file
+%% with `pyhyph.tex' as additional hyphenation patterns for the language
+%% `pinyin'. Otherwise no hyphenation will be used.
+%%
+% Note that the Babel package searches for `pinyin.ldf', not pinyin.sty --
+% the latter is for typesetting accented pinyin syllables.
+
+\documentclass[12pt,b5paper]{article}
+
+\usepackage[10pt]{type1ec} % use only 10pt fonts
+\usepackage[T1]{fontenc}
+\usepackage[pinyin]{babel}
+
+
+\begin{document}
+
+% Taken from the TeXbook (p. 451) to force frequent insertion of hyphens.
+\hyphenpenalty -1000
+\pretolerance -1
+\tolerance 1000
+\doublehyphendemerits -100000
+\finalhyphendemerits -100000
+
+\selectlanguage{pinyin}
+
+Women hen xihuan l"uxing. Zai Beijing women hen xiang kan Tian'anmen.
+Mingtian women xiang yao dao Xi'an qu. Xiage libai zai hui jia.
+Women hen xihuan l"uxing. Zai Beijing women hen xiang kan Tian'anmen.
+Mingtian women xiang yao dao Xi'an qu. Xiage libai zai hui jia.
+Women hen xihuan l"uxing. Zai Beijing women hen xiang kan Tian'anmen.
+Mingtian women xiang yao dao Xi'an qu. Xiage libai zai hui jia.
+Women hen xihuan l"uxing. Zai Beijing women hen xiang kan Tian'anmen.
+Mingtian women xiang yao dao Xi'an qu. Xiage libai zai hui jia.
+Women hen xihuan l"uxing. Zai Beijing women hen xiang kan Tian'anmen.
+Mingtian women xiang yao dao Xi'an qu. Xiage libai zai hui jia.
+Women hen xihuan l"uxing. Zai Beijing women hen xiang kan Tian'anmen.
+Mingtian women xiang yao dao Xi'an qu. Xiage libai zai hui jia.
+Women hen xihuan l"uxing. Zai Beijing women hen xiang kan Tian'anmen.
+Mingtian women xiang yao dao Xi'an qu. Xiage libai zai hui jia.
+Women hen xihuan l"uxing. Zai Beijing women hen xiang kan Tian'anmen.
+Mingtian women xiang yao dao Xi'an qu. Xiage libai zai hui jia.
+
+\end{document}
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/subfonts/clonevf.pl b/language/chinese/CJK/cjk-4.8.4/utils/subfonts/clonevf.pl
new file mode 100644
index 0000000000..ab345b00cb
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/subfonts/clonevf.pl
@@ -0,0 +1,122 @@
+#! /usr/bin/perl -w
+#
+# This script clones a virtual font from a TFM file.
+#
+# As prerequisites, it needs the programs `tftopl' and `vptovf', which must
+# be in the path.
+#
+# Call the script as
+#
+# perl clonevf.pl tfm-name vf-name
+#
+# Example:
+#
+# perl clonevf.pl bsmiuv bsmilpv
+
+# Copyright (C) 1994-2015 Werner Lemberg <wl@gnu.org>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program in doc/COPYING; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301 USA
+
+use strict;
+
+my $prog = $0;
+$prog =~ s@.*/@@;
+
+if ($#ARGV != 1) {
+ die("usage: $prog tfm-name vf-name\n");
+}
+
+my $tfmname = $ARGV[0];
+my $vfname = $ARGV[1];
+
+
+# Create PL file.
+
+print("Processing metrics file \`$tfmname.tfm'...\n");
+
+my $arg = "tftopl $tfmname.tfm > $tfmname.pl";
+system($arg) == 0
+|| die("$prog: calling \`$arg' failed: $?\n");
+
+
+# Create VPL file.
+
+print("Writing virtual property list file \`$vfname.vpl'...\n");
+
+open(PL, "$tfmname.pl")
+|| die("$prog: can't open \`$tfmname.pl': $!\n");
+
+open(VPL, ">", "$vfname.vpl")
+|| die("$prog: can't open \`$vfname.vpl': $!\n");
+
+print(VPL "(VTITLE Created by \`$prog " . join(" ", @ARGV) . "')\n");
+print(VPL "(FAMILY TEX-\U$vfname\E)\n");
+
+my $have_mapfont = 0;
+while (<PL>) {
+ next if /^\(FAMILY/;
+ next if /^\(CHECKSUM/;
+
+ if (/^\(CHARACTER (.*)/) {
+ if (!$have_mapfont) {
+ print(VPL "(MAPFONT D 0\n");
+ print(VPL " (FONTNAME $tfmname)\n");
+ print(VPL " )\n");
+ $have_mapfont = 1;
+ }
+
+ my $char = $1;
+
+ print(VPL $_);
+
+ $_ = <PL>;
+ if (/CHARWD/) {
+ print(VPL $_);
+ $_ = <PL>;
+ }
+ if (/CHARHT/) {
+ print(VPL $_);
+ $_ = <PL>;
+ }
+ if (/CHARDP/) {
+ print(VPL $_);
+ $_ = <PL>;
+ }
+
+ print(VPL " (MAP\n");
+ print(VPL " (SELECTFONT D 0)\n");
+ print(VPL " (SETCHAR $char)\n");
+ print(VPL " )\n");
+ }
+
+ print(VPL $_);
+}
+
+close(PL);
+close(VPL);
+
+print("Processing \`$vfname.vpl'\n");
+$arg = "vptovf $vfname.vpl";
+system($arg) == 0
+|| die("$prog: calling \`$arg' failed: $?\n");
+
+print("Removing \`$tfmname.pl'...\n");
+unlink("$tfmname.pl");
+print("Removing \`$vfname.vpl'...\n");
+unlink("$vfname.vpl");
+
+
+# eof
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/subfonts/hlatex2agl.pl b/language/chinese/CJK/cjk-4.8.4/utils/subfonts/hlatex2agl.pl
new file mode 100644
index 0000000000..22ca69446a
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/subfonts/hlatex2agl.pl
@@ -0,0 +1,477 @@
+#! /usr/bin/perl -w
+#
+# This script adds AGL compliant glyph names to fonts from the HLaTeX
+# package version 0.97 or newer. Note that only glyphs actually used in the
+# (virtual) HLaTeX subfonts get new names; additionally, the used glyph
+# shapes in the HLaTeX fonts aren't always correct -- consider this script
+# as an auxiliary means, not a definitive solution. At least the Hangul and
+# Hanja shapes are correct.
+#
+# As prerequisites, it needs the programs `t1asm' and `t1disasm' (from the
+# t1utils package) and `vftovp' which must be in the path. The subfont
+# definition file `UKS-HLaTeX.sfd' (from the ttf2pk package) and the file
+#
+# http://partners.adobe.com/public/developer/en/opentype/aglfn13.txt
+#
+# are necessary also.
+#
+# Call the script as
+#
+# perl hlatex2agl.pl virtual-namestem real-namestem sfd-file
+#
+# `virtual-namestem' specifies the name stem of the virtual subfonts
+# directly used by LaTeX; both the VF and TFM files are needed.
+# `real-namestem' gives the name stem of the real subfonts used by the
+# virtual fonts; TFM, AFM, and PFB files are needed.
+#
+# Example:
+#
+# perl hlatex2agl.pl wmj umj UKS-HLaTeX.sfd
+
+# Copyright (C) 1994-2015 Werner Lemberg <wl@gnu.org>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program in doc/COPYING; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301 USA
+
+use strict;
+
+my $prog = $0;
+$prog =~ s@.*/@@;
+
+if ($#ARGV != 2) {
+ die("usage: $prog virtual-namestem real-namestem sfd-file\n");
+}
+
+my $virtnamestem = $ARGV[0];
+my $realnamestem = $ARGV[1];
+my $sfdfile = $ARGV[2];
+
+
+# Read UKS-HLaTeX.sfd.
+
+my @sfd;
+my @virtsubfonts;
+
+read_sfdfile($sfdfile, \@sfd, \@virtsubfonts);
+
+
+# Read AGL file.
+
+my %agl;
+
+read_aglfile("aglfn13.txt", \%agl);
+
+
+# Read VF files.
+
+my %vpl;
+my %subfonts;
+
+for my $suffix (@virtsubfonts) {
+ read_vffile("$virtnamestem$suffix.vf", $suffix, \%vpl, \%subfonts);
+}
+
+
+# Decompose all Hangul syllables.
+
+my @hangul;
+
+decompose_hangul(\@hangul);
+
+
+# Build glyph names.
+
+my %names;
+
+build_glyphnames(\%names);
+
+
+# Process AFM files.
+
+foreach my $suffix (sort (keys %subfonts)) {
+ process_afmfile("$realnamestem$suffix.afm", $suffix);
+}
+
+
+# Process PFB files.
+
+foreach my $suffix (sort (keys %subfonts)) {
+ process_pfbfile("$realnamestem$suffix.pfb", $suffix);
+}
+
+
+# Read an SFD file.
+#
+# $1: Name of the SFD file.
+# $2: Reference to the target array, mapping from Unicode to the subfont.
+# The format of the array values is the concatenation of the subfont
+# suffix, a space, and the index.
+# $3: Reference to a target array which holds the subfont suffixes.
+
+sub read_sfdfile {
+ my ($sfdfile, $sfdarray, $subarray) = @_;
+
+ print("Reading subfont definition file \`$sfdfile'...\n");
+
+ open(SFD, $sfdfile)
+ || die("$prog: can't open \`$sfdfile': $!\n");
+
+ my $line;
+ my $continuation = 0;
+ while (<SFD>) {
+ chop;
+
+ next if /^\s*$/;
+ next if /^#/;
+
+ if ($continuation) {
+ $line .= $_;
+ }
+ else {
+ $line = $_;
+ }
+ $continuation = 0;
+
+ if ($line =~ s/\\$//) {
+ $continuation = 1;
+ next;
+ }
+
+ $_ = $line;
+ my @field = split(" ");
+
+ my $suffix = $field[0];
+ push(@{$subarray}, $suffix);
+
+ shift(@field);
+ my $index = 0;
+
+ while (@field) {
+ if ($field[0] =~ /(.*):$/) {
+ $index = $1;
+ }
+ elsif ($field[0] =~ /(.*)_(.*)/) {
+ my $start = $1;
+ my $end = $2;
+ $start = oct($start) if ($start =~ /^0/);
+ $end = oct($end) if ($end =~ /^0/);
+ foreach my $i ($start .. $end) {
+ $sfdarray->[$i] = "$suffix $index";
+ $index++;
+ }
+ }
+ else {
+ my $value = $field[0];
+ $value = oct($value) if ($value =~ /^0/);
+ $sfdarray->[$value] = "$suffix $index";
+ $index++;
+ }
+ shift(@field);
+ }
+ }
+ close(SFD);
+}
+
+
+# Read an AGL file.
+#
+# $1: Name of the AGL file.
+# $2: Reference to the target hash file, mapping from the Unicode value
+# to the glyph name.
+
+sub read_aglfile {
+ my ($aglfile, $aglhash) = @_;
+
+ print("Reading Adobe Glyph List file \`$aglfile'...\n");
+
+ open(AGL, $aglfile)
+ || die("$prog: can't open \`$aglfile': $!\n");
+
+ while (<AGL>) {
+ chop;
+
+ next if /^\s*$/;
+ next if /^#/;
+
+ my @field = split(";");
+ $aglhash->{hex($field[0])} = $field[1];
+ }
+ close(AGL);
+}
+
+
+# Read a VF file.
+#
+# $1: Name of the VF file.
+# $2: Subfont suffix.
+# $3: Reference to a target hash, mapping from the virtual subfont to the
+# real subfonts. The format of the key is the concatenation of the
+# subfont suffix, a space, and the index. The format of the hash value
+# is `<suffix1> <idx1>[,<suffix2> <idx2>[,...]]'.
+# $4: Reference to a target hash, collecting the suffixes of the real
+# subfonts.
+
+sub read_vffile {
+ my ($vffile, $vfsuffix, $vplhash, $subfonthash) = @_;
+ my $vplfile = "$vffile.vpl";
+
+ print("Creating virtual property list file \`$vplfile'...\n");
+ my $arg = "vftovp -charcode-format=octal $vffile > $vplfile";
+ system("$arg") == 0
+ || die("$prog: calling \`$arg' failed: $?");
+
+ print("Reading \`$vplfile'...\n");
+ open(VPL, $vplfile)
+ || die("$prog: can't open \`$vplfile': $!\n");
+
+ my @subfonts;
+ my $subindex;
+ my $index;
+ my $currfont;
+ my $map = "";
+
+ while (<VPL>) {
+ if (/\(MAPFONT D ([0-9]+)/) {
+ $subindex = $1;
+ }
+ elsif (/\(FONTNAME $realnamestem(.*?)\)/) {
+ $subfonts[$subindex] = $1;
+ if (!defined ($subfonthash->{$1})) {
+ $subfonthash->{$1} = 1;
+ }
+ }
+ elsif (/\(CHARACTER O ([0-7]+)/) {
+ # Save data from previous CHARACTER block.
+ $vplhash->{"$vfsuffix $index"} = $map if ($map);
+
+ # Reset variables.
+ $index = oct($1);
+ $currfont = 0;
+ $map = "";
+ }
+ elsif (/\(SELECTFONT D ([0-9]+)\)/) {
+ $currfont = $1;
+ }
+ elsif (/\(SETCHAR O ([0-7]+)\)/) {
+ $map .= "," if ($map);
+ $map .= "$subfonts[$currfont] " . oct($1);
+ }
+ }
+
+ # Save data from last CHARACTER block.
+ $vplhash->{"$vfsuffix $index"} = $map if ($map);
+
+ close(VPL);
+ unlink($vplfile);
+}
+
+
+# Decompose all Unicode Hangul syllables into Jamo elements.
+#
+# $1: The target array, mapping from Unicode value to a list of Jamos (in
+# Unicode), separated by commata.
+#
+# This follows the algorithm given in the Unicode standard.
+
+sub decompose_hangul {
+ my ($hangularray) = @_;
+
+ my $s_base = 0xAC00;
+ my $l_base = 0x1100;
+ my $v_base = 0x1161;
+ my $t_base = 0x11A7;
+
+ my $s_count = 11172;
+ my $l_count = 19;
+ my $v_count = 21;
+ my $t_count = 28;
+
+ my $n_count = $v_count * $t_count;
+
+ for my $s ($s_base .. ($s_base + $s_count - 1)) {
+ my $s_index = $s - $s_base;
+
+ my $l = $l_base + int($s_index / $n_count);
+ my $v = $v_base + int(($s_index % $n_count) / $t_count);
+ my $t = $t_base + $s_index % $t_count;
+
+ my $jamos = "$l,$v";
+ $jamos .= ",$t" if ($t != $t_base);
+ $hangularray->[$s] = $jamos;
+ }
+}
+
+
+# Build glyph names.
+#
+# $1: The target hash which maps from real subfonts to glyph names. Keys
+# are of the form `<suffix> <index>', hash values are AGL compliant
+# glyph names. Glyph variants get a trailing suffix of the form `.N',
+# where is is a running number starting with 1. Example: `uni1100.24'.
+
+sub build_glyphnames {
+ my ($nameshash) = @_;
+
+ my @entries;
+
+ foreach my $unicode (0 .. 0xFFFF) {
+ next if !defined ($sfd[$unicode]);
+
+ my $virtdata = $sfd[$unicode];
+
+ # We assume that only Hangul syllables are composed of more than
+ # a single element.
+ if (defined ($hangul[$unicode])) {
+ my @unijamos = split(",", $hangul[$unicode]);
+ my @jamos = split(",", $vpl{$virtdata});
+
+ foreach my $i (0 .. $#jamos) {
+ if (!defined ($nameshash->{$jamos[$i]})) {
+ if (defined ($entries[$unijamos[$i]])) {
+ $nameshash->{$jamos[$i]} = sprintf("uni%04X.%d",
+ $unijamos[$i],
+ $entries[$unijamos[$i]]);
+ $entries[$unijamos[$i]] += 1;
+ }
+ else {
+ $nameshash->{$jamos[$i]} = sprintf("uni%04X", $unijamos[$i]);
+ $entries[$unijamos[$i]] = 1;
+ }
+ }
+ }
+ }
+ else {
+ if (defined ($agl{$unicode})) {
+ $nameshash->{$vpl{$virtdata}} = $agl{$unicode};
+ }
+ else {
+ $nameshash->{$vpl{$virtdata}} = sprintf("uni%04X", $unicode);
+ }
+ }
+ }
+}
+
+
+# Process AFM file.
+#
+# $1: Name of the AFM file to process. The file is first saved, then all
+# glyph names are replaced for which an AGL compliant glyph name is
+# known.
+# $2: The suffix.
+
+sub process_afmfile {
+ my ($afmfile, $sub) = @_;
+
+ print("Processing \`$afmfile'...\n");
+
+ if (!-f $afmfile) {
+ die("$prog: \`$afmfile' doesn't exist\n");
+ }
+
+ rename($afmfile, "$afmfile.old");
+
+ open(INFILE, "$afmfile.old")
+ || die("$prog: can't open \`$afmfile.old': $!\n");
+ open(OUTFILE, ">", "$afmfile")
+ || die("$prog: can't open \`$afmfile': $!\n");
+
+ while (<INFILE>) {
+ # Replace the `kxx' entries.
+ if (/ N k(.*?) ;/) {
+ my $index = hex($1);
+ if (defined ($names{"$sub $index"})) {
+ s/ N .*? ;/ N $names{"$sub $index"} ;/;
+ }
+ }
+
+ # Update version number.
+ s/001\.000/001.001/;
+ s/Altsys\ Fontographer\ 4\.1\ 1\/10\/95$/001.001/;
+
+ print(OUTFILE $_);
+
+ # Add comment.
+ if (/^Comment\ UniqueID/ || /^Comment\ Generated/) {
+ print(OUTFILE "Comment AGL compliant glyph names added "
+ . "by script $prog 2005-Jul-27.\n");
+ }
+ }
+
+ close(INFILE);
+ close(OUTFILE);
+}
+
+
+# Process PFB file.
+#
+# $1: Name of the PFB file to process. The file is first saved, then all
+# glyph names are replaced for which an AGL compliant glyph name is
+# known.
+# $2: The suffix.
+
+sub process_pfbfile {
+ my ($pfbfile, $sub) = @_;
+ my $arg;
+
+ print("Processing \`$pfbfile'...\n");
+
+ if (!-f $pfbfile) {
+ die("$prog: \`$pfbfile' doesn't exist\n");
+ }
+
+ rename($pfbfile, "$pfbfile.old");
+
+ $arg = "t1disasm < $pfbfile.old > $pfbfile.disasm.old";
+ system("$arg") == 0
+ || die("$prog: calling \`$arg' failed: $?");
+
+ open(INFILE, "$pfbfile.disasm.old")
+ || die("$prog: can't open \`$pfbfile.disasm.old': $!\n");
+ open(OUTFILE, ">", "$pfbfile.disasm")
+ || die("$prog: can't open \`$pfbfile.disasm': $!\n");
+
+ while (<INFILE>) {
+ # Replace the `kxx' entries.
+ if (m@/k(.*?) @) {
+ my $index = hex($1);
+ if (defined ($names{"$sub $index"})) {
+ s@/k.*? @/$names{"$sub $index"} @;
+ }
+ }
+
+ # Update version number.
+ s/001\.000/001.001/;
+
+ print(OUTFILE $_);
+
+ # Add comment.
+ if (/^%%CreationDate/) {
+ print(OUTFILE "% AGL compliant glyph names added "
+ . "by script $prog 2005-Jul-27.\n");
+ }
+ }
+
+ close(INFILE);
+ close(OUTFILE);
+
+ $arg = "t1asm < $pfbfile.disasm > $pfbfile";
+ system("$arg") == 0
+ || die("$prog: calling \`$arg' failed: $?");
+
+ unlink("$pfbfile.disasm.old", "$pfbfile.disasm");
+}
+
+
+# eof
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/subfonts/makefdx.pl b/language/chinese/CJK/cjk-4.8.4/utils/subfonts/makefdx.pl
new file mode 100644
index 0000000000..bed1c4b857
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/subfonts/makefdx.pl
@@ -0,0 +1,340 @@
+#! /usr/bin/perl -w
+#
+# This script creates proper entries for an FDX file as used by the CJK
+# package for LaTeX.
+#
+# As a prerequisite, it needs the file
+#
+# http://partners.adobe.com/public/developer/en/opentype/aglfn13.txt
+#
+# which must be located in the current directory.
+#
+# Call the script as
+#
+# perl [-u] makefdx.pl vertref-afm-file sfd-file encoding font-name
+#
+# `vertref-afm-file' is an AFM file as produced by the script `vertref.pe'.
+# The subfont definition file `sfd-file' gives the subfont scheme to get the
+# proper entries in the FDX file. `encoding' and `font-name' are TeX font
+# parameters as used by the CJK package; the scripts uses the concatenation
+# of those two values as the name of the FDX file (with suffix `.fdx').
+#
+# The switch `-u' makes the script add a macro to the FDX file (which is
+# used by the CJKutf8.sty) to provide a proper /ToUnicode cmap to pdftex.
+#
+# Note that the created FDX file has to be completed manually.
+#
+# Examples:
+#
+# perl makefdx.pl bsmiuvr.afm UBig5.sfd c00 bsmi
+#
+# The result of this call is the file `c00bsmi.fdx' (you get some warnings
+# because not all glyphs contained in bsmiuvr.afm can be accessed with Big5
+# encoding).
+#
+# perl makefdx.pl -u bsmiuvr.afm Unicode.sfd c70 bsmi
+#
+# The result of this call is the file `c70bsmi.fdx'.
+#
+# A collection of useful subfont definition files for CJK fonts can be found
+# in the ttf2pk package.
+
+# Copyright (C) 1994-2015 Werner Lemberg <wl@gnu.org>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program in doc/COPYING; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301 USA
+
+use strict;
+
+my $prog = $0;
+$prog =~ s@.*/@@;
+
+my $is_unicode = 0;
+if ($ARGV[0] eq "-u") {
+ $is_unicode = 1;
+ shift @ARGV;
+}
+
+if ($#ARGV != 3) {
+ die("usage: $prog [-u] vertref-afm-file sfd-file encoding font-name\n");
+}
+
+my $vertrefafmfile = $ARGV[0];
+my $sfdfile = $ARGV[1];
+my $encoding = $ARGV[2];
+my $fontname = $ARGV[3];
+
+my $fdxfile = $encoding . $fontname . ".fdx";
+
+# Read AGL file.
+
+my %agl;
+
+read_aglfile("aglfn13.txt", \%agl);
+
+
+# Read AFM file.
+
+my @vertref;
+
+read_afmfile($vertrefafmfile, \@vertref);
+
+
+# Read subfont definition file.
+
+my @sfd;
+
+read_sfdfile($sfdfile, \@sfd);
+
+
+# Write FDX file.
+
+print("Writing extended font definition file \`$fdxfile'...\n");
+
+open(FDX, ">", $fdxfile)
+|| die("$prog: can't open \`$fdxfile': $!\n");
+my $oldfh = select(FDX);
+
+print("% This is the file $fdxfile of the CJK package
+% for using Asian logographs (Chinese/Japanese/Korean) with LaTeX2e
+%
+% created by the script makefdx.pl for CJK Version 4.8.4 (18-Apr-2015).
+
+\\def\\fileversion{4.8.4}
+\\def\\filedate{2015/04/18}
+\\ProvidesFile{$fdxfile}[\\filedate\\space\\fileversion]
+
+\\CJKvdef{fullheight}{1em}
+\\CJKvdef{height}{.88em}
+\\CJKvdef{offset}{.6em}
+
+% Uncomment if necessary.
+%\\CJKvdef{norotate}{}
+");
+
+my @unicodes;
+my $mapping_count = 0;
+
+foreach my $index (0 .. $#vertref) {
+ my $glyphnameref = $vertref[$index];
+ my $unicode;
+
+ if (defined ($agl{$glyphnameref})) {
+ $unicode = $agl{$glyphnameref};
+ }
+ elsif ($glyphnameref =~ /^uni([0-9A-F]{4})$/) {
+ $unicode = hex($1);
+ }
+ elsif ($glyphnameref =~ /^u([0-9A-F]{4,6})$/) {
+ $unicode = hex($1);
+ }
+ else {
+ $unicode = -1;
+ }
+ if ($unicode == -1
+ || ($unicode >= 0xD800 && $unicode <= 0xDFFF)
+ || $unicode > 0x10FFFF) {
+ print(STDERR "Can't map glyph name \`$glyphnameref' to Unicode.\n");
+ $unicodes[$index] = -1;
+ next;
+ }
+ $unicodes[$index] = $unicode;
+
+ my $sfdentry;
+
+ if (defined ($sfd[$unicode])) {
+ $sfdentry = $sfd[$unicode];
+ }
+ else {
+ $unicodes[$index] = -1;
+ printf(STDERR "\`%s' (U+%04X) not in subfont encoding\n",
+ $glyphnameref, $unicode);
+ next;
+ }
+
+ $mapping_count++;
+
+ print("\\CJKvdef{m/n/$sfdentry}");
+ print("{\\def\\CJK\@plane{v}\\selectfont\\CJKsymbol{$index}}\n");
+ print("\\CJKvlet{bx/n/$sfdentry}");
+ print("{m/n/$sfdentry}\n");
+}
+
+if ($is_unicode) {
+ print("
+\\gdef\\CJK\@cmap\@${fontname}v{
+ \\expandafter\\ifx\\csname CJK\@CMap\@${fontname}v\\endcsname \\relax
+ \\immediate\\pdfobj stream {
+ /CIDInit\\space/ProcSet\\space findresource\\space begin\\space
+ 12\\space dict\\space begin\\space
+ begincmap\\space
+ /CIDSystemInfo\\space <<\\space
+ /Registry\\space (TeX)\\space
+ /Ordering\\space (${fontname}v)\\space
+ /Supplement\\space 0\\space >>\\space def\\space
+ /CMapName\\space /TeX-${fontname}v-0\\space def\\space
+ 1\\space begincodespacerange\\space
+ <00>\\space <FF>\\space
+ endcodespacerange\\space
+ $mapping_count\\space beginbfchar\\space
+");
+
+ foreach my $index (0 .. $#vertref) {
+ if ($unicodes[$index] != -1) {
+ printf(" <%02X>\\space <%04X>\\space\n",
+ $index, $unicodes[$index]);
+ }
+ }
+
+ print(" endbfchar\\space
+ endcmap\\space
+ CMapName\\space currentdict\\space /CMap\\space defineresource\\space
+ pop\\space
+ end\\space
+ end\\space}
+ \\expandafter\\xdef\\csname CJK\@CMap\@${fontname}v\\endcsname{
+ \\the\\pdflastobj}
+ \\fi
+ \\pdffontattr\\font\@name{
+ /ToUnicode\\space\\csname CJK\@CMap\@${fontname}v\\endcsname\\space 0\\space R}
+}
+
+\\endinput
+");
+}
+
+
+# Read an AGL file.
+#
+# $1: Name of the AGL file.
+# $2: Reference to the target hash file, mapping from the glyph name
+# to the Unicode value.
+
+sub read_aglfile {
+ my ($aglfile, $aglhash) = @_;
+
+ print("Reading Adobe Glyph List file \`$aglfile'...\n");
+
+ open(AGL, $aglfile)
+ || die("$prog: can't open \`$aglfile': $!\n");
+
+ while (<AGL>) {
+ chop;
+
+ next if /^\s*$/;
+ next if /^#/;
+
+ my @field = split(";");
+ $aglhash->{$field[1]} = hex($field[0]);
+ }
+ close(AGL);
+}
+
+
+# Read an SFD file.
+#
+# $1: Name of the SFD file.
+# $2: Reference to the target array file, mapping from the character code
+# to the subfont index. The format of an array value is the
+# concatenation of the subfont suffix, a slash, and the index.
+
+sub read_sfdfile {
+ my ($sfdfile, $sfdarray) = @_;
+
+ print("Reading subfont definition file \`$sfdfile'...\n");
+
+ open(SFD, $sfdfile)
+ || die("$prog: can't open \`$sfdfile': $!\n");
+
+ my $line;
+ my $continuation = 0;
+ while (<SFD>) {
+ chop;
+
+ next if /^\s*$/;
+ next if /^#/;
+
+ if ($continuation) {
+ $line .= $_;
+ }
+ else {
+ $line = $_;
+ }
+ $continuation = 0;
+
+ if ($line =~ s/\\$//) {
+ $continuation = 1;
+ next;
+ }
+
+ $_ = $line;
+ my @field = split(" ");
+
+ my $suffix = $field[0];
+
+ shift(@field);
+ my $index = 0;
+
+ while (@field) {
+ if ($field[0] =~ /(.*):$/) {
+ $index = $1;
+ }
+ elsif ($field[0] =~ /(.*)_(.*)/) {
+ my $start = $1;
+ my $end = $2;
+ $start = oct($start) if ($start =~ /^0/);
+ $end = oct($end) if ($end =~ /^0/);
+ foreach my $i ($start .. $end) {
+ $sfdarray->[$i] = "$suffix/$index";
+ $index++;
+ }
+ }
+ else {
+ my $value = $field[0];
+ $value = oct($value) if ($value =~ /^0/);
+ $sfdarray->[$value] = "$suffix/$index";
+ $index++;
+ }
+ shift(@field);
+ }
+ }
+ close(SFD);
+}
+
+
+# Read an AFM file.
+#
+# $1: Name of the AFM file.
+# $2: Reference to array which maps glyph indices to glyph names.
+
+sub read_afmfile {
+ my ($afmfile, $maparray) = @_;
+
+ print("Reading metrics file \`$afmfile'\n");
+
+ open(AFM, $afmfile)
+ || die("$prog: can't open \`$afmfile': $!\n");
+
+ while (<AFM>) {
+ if (/^C \d+ ;/) {
+ / N (.*?) ;/;
+ push (@$maparray, $1);
+ }
+ }
+ close(AFM);
+}
+
+
+# eof
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/subfonts/sfd2uni.pl b/language/chinese/CJK/cjk-4.8.4/utils/subfonts/sfd2uni.pl
new file mode 100644
index 0000000000..a82a3cb10f
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/subfonts/sfd2uni.pl
@@ -0,0 +1,348 @@
+#! /usr/bin/perl -w
+#
+# This script creates virtual subfonts in Unicode encoding for a font
+# encoding given by a subfont definition file (which must use Unicode
+# code points).
+#
+# As prerequisites it needs the programs `tftopl' and `vptovf' which must be
+# in the path.
+#
+# Call the script as
+#
+# perl sfd2uni.pl sfd-file namestem uni-namestem codingscheme
+#
+# `sfd-file' is the subfont definition file, `namestem' is the name stem
+# of the subfonts defined in `sfd-file', and `uni-namestem' holds the prefix
+# for the Unicode subfonts. `codingscheme' (converted to uppercase) is used
+# for the CODINGSCHEME parameter in the resulting TFM files.
+#
+# `sfd2uni.pl' reads all TFM files from the font family with name stem
+# `namestem'.
+#
+# Example:
+#
+# perl sfd2uni.pl UKS-HLaTeX.sfd wmj uwmj HLATEX
+#
+# A collection of useful subfont definition files for CJK fonts can be found
+# in the ttf2pk package.
+
+# Copyright (C) 1994-2015 Werner Lemberg <wl@gnu.org>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program in doc/COPYING; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301 USA
+
+use strict;
+
+my $prog = $0;
+$prog =~ s@.*/@@;
+
+if ($#ARGV != 3) {
+ die("usage: $prog sfd-file namestem uni-namestem codingscheme\n");
+}
+
+my $sfdfile = $ARGV[0];
+my $namestem = $ARGV[1];
+my $uninamestem = $ARGV[2];
+my $codingscheme = $ARGV[3];
+
+
+# Read subfont definition file.
+
+my %sfd;
+my @subfonts;
+
+read_sfdfile($sfdfile, \%sfd, \@subfonts);
+
+
+# Read TFM files.
+
+my @unicmetrics;
+
+foreach my $sub (@subfonts) {
+ my $tfmname = "$namestem$sub.tfm";
+
+ read_tfmfile($tfmname, \@unicmetrics, \%sfd, $sub);
+}
+
+
+# Read FONTDIMEN block.
+
+my $fontdimen = read_fontdimen("$namestem$subfonts[0].tfm");
+
+
+# Write VPL files.
+
+my $index = 0;
+foreach my $i (0 .. 255) {
+ my @entries;
+
+ foreach my $j (0 .. 255) {
+ if (defined ($unicmetrics[$index])) {
+ push(@entries, "$j $unicmetrics[$index]");
+ }
+ $index++;
+ }
+
+ if ($#entries >= 0) {
+ write_vplfile($uninamestem . sprintf("%02x.vpl", $i), \@entries);
+ }
+}
+
+
+# Generate VF and TFM files, then remove the VPL files.
+
+my @vplfiles = glob("$uninamestem*.vpl");
+foreach my $vplfile (@vplfiles) {
+ print("Processing \`$vplfile'...\n");
+ my $arg = "vptovf $vplfile";
+ system($arg) == 0
+ || die("$prog: calling \`$arg' failed: $?");;
+ print("Removing \`$vplfile'...\n");
+ unlink($vplfile);
+}
+
+
+# Read an SFD file.
+#
+# $1: Name of the SFD file.
+# $2: Reference to the target hash file, mapping from the subfont index to
+# the character code. The format of the key value is the concatenation
+# of the subfont suffix, a space, and the index.
+# $3: Reference to a target array which holds the subfont suffixes.
+
+sub read_sfdfile {
+ my ($sfdfile, $sfdhash, $sfdarray) = @_;
+
+ print("Reading subfont definition file \`$sfdfile'...\n");
+
+ open(SFD, $sfdfile)
+ || die("$prog: can't open \`$sfdfile': $!\n");
+
+ my $line;
+ my $continuation = 0;
+ while (<SFD>) {
+ chop;
+
+ next if /^\s*$/;
+ next if /^#/;
+
+ if ($continuation) {
+ $line .= $_;
+ }
+ else {
+ $line = $_;
+ }
+ $continuation = 0;
+
+ if ($line =~ s/\\$//) {
+ $continuation = 1;
+ next;
+ }
+
+ $_ = $line;
+ my @field = split(" ");
+
+ my $suffix = $field[0];
+ push(@{$sfdarray}, $suffix);
+
+ shift(@field);
+ my $index = 0;
+
+ while (@field) {
+ if ($field[0] =~ /(.*):$/) {
+ $index = $1;
+ }
+ elsif ($field[0] =~ /(.*)_(.*)/) {
+ my $start = $1;
+ my $end = $2;
+ $start = oct($start) if ($start =~ /^0/);
+ $end = oct($end) if ($end =~ /^0/);
+ foreach my $i ($start .. $end) {
+ $sfdhash->{"$suffix $index"} = $i;
+ $index++;
+ }
+ }
+ else {
+ my $value = $field[0];
+ $value = oct($value) if ($value =~ /^0/);
+ $sfdhash->{"$suffix $index"} = $value;
+ $index++;
+ }
+ shift(@field);
+ }
+ }
+ close(SFD);
+}
+
+
+# Read TFM file.
+#
+# $1: Name of the TFM file.
+# $2: Reference to the target array holding metric information in the form
+# `<subfont> <subfont_index> <width> <heigth> <depth>'.
+# $3: Reference to a hash created by `read_sfdfile'.
+# $4: Subfont suffix.
+
+sub read_tfmfile {
+ my ($tfmfile, $unicarray, $sfdhash, $sub) = @_;
+
+ print("Processing metrics file \`$tfmfile'...\n");
+ my $arg = "tftopl $tfmfile > $tfmfile.pl";
+ system($arg) == 0
+ || die("$prog: calling \`$arg' failed: $?\n");
+
+ print("Reading property list file \`$tfmfile.pl'...\n");
+ open(PL, "$tfmfile.pl")
+ || die("$prog: can't open \`$tfmfile.pl': $!\n");
+
+ while (<PL>) {
+ my $index;
+ if (/^\(CHARACTER O (\d+)/) {
+ $index = oct($1);
+ }
+ elsif (/^\(CHARACTER C (.)/) {
+ $index = ord($1);
+ }
+ else {
+ next;
+ }
+
+ my $wd = "0";
+ my $ht = "0";
+ my $dp = "0";
+
+ $_ = <PL>;
+ if (/\(CHARWD R (.*)\)/) {
+ $wd = "$1";
+ $_ = <PL>;
+ }
+ if (/\(CHARHT R (.*)\)/) {
+ $ht = "$1";
+ $_ = <PL>;
+ }
+ if (/\(CHARDP R (.*)\)/) {
+ $dp = "$1";
+ }
+
+ if (defined ($sfdhash->{"$sub $index"})) {
+ $unicarray->[$sfdhash->{"$sub $index"}] = "$sub $index $wd $ht $dp";
+ }
+ }
+ close(PL);
+ print("Removing \`$tfmfile.pl'...\n");
+ unlink("$tfmfile.pl");
+}
+
+
+# Read FONTDIMEN block of a TFM file.
+#
+# $1: Name of the TFM file.
+#
+# Return the block as a string.
+
+sub read_fontdimen {
+ my ($tfmfile) = @_;
+
+ print("Processing metrics file \`$tfmfile'...\n");
+ my $arg = "tftopl $tfmfile > $tfmfile.pl";
+ system($arg) == 0
+ || die("$prog: calling \`$arg' failed: $?\n");
+
+ print("Reading property list file \`$tfmfile.pl'...\n");
+ open(PL, "$tfmfile.pl")
+ || die("$prog: can't open \`$tfmfile.pl': $!\n");
+
+ my $s = "";
+ my $have_fontdimen = 0;
+
+ while (<PL>) {
+ if (/^\(FONTDIMEN/) {
+ $have_fontdimen = 1;
+ }
+
+ if ($have_fontdimen) {
+ $s .= $_;
+
+ last if (/^ \)/);
+ }
+ }
+
+ close(PL);
+ print("Removing \`$tfmfile.pl'...\n");
+ unlink("$tfmfile.pl");
+
+ return $s;
+}
+
+
+# Write VPL file.
+#
+# $1: Name of the VPL file.
+# $2: Reference to list which holds the font entries. An entry has the
+# form `<idx> <subfont> <subfont_idx> <width> <height> <depth>'.
+
+sub write_vplfile {
+ my ($vplfile, $metricsarray) = @_;
+
+ my %subfonts;
+ my $subcount = 0;
+
+ foreach my $entry (@{$metricsarray}) {
+ my @field = split(" ", $entry);
+ my $subfont = $field[1];
+ if (!defined ($subfonts{$subfont})) {
+ $subfonts{$subfont} = $subcount;
+ $subcount++;
+ }
+ }
+
+ print("Writing virtual property list file \`$vplfile'...\n");
+
+ open(VPL, ">", $vplfile)
+ || die("$prog: can't open \`$vplfile': $!\n");
+ my $oldfh = select(VPL);
+
+ print("(VTITLE Created by \`$prog " . join(" ", @ARGV) . "')\n");
+ print("(FAMILY TEX-\U$uninamestem\E)\n");
+ print("(CODINGSCHEME \U$codingscheme\E)\n");
+ print $fontdimen;
+
+ foreach my $subfont
+ (sort { $subfonts{$a} <=> $subfonts{$b} } keys %subfonts) {
+ print("(MAPFONT D $subfonts{$subfont}\n");
+ print(" (FONTNAME $namestem$subfont)\n");
+ print(" )\n");
+ }
+
+ foreach my $entry (@{$metricsarray}) {
+ my ($index, $subnumber, $subindex, $wd, $ht, $dp) = split(" ", $entry);
+
+ print("(CHARACTER D $index\n");
+ print(" (CHARWD R $wd)\n");
+ print(" (CHARHT R $ht)\n");
+ print(" (CHARDP R $dp)\n");
+ print(" (MAP\n");
+ print(" (SELECTFONT D $subfonts{$subnumber})\n");
+ print(" (SETCHAR D $subindex)\n");
+ print(" )\n");
+ print(" )\n");
+ }
+
+ close(VPL);
+ select($oldfh);
+}
+
+
+# eof
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/subfonts/subfonts.pe b/language/chinese/CJK/cjk-4.8.4/utils/subfonts/subfonts.pe
new file mode 100644
index 0000000000..feb9d3a56c
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/subfonts/subfonts.pe
@@ -0,0 +1,95 @@
+# Generate CJK subfonts from master font.
+# The fonts are created in the current directory.
+#
+# $1: The master font (e.g., `bsmi00lp.ttf').
+# $2: The name stem for the subfonts (e.g., `bsmilp').
+# $3: The subfont definition file, mapping from Unicode to whatever
+# (e.g., `UBig5.sfd', which maps to Big 5).
+#
+# A collection of useful subfont definition files for CJK fonts can be found
+# in the ttf2pk package.
+
+# Copyright (C) 1994-2015 Werner Lemberg <wl@gnu.org>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program in doc/COPYING; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301 USA
+
+if (Strtol($version) < 20071105)
+ Print("Can't use FontForge version before 2007-11-05. Aborting.");
+ Quit(1);
+endif;
+
+if ($argc != 4)
+ Print("usage: [fontforge -script] ", $0, " master-font name-stem SFD-file");
+ Quit(1);
+endif;
+
+Print("Loading ", $1, "...");
+Open($1);
+
+if ($cidfontname != "")
+ CIDFlatten();
+endif;
+
+Reencode("ucs4");
+
+copyright = $copyright \
+ + Chr(10) + Chr(10) \
+ + "Subfont version " \
+ + Strftime("%F", 1, "C") \
+ + ".";
+SetFontNames("", "", "", "", copyright, "");
+
+Print("Ensure third order curves...");
+SetFontOrder(3);
+
+Print("Scaling to PostScript units...");
+ScaleToEm(900, 100);
+
+num_chars = CharCnt();
+count = 0;
+delta = 100;
+
+while (count + delta < num_chars)
+ Print(count, "/", num_chars - 1, ":");
+ Select(count, count + delta);
+
+ Print(" Add extrema...");
+ AddExtrema();
+
+ Print(" Simplifying outlines...");
+ Simplify(0, 2);
+
+ count += delta;
+endloop;
+
+Print(count, "/", num_chars - 1, ":");
+Select(count, num_chars - 1);
+
+Print(" Add extrema...");
+AddExtrema();
+
+Print(" Simplifying outlines...");
+Simplify(0, 2);
+
+SelectAll();
+
+# generate AFM and TFM files, no PS hints, and rounded PS coordinates
+Print("Generating subfonts...");
+Generate($2 + "%s.pfb", "", \
+ 0x1 | 0x100 | 0x10000 | 0x80000 | 0x200000, \
+ -1, $3);
+
+Quit(0);
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/subfonts/uni2sfd.pl b/language/chinese/CJK/cjk-4.8.4/utils/subfonts/uni2sfd.pl
new file mode 100644
index 0000000000..d28796c874
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/subfonts/uni2sfd.pl
@@ -0,0 +1,312 @@
+#! /usr/bin/perl -w
+#
+# This script creates virtual subfonts in a font encoding given by a subfont
+# definition file, based on Unicode subfonts.
+#
+# As prerequisites, it needs the programs `tftopl' and `vptovf' which must
+# be in the path.
+#
+# Call the script as
+#
+# perl uni2sfd.pl uni-namestem sfd-file namestem codingscheme
+#
+# `uni-namestem' is the namestem of the Unicode subfonts; `uni2sfd.pl'
+# appends the Unicode suffixes and reads the corresponding TFM files.
+# `sfd-file' is the subfont definition file which maps Unicode input
+# characters to the target subfont scheme using `namestem' as the namestem.
+# `codingscheme' gives the value for the CODINGSCHEME parameter in the
+# VF files (always converted to uppercase).
+#
+# Example:
+#
+# perl uni2sfd.pl bsmiu UBig5.sfd bsmilp cjkbig5
+#
+# A collection of useful subfont definition files for CJK fonts can be found
+# in the ttf2pk package.
+
+# Copyright (C) 1994-2015 Werner Lemberg <wl@gnu.org>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program in doc/COPYING; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301 USA
+
+use strict;
+
+my $prog = $0;
+$prog =~ s@.*/@@;
+
+if ($#ARGV != 3) {
+ die("usage: $prog uni-namestem sfd-file namestem codingscheme\n");
+}
+
+my $uninamestem = $ARGV[0];
+my $sfdfile = $ARGV[1];
+my $namestem = $ARGV[2];
+my $codingscheme = $ARGV[3];
+
+
+# Read subfont definition file.
+
+my %sfd;
+my @subfonts;
+
+read_sfdfile($sfdfile, \%sfd, \@subfonts);
+
+
+# Read TFM files.
+
+my @unimetrics;
+
+foreach my $sub (0 .. 0xFF) {
+ my $suffix = sprintf("%02x", $sub);
+ my $tfmname = "$uninamestem$suffix.tfm";
+
+ if (-f $tfmname) {
+ read_tfmfile($tfmname, \@unimetrics, $suffix);
+ }
+}
+
+
+# Write VPL files.
+
+foreach my $sub (@subfonts) {
+ my @entries;
+
+ foreach my $i (0 .. 255) {
+ if (defined ($sfd{"$sub $i"})) {
+ my $index = $sfd{"$sub $i"};
+ if (defined ($unimetrics[$index])) {
+ push(@entries, "$i $index $unimetrics[$index]");
+ }
+ }
+ }
+
+ if ($#entries >= 0) {
+ write_vplfile("$namestem$sub.vpl", \@entries);
+ }
+}
+
+
+# Generate VF and TFM files, then remove the VPL files.
+
+my @vplfiles = glob("$namestem*.vpl");
+foreach my $vplfile (@vplfiles) {
+ print("Processing \`$vplfile'...\n");
+ my $arg = "vptovf $vplfile";
+ system($arg) == 0
+ || die("$prog: calling \`$arg' failed: $?\n");
+ print("Removing \`$vplfile'...\n");
+ unlink($vplfile);
+}
+
+
+# Read an SFD file.
+#
+# $1: Name of the SFD file.
+# $2: Reference to the target hash file, mapping from the character code
+# to the subfont index. The format of the key value is the
+# concatenation of the subfont suffix, a space, and the index.
+# $3: Reference to a target array which holds the subfont suffixes.
+
+sub read_sfdfile {
+ my ($sfdfile, $sfdhash, $sfdarray) = @_;
+
+ print("Reading subfont definition file \`$sfdfile'...\n");
+
+ open(SFD, $sfdfile)
+ || die("$prog: can't open \`$sfdfile': $!\n");
+
+ my $line;
+ my $continuation = 0;
+ while (<SFD>) {
+ chop;
+
+ next if /^\s*$/;
+ next if /^#/;
+
+ if ($continuation) {
+ $line .= $_;
+ }
+ else {
+ $line = $_;
+ }
+ $continuation = 0;
+
+ if ($line =~ s/\\$//) {
+ $continuation = 1;
+ next;
+ }
+
+ $_ = $line;
+ my @field = split(" ");
+
+ my $suffix = $field[0];
+ push(@{$sfdarray}, $suffix);
+
+ shift(@field);
+ my $index = 0;
+
+ while (@field) {
+ if ($field[0] =~ /(.*):$/) {
+ $index = $1;
+ }
+ elsif ($field[0] =~ /(.*)_(.*)/) {
+ my $start = $1;
+ my $end = $2;
+ $start = oct($start) if ($start =~ /^0/);
+ $end = oct($end) if ($end =~ /^0/);
+ foreach my $i ($start .. $end) {
+ $sfdhash->{"$suffix $index"} = $i;
+ $index++;
+ }
+ }
+ else {
+ my $value = $field[0];
+ $value = oct($value) if ($value =~ /^0/);
+ $sfdhash->{"$suffix $index"} = $value;
+ $index++;
+ }
+ shift(@field);
+ }
+ }
+ close(SFD);
+}
+
+
+# Read TFM file.
+#
+# $1: Name of the TFM file.
+# $2: Reference to the target array holding metric information in the form
+# `<width> <heigth> <depth>'.
+# $3: Subfont suffix.
+
+sub read_tfmfile {
+ my ($tfmfile, $unicarray, $suffix) = @_;
+
+ print("Processing metrics file \`$tfmfile'...\n");
+ my $arg = "tftopl $tfmfile > $tfmfile.pl";
+ system($arg) == 0
+ || die("$prog: calling \`$arg' failed: $?\n");
+
+ print("Reading property list file \`$tfmfile.pl'...\n");
+ open(PL, "$tfmfile.pl")
+ || die("$prog: can't open \`$tfmfile.pl': $!\n");
+
+ while (<PL>) {
+ my $idx;
+ if (/^\(CHARACTER O (\d+)/) {
+ $idx = oct($1);
+ }
+ elsif (/^\(CHARACTER C (.)/) {
+ $idx = ord($1);
+ }
+ else {
+ next;
+ }
+ $idx += hex($suffix) * 256;
+
+ my $wd = "0";
+ my $ht = "0";
+ my $dp = "0";
+
+ $_ = <PL>;
+ if (/\(CHARWD R (.*)\)/) {
+ $wd = "$1";
+ $_ = <PL>;
+ }
+ if (/\(CHARHT R (.*)\)/) {
+ $ht = "$1";
+ $_ = <PL>;
+ }
+ if (/\(CHARDP R (.*)\)/) {
+ $dp = "$1";
+ }
+
+ $unicarray->[$idx] = "$wd $ht $dp";
+ }
+ close(PL);
+ print("Removing \`$tfmfile.pl'...\n");
+ unlink("$tfmfile.pl");
+}
+
+
+# Write VPL file.
+#
+# $1: Name of the VPL file.
+# $2: Reference to list which holds the font entries. An entry has the
+# form `<index> <Unicode> <width> <height> <depth>'.
+
+sub write_vplfile {
+ my ($vplfile, $glypharray) = @_;
+
+ my %subfonts;
+ my $subcount = 0;
+
+ foreach my $entry (@{$glypharray}) {
+ my @field = split(" ", $entry);
+ my $subfont = int($field[1] / 256);
+ if (!defined ($subfonts{$subfont})) {
+ $subfonts{$subfont} = $subcount;
+ $subcount++;
+ }
+ }
+
+ print("Writing virtual property list file \`$vplfile'...\n");
+
+ open(VPL, ">", $vplfile)
+ || die("$prog: can't open \`$vplfile': $!\n");
+ my $oldfh = select(VPL);
+
+ print("(VTITLE Created by \`$prog " . join(" ", @ARGV) . "')\n");
+ print("(FAMILY TEX-\U$namestem\E)\n");
+ print("(CODINGSCHEME \U$codingscheme\E)\n");
+ print("(FONTDIMEN\n");
+ print(" (SPACE R 0.5)\n");
+ print(" (XHEIGHT R 0.4)\n");
+ print(" (QUAD R 1)\n");
+ print(" )\n");
+
+ foreach my $subfont
+ (sort { $subfonts{$a} <=> $subfonts{$b} } keys %subfonts) {
+ print("(MAPFONT D $subfonts{$subfont}\n");
+ print(" (FONTNAME $uninamestem" . sprintf("%02x", $subfont) . ")\n");
+ print(" )\n");
+ }
+
+ foreach my $entry (@{$glypharray}) {
+ my @field = split(" ", $entry);
+ my $index = $field[0];
+ my $subnumber = $subfonts{int($field[1] / 256)};
+ my $subindex = $field[1] % 256;
+ my $width = $field[2];
+ my $height = $field[3];
+ my $depth = $field[4];
+
+ print("(CHARACTER D $index\n");
+ print(" (CHARWD R $width)\n");
+ print(" (CHARHT R $height)\n");
+ print(" (CHARDP R $depth)\n");
+ print(" (MAP\n");
+ print(" (SELECTFONT D $subnumber)\n");
+ print(" (SETCHAR D $subindex)\n");
+ print(" )\n");
+ print(" )\n");
+ }
+
+ close(VPL);
+ select($oldfh);
+}
+
+
+# eof
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/subfonts/vertical.pe b/language/chinese/CJK/cjk-4.8.4/utils/subfonts/vertical.pe
new file mode 100644
index 0000000000..a10faef088
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/subfonts/vertical.pe
@@ -0,0 +1,108 @@
+# Generate a font which contains vertical glyph representations.
+# The font is created in the current directory.
+#
+# $1: The master font (e.g., `bsmi00lp.ttf').
+# $2: The name of the vertical font (e.g., `bsmilpv').
+
+# Copyright (C) 1994-2007 Werner Lemberg <wl@gnu.org>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program in doc/COPYING; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301 USA
+
+if (Strtol($version) < 20071105)
+ Print("Can't use FontForge version before 2007-11-05. Aborting.";
+ Quit(1);
+endif;
+
+if ($argc != 3)
+ Print("usage: [fontforge -script] ", $0, " master-font vertical-fontname");
+ Quit(1);
+endif;
+
+Print("Loading ", $1, "...");
+Open($1);
+
+fontname = $2;
+fullname = $fullname + " vertical";
+copyright = $copyright \
+ + Chr(10) + Chr(10) \
+ + "Vertical glyph representations version " \
+ + Strftime("%F", 1, "C") \
+ + ".";
+SetFontNames(fontname, "", fullname, "", copyright, "");
+
+SelectAll();
+ApplySubstitution("*", "*", "vert");
+
+if (!$fontchanged)
+ Print("No vertical glyph representation forms found.");
+ Quit(1);
+endif;
+
+SelectChanged();
+
+SelectInvert();
+DetachAndRemoveGlyphs();
+
+Print("Ensure third order curves...");
+SetFontOrder(3);
+
+Print("Scaling to PostScript units...");
+ScaleToEm(900, 100);
+
+num_chars = CharCnt();
+count = 0;
+delta = 100;
+
+while (count + delta < num_chars)
+ Print(count, "/", num_chars - 1, ":");
+ Select(count, count + delta);
+
+ Print(" Add extrema...");
+ AddExtrema();
+
+ Print(" Simplifying outlines...");
+ Simplify(0, 2);
+
+ count += delta;
+endloop;
+
+Print(count, "/", num_chars - 1, ":");
+Select(count, num_chars - 1);
+
+Print(" Add extrema...");
+AddExtrema();
+
+Print(" Simplifying outlines...");
+Simplify(0, 2);
+
+SelectAll();
+foreach
+ unicode = GlyphInfo("Unicode");
+ if (unicode > 0)
+ SetUnicodeValue(unicode);
+ name = GlyphInfo("Name");
+ SetGlyphName(name + ".vert", 0);
+ endif
+endloop;
+
+Reencode("original");
+
+# generate AFM and TFM files, no PS hints, and rounded PS coordinates
+Print("Generating font...");
+Generate($2 + ".pfb", "", \
+ 0x1 | 0x100 | 0x10000 | 0x80000 | 0x200000);
+
+Quit(0);
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/subfonts/vertref.pe b/language/chinese/CJK/cjk-4.8.4/utils/subfonts/vertref.pe
new file mode 100644
index 0000000000..63533f9473
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/subfonts/vertref.pe
@@ -0,0 +1,121 @@
+# Generate a font with glyphs which have vertical glyph representations (but
+# don't include the vertical glyph representations itself). This is used by
+# the perl script `makefdx.pl' to create an FDX file as used by the CJK
+# package for LaTeX.
+#
+# The font is created in the current directory.
+#
+# $1: The master font (e.g., `bsmi00lp.ttf').
+# $2: The name of the target font (e.g., `bsmilpvr').
+
+# Copyright (C) 1994-2007 Werner Lemberg <wl@gnu.org>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program in doc/COPYING; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301 USA
+
+if (Strtol($version) < 20071105)
+ Print("Can't use FontForge version before 2007-11-05. Aborting.";
+ Quit(1);
+endif;
+
+if ($argc != 3)
+ Print("usage: [fontforge -script] ", $0, " master-font fontname");
+ Quit(1);
+endif;
+
+Print("Loading ", $1, "...");
+Open($1);
+
+fontname = $2;
+fullname = $fullname + " vertical reference";
+copyright = $copyright \
+ + Chr(10) + Chr(10) \
+ + "Vertical glyph reference font version " \
+ + Strftime("%F", 1, "C") \
+ + ".";
+SetFontNames(fontname, "", fullname, "", copyright, "");
+
+lookups = GetLookups("GSUB");
+
+i = 0;
+result = -1;
+while (i < SizeOf(lookups))
+ if (Strstr(lookups[i], "'vert'") >= 0)
+ result = i;
+ endif;
+ i++;
+endloop;
+
+if (result == -1)
+ Print("This font doesn't contain a GSUB table with a `vert' feature.");
+ Quit(1);
+endif;
+
+subtables = GetLookupSubtables(lookups[result]);
+
+i = 0;
+result = -1;
+while (i < SizeOf(subtables))
+ if (Strstr(subtables[i], "'vert'") >= 0)
+ result = i;
+ endif;
+ i++;
+endloop;
+
+SelectByPosSub(subtables[result], 1);
+
+SelectInvert();
+DetachAndRemoveGlyphs();
+
+Print("Ensure third order curves...");
+SetFontOrder(3);
+
+Print("Scaling to PostScript units...");
+ScaleToEm(900, 100);
+
+num_chars = CharCnt();
+count = 0;
+delta = 100;
+
+while (count + delta < num_chars)
+ Print(count, "/", num_chars - 1, ":");
+ Select(count, count + delta);
+
+ Print(" Add extrema...");
+ AddExtrema();
+
+ Print(" Simplifying outlines...");
+ Simplify(0, 2);
+
+ count += delta;
+endloop;
+
+Print(count, "/", num_chars - 1, ":");
+Select(count, num_chars - 1);
+
+Print(" Add extrema...");
+AddExtrema();
+
+Print(" Simplifying outlines...");
+Simplify(0, 2);
+
+Reencode("original");
+
+# generate AFM and TFM files, no PS hints, and rounded PS coordinates
+Print("Generating font...");
+Generate($2 + ".pfb", "", \
+ 0x1 | 0x100 | 0x10000 | 0x80000 | 0x200000);
+
+Quit(0);
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/thaifont/texmf/dvips/garuda-c90/config.garuda-c90 b/language/chinese/CJK/cjk-4.8.4/utils/thaifont/texmf/dvips/garuda-c90/config.garuda-c90
new file mode 100644
index 0000000000..69e0d59326
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/thaifont/texmf/dvips/garuda-c90/config.garuda-c90
@@ -0,0 +1 @@
+p +garuda-c90.map
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/thaifont/texmf/dvips/norasi-c90/config.norasi-c90 b/language/chinese/CJK/cjk-4.8.4/utils/thaifont/texmf/dvips/norasi-c90/config.norasi-c90
new file mode 100644
index 0000000000..655dace2ba
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/thaifont/texmf/dvips/norasi-c90/config.norasi-c90
@@ -0,0 +1 @@
+p +norasi-c90.map
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/thaifont/texmf/fonts/enc/dvips/thai/c90.enc b/language/chinese/CJK/cjk-4.8.4/utils/thaifont/texmf/fonts/enc/dvips/thai/c90.enc
new file mode 100644
index 0000000000..03fc48b9fa
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/thaifont/texmf/fonts/enc/dvips/thai/c90.enc
@@ -0,0 +1,334 @@
+%!PS-Adobe-3.0 Resource-Encoding
+% @psencodingfile{
+% author = "See file c90.etx",
+% version = "See file c90.etx",
+% date = "generated 2005/07/04",
+% filename = "c90.enc",
+% email = "See file c90.etx",
+% codetable = "ISO/ASCII",
+% checksum = "",
+% abstract = "This is a postscript encoding file, automatically generated by fontinst from c90.etx."
+% }
+
+% Copyright (C) 1994-2015 Werner Lemberg <wl@gnu.org>
+%
+% This program is free software; you can redistribute it and/or modify
+% it under the terms of the GNU General Public License as published by
+% the Free Software Foundation; either version 2 of the License, or
+% (at your option) any later version.
+%
+% This program is distributed in the hope that it will be useful,
+% but WITHOUT ANY WARRANTY; without even the implied warranty of
+% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+% GNU General Public License for more details.
+%
+% You should have received a copy of the GNU General Public License
+% along with this program in doc/COPYING; if not, write to the Free
+% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+% MA 02110-1301 USA
+
+% Created by: tex garuda
+% Created using: \etxtoenc{c90}{c90}
+
+% This file should be installed somewhere that your DVI
+% to postscript driver looks for files. It is needed for
+% reencoding some font you have transformed.
+
+% After installing this file, you should add the following
+% line (minus %) to your finstmsc.rc file:
+% \declarepsencoding{c90}{C90Encoding}{\download{c90.enc}}
+
+%%BeginResource: encoding C90Encoding
+/C90Encoding [
+% 0
+/Gamma
+/Delta
+/Theta
+/Lambda
+/Xi
+/Pi
+/Sigma
+/Upsilon
+% 8
+/Phi
+/Psi
+/Omega
+/endash
+/emdash
+/quotesingle
+/exclamdown
+/questiondown
+% 16
+/dotlessi
+/quotedblleft
+/grave
+/acute
+/caron
+/breve
+/macron
+/ring
+% 24
+/cedilla
+/germandbls
+/ae
+/oe
+/oslash
+/AE
+/OE
+/Oslash
+% 32
+/.notdef
+/exclam
+/quotedblright
+/numbersign
+/dollar
+/percent
+/ampersand
+/quoteright
+% 40
+/parenleft
+/parenright
+/asterisk
+/plus
+/comma
+/hyphen
+/period
+/slash
+% 48
+/zero
+/one
+/two
+/three
+/four
+/five
+/six
+/seven
+% 56
+/eight
+/nine
+/colon
+/semicolon
+/less
+/equal
+/greater
+/question
+% 64
+/at
+/A
+/B
+/C
+/D
+/E
+/F
+/G
+% 72
+/H
+/I
+/J
+/K
+/L
+/M
+/N
+/O
+% 80
+/P
+/Q
+/R
+/S
+/T
+/U
+/V
+/W
+% 88
+/X
+/Y
+/Z
+/bracketleft
+/backslash
+/bracketright
+/circumflex
+/underscore
+% 96
+/quoteleft
+/a
+/b
+/c
+/d
+/e
+/f
+/g
+% 104
+/h
+/i
+/j
+/k
+/l
+/m
+/n
+/o
+% 112
+/p
+/q
+/r
+/s
+/t
+/u
+/v
+/w
+% 120
+/x
+/y
+/z
+/braceleft
+/bar
+/braceright
+/tilde
+/dieresis
+% 128
+/uni0E38
+/uni0E39
+/uni0E3A
+/uni0E48.low_left
+/uni0E49.low_left
+/uni0E4A.low_left
+/uni0E4B.low_left
+/uni0E4C.low_left
+% 136
+/uni0E48.low
+/uni0E49.low
+/uni0E4A.low
+/uni0E4B.low
+/uni0E4C.low
+/.notdef
+/.notdef
+/uni0E4D.left
+% 144
+/uni0E0D.descless
+/.notdef
+/uni0E31.left
+/uni0E47.left
+/uni0E34.left
+/uni0E35.left
+/uni0E36.left
+/uni0E37.left
+% 152
+/uni0E48.left
+/uni0E49.left
+/uni0E4A.left
+/uni0E4B.left
+/uni0E4C.left
+/.notdef
+/.notdef
+/uni0E10.descless
+% 160
+/.notdef
+/uni0E01
+/uni0E02
+/uni0E03
+/uni0E04
+/uni0E05
+/uni0E06
+/uni0E07
+% 168
+/uni0E08
+/uni0E09
+/uni0E0A
+/uni0E0B
+/uni0E0C
+/uni0E0D
+/uni0E0E
+/uni0E0F
+% 176
+/uni0E10
+/uni0E11
+/uni0E12
+/uni0E13
+/uni0E14
+/uni0E15
+/uni0E16
+/uni0E17
+% 184
+/uni0E18
+/uni0E19
+/uni0E1A
+/uni0E1B
+/uni0E1C
+/uni0E1D
+/uni0E1E
+/uni0E1F
+% 192
+/uni0E20
+/uni0E21
+/uni0E22
+/uni0E23
+/uni0E24
+/uni0E25
+/uni0E26
+/uni0E27
+% 200
+/uni0E28
+/uni0E29
+/uni0E2A
+/uni0E2B
+/uni0E2C
+/uni0E2D
+/uni0E2E
+/uni0E2F
+% 208
+/uni0E30
+/uni0E31
+/uni0E32
+/uni0E33
+/uni0E34
+/uni0E35
+/uni0E36
+/uni0E37
+% 216
+/uni0E38
+/uni0E39
+/uni0E3A
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/uni0E3F
+% 224
+/uni0E40
+/uni0E41
+/uni0E42
+/uni0E43
+/uni0E44
+/uni0E45
+/uni0E46
+/uni0E47
+% 232
+/uni0E48
+/uni0E49
+/uni0E4A
+/uni0E4B
+/uni0E4C
+/uni0E4D
+/uni0E4E
+/uni0E4F
+% 240
+/uni0E50
+/uni0E51
+/uni0E52
+/uni0E53
+/uni0E54
+/uni0E55
+/uni0E56
+/uni0E57
+% 248
+/uni0E58
+/uni0E59
+/uni0E5A
+/uni0E5B
+/uni0E38.low
+/uni0E39.low
+/uni0E3A.low
+/.notdef
+] def
+%%EndResource
+
+% End of file c90.enc.
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/thaifont/texmf/fonts/map/dvips/garuda-c90/garuda-c90.map b/language/chinese/CJK/cjk-4.8.4/utils/thaifont/texmf/fonts/map/dvips/garuda-c90/garuda-c90.map
new file mode 100644
index 0000000000..0c1af91bfe
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/thaifont/texmf/fonts/map/dvips/garuda-c90/garuda-c90.map
@@ -0,0 +1,4 @@
+fgdr8z Garuda " C90Encoding ReEncodeFont " <c90.enc <garuda.pfb
+fgdb8z Garuda-Bold " C90Encoding ReEncodeFont " <c90.enc <garuda_b.pfb
+fgdo8z Garuda-Oblique " C90Encoding ReEncodeFont " <c90.enc <garuda_o.pfb
+fgdbo8z Garuda-BoldOblique " C90Encoding ReEncodeFont " <c90.enc <garuda_bo.pfb
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/thaifont/texmf/fonts/map/dvips/norasi-c90/norasi-c90.map b/language/chinese/CJK/cjk-4.8.4/utils/thaifont/texmf/fonts/map/dvips/norasi-c90/norasi-c90.map
new file mode 100644
index 0000000000..6d6a7790fd
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/thaifont/texmf/fonts/map/dvips/norasi-c90/norasi-c90.map
@@ -0,0 +1,4 @@
+ftnr8z Norasi " C90Encoding ReEncodeFont " <c90.enc <norasi.pfb
+ftnb8z Norasi-Bold " C90Encoding ReEncodeFont " <c90.enc <norasi_b.pfb
+ftni8z Norasi-Italic " C90Encoding ReEncodeFont " <c90.enc <norasi_i.pfb
+ftnbi8z Norasi-BoldItalic " C90Encoding ReEncodeFont " <c90.enc <norasi_bi.pfb
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/thaifont/texmf/fonts/tfm/public/garuda-c90/fgdb8z.tfm b/language/chinese/CJK/cjk-4.8.4/utils/thaifont/texmf/fonts/tfm/public/garuda-c90/fgdb8z.tfm
new file mode 100644
index 0000000000..65f79a03d9
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/thaifont/texmf/fonts/tfm/public/garuda-c90/fgdb8z.tfm
Binary files differ
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/thaifont/texmf/fonts/tfm/public/garuda-c90/fgdbo8z.tfm b/language/chinese/CJK/cjk-4.8.4/utils/thaifont/texmf/fonts/tfm/public/garuda-c90/fgdbo8z.tfm
new file mode 100644
index 0000000000..10f04c2013
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/thaifont/texmf/fonts/tfm/public/garuda-c90/fgdbo8z.tfm
Binary files differ
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/thaifont/texmf/fonts/tfm/public/garuda-c90/fgdo8z.tfm b/language/chinese/CJK/cjk-4.8.4/utils/thaifont/texmf/fonts/tfm/public/garuda-c90/fgdo8z.tfm
new file mode 100644
index 0000000000..729bb4f89e
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/thaifont/texmf/fonts/tfm/public/garuda-c90/fgdo8z.tfm
Binary files differ
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/thaifont/texmf/fonts/tfm/public/garuda-c90/fgdr8z.tfm b/language/chinese/CJK/cjk-4.8.4/utils/thaifont/texmf/fonts/tfm/public/garuda-c90/fgdr8z.tfm
new file mode 100644
index 0000000000..7e7ab8eb41
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/thaifont/texmf/fonts/tfm/public/garuda-c90/fgdr8z.tfm
Binary files differ
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/thaifont/texmf/fonts/tfm/public/norasi-c90/ftnb8z.tfm b/language/chinese/CJK/cjk-4.8.4/utils/thaifont/texmf/fonts/tfm/public/norasi-c90/ftnb8z.tfm
new file mode 100644
index 0000000000..29f8047108
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/thaifont/texmf/fonts/tfm/public/norasi-c90/ftnb8z.tfm
Binary files differ
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/thaifont/texmf/fonts/tfm/public/norasi-c90/ftnbi8z.tfm b/language/chinese/CJK/cjk-4.8.4/utils/thaifont/texmf/fonts/tfm/public/norasi-c90/ftnbi8z.tfm
new file mode 100644
index 0000000000..be784971fc
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/thaifont/texmf/fonts/tfm/public/norasi-c90/ftnbi8z.tfm
Binary files differ
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/thaifont/texmf/fonts/tfm/public/norasi-c90/ftni8z.tfm b/language/chinese/CJK/cjk-4.8.4/utils/thaifont/texmf/fonts/tfm/public/norasi-c90/ftni8z.tfm
new file mode 100644
index 0000000000..202a7c5bbe
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/thaifont/texmf/fonts/tfm/public/norasi-c90/ftni8z.tfm
Binary files differ
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/thaifont/texmf/fonts/tfm/public/norasi-c90/ftnr8z.tfm b/language/chinese/CJK/cjk-4.8.4/utils/thaifont/texmf/fonts/tfm/public/norasi-c90/ftnr8z.tfm
new file mode 100644
index 0000000000..866eac16ba
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/thaifont/texmf/fonts/tfm/public/norasi-c90/ftnr8z.tfm
Binary files differ
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/thaifont/tools/INSTALL b/language/chinese/CJK/cjk-4.8.4/utils/thaifont/tools/INSTALL
new file mode 100644
index 0000000000..21e0236826
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/thaifont/tools/INSTALL
@@ -0,0 +1,333 @@
+Installation of Thai fonts for TeX with fontinst
+------------------------------------------------
+
+0. The files `c90.etx' and `c90.mtx' must be in the TEXINPUTS path.
+ Normally, the current directory also works. Note that you need
+ fontinst version 1.918 or higher.
+
+1. In case your Thai font doesn't come with an AFM metrics file you
+ must extract it from the font using tools like `type1afm' (from the
+ t1lib package) or ghostscript's `ps2afm' program.
+
+2. Create a control file for fontinst.
+
+ Example:
+
+ Let us assume that we have the following AFM files for the Garuda
+ family, using version 0.5 of the `fonts-tlwg' project:
+
+ garuda.afm
+ garuda_b.afm
+ garuda_o.afm
+ garuda_bo.afm
+
+ You should use glyph names compliant to Karl Berry's `fontname'
+ scheme. For `garuda', this could be `fgdr8z': `f' is the foundry
+ (`small foundry'), `gd' is the typeface name, `r' means the
+ weight (`regular'), and `8z' the encoding (`8bit user').
+ Similarly, suitable names for the other fonts are `fgdb8z',
+ `fgdo8z', and `fgdbo8z', respectively.
+
+ Fonts with `f' as the supplier should go into a `public' font
+ directory. The typeface `Garuda' already exists in the latest
+ fontname version (typeface.map version 4-Jul-2005 at the time of
+ writing), the associated directory is `garuda'. Please consult
+ the `fontname' standard for more information.
+
+ A template for the fontinst control file can be found as
+ `garuda-c90.fontinst' which looks like the following.
+
+ ==== garuda-c90.fontinst ====
+
+ \input fontinst.sty
+
+ \needsfontinstversion{1.918}
+
+
+ % we explicitly set all slots in the encoding, so provide all
+ % glyph names in AFM files equally (this is, don't create
+ % `<glyph>-not' names)
+ \let\setnotglyph \setrawglyph
+
+ % we want warnings for missing glyphs
+ \fontinstcc
+ \add_to\pre_fourth_etx_pass_hook{
+ \def\do_slot{
+ \if_undefined{g-\slot_name}\then
+ \fontinstwarningnoline{fontinst}
+ {missing~glyph~`\slot_name'\space
+ for~slot~\the\slot_number\space
+ in~font~`\out_filename'}
+ \fi
+ \do_character
+ }
+ }
+ \normalcc
+
+
+ % create PL files and an FD file
+ \installfonts
+ \setint{fontdimen(2)}{500} % SPACE
+ \setint{fontdimen(3)}{300} % STRETCH
+ \setint{fontdimen(4)}{100} % SHRINK
+ \setint{fontdimen(6)}{1000} % QUAD
+ \setint{fontdimen(7)}{0} % EXTRASPACE
+
+ \installrawfont{fdbr8z}{garuda,c90}{c90}
+ {C90}{garuda}{m}{n}{}
+ \installrawfont{fdbb8z}{garuda_b,c90}{c90}
+ {C90}{garuda}{bx}{n}{}
+ \installrawfont{fdbbo8z}{garuda_bo,c90}{c90}
+ {C90}{garuda}{bx}{sl}{}
+ \installrawfont{fdbo8z}{garuda_o,c90}{c90}
+ {C90}{garuda}{m}{sl}{}
+ \endinstallfonts
+
+
+ \input finstmsc.sty
+
+
+ % create the c90.enc file
+ \installfonts
+ % the `makeenc' flag is used in c90.etx
+ \setint{makeenc}{1}
+ \setstr{encodingname}{C90Encoding}
+ \etxtoenc{c90}{c90}
+ \endinstallfonts
+
+ \end
+
+ ==== garuda-c90.fontinst ====
+
+ Some explanations.
+
+ - The control files also create MTX and PL files for the AFM
+ files (e.g., garuda.mtx and garuda.pl) which aren't needed and
+ can be deleted.
+
+ - AFM files don't provide all necessary font dimensions for TeX.
+ Consequently, you have to set some dimensions manually. The
+ `SPACE' value must be larger than for a Latin font; a
+ reasonable value is 500. You should increase the `STRETCH'
+ value also -- some tests have shown that 300 yields good
+ results, but this depends on the font. `EXTRASPACE' can be set
+ to zero since you must always use TeX's \frenchspacing command
+ for Thai. All other font dimension values given above are
+ default values and can stay unmodified.
+
+ There is nothing for free: The changed font dimensions improve
+ spacing between Thai words, but Latin words are far too widely
+ spaced.
+
+ - The arguments to \installrawfont are as follows.
+
+ #1 The target font name.
+ #2 A comma separated list (without spaces) of metric
+ files. Above, the first one is the AFM file, the
+ second one is c90.mtx which sets up the three mandatory
+ alias glyph slots.
+ #3 The name of the encoding file (c90.etx).
+ #4-#7 The NFSS attributes for the font.
+ #8 The size command. If it is empty, `<->' is used.
+
+ - The second \installfonts...\endinstallfonts block creates an
+ encoding file.
+
+3. Run fontinst:
+
+ tex garuda-c90.fontinst
+
+ If you get warnings about missing glyphs which are critical (this
+ is, if they affect Thai characters), you have to configure fontinst
+ to use an alias file for glyph names. This is described below.
+
+4. Say
+
+ pltotf <PL-file>
+
+ for all target PL files to create TFM files.
+
+ Example:
+
+ pltotf fgdr8z
+ pltotf fgdb8z
+ pltotf fgdo8z
+ pltotf fgdbo8z
+
+ After the conversion, the PL files are no longer needed and can be
+ deleted. As mentioned above, the PL files created directly from the
+ AFM files need not be converted.
+
+5. Create a mapping file <font>.map for the PS fonts (which can be
+ used by both dvips and pdftex).
+
+ Example `garuda-c90.map' (the lines are split for readability only):
+
+ fgdr8z Garuda \
+ " C90Encoding ReEncodeFont " <c90.enc <garuda.pfb
+ fgdb8z Garuda-Bold \
+ " C90Encoding ReEncodeFont " <c90.enc <garuda_b.pfb
+ fgdo8z Garuda-Oblique \
+ " C90Encoding ReEncodeFont " <c90.enc <garuda_o.pfb
+ fgdbo8z Garuda-BoldOblique \
+ " C90Encoding ReEncodeFont " <c90.enc <garuda_bo.pfb
+
+ A proper entry for the mapping file (dvipdfm.map) of dvipdfm (and
+ dvipdfmx) looks like this:
+
+ fgdr8z c90 garuda
+ fgdb8z c90 garuda_b
+ fgdo8z c90 garuda_o
+ fgdbo8z c90 garuda_bo
+
+ Note that teTeX's (and TeXLive's) `updmap' script can automatically
+ convert a map line for dvips to a proper entry for dvipdfm and
+ dvipdfmx.
+
+6. There are two possibilities how to make the Thai fonts known to
+ dvips.
+
+ - Append the contents of the map file to `psfonts.map' (or the map
+ file specified in the configuration file of dvips, `config.ps',
+ with the `p' option). How to do this may vary depending on the
+ used TeX system; for example, teTeX and TeXLive both use a script
+ called `updmap' to maintain `psfonts.map'.
+
+ - Write a small file called config.<font> (e.g. `config.garuda-c90')
+ with the following line in it:
+
+ p +<map_file>
+
+ Example:
+
+ p +garuda-c90.map
+
+ Then you can use the `-P' command line option of dvips to include
+ the reencoded font. Example:
+
+ dvips -P garuda-c90 test.dvi
+
+7. After testing, install the font and its support files in your TeX
+ tree. In the following example, `TEXMF' denotes the location of
+ your (local) `texmf' directory (we assume a TeX installation
+ compliant to TDS 1.1 as provided recent versions of TeXLive and
+ teTeX).
+
+ garuda.pfb -> TEXMF/fonts/type1/public/garuda/
+ garuda.afm -> TEXMF/fonts/afm/public/garuda/
+ ...
+
+ c90.enc -> TEXMF/fonts/enc/dvips/thai/
+
+ garuda.map -> TEXMF/fonts/map/dvips/garuda-c90/
+ config.garuda -> TEXMF/dvips/garuda-c90/
+
+ fgdr8z.tfm -> TEXMF/fonts/tfm/public/garuda-c90/
+ ...
+
+ c90gar.fd -> TEXMF/tex/latex/CJK/thai/
+
+8. Run texhash or a similar program to update the TDS database if
+ necessary.
+
+
+You are done! With plain TeX, say e.g.
+
+ \font\thai = fgdr9z at 16pt
+
+to use the font \thai. This will typeset TIS-620 encoded Thai. Note,
+however, that you need CJK's cjk-enc.el for Emacs to insert proper
+inter-character glue and word breakpoints in case you want to typeset
+longer Thai phrases.
+
+
+Reencoding Thai fonts
+---------------------
+
+Older Thai fonts don't use proper glyph names, and recent ones
+probably use different suffixes; it is thus necessary to make fontinst
+aware of those names.
+
+A complete example can be found in the `dbtt-old' subdirectory (which
+can be used for the dbtt fonts from TeXLive 8 or earlier).
+
+a. Set up a file which contains all the aliases, using the \galias
+ macro. This file should have the extension `.tex'.
+
+ Example:
+
+ If glyph `endash' is represented with glyph name `ucircumflex' in
+ the font, use the following:
+
+ \galias{ucircumflex}{endash}
+
+b. Set up both ETX and MTX files which load the just created glyph
+ alias file. To do that, use the files `dbtt-old-alias.etx' and
+ `dbtt-old-alias.mtx' as templates. Leave everything unchanged
+ except the line with \input which should load your glyph alias
+ file.
+
+c. Set up a proper fontinst control file. Use `dbtt-old.fontinst' as
+ a template, replacing the `dbtt-old-alias' items in the
+ \installrawfont lines with the name of your MTX file. Similarly,
+ the three last lines in the second \installfonts...\endinstallfonts
+ block should be adjusted accordingly.
+
+d. Continue with item 3 above. Note that in item 5, you have to use
+ not `C90Encoding' but the encoding name defined with the \setstr
+ line in your fontinst control file.
+
+
+Using different LaTeX encodings for Thai
+----------------------------------------
+
+The used encoding scheme within the CJK package for Thai is `C90', but
+it is straightforward to adapt it to other Thai encodings like `LTH'
+by reordering the `\setslot ... \endsetslot' blocks in the file
+`c90.etx'.
+
+Currently, only CJK's cjk-enc.el output filter for Emacs needs the
+Thai ligatures -- other Thai word segmentation programs like `swath'
+or `cttex' already replace the input characters with proper glyph
+variants. Anyway, they don't harm, and it is on the TODO list of the
+thailatex maintainers to finally use those ligatures also.
+
+
+Printing c90.etx
+----------------
+
+It is possible to convert the main fontinst encoding file for Thai,
+c90.etx, into a printable document. To do so, you have to apply the
+patch below to the file `fontdoc.sty' (which is part of the fontinst
+package -- tested with fontinst version 1.926; newer versions have
+already been corrected and don't need this patch), then simply say
+
+ latex c90.etx
+
+
+====================================================================
+
+
+--- fontdoc.sty.old Mon Feb 9 21:28:59 2004
++++ fontdoc.sty Wed Jun 23 12:13:04 2004
+@@ -1052,7 +1052,7 @@
+ \x@cs\def{FD@lig-/LIG}#1#2{%
+ \FD@typeset@string{\slot@name}${}*{}$\typeset@glyph{#1}%
+ ${}\rightarrow{}$%
+- \FD@typeset@string{\slot@name}${}*{}$\typeset@glyph{#2}$%
++ \FD@typeset@string{\slot@name}${}*{}$\typeset@glyph{#2}%
+ }
+ \x@cs\def{FD@lig-LIG/}#1#2{%
+ \FD@typeset@string{\slot@name}${}*{}$\typeset@glyph{#1}%
+@@ -1085,7 +1085,7 @@
+ \FD@typeset@string{\slot@name}${}*{}$\typeset@glyph{#1}%
+ ${}\rightarrow{}$%
+ \FD@typeset@string{\slot@name}${}*{}$%
+- \typeset@glyph{#2}${}*\lfloor$\typeset@glyph{#1}$}
++ \typeset@glyph{#2}${}*\lfloor$\typeset@glyph{#1}}
+ \def\nextlarger#1{\Bheading{Next larger} \typeset@glyph{#1}}
+ \def\makerightboundary#1{%
+ \Bheading{Right boundary marker slot} designation \typeset@glyph{#1}%
+
+
+---End of INSTALL---
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/thaifont/tools/c90.etx b/language/chinese/CJK/cjk-4.8.4/utils/thaifont/tools/c90.etx
new file mode 100644
index 0000000000..56cb88c757
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/thaifont/tools/c90.etx
@@ -0,0 +1,2346 @@
+% c90.etx
+
+% Copyright (C) 1994-2015 Werner Lemberg <wl@gnu.org>
+%
+% This program is free software; you can redistribute it and/or modify
+% it under the terms of the GNU General Public License as published by
+% the Free Software Foundation; either version 2 of the License, or
+% (at your option) any later version.
+%
+% This program is distributed in the hope that it will be useful,
+% but WITHOUT ANY WARRANTY; without even the implied warranty of
+% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+% GNU General Public License for more details.
+%
+% You should have received a copy of the GNU General Public License
+% along with this program in doc/COPYING; if not, write to the Free
+% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+% MA 02110-1301 USA
+
+\relax
+\documentclass{article}
+
+\usepackage[specification]{fontdoc}[2001/06/01]
+\usepackage{textcomp}
+\usepackage{shortvrb}
+\usepackage{mflogo}
+\usepackage{multicol}
+\usepackage{url}
+
+\MakeShortVerb{\|}
+
+\newlength{\Stackwidth}
+
+\newcommand\StackAbove[2]{%
+ \settowidth{\Stackwidth}{$#1$}%
+ \vbox{\hbox{$#1$}%
+ \hbox to \Stackwidth{\hss $#2$\hss}}%
+}
+\newcommand\StackBelow[2]{%
+ \settowidth{\Stackwidth}{$#1$}%
+ \vtop{\hbox{$#1$}%
+ \hbox to \Stackwidth{\hss $#2$\hss}}%
+}
+
+\newcommand{\thaiclass}[1]{%
+ {\textit{#1}}%
+}
+\newcommand{\thaiclassx}[2]{%
+ \thaiclass{#1}%
+ \raisebox{-0.4ex}{{\footnotesize\textit{#2}}}%
+}
+\newcommand{\thaiclassxx}[3]{%
+ \thaiclassx{#1}{#2}%
+ \raisebox{-0.8ex}{{\tiny\textit{#3}}}%
+}
+
+
+\begin{document}
+
+\title{The \texttt{C90} encoding for Thai}
+\author{Werner Lemberg}
+\date{2005/07/04}
+\maketitle
+
+
+\section{Introduction}
+
+This file describes a font encoding for Thai, as presented in a
+TUGboat article~\cite{TUG-Thai}. The glyph names follow the Adobe
+Glyph List (AGL)~\cite{AGL} recommendations. Since most available
+Thai fonts neither use AGL glyph names nor follow the font encoding
+used here, you have to be careful in setting up a proper encoding
+vector. A specialty (for reasons explained below) is that three
+glyphs, namely |/uni0E38| (Thai character `sara u'), |/uni0E39| (Thai
+character `sara uu'), and |/uni0E3A| (Thai character `phinthu') must
+appear twice in the encoding; the additional glyph indices are |0x80|,
+|0x81|, and |0x82|, respectively.
+
+
+\section{Ligatures}
+The tricky part is implementing the ligatures. TeX's ligature
+mechanism only provides contextual patterns of length~2. Due to the
+very nature of the ETX format, ligatures aren't grouped into classes
+which makes this file rather long.
+
+Thai glyphs can be grouped functionally into base glyphs (which are
+spacing glyphs) and diacritics (which have zero advance width).
+Usually, diacritical glyphs represent either vowels or tone
+indicators, whereas base glyphs represent consonants -- I won't go
+into detail here; please read the Unicode standard~\cite{Unicode} or
+any introduction into the Thai script for more information.
+
+The general composing rules are as follows:
+
+\[
+ CV \longrightarrow \StackAbove{V}{C}\,,\quad
+ CT \longrightarrow \StackAbove{T}{C}\,,\quad
+ CVT \longrightarrow \StackAbove{\StackAbove{T}{V}}{C}\,,\quad
+ Cv \longrightarrow \StackBelow{C}{v}\,,\quad
+ CvT \longrightarrow \StackBelow{\StackAbove{T}{C}}{v}
+\]
+
+\noindent
+where $C$ represents a base consonant, $V$ an upper vowel, $v$ a lower
+vowel, and $T$ a tone mark. The tone mark always comes last.
+
+Sometimes you will find documents which have first the tone mark and
+then the vowel. In real Thai input systems, this error will be
+catched and fixed by reordering the characters according to the
+TIS-620 Thai encoding standard before any output is created. The
+ligatures given below are not able to handle such incorrect data, and
+you have to normalize it before using them.
+
+It depends on context where the diacritics are exactly positioned;
+some base glyphs have overlong ascenders or descenders, making it
+necessary to shift the diacritics vertically and horizontally.
+
+To complicate things, the Thai vowel `sara am' (TIS-620 code point
+|0xD3|, Unicode value |U+0E33|), which looks like the final nasal sign
+`nikhahit' (|0xED|, |U+0E4D|) followed by the vowel `sara aa' (|0xD2|,
+|U+0E32|), will be decomposed into these two glyphs for rendering.
+The difficulty is that we must position the tone mark of the
+\emph{previous} character properly! Thus we have
+
+\[
+ C + SM \longrightarrow \StackAbove{N}{C} + SA\,,\quad
+ C + T + SM \longrightarrow \StackAbove{\StackAbove{T}{N}}{C} + SA
+\]
+
+A last specialty (used for Sanskrit written in Thai) is that `sara aa'
+if it follows the independent vowel letter `ru' (|0xC4|, |U+0E24|) or
+`lu' (|0xC6|, |U+0E26|) is replaced with the `lakkhangyao' sign
+(|0xE5|, |U+0E45|).
+
+
+\section{Glyph Classes}
+
+To describe the patterns and rules we start with defining glyph
+classes.
+
+\begin{quote}
+ \begin{description}
+ \item[\thaiclassx{base}{normal}] Normal base glyphs without special
+ features.
+ \item[\thaiclassx{base}{desc}] Base glyphs with descender.
+ \item[\thaiclassx{base}{desclike}] These base glyphs consist of two
+ elements which look like a normal base glyph combined with a lower
+ vowel diacritic; the diacritic-like element will be omitted if
+ combined with a lower vowel.
+ \item[\thaiclassx{base}{asc}] Base glyphs with an ascender on the
+ right side.
+ \item[\thaiclassx{base}{indic}] The two independent vowels \emph{ru}
+ and \emph{lu}.
+ \item[\thaiclassx{base}{sign}] The sign \emph{lakkhangyao}.
+ \item[\thaiclassx{base}{sara am}] The vowel \emph{sara am}.
+ \item[\thaiclassx{base}{sara aa}] The vowel \emph{sara aa}.
+ \item[\thaiclass{lower}] Lower vowel diacritics.
+ \item[\thaiclassx{upper}{vowel}] Upper vowel diacritics.
+ \item[\thaiclassx{upper}{sign}] The \emph{nikhahit} final nasal
+ sign.
+ \item[\thaiclass{top}] Tone marks.
+ \end{description}
+\end{quote}
+
+Here the glyph variant classes:
+
+\begin{quote}
+ \begin{description}
+ \item[\thaiclassx{base}{descless}] The glyphs of class
+ \thaiclassx{base}{desclike} without the lower part.
+ \item[\thaiclassx{lower}{low}] The glyphs of class
+ \thaiclass{lower} shifted downwards.
+ \item[\thaiclassxx{upper}{vowel}{left}] The glyphs of class
+ \thaiclassx{upper}{vowel} shifted to the left.
+ \item[\thaiclassxx{upper}{sign}{left}] The glyphs of class
+ \thaiclassx{upper}{sign} shifted to the left.
+ \item[\thaiclassx{top}{left}] The glyphs of class
+ \thaiclass{top} shifted to the left.
+ \item[\thaiclassx{top}{low}] The glyphs of class
+ \thaiclass{top} shifted downwards.
+ \item[\thaiclassx{top}{low-left}] The glyphs of class
+ \thaiclass{top} shifted to the left and downwards.
+ \end{description}
+\end{quote}
+
+
+\section{Context Patterns}
+
+Using the glyph classes defined in the last section it is easy to
+describe the context patterns for base glyphs with diacritical signs.
+Surprisingly, these patterns are quite systematic. Patterns in
+table~\ref{table:context-dia} which are marked with an asterisk do
+nothing and are listed for completeness only. Note that these
+patterns cover combinations which don't happen in the Thai script
+(which doesn't harm).
+
+\begin{table*}
+ \centering
+ \def\arraystretch{1.3}
+ \begin{tabular}
+ {l@{~}l@{~}l@{~}l@{\hbox{~\textrightarrow~}}l@{~}l@{~}l@{~}l@{~}l}
+ \thaiclass{base} &\thaiclass{lower}
+ & &
+ &\thaiclass{base} &\thaiclass{lower}
+ & & &* \\
+ \thaiclass{base} &
+ &\thaiclass{upper} &
+ &\thaiclass{base} &
+ &\thaiclass{upper} & &* \\
+ \thaiclass{base} &
+ & &\thaiclass{top}
+ &\thaiclass{base} &
+ & &\thaiclassx{top}{low} & \\
+ \thaiclass{base} &\thaiclass{lower}
+ & &\thaiclass{top}
+ &\thaiclass{base} &\thaiclass{lower}
+ & &\thaiclassx{top}{low} & \\
+ \thaiclass{base} &
+ &\thaiclass{upper} &\thaiclass{top}
+ &\thaiclass{base} &
+ &\thaiclass{upper} &\thaiclass{top} &* \\[2ex]
+
+ \thaiclassx{base}{desc} &\thaiclass{lower}
+ & &
+ &\thaiclassx{base}{desc} &\thaiclassx{lower}{low}
+ & & & \\
+ \thaiclassx{base}{desc} &
+ &\thaiclass{upper} &
+ &\thaiclassx{base}{desc} &
+ &\thaiclass{upper} & &* \\
+ \thaiclassx{base}{desc} &
+ & &\thaiclass{top}
+ &\thaiclassx{base}{desc} &
+ & &\thaiclassx{top}{low} & \\
+ \thaiclassx{base}{desc} &\thaiclass{lower}
+ & &\thaiclass{top}
+ &\thaiclassx{base}{desc} &\thaiclassx{lower}{low}
+ & &\thaiclassx{top}{low} & \\
+ \thaiclassx{base}{desc} &
+ &\thaiclass{upper} &\thaiclass{top}
+ &\thaiclassx{base}{desc} &
+ &\thaiclass{upper} &\thaiclass{top} &* \\[2ex]
+
+ \thaiclassx{base}{desclike} &\thaiclass{lower}
+ & &
+ &\thaiclassx{base}{descless} &
+ & & & \\
+ \thaiclassx{base}{desclike} &
+ &\thaiclass{upper} &
+ &\thaiclassx{base}{desclike} &
+ &\thaiclass{upper} & &* \\
+ \thaiclassx{base}{desclike} &
+ & &\thaiclass{top}
+ &\thaiclassx{base}{desclike} &
+ & &\thaiclassx{top}{low} & \\
+ \thaiclassx{base}{desclike} &\thaiclass{lower}
+ & &\thaiclass{top}
+ &\thaiclassx{base}{descless} &\thaiclass{lower}
+ & &\thaiclassx{top}{low} & \\
+ \thaiclassx{base}{desclike} &
+ &\thaiclass{upper} &\thaiclass{top}
+ &\thaiclassx{base}{desclike} &
+ &\thaiclass{upper} &\thaiclass{top} &* \\[2ex]
+
+ \thaiclassx{base}{asc} &\thaiclass{lower}
+ & &
+ &\thaiclassx{base}{asc} &\thaiclass{lower}
+ & & &* \\
+ \thaiclassx{base}{asc} &
+ &\thaiclass{upper} &
+ &\thaiclassx{base}{asc} &
+ &\thaiclassx{upper}{left} & & \\
+ \thaiclassx{base}{asc} &
+ & &\thaiclass{top}
+ &\thaiclassx{base}{asc} &
+ & &\thaiclassx{top}{low-left} & \\
+ \thaiclassx{base}{asc} &\thaiclass{lower}
+ & &\thaiclass{top}
+ &\thaiclassx{base}{asc} &\thaiclass{lower}
+ & &\thaiclassx{top}{low-left} & \\
+ \thaiclassx{base}{asc} &
+ &\thaiclass{upper} &\thaiclass{top}
+ &\thaiclassx{base}{asc} &
+ &\thaiclassx{upper}{left} &\thaiclassx{top}{left} & \\
+ \end{tabular}
+
+ \caption{Context patterns for diacritical signs. Here,
+ \thaiclass{base} refers to the union of the subclasses
+ \thaiclass{normal}, \thaiclass{indic}, \thaiclass{sign},
+ \thaiclass{sara am}, and \thaiclass{sara aa} of \thaiclass{base};
+ \thaiclass{upper} is the union of the subclasses \thaiclass{vowel}
+ and \thaiclass{sign} of \thaiclass{upper}.}
+ \label{table:context-dia}
+\end{table*}
+
+Table~\ref{table:context-sara} covers the ligatures of the character
+\emph{sara am}. Finally, table~\ref{table:context-indic} describes
+the letters specific to Sanskrit.
+
+\begin{table*}
+ \centering
+ \def\arraystretch{1.3}
+ \begin{tabular}{l@{~}l@{~}l@{\hbox{~\textrightarrow~}}l@{~}l@{~}l@{~}l}
+ \thaiclass{base} &\thaiclassx{base}{sara am} &
+ &\thaiclass{base} &\thaiclassx{upper}{sign}
+ & &\thaiclassx{base}{sara aa} \\
+ \thaiclassx{base}{asc} &\thaiclassx{base}{sara am} &
+ &\thaiclassx{base}{asc} &\thaiclassxx{upper}{sign}{left}
+ & &\thaiclassx{base}{sara aa} \\[2ex]
+
+ \thaiclass{base} &\thaiclass{top} &\thaiclassx{base}{sara am}
+ &\thaiclass{base} &\thaiclassx{upper}{sign}
+ &\thaiclass{top} &\thaiclassx{base}{sara aa} \\
+ \thaiclassx{base}{asc} &\thaiclass{top} &\thaiclassx{base}{sara
+ am}
+ &\thaiclassx{base}{asc} &\thaiclassxx{upper}{sign}{left}
+ &\thaiclassx{top}{left} &\thaiclassx{base}{sara aa}
+ \end{tabular}
+ \caption{Context patterns for \emph{sara am}. Here,
+ \thaiclass{base} denotes the union of subclasses
+ \thaiclass{normal}, \thaiclass{desc}, and \thaiclass{desclike} of
+ \thaiclass{base}.}
+ \label{table:context-sara}
+\end{table*}
+
+\begin{table*}
+ \centering
+ \def\arraystretch{1.3}
+ \begin{tabular}{l@{~}l@{\hbox{~\textrightarrow~}}l@{~}l}
+ \thaiclassx{base}{indic} &\thaiclassx{base}{sara aa}
+ &\thaiclassx{base}{indic} &\thaiclassx{base}{sign}
+ \end{tabular}
+ \caption{Context patterns for \emph{ru} and \emph{lu}.}
+ \label{table:context-indic}
+\end{table*}
+
+\section{\TeX's Ligature Mechanism}
+
+\DeleteShortVerb{\|}
+
+A small introduction into the exotic variants of \TeX's ligature
+mechanism which probably many users haven't seen before.
+Additionally, the documentation in the \emph{\MF book}~\cite{MFbook}
+is very sparse. In the following examples \MF's notation is used.
+
+The usual ligature action of two glyphs $a$ and~$b$ is the replacement
+of both glyphs with another glyph~$c$.
+
+\begin{center}
+ \texttt{a b =:\ c}
+\end{center}
+
+Another possibility is to retain the left or the right original glyph
+(before and after the ligature, respectively) or both.
+
+\begin{center}
+ \texttt{a b |=:\ c} \quad
+ \texttt{a b =:| c} \quad
+ \texttt{a b |=:| c}
+\end{center}
+
+\noindent
+The first rule creates $ac$, the second $cb$, and the last $acb$. In
+all three cases, the current point after appying the ligature rule is
+still at the first glyph of the replaced glyphs, and \TeX\ simply
+restarts there to check ligatures (and kernings). A classical example
+is
+
+\begin{center}
+ f f i \textrightarrow\ ff i \textrightarrow\ ffi
+\end{center}
+
+To advance the current point to the right, append either \texttt{>} or
+\texttt{>{}>} (the latter is only possible if you retain both input
+glyphs). Here are the remaining four ligature rules.
+
+\begin{center}
+ \texttt{a b |=:> c} \quad
+ \texttt{a b =:|> c} \\
+ \texttt{a b |=:|> c} \quad
+ \texttt{a b |=:|>{}> c}
+\end{center}
+
+For Thai ligatures, the most often needed rule is \texttt{|=:}\ (i.e.,
+retain the left glyph and stay at the same position before applying
+the next ligature rule). Note that using \texttt{|=:>} instead is not
+a good idea since this would prohibit kerning between the left glyph
+and the ligature.
+
+\section{Ligature Rules}
+
+\MakeShortVerb{\|}
+
+As just explained, \TeX\ can only handle context patterns of length~2,
+whereas Thai needs patterns of length~3. It was an interesting
+challenge to find out whether the problem can be solved with \TeX's
+somewhat restricted ligature rules -- the gentle reader is invited to
+find a solution by herself! There won't be any difficulties in
+understanding ligatures afterwards.
+
+The tables~\ref{table:liga-dia}, \ref{table:liga-sara},
+and~\ref{table:liga-indic} use the same conventions as
+tables~\ref{table:context-dia}, \ref{table:context-sara},
+and~\ref{table:context-indic}, respectively. The current point isn't
+increased in any of the rules.
+
+\begin{table*}
+ \centering
+ \def\arraystretch{1.3}
+ \begin{tabular}{l@{~}l@{\hbox{~\textrightarrow~}}l@{~}l}
+ \thaiclass{base} &\thaiclass{top}
+ &\thaiclass{base} &\thaiclassx{top}{low} \\
+ \thaiclassx{base}{desc} &\thaiclass{lower}
+ &\thaiclassx{base}{desc} &\thaiclassx{lower}{low} \\
+ \thaiclassx{base}{desc} &\thaiclass{top}
+ &\thaiclassx{base}{desc} &\thaiclassx{top}{low} \\
+ \thaiclassx{base}{desclike} &\thaiclass{lower}
+ &\thaiclassx{base}{descless} &\thaiclass{lower} \\
+ \thaiclassx{base}{desclike} &\thaiclass{top}
+ &\thaiclassx{base}{desclike} &\thaiclassx{top}{low} \\
+ \thaiclassx{base}{asc} &\thaiclass{lower}
+ &\thaiclassx{base}{asc} &\thaiclassx{lower}{left} \\
+ \thaiclassx{base}{asc} &\thaiclass{upper}
+ &\thaiclassx{base}{asc} &\thaiclassx{upper}{left} \\
+ \thaiclassx{base}{asc} &\thaiclass{top}
+ &\thaiclassx{base}{asc} &\thaiclassx{top}{low-left} \\[2ex]
+
+ \thaiclass{lower} &\thaiclass{top}
+ &\thaiclass{lower} &\thaiclassx{top}{low} \\
+ \thaiclassx{lower}{low} &\thaiclass{top}
+ &\thaiclassx{lower}{low} &\thaiclassx{top}{low} \\[2ex]
+
+ \thaiclassx{upper}{left} &\thaiclass{top}
+ &\thaiclassx{upper}{left} &\thaiclassx{top}{left} \\[2ex]
+
+ \thaiclassx{lower}{left} &\thaiclass{top}
+ &\thaiclassx{lower}{left} &\thaiclassx{top}{low-left} \\
+ \end{tabular}
+
+ \caption{Ligature rules for diacritical marks.}
+ \label{table:liga-dia}
+\end{table*}
+
+\begin{table*}
+ \centering
+ \def\arraystretch{1.3}
+ \begin{tabular}{l@{~}l@{\hbox{~\textrightarrow~}}l@{~}l@{~}l}
+ \thaiclass{base} &\thaiclassx{base}{sara am}
+ &\thaiclass{base} &\thaiclassx{upper}{sign}
+ &\thaiclassx{base}{sara am} \\
+ \thaiclassx{base}{asc} &\thaiclassx{base}{sara am}
+ &\thaiclassx{base}{asc} &\thaiclassxx{upper}{sign}{left}
+ &\thaiclassx{base}{sara am} \\[2ex]
+
+ \thaiclassx{upper}{sign} &\thaiclassx{base}{sara am}
+ &\thaiclassx{upper}{sign} &\thaiclassx{base}{sara aa}
+ & \\
+ \thaiclassxx{upper}{sign}{left} &\thaiclassx{base}{sara am}
+ &\thaiclassxx{upper}{sign}{left} &\thaiclassx{base}{sara aa}
+ & \\[2ex]
+
+ \thaiclassx{top}{low} &\thaiclassx{base}{sara am}
+ &\thaiclassx{top}{low} &\thaiclass{top}
+ &\thaiclassx{base}{sara am} \\
+ \thaiclassx{top}{low} &\thaiclass{top}
+ &\thaiclassx{upper}{sign} &\thaiclass{top}
+ & \\
+ \thaiclass{top} &\thaiclassx{base}{sara am}
+ &\thaiclass{top} &\thaiclassx{base}{sara aa}
+ & \\[2ex]
+
+ \thaiclassx{top}{low-left} &\thaiclassx{base}{sara am}
+ &\thaiclassx{top}{low-left} &\thaiclassx{top}{left}
+ &\thaiclassx{base}{sara am} \\
+ \thaiclassx{top}{low-left} &\thaiclassx{top}{left}
+ &\thaiclassxx{upper}{sign}{left} &\thaiclassx{top}{left}
+ & \\
+ \thaiclassx{top}{left} &\thaiclassx{base}{sara am}
+ &\thaiclassx{top}{left} &\thaiclassx{base}{sara aa} \\
+ \end{tabular}
+
+ \caption{Ligature rules for \emph{sara am}.}
+ \label{table:liga-sara}
+\end{table*}
+
+\begin{table*}
+ \centering
+ \def\arraystretch{1.3}
+ \begin{tabular}{l@{~}l@{\hbox{~\textrightarrow~}}l@{~}l}
+ \thaiclassx{base}{indic} &\thaiclassx{base}{sara aa}
+ &\thaiclassx{base}{indic} &\thaiclassx{base}{sign}
+ \end{tabular}
+ \caption{Ligature rule for \emph{ru} and \emph{lu}.}
+ \label{table:liga-indic}
+\end{table*}
+
+Most of the ligature rules can be derived easily by handling the
+patterns sequentially (quite similar to logic puzzles found in various
+magazines), but at the end there remain two patterns which apparently
+contradict.
+
+\setlength{\tabcolsep}{3pt}
+
+\begin{center}
+ \begin{tabular}{l@{~}l@{~}l@{\hbox{~\textrightarrow~}}l@{~}l@{~}l}
+ \thaiclass{base} &\thaiclass{lower} &\thaiclass{top}
+ &\thaiclass{base} &\thaiclass{lower}
+ &\thaiclassx{top}{low} \\
+ \thaiclassx{base}{asc} &\thaiclass{lower} &\thaiclass{top}
+ &\thaiclassx{base}{asc} &\thaiclass{lower}
+ &\thaiclassx{top}{low-left} \\
+ \end{tabular}
+\end{center}
+
+After applying ligature rules for the first two glyph classes it is
+necessary to handle the context `\thaiclass{lower} \thaiclass{top}',
+but depending on the previous glyph class \thaiclass{top} must be
+replaced with \thaiclassx{top}{left} and \thaiclassx{top}{low-left},
+respectively. With a context pattern length of~3 this would be easy
+to solve, but \TeX\ doesn't have this feature. What to do?
+
+The context `\thaiclass{base} \thaiclass{lower} \thaiclass{top}' must
+be distinguished from `\thaiclassx{base}{asc} \thaiclass{lower}
+\thaiclass{top}', i.e., two different \thaiclass{lower} classes are
+needed depending on the previous character since \TeX\ is not able to
+forward information from one ligature cycle to the next. The idea is
+now to create an `alias class', a class which behaves identically to
+the original one. The glyphs in this alias class are the same, but
+different glyph indices and glyph names are assigned to it. A
+closer look to table~\ref{table:liga-dia} shows that
+\thaiclassx{lower}{left} isn't a typo but the alias class of
+\thaiclass{lower}.
+
+
+\section{The Implementation}
+
+After solving the problem theoretically now the practical
+implementation. All glyph names follow the \emph{Adobe Glyph List
+ (AGL)}~\cite{AGL}. There are no predefined Adobe glyph names for
+Thai, so the prefix `uni' with attached Unicode value will be used for
+all glyphs which are encoded in Unicode. Glyph variants are
+identified by an arbitrarily chosen postfix.
+
+Here the real glyph names for the various classes. Hexadecimal values
+in parentheses after the glyph name give the glyph indices in the
+encoding vector.
+
+\vspace{1ex}
+\multicolsep 1ex
+
+\begin{multicols}{2}[\thaiclassx{base}{normal}:]
+ \begin{quote}
+ |uni0E01| (|0xA1|)\\
+ |uni0E02| (|0xA2|)\\
+ |uni0E03| (|0xA3|)\\
+ |uni0E04| (|0xA4|)\\
+ |uni0E05| (|0xA5|)\\
+ |uni0E06| (|0xA6|)\\
+ |uni0E07| (|0xA7|)\\
+ |uni0E08| (|0xA8|)\\
+ |uni0E09| (|0xA9|)\\
+ |uni0E0A| (|0xAA|)\\
+ |uni0E0B| (|0xAB|)\\
+ |uni0E0C| (|0xAC|)\\
+ |uni0E11| (|0xB1|)\\
+ |uni0E12| (|0xB2|)\\
+ |uni0E13| (|0xB3|)\\
+ |uni0E14| (|0xB4|)\\
+ |uni0E15| (|0xB5|)\\
+ |uni0E16| (|0xB6|)\\
+ |uni0E17| (|0xB7|)\\
+ |uni0E18| (|0xB8|)\\
+ |uni0E19| (|0xB9|)\\
+ |uni0E1A| (|0xBA|)\\
+ |uni0E1C| (|0xBC|)\\
+ |uni0E1E| (|0xBE|)\\
+ |uni0E20| (|0xC0|)\\
+ |uni0E21| (|0xC1|)\\
+ |uni0E22| (|0xC2|)\\
+ |uni0E23| (|0xC3|)\\
+ |uni0E25| (|0xC5|)\\
+ |uni0E27| (|0xC7|)\\
+ |uni0E28| (|0xC8|)\\
+ |uni0E29| (|0xC9|)\\
+ |uni0E2A| (|0xCA|)\\
+ |uni0E2B| (|0xCB|)\\
+ |uni0E2D| (|0xCD|)\\
+ |uni0E2E| (|0xCE|)\\
+ |uni0E2F| (|0xCF|)\\
+ |uni0E30| (|0xD0|)\\
+ |uni0E40| (|0xE0|)\\
+ |uni0E41| (|0xE1|)
+ \end{quote}
+\end{multicols}
+
+\begin{multicols}{2}[\thaiclassx{base}{desc}:]
+ \begin{quote}
+ |uni0E0E| (|0xAE|)\\
+ |uni0E0F| (|0xAF|)
+ \end{quote}
+\end{multicols}
+
+\begin{multicols}{2}[\thaiclassx{base}{desclike}:]
+ \begin{quote}
+ |uni0E0D| (|0xAD|)\\
+ |uni0E10| (|0xB0|)
+ \end{quote}
+\end{multicols}
+
+\begin{multicols}{2}[\thaiclassx{base}{indic}:]
+ \begin{quote}
+ |uni0E24| (|0xC4|)\\
+ |uni0E26| (|0xC6|)
+ \end{quote}
+\end{multicols}
+
+\begin{multicols}{2}[\thaiclassx{base}{sign}:]
+ \begin{quote}
+ |uni0E45| (|0xE5|)
+ \end{quote}
+\end{multicols}
+
+\begin{multicols}{2}[\thaiclassx{base}{asc}:]
+ \begin{quote}
+ |uni0E1B| (|0xBB|)\\
+ |uni0E1D| (|0xBD|)\\
+ |uni0E1F| (|0xBF|)\\
+ |uni0E2C| (|0xCC|)
+ \end{quote}
+\end{multicols}
+
+\begin{multicols}{2}[\thaiclassx{base}{sara am}:]
+ \begin{quote}
+ |uni0E33| (|0xD3|)
+ \end{quote}
+\end{multicols}
+
+\begin{multicols}{2}[\thaiclassx{base}{sara aa}:]
+ \begin{quote}
+ |uni0E32| (|0xD2|)
+ \end{quote}
+\end{multicols}
+
+\begin{multicols}{2}[\thaiclassx{base}{descless}:]
+ \begin{quote}
+ |uni0E0D.descless| (|0x90|)\\
+ |uni0E10.descless| (|0x9F|)
+ \end{quote}
+\end{multicols}
+
+\begin{multicols}{2}[\thaiclass{lower}:]
+ \begin{quote}
+ |uni0E38| (|0xD8|)\\
+ |uni0E39| (|0xD9|)\\
+ |uni0E3A| (|0xDA|)
+ \end{quote}
+\end{multicols}
+
+\begin{multicols}{2}[\thaiclassx{lower}{left}:]
+ \begin{quote}
+ |uni0E38.left| (|0x80|)\\
+ |uni0E39.left| (|0x81|)\\
+ |uni0E3A.left| (|0x82|)
+ \end{quote}
+\end{multicols}
+
+\begin{multicols}{2}[\thaiclassx{lower}{low}:]
+ \begin{quote}
+ |uni0E38.low| (|0xFC|)\\
+ |uni0E39.low| (|0xFD|)\\
+ |uni0E3A.low| (|0xFE|)
+ \end{quote}
+\end{multicols}
+
+\begin{multicols}{2}[\thaiclassx{upper}{vowel}:]
+ \begin{quote}
+ |uni0E31| (|0xD1|)\\
+ |uni0E34| (|0xD4|)\\
+ |uni0E35| (|0xD5|)\\
+ |uni0E36| (|0xD6|)\\
+ |uni0E37| (|0xD7|)\\
+ |uni0E47| (|0xE7|)\\
+ |uni0E4D| (|0xED|)
+ \end{quote}
+\end{multicols}
+
+\begin{multicols}{2}[\thaiclassx{upper}{sign}:]
+ \begin{quote}
+ |uni0E4D| (|0xED|)
+ \end{quote}
+\end{multicols}
+
+\begin{multicols}{2}[\thaiclassxx{upper}{vowel}{left}:]
+ \begin{quote}
+ |uni0E31.left| (|0x92|)\\
+ |uni0E34.left| (|0x94|)\\
+ |uni0E35.left| (|0x95|)\\
+ |uni0E36.left| (|0x96|)\\
+ |uni0E37.left| (|0x97|)\\
+ |uni0E47.left| (|0x93|)\\
+ |uni0E4D.left| (|0x8F|)
+ \end{quote}
+\end{multicols}
+
+\begin{multicols}{2}[\thaiclassxx{upper}{sign}{left}:]
+ \begin{quote}
+ |uni0E4D.left| (|0x8F|)
+ \end{quote}
+\end{multicols}
+
+\begin{multicols}{2}[\thaiclass{top}:]
+ \begin{quote}
+ |uni0E48| (|0xE8|)\\
+ |uni0E49| (|0xE9|)\\
+ |uni0E4A| (|0xEA|)\\
+ |uni0E4B| (|0xEB|)\\
+ |uni0E4C| (|0xEC|)
+ \end{quote}
+\end{multicols}
+
+\begin{multicols}{2}[\thaiclassx{top}{left}:]
+ \begin{quote}
+ |uni0E48.left| (|0x98|)\\
+ |uni0E49.left| (|0x99|)\\
+ |uni0E4A.left| (|0x9A|)\\
+ |uni0E4B.left| (|0x9B|)\\
+ |uni0E4C.left| (|0x9C|)
+ \end{quote}
+\end{multicols}
+
+\begin{multicols}{2}[\thaiclassx{top}{low}:]
+ \begin{quote}
+ |uni0E48.low| (|0x88|)\\
+ |uni0E49.low| (|0x89|)\\
+ |uni0E4A.low| (|0x8A|)\\
+ |uni0E4B.low| (|0x8B|)\\
+ |uni0E4C.low| (|0x8C|)
+ \end{quote}
+\end{multicols}
+
+\begin{multicols}{2}[\thaiclassx{top}{low-left}:]
+ \begin{quote}
+ |uni0E48.low_left| (|0x83|)\\
+ |uni0E49.low_left| (|0x84|)\\
+ |uni0E4A.low_left| (|0x85|)\\
+ |uni0E4B.low_left| (|0x86|)\\
+ |uni0E4C.low_left| (|0x87|)
+ \end{quote}
+\end{multicols}
+
+\vspace{1ex}
+
+
+\encoding
+\needsfontinstversion{1.918}
+
+
+\begincomment
+\section{Coding Scheme}
+\endcomment
+
+\setstr{codingscheme}{C90 THAI ENCODING}
+
+
+\begincomment
+\section{Non-Thai Characters}
+
+Of the many different \LaTeX{} encodings, |OT1| supports {\small
+ ASCII} best (and this is what most Type~1 Thai fonts have). This
+has two advantages: We can use the raw Thai font without specifying a
+new encoding (switching to |OT1| will be sufficient), and it will work
+with plain \TeX{} also.
+
+We use the |OT1| layout for typewriter fonts (i.e., for |cmtt|) with
+the exception that `arrowup' and `arrowdown' are replaced with
+`endash' and `emdash', and the seldom used `dotlessj' with
+`quotedblleft'.
+\endcomment
+
+
+% 0x00 | 0
+\setslot{Gamma}
+ \Unicode{0393}{GREEK CAPITAL LETTER GAMMA}
+\endsetslot
+
+\setslot{Delta}
+ \Unicode{0394}{GREEK CAPITAL LETTER DELTA}
+\endsetslot
+
+\setslot{Theta}
+ \Unicode{0398}{GREEK CAPITAL LETTER THETA}
+\endsetslot
+
+\setslot{Lambda}
+ \Unicode{039B}{GREEK CAPITAL LETTER LAMDA}
+\endsetslot
+
+\setslot{Xi}
+ \Unicode{039E}{GREEK CAPITAL LETTER XI}
+\endsetslot
+
+\setslot{Pi}
+ \Unicode{03A0}{GREEK CAPITAL LETTER PI}
+\endsetslot
+
+\setslot{Sigma}
+ \Unicode{03A3}{GREEK CAPITAL LETTER SIGMA}
+\endsetslot
+
+\setslot{Upsilon}
+ \Unicode{03D2}{GREEK UPSILON WITH HOOK SYMBOL}
+\endsetslot
+
+\setslot{Phi}
+ \Unicode{03A6}{GREEK CAPITAL LETTER PHI}
+\endsetslot
+
+\setslot{Psi}
+ \Unicode{03A8}{GREEK CAPITAL LETTER PSI}
+\endsetslot
+
+\setslot{Omega}
+ \Unicode{03A9}{GREEK CAPITAL LETTER OMEGA}
+\endsetslot
+
+\setslot{endash}
+ \Unicode{2013}{EN DASH}
+ \Ligature{LIG}{hyphen}{emdash}
+ \comment{This is `arrowup' in |OT1| encoding.}
+\endsetslot
+
+\setslot{emdash}
+ \Unicode{2014}{EM DASH}
+ \comment{This is `arrowdown' in |OT1| encoding.}
+\endsetslot
+
+\setslot{quotesingle}
+ \Unicode{0027}{APOSTROPHE}
+\endsetslot
+
+\setslot{exclamdown}
+ \Unicode{00A1}{INVERTED EXCLAMATION MARK}
+\endsetslot
+
+\setslot{questiondown}
+ \Unicode{00BF}{INVERTED QUESTION MARK}
+\endsetslot
+
+% 0x10 | 16
+\setslot{dotlessi}
+ \Unicode{0131}{LATIN SMALL LETTER DOTLESS I}
+\endsetslot
+
+\setslot{quotedblleft}
+ \Unicode{201C}{LEFT DOUBLE QUOTATION MARK}
+ \comment{This is `dotlessj' in |OT1| encoding.}
+\endsetslot
+
+\setslot{grave}
+ \Unicode{0300}{COMBINING GRAVE ACCENT}
+\endsetslot
+
+\setslot{acute}
+ \Unicode{0301}{COMBINING ACUTE ACCENT}
+\endsetslot
+
+\setslot{caron}
+ \Unicode{030C}{COMBINING CARON}
+\endsetslot
+
+\setslot{breve}
+ \Unicode{0306}{COMBINING BREVE}
+\endsetslot
+
+\setslot{macron}
+ \Unicode{0304}{COMBINING MACRON}
+\endsetslot
+
+\setslot{ring}
+ \Unicode{030A}{COMBINING RING ABOVE}
+\endsetslot
+
+\setslot{cedilla}
+ \Unicode{0327}{COMBINING CEDILLA}
+\endsetslot
+
+\setslot{germandbls}
+ \Unicode{00DF}{LATIN SMALL LETTER SHARP S}
+\endsetslot
+
+\setslot{ae}
+ \Unicode{00E6}{LATIN SMALL LETTER AE}
+\endsetslot
+
+\setslot{oe}
+ \Unicode{0153}{LATIN SMALL LIGATURE OE}
+\endsetslot
+
+\setslot{oslash}
+ \Unicode{00F8}{LATIN SMALL LETTER O WITH STROKE}
+\endsetslot
+
+\setslot{AE}
+ \Unicode{00C6}{LATIN CAPITAL LETTER AE}
+\endsetslot
+
+\setslot{OE}
+ \Unicode{0152}{LATIN CAPITAL LIGATURE OE}
+\endsetslot
+
+\setslot{Oslash}
+ \Unicode{00D8}{LATIN CAPITAL LETTER O WITH STROKE}
+\endsetslot
+
+% 0x20 | 32
+\skipslots{1}
+
+\setslot{exclam}
+ \Unicode{0021}{EXCLAMATION MARK}
+ \Ligature{LIG}{quoteleft}{exclamdown}
+\endsetslot
+
+\setslot{quotedblright}
+ \Unicode{201D}{RIGHT DOUBLE QUOTATION MARK}
+\endsetslot
+
+\setslot{numbersign}
+ \Unicode{0023}{NUMBER SIGN}
+\endsetslot
+
+\setslot{dollar}
+ \Unicode{0024}{DOLLAR SIGN}
+\endsetslot
+
+\setslot{percent}
+ \Unicode{0025}{PERCENT SIGN}
+\endsetslot
+
+\setslot{ampersand}
+ \Unicode{0026}{AMPERSAND}
+\endsetslot
+
+\setslot{quoteright}
+ \Unicode{2019}{RIGHT SINGLE QUOTATION MARK}
+ \Ligature{LIG}{quoteright}{quotedblright}
+\endsetslot
+
+\setslot{parenleft}
+ \Unicode{0028}{LEFT PARENTHESIS}
+\endsetslot
+
+\setslot{parenright}
+ \Unicode{0029}{RIGHT PARENTHESIS}
+\endsetslot
+
+\setslot{asterisk}
+ \Unicode{002A}{ASTERISK}
+\endsetslot
+
+\setslot{plus}
+ \Unicode{002B}{PLUS SIGN}
+\endsetslot
+
+\setslot{comma}
+ \Unicode{002C}{COMMA}
+\endsetslot
+
+\setslot{hyphen}
+ \Unicode{002D}{HYPHEN-MINUS}
+ \Ligature{LIG}{hyphen}{endash}
+\endsetslot
+
+\setslot{period}
+ \Unicode{002E}{FULL STOP}
+\endsetslot
+
+\setslot{slash}
+ \Unicode{002F}{SOLIDUS}
+\endsetslot
+
+% 0x30 | 48
+\setslot{zero}
+ \Unicode{0030}{DIGIT ZERO}
+\endsetslot
+
+\setslot{one}
+ \Unicode{0031}{DIGIT ONE}
+\endsetslot
+
+\setslot{two}
+ \Unicode{0032}{DIGIT TWO}
+\endsetslot
+
+\setslot{three}
+ \Unicode{0033}{DIGIT THREE}
+\endsetslot
+
+\setslot{four}
+ \Unicode{0034}{DIGIT FOUR}
+\endsetslot
+
+\setslot{five}
+ \Unicode{0035}{DIGIT FIVE}
+\endsetslot
+
+\setslot{six}
+ \Unicode{0036}{DIGIT SIX}
+\endsetslot
+
+\setslot{seven}
+ \Unicode{0037}{DIGIT SEVEN}
+\endsetslot
+
+\setslot{eight}
+ \Unicode{0038}{DIGIT EIGHT}
+\endsetslot
+
+\setslot{nine}
+ \Unicode{0039}{DIGIT NINE}
+\endsetslot
+
+\setslot{colon}
+ \Unicode{003A}{COLON}
+\endsetslot
+
+\setslot{semicolon}
+ \Unicode{003B}{SEMICOLON}
+\endsetslot
+
+\setslot{less}
+ \Unicode{003C}{LESS-THAN SIGN}
+\endsetslot
+
+\setslot{equal}
+ \Unicode{003D}{EQUALS SIGN}
+\endsetslot
+
+\setslot{greater}
+ \Unicode{003E}{GREATER-THAN SIGN}
+\endsetslot
+
+\setslot{question}
+ \Unicode{003F}{QUESTION MARK}
+ \Ligature{LIG}{quoteleft}{questiondown}
+\endsetslot
+
+% 0x40 | 64
+\setslot{at}
+ \Unicode{0040}{COMMERCIAL AT}
+\endsetslot
+
+\setslot{A}
+ \Unicode{0041}{LATIN CAPITAL LETTER A}
+\endsetslot
+
+\setslot{B}
+ \Unicode{0042}{LATIN CAPITAL LETTER B}
+\endsetslot
+
+\setslot{C}
+ \Unicode{0043}{LATIN CAPITAL LETTER C}
+\endsetslot
+
+\setslot{D}
+ \Unicode{0044}{LATIN CAPITAL LETTER D}
+\endsetslot
+
+\setslot{E}
+ \Unicode{0045}{LATIN CAPITAL LETTER E}
+\endsetslot
+
+\setslot{F}
+ \Unicode{0046}{LATIN CAPITAL LETTER F}
+\endsetslot
+
+\setslot{G}
+ \Unicode{0047}{LATIN CAPITAL LETTER G}
+\endsetslot
+
+\setslot{H}
+ \Unicode{0048}{LATIN CAPITAL LETTER H}
+\endsetslot
+
+\setslot{I}
+ \Unicode{0049}{LATIN CAPITAL LETTER I}
+\endsetslot
+
+\setslot{J}
+ \Unicode{004A}{LATIN CAPITAL LETTER J}
+\endsetslot
+
+\setslot{K}
+ \Unicode{004B}{LATIN CAPITAL LETTER K}
+\endsetslot
+
+\setslot{L}
+ \Unicode{004C}{LATIN CAPITAL LETTER L}
+\endsetslot
+
+\setslot{M}
+ \Unicode{004D}{LATIN CAPITAL LETTER M}
+\endsetslot
+
+\setslot{N}
+ \Unicode{004E}{LATIN CAPITAL LETTER N}
+\endsetslot
+
+\setslot{O}
+ \Unicode{004F}{LATIN CAPITAL LETTER O}
+\endsetslot
+
+% 0x50 | 80
+\setslot{P}
+ \Unicode{0050}{LATIN CAPITAL LETTER P}
+\endsetslot
+
+\setslot{Q}
+ \Unicode{0051}{LATIN CAPITAL LETTER Q}
+\endsetslot
+
+\setslot{R}
+ \Unicode{0052}{LATIN CAPITAL LETTER R}
+\endsetslot
+
+\setslot{S}
+ \Unicode{0053}{LATIN CAPITAL LETTER S}
+\endsetslot
+
+\setslot{T}
+ \Unicode{0054}{LATIN CAPITAL LETTER T}
+\endsetslot
+
+\setslot{U}
+ \Unicode{0055}{LATIN CAPITAL LETTER U}
+\endsetslot
+
+\setslot{V}
+ \Unicode{0056}{LATIN CAPITAL LETTER V}
+\endsetslot
+
+\setslot{W}
+ \Unicode{0057}{LATIN CAPITAL LETTER W}
+\endsetslot
+
+\setslot{X}
+ \Unicode{0058}{LATIN CAPITAL LETTER X}
+\endsetslot
+
+\setslot{Y}
+ \Unicode{0059}{LATIN CAPITAL LETTER Y}
+\endsetslot
+
+\setslot{Z}
+ \Unicode{005A}{LATIN CAPITAL LETTER Z}
+\endsetslot
+
+\setslot{bracketleft}
+ \Unicode{005B}{LEFT SQUARE BRACKET}
+\endsetslot
+
+\setslot{backslash}
+ \Unicode{005C}{REVERSE SOLIDUS}
+\endsetslot
+
+\setslot{bracketright}
+ \Unicode{005D}{RIGHT SQUARE BRACKET}
+\endsetslot
+
+\setslot{circumflex}
+ \Unicode{0302}{COMBINING CIRCUMFLEX ACCENT}
+\endsetslot
+
+\setslot{underscore}
+ \Unicode{005F}{LOW LINE}
+\endsetslot
+
+% 0x60 | 96
+\setslot{quoteleft}
+ \Unicode{2018}{LEFT SINGLE QUOTATION MARK}
+ \Ligature{LIG}{quoteleft}{quotedblleft}
+\endsetslot
+
+\setslot{a}
+ \Unicode{0061}{LATIN SMALL LETTER A}
+\endsetslot
+
+\setslot{b}
+ \Unicode{0062}{LATIN SMALL LETTER B}
+\endsetslot
+
+\setslot{c}
+ \Unicode{0063}{LATIN SMALL LETTER C}
+\endsetslot
+
+\setslot{d}
+ \Unicode{0064}{LATIN SMALL LETTER D}
+\endsetslot
+
+\setslot{e}
+ \Unicode{0065}{LATIN SMALL LETTER E}
+\endsetslot
+
+\setslot{f}
+ \Unicode{0066}{LATIN SMALL LETTER F}
+\endsetslot
+
+\setslot{g}
+ \Unicode{0067}{LATIN SMALL LETTER G}
+\endsetslot
+
+\setslot{h}
+ \Unicode{0068}{LATIN SMALL LETTER H}
+\endsetslot
+
+\setslot{i}
+ \Unicode{0069}{LATIN SMALL LETTER I}
+\endsetslot
+
+\setslot{j}
+ \Unicode{006A}{LATIN SMALL LETTER J}
+\endsetslot
+
+\setslot{k}
+ \Unicode{006B}{LATIN SMALL LETTER K}
+\endsetslot
+
+\setslot{l}
+ \Unicode{006C}{LATIN SMALL LETTER L}
+\endsetslot
+
+\setslot{m}
+ \Unicode{006D}{LATIN SMALL LETTER M}
+\endsetslot
+
+\setslot{n}
+ \Unicode{006E}{LATIN SMALL LETTER N}
+\endsetslot
+
+\setslot{o}
+ \Unicode{006F}{LATIN SMALL LETTER O}
+\endsetslot
+
+% 0x70 | 112
+\setslot{p}
+ \Unicode{0070}{LATIN SMALL LETTER P}
+\endsetslot
+
+\setslot{q}
+ \Unicode{0071}{LATIN SMALL LETTER Q}
+\endsetslot
+
+\setslot{r}
+ \Unicode{0072}{LATIN SMALL LETTER R}
+\endsetslot
+
+\setslot{s}
+ \Unicode{0073}{LATIN SMALL LETTER S}
+\endsetslot
+
+\setslot{t}
+ \Unicode{0074}{LATIN SMALL LETTER T}
+\endsetslot
+
+\setslot{u}
+ \Unicode{0075}{LATIN SMALL LETTER U}
+\endsetslot
+
+\setslot{v}
+ \Unicode{0076}{LATIN SMALL LETTER V}
+\endsetslot
+
+\setslot{w}
+ \Unicode{0077}{LATIN SMALL LETTER W}
+\endsetslot
+
+\setslot{x}
+ \Unicode{0078}{LATIN SMALL LETTER X}
+\endsetslot
+
+\setslot{y}
+ \Unicode{0079}{LATIN SMALL LETTER Y}
+\endsetslot
+
+\setslot{z}
+ \Unicode{007A}{LATIN SMALL LETTER Z}
+\endsetslot
+
+\setslot{braceleft}
+ \Unicode{007B}{LEFT CURLY BRACKET}
+\endsetslot
+
+\setslot{bar}
+ \Unicode{007C}{VERTICAL LINE}
+\endsetslot
+
+\setslot{braceright}
+ \Unicode{007D}{RIGHT CURLY BRACKET}
+\endsetslot
+
+\setslot{tilde}
+ \Unicode{0303}{COMBINING TILDE}
+\endsetslot
+
+\setslot{dieresis}
+ \Unicode{0308}{COMBINING DIAERESIS}
+\endsetslot
+
+
+\begincomment
+\section{Thai Characters}
+
+This is |TIS-620| encoding with glyph variants. The encoding presented
+in~\cite{TUG-Thai} contained two alternate glyph forms at positions 157
+and 158 which have been removed meanwhile.
+
+The number of all Thai ligature rules is quite big (464~in total).
+Note that |vptovf| will make the ligature table much more compact as
+it may appear here.
+\endcomment
+
+% 0x80 | 128
+\ifisint{makeenc}\then
+ \setslot{uni0E38}
+ \endsetslot
+\Else
+ \setslot{uni0E38.left}
+ \comment{An alias for
+ \textunicode{0E38}{THAI CHARACTER SARA U}.}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low_left}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low_left}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low_left}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low_left}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low_left}
+ \endsetslot
+\Fi
+
+\ifisint{makeenc}\then
+ \setslot{uni0E39}
+ \endsetslot
+\Else
+ \setslot{uni0E39.left}
+ \comment{An alias for
+ \textunicode{0E39}{THAI CHARACTER SARA UU}.}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low_left}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low_left}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low_left}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low_left}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low_left}
+ \endsetslot
+\Fi
+
+\ifisint{makeenc}\then
+ \setslot{uni0E3A}
+ \endsetslot
+\Else
+ \setslot{uni0E3A.left}
+ \comment{An alias for
+ \textunicode{0E3A}{THAI CHARACTER PHINTHU}.}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low_left}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low_left}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low_left}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low_left}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low_left}
+ \endsetslot
+\Fi
+
+\setslot{uni0E48.low_left}
+ \comment{A glyph variant of
+ \textunicode{0E48}{THAI CHARACTER MAI EK}.}
+ \Ligature{/LIG/}{uni0E33}{uni0E48.left}
+ \Ligature{LIG/}{uni0E48.left}{uni0E4D.left}
+\endsetslot
+
+\setslot{uni0E49.low_left}
+ \comment{A glyph variant of
+ \textunicode{0E49}{THAI CHARACTER MAI THO}.}
+ \Ligature{/LIG/}{uni0E33}{uni0E49.left}
+ \Ligature{LIG/}{uni0E49.left}{uni0E4D.left}
+\endsetslot
+
+\setslot{uni0E4A.low_left}
+ \comment{A glyph variant of
+ \textunicode{0E4A}{THAI CHARACTER MAI TRI}.}
+ \Ligature{/LIG/}{uni0E33}{uni0E4A.left}
+ \Ligature{LIG/}{uni0E4A.left}{uni0E4D.left}
+\endsetslot
+
+\setslot{uni0E4B.low_left}
+ \comment{A glyph variant of
+ \textunicode{0E4B}{THAI CHARACTER MAI CHATTAWA}.}
+ \Ligature{/LIG/}{uni0E33}{uni0E4B.left}
+ \Ligature{LIG/}{uni0E4B.left}{uni0E4D.left}
+\endsetslot
+
+\setslot{uni0E4C.low_left}
+ \comment{A glyph variant of
+ \textunicode{0E4C}{THAI CHARACTER THANTHAKHAT}.}
+ \Ligature{/LIG/}{uni0E33}{uni0E4C.left}
+ \Ligature{LIG/}{uni0E4C.left}{uni0E4D.left}
+\endsetslot
+
+\setslot{uni0E48.low}
+ \comment{A glyph variant of
+ \textunicode{0E48}{THAI CHARACTER MAI EK}.}
+ \Ligature{/LIG/}{uni0E33}{uni0E48}
+ \Ligature{LIG/}{uni0E48}{uni0E4D}
+\endsetslot
+
+\setslot{uni0E49.low}
+ \comment{A glyph variant of
+ \textunicode{0E49}{THAI CHARACTER MAI THO}.}
+ \Ligature{/LIG/}{uni0E33}{uni0E49}
+ \Ligature{LIG/}{uni0E49}{uni0E4D}
+\endsetslot
+
+\setslot{uni0E4A.low}
+ \comment{A glyph variant of
+ \textunicode{0E4A}{THAI CHARACTER MAI TRI}.}
+ \Ligature{/LIG/}{uni0E33}{uni0E4A}
+ \Ligature{LIG/}{uni0E4A}{uni0E4D}
+\endsetslot
+
+\setslot{uni0E4B.low}
+ \comment{A glyph variant of
+ \textunicode{04EB}{THAI CHARACTER MAI CHATTAWA}.}
+ \Ligature{/LIG/}{uni0E33}{uni0E4B}
+ \Ligature{LIG/}{uni0E4B}{uni0E4D}
+\endsetslot
+
+\setslot{uni0E4C.low}
+ \comment{A glyph variant of
+ \textunicode{0E4C}{THAI CHARACTER THANTHAKHAT}.}
+ \Ligature{/LIG/}{uni0E33}{uni0E4C}
+ \Ligature{LIG/}{uni0E4C}{uni0E4D}
+\endsetslot
+
+\skipslots{2}
+
+\setslot{uni0E4D.left}
+ \comment{A glyph variant of
+ \textunicode{0E4D}{THAI CHARACTER NIKHAHIT}.}
+ \Ligature{/LIG}{uni0E33}{uni0E32}
+ \Ligature{/LIG}{uni0E48}{uni0E48.left}
+ \Ligature{/LIG}{uni0E49}{uni0E49.left}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.left}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.left}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.left}
+\endsetslot
+
+% 0x90 | 144
+\setslot{uni0E0D.descless}
+ \comment{A glyph variant of
+ \textunicode{0E0D}{THAI CHARACTER YO YING}.}
+\endsetslot
+
+\skipslots{1}
+
+\setslot{uni0E31.left}
+ \comment{A glyph variant of
+ \textunicode{0E31}{THAI CHARACTER MAI HAN-AKAT}.}
+ \Ligature{/LIG}{uni0E48}{uni0E48.left}
+ \Ligature{/LIG}{uni0E49}{uni0E49.left}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.left}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.left}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.left}
+\endsetslot
+
+\setslot{uni0E47.left}
+ \comment{A glyph variant of
+ \textunicode{0E47}{THAI CHARACTER MAITAIKHU}.}
+ \Ligature{/LIG}{uni0E48}{uni0E48.left}
+ \Ligature{/LIG}{uni0E49}{uni0E49.left}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.left}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.left}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.left}
+\endsetslot
+
+\setslot{uni0E34.left}
+ \comment{A glyph variant of
+ \textunicode{0E34}{THAI CHARACTER SARA I}.}
+ \Ligature{/LIG}{uni0E48}{uni0E48.left}
+ \Ligature{/LIG}{uni0E49}{uni0E49.left}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.left}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.left}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.left}
+\endsetslot
+
+\setslot{uni0E35.left}
+ \comment{A glyph variant of
+ \textunicode{0E35}{THAI CHARACTER SARA II}.}
+ \Ligature{/LIG}{uni0E48}{uni0E48.left}
+ \Ligature{/LIG}{uni0E49}{uni0E49.left}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.left}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.left}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.left}
+\endsetslot
+
+\setslot{uni0E36.left}
+ \comment{A glyph variant of
+ \textunicode{0E36}{THAI CHARACTER SARA UE}.}
+ \Ligature{/LIG}{uni0E48}{uni0E48.left}
+ \Ligature{/LIG}{uni0E49}{uni0E49.left}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.left}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.left}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.left}
+\endsetslot
+
+\setslot{uni0E37.left}
+ \comment{A glyph variant of
+ \textunicode{0E37}{THAI CHARACTER SARA UEE}.}
+ \Ligature{/LIG}{uni0E48}{uni0E48.left}
+ \Ligature{/LIG}{uni0E49}{uni0E49.left}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.left}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.left}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.left}
+\endsetslot
+
+\setslot{uni0E48.left}
+ \comment{A glyph variant of
+ \textunicode{0E48}{THAI CHARACTER MAI EK}.}
+ \Ligature{/LIG}{uni0E33}{uni0E32}
+\endsetslot
+
+\setslot{uni0E49.left}
+ \comment{A glyph variant of
+ \textunicode{0E49}{THAI CHARACTER MAI THO}.}
+ \Ligature{/LIG}{uni0E33}{uni0E32}
+\endsetslot
+
+\setslot{uni0E4A.left}
+ \comment{A glyph variant of
+ \textunicode{0E4A}{THAI CHARACTER MAI TRI}.}
+ \Ligature{/LIG}{uni0E33}{uni0E32}
+\endsetslot
+
+\setslot{uni0E4B.left}
+ \comment{A glyph variant of
+ \textunicode{0E4B}{THAI CHARACTER MAI CHATTAWA}.}
+ \Ligature{/LIG}{uni0E33}{uni0E32}
+\endsetslot
+
+\setslot{uni0E4C.left}
+ \comment{A glyph variant of
+ \textunicode{0E4C}{THAI CHARACTER THANTHAKHAT}.}
+ \Ligature{/LIG}{uni0E33}{uni0E32}
+\endsetslot
+
+\skipslots{2}
+
+\setslot{uni0E10.descless}
+ \comment{A glyph variant of
+ \textunicode{0E10}{THAI CHARACTER THO THAN}.}
+\endsetslot
+
+% 0xA0 | 160
+\skipslots{1}
+
+\setslot{uni0E01}
+ \Unicode{0E01}{THAI CHARACTER KO KAI}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E02}
+ \Unicode{0E02}{THAI CHARACTER KHO KHAI}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E03}
+ \Unicode{0E03}{THAI CHARACTER KHO KHUAT}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E04}
+ \Unicode{0E04}{THAI CHARACTER KHO KHWAI}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E05}
+ \Unicode{0E05}{THAI CHARACTER KHO KHON}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E06}
+ \Unicode{0E06}{THAI CHARACTER KHO RAKHANG}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E07}
+ \Unicode{0E07}{THAI CHARACTER NGO NGU}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E08}
+ \Unicode{0E08}{THAI CHARACTER CHO CHAN}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E09}
+ \Unicode{0E09}{THAI CHARACTER CHO CHING}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E0A}
+ \Unicode{0E0A}{THAI CHARACTER CHO CHANG}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E0B}
+ \Unicode{0E0B}{THAI CHARACTER SO SO}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E0C}
+ \Unicode{0E0C}{THAI CHARACTER CHO CHOE}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E0D}
+ \Unicode{0E0D}{THAI CHARACTER YO YING}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{LIG/}{uni0E38}{uni0E0D.descless}
+ \Ligature{LIG/}{uni0E39}{uni0E0D.descless}
+ \Ligature{LIG/}{uni0E3A}{uni0E0D.descless}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E0E}
+ \Unicode{0E0E}{THAI CHARACTER DO CHADA}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E38}{uni0E38.low}
+ \Ligature{/LIG}{uni0E39}{uni0E39.low}
+ \Ligature{/LIG}{uni0E3A}{uni0E3A.low}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E0F}
+ \Unicode{0E0F}{THAI CHARACTER TO PATAK}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E38}{uni0E38.low}
+ \Ligature{/LIG}{uni0E39}{uni0E39.low}
+ \Ligature{/LIG}{uni0E3A}{uni0E3A.low}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+% 0xB0 | 176
+\setslot{uni0E10}
+ \Unicode{0E10}{THAI CHARACTER THO THAN}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{LIG/}{uni0E38}{uni0E10.descless}
+ \Ligature{LIG/}{uni0E39}{uni0E10.descless}
+ \Ligature{LIG/}{uni0E3A}{uni0E10.descless}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E11}
+ \Unicode{0E11}{THAI CHARACTER THO NANGMONTHO}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E12}
+ \Unicode{0E12}{THAI CHARACTER THO PHUTHAO}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E13}
+ \Unicode{0E13}{THAI CHARACTER NO NEN}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E14}
+ \Unicode{0E14}{THAI CHARACTER DO DEK}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E15}
+ \Unicode{0E15}{THAI CHARACTER TO TAO}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E16}
+ \Unicode{0E16}{THAI CHARACTER THO THUNG}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E17}
+ \Unicode{0E17}{THAI CHARACTER THO THAHAN}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E18}
+ \Unicode{0E18}{THAI CHARACTER THO THONG}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E19}
+ \Unicode{0E19}{THAI CHARACTER NO NU}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E1A}
+ \Unicode{0E1A}{THAI CHARACTER BO BAIMAI}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E1B}
+ \Unicode{0E1B}{THAI CHARACTER PO PLA}
+ \Ligature{/LIG}{uni0E31}{uni0E31.left}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D.left}
+ \Ligature{/LIG}{uni0E34}{uni0E34.left}
+ \Ligature{/LIG}{uni0E35}{uni0E35.left}
+ \Ligature{/LIG}{uni0E36}{uni0E36.left}
+ \Ligature{/LIG}{uni0E37}{uni0E37.left}
+ \Ligature{/LIG}{uni0E38}{uni0E38.left}
+ \Ligature{/LIG}{uni0E39}{uni0E39.left}
+ \Ligature{/LIG}{uni0E3A}{uni0E3A.left}
+ \Ligature{/LIG}{uni0E47}{uni0E47.left}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low_left}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low_left}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low_left}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low_left}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+ \Ligature{/LIG}{uni0E4D}{uni0E4D.left}
+\endsetslot
+
+\setslot{uni0E1C}
+ \Unicode{0E1C}{THAI CHARACTER PHO PHUNG}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E1D}
+ \Unicode{0E1D}{THAI CHARACTER FO FA}
+ \Ligature{/LIG}{uni0E31}{uni0E31.left}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D.left}
+ \Ligature{/LIG}{uni0E34}{uni0E34.left}
+ \Ligature{/LIG}{uni0E35}{uni0E35.left}
+ \Ligature{/LIG}{uni0E36}{uni0E36.left}
+ \Ligature{/LIG}{uni0E37}{uni0E37.left}
+ \Ligature{/LIG}{uni0E38}{uni0E38.left}
+ \Ligature{/LIG}{uni0E39}{uni0E39.left}
+ \Ligature{/LIG}{uni0E3A}{uni0E3A.left}
+ \Ligature{/LIG}{uni0E47}{uni0E47.left}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low_left}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low_left}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low_left}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low_left}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+ \Ligature{/LIG}{uni0E4D}{uni0E4D.left}
+\endsetslot
+
+\setslot{uni0E1E}
+ \Unicode{0E1E}{THAI CHARACTER PHO PHAN}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E1F}
+ \Unicode{0E1F}{THAI CHARACTER FO FAN}
+ \Ligature{/LIG}{uni0E31}{uni0E31.left}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D.left}
+ \Ligature{/LIG}{uni0E34}{uni0E34.left}
+ \Ligature{/LIG}{uni0E35}{uni0E35.left}
+ \Ligature{/LIG}{uni0E36}{uni0E36.left}
+ \Ligature{/LIG}{uni0E37}{uni0E37.left}
+ \Ligature{/LIG}{uni0E38}{uni0E38.left}
+ \Ligature{/LIG}{uni0E39}{uni0E39.left}
+ \Ligature{/LIG}{uni0E3A}{uni0E3A.left}
+ \Ligature{/LIG}{uni0E47}{uni0E47.left}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low_left}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low_left}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low_left}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low_left}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+ \Ligature{/LIG}{uni0E4D}{uni0E4D.left}
+\endsetslot
+
+% 0xC0 | 192
+\setslot{uni0E20}
+ \Unicode{0E20}{THAI CHARACTER PHO SAMPHAO}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E21}
+ \Unicode{0E21}{THAI CHARACTER MO MA}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E22}
+ \Unicode{0E22}{THAI CHARACTER YO YAK}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E23}
+ \Unicode{0E23}{THAI CHARACTER RO RUA}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E24}
+ \Unicode{0E24}{THAI CHARACTER RU}
+ \Ligature{/LIG}{uni0E32}{uni0E45}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E25}
+ \Unicode{0E25}{THAI CHARACTER LO LING}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E26}
+ \Unicode{0E26}{THAI CHARACTER LU}
+ \Ligature{/LIG}{uni0E32}{uni0E45}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E27}
+ \Unicode{0E27}{THAI CHARACTER WO WAEN}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E28}
+ \Unicode{0E28}{THAI CHARACTER SO SALA}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E29}
+ \Unicode{0E29}{THAI CHARACTER SO RUSI}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E2A}
+ \Unicode{0E2A}{THAI CHARACTER SO SUA}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E2B}
+ \Unicode{0E2B}{THAI CHARACTER HO HIP}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E2C}
+ \Unicode{0E2C}{THAI CHARACTER LO CHULA}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D.left}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+\endsetslot
+
+\setslot{uni0E2D}
+ \Unicode{0E2D}{THAI CHARACTER O ANG}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E2E}
+ \Unicode{0E2E}{THAI CHARACTER HO NOKHUK}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E2F}
+ \Unicode{0E2F}{THAI CHARACTER PAIYANNOI}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+% 0xD0 | 208
+\setslot{uni0E30}
+ \Unicode{0E30}{THAI CHARACTER SARA A}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E31}
+ \Unicode{0E31}{THAI CHARACTER MAI HAN-AKAT}
+\endsetslot
+
+\setslot{uni0E32}
+ \Unicode{0E32}{THAI CHARACTER SARA AA}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E33}
+ \Unicode{0E33}{THAI CHARACTER SARA AM}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E34}
+ \Unicode{0E34}{THAI CHARACTER SARA I}
+\endsetslot
+
+\setslot{uni0E35}
+ \Unicode{0E35}{THAI CHARACTER SARA II}
+\endsetslot
+
+\setslot{uni0E36}
+ \Unicode{0E36}{THAI CHARACTER SARA UE}
+\endsetslot
+
+\setslot{uni0E37}
+ \Unicode{0E37}{THAI CHARACTER SARA UEE}
+\endsetslot
+
+\setslot{uni0E38}
+ \Unicode{0E38}{THAI CHARACTER SARA U}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E39}
+ \Unicode{0E39}{THAI CHARACTER SARA UU}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E3A}
+ \Unicode{0E3A}{THAI CHARACTER PHINTHU}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\skipslots{4}
+
+\setslot{uni0E3F}
+ \Unicode{0E3F}{THAI CURRENCY SYMBOL BAHT}
+\endsetslot
+
+% 0xE0 | 224
+\setslot{uni0E40}
+ \Unicode{0E40}{THAI CHARACTER SARA E}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E41}
+ \Unicode{0E41}{THAI CHARACTER SARA AE}
+ \Ligature{/LIG/}{uni0E33}{uni0E4D}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E42}
+ \Unicode{0E42}{THAI CHARACTER SARA O}
+\endsetslot
+
+\setslot{uni0E43}
+ \Unicode{0E43}{THAI CHARACTER SARA AI MAIMUAN}
+\endsetslot
+
+\setslot{uni0E44}
+ \Unicode{0E44}{THAI CHARACTER SARA AI MAIMALAI}
+\endsetslot
+
+\setslot{uni0E45}
+ \Unicode{0E45}{THAI CHARACTER LAKKHANGYAO}
+\endsetslot
+
+\setslot{uni0E46}
+ \Unicode{0E46}{THAI CHARACTER MAIYAMOK}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E47}
+ \Unicode{0E47}{THAI CHARACTER MAITAIKHU}
+\endsetslot
+
+\setslot{uni0E48}
+ \Unicode{0E48}{THAI CHARACTER MAI EK}
+ \Ligature{/LIG}{uni0E33}{uni0E32}
+\endsetslot
+
+\setslot{uni0E49}
+ \Unicode{0E49}{THAI CHARACTER MAI THO}
+ \Ligature{/LIG}{uni0E33}{uni0E32}
+\endsetslot
+
+\setslot{uni0E4A}
+ \Unicode{0E4A}{THAI CHARACTER MAI TRI}
+ \Ligature{/LIG}{uni0E33}{uni0E32}
+\endsetslot
+
+\setslot{uni0E4B}
+ \Unicode{0E4B}{THAI CHARACTER MAI CHATTAWA}
+ \Ligature{/LIG}{uni0E33}{uni0E32}
+\endsetslot
+
+\setslot{uni0E4C}
+ \Unicode{0E4C}{THAI CHARACTER THANTHAKHAT}
+ \Ligature{/LIG}{uni0E33}{uni0E32}
+\endsetslot
+
+\setslot{uni0E4D}
+ \Unicode{0E4D}{THAI CHARACTER NIKHAHIT}
+ \Ligature{/LIG}{uni0E33}{uni0E32}
+\endsetslot
+
+\setslot{uni0E4E}
+ \Unicode{0E4E}{THAI CHARACTER YAMAKKAN}
+\endsetslot
+
+\setslot{uni0E4F}
+ \Unicode{0E4F}{THAI CHARACTER FONGMAN}
+\endsetslot
+
+% 0xF0 | 240
+\setslot{uni0E50}
+ \Unicode{0E50}{THAI DIGIT ZERO}
+\endsetslot
+
+\setslot{uni0E51}
+ \Unicode{0E51}{THAI DIGIT ONE}
+\endsetslot
+
+\setslot{uni0E52}
+ \Unicode{0E52}{THAI DIGIT TWO}
+\endsetslot
+
+\setslot{uni0E53}
+ \Unicode{0E53}{THAI DIGIT THREE}
+\endsetslot
+
+\setslot{uni0E54}
+ \Unicode{0E54}{THAI DIGIT FOUR}
+\endsetslot
+
+\setslot{uni0E55}
+ \Unicode{0E55}{THAI DIGIT FIVE}
+\endsetslot
+
+\setslot{uni0E56}
+ \Unicode{0E56}{THAI DIGIT SIX}
+\endsetslot
+
+\setslot{uni0E57}
+ \Unicode{0E57}{THAI DIGIT SEVEN}
+\endsetslot
+
+\setslot{uni0E58}
+ \Unicode{0E58}{THAI DIGIT EIGHT}
+\endsetslot
+
+\setslot{uni0E59}
+ \Unicode{0E59}{THAI DIGIT NINE}
+\endsetslot
+
+\setslot{uni0E5A}
+ \Unicode{0E5A}{THAI CHARACTER ANGKHANKHU}
+\endsetslot
+
+\setslot{uni0E5B}
+ \Unicode{0E5B}{THAI CHARACTER KHOMUT}
+\endsetslot
+
+\setslot{uni0E38.low}
+ \comment{A glyph variant of \textunicode{0E38}{THAI CHARACTER SARA U}.}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E39.low}
+ \comment{A glyph variant of \textunicode{0E39}{THAI CHARACTER SARA UU}.}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\setslot{uni0E3A.low}
+ \comment{A glyph variant of \textunicode{0E3A}{THAI CHARACTER PHINTHU}.}
+ \Ligature{/LIG}{uni0E48}{uni0E48.low}
+ \Ligature{/LIG}{uni0E49}{uni0E49.low}
+ \Ligature{/LIG}{uni0E4A}{uni0E4A.low}
+ \Ligature{/LIG}{uni0E4B}{uni0E4B.low}
+ \Ligature{/LIG}{uni0E4C}{uni0E4C.low}
+\endsetslot
+
+\skipslots{1}
+
+
+\begincomment
+\section{Font Dimensions}
+\endcomment
+
+\setfontdimen{1}{italicslant}
+\setfontdimen{2}{interword}
+\setfontdimen{3}{stretchword}
+\setfontdimen{4}{shrinkword}
+\setfontdimen{5}{xheight}
+\setfontdimen{6}{quad}
+\setfontdimen{7}{extraspace}
+
+\endencoding
+
+
+\begin{thebibliography}{9}
+\bibitem{TUG-Thai}
+ Werner Lemberg: \textit{Thai Fonts}, in \textit{TUGboat},
+ 21(2):113--120, June 2000. Available online in PDF format as
+ \url{http://tug.org/TUGboat/Articles/tb21-2/tb67lemb.pdf}.
+\bibitem{AGL}
+ Adobe Systems Incorporated: \textit{Adobe Glyph List}, 2003;
+ \url{http://partners.adobe.com/asn/developer/type/unicodegn.html}.
+\bibitem{MFbook}
+ Donald E.\ Knuth, Duane Bibby (illustrations): \textit{The \MF
+ book}, Ad\-di\-son--Wes\-ley, 1986; ISBN~0-201-13445-4.
+\bibitem{Unicode}
+ The Unicode Consortium (editor), \emph{et al.}: \textit{The Unicode
+ Standard, Version 4.0}, Addison Wesley Longman Publisher, 2003;
+ ISBN~0-321-18578-1. Most of the information in this book is also
+ available online at the Unicode consortium website, at
+ \url{http://www.unicode.org/versions/Unicode4.0.1}.
+\end{thebibliography}
+
+\end{document}
+
+% end of c90.etx
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/thaifont/tools/c90.mtx b/language/chinese/CJK/cjk-4.8.4/utils/thaifont/tools/c90.mtx
new file mode 100644
index 0000000000..baccdefa08
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/thaifont/tools/c90.mtx
@@ -0,0 +1,42 @@
+% c90.mtx
+
+% Copyright (C) 1994-2015 Werner Lemberg <wl@gnu.org>
+%
+% This program is free software; you can redistribute it and/or modify
+% it under the terms of the GNU General Public License as published by
+% the Free Software Foundation; either version 2 of the License, or
+% (at your option) any later version.
+%
+% This program is distributed in the hope that it will be useful,
+% but WITHOUT ANY WARRANTY; without even the implied warranty of
+% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+% GNU General Public License for more details.
+%
+% You should have received a copy of the GNU General Public License
+% along with this program in doc/COPYING; if not, write to the Free
+% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+% MA 02110-1301 USA
+
+\relax
+
+\metrics
+
+\needsfontinstversion{1.918}
+
+% provide glyph aliases needed for the ligature mechanism
+
+\setglyph{uni0E38.left}
+ \glyph{uni0E38}{1000}
+\endsetglyph
+
+\setglyph{uni0E39.left}
+ \glyph{uni0E39}{1000}
+\endsetglyph
+
+\setglyph{uni0E3A.left}
+ \glyph{uni0E3A}{1000}
+\endsetglyph
+
+\endmetrics
+
+% end of c90.mtx
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/thaifont/tools/dbtt-old/config.dbtt-old b/language/chinese/CJK/cjk-4.8.4/utils/thaifont/tools/dbtt-old/config.dbtt-old
new file mode 100644
index 0000000000..5ce1be96b2
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/thaifont/tools/dbtt-old/config.dbtt-old
@@ -0,0 +1 @@
+p +dbtt-old.map
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/thaifont/tools/dbtt-old/dbtt-old-alias.etx b/language/chinese/CJK/cjk-4.8.4/utils/thaifont/tools/dbtt-old/dbtt-old-alias.etx
new file mode 100644
index 0000000000..c89777a2fb
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/thaifont/tools/dbtt-old/dbtt-old-alias.etx
@@ -0,0 +1,46 @@
+% dbtt-old-alias.etx
+
+% Copyright (C) 1994-2015 Werner Lemberg <wl@gnu.org>
+%
+% This program is free software; you can redistribute it and/or modify
+% it under the terms of the GNU General Public License as published by
+% the Free Software Foundation; either version 2 of the License, or
+% (at your option) any later version.
+%
+% This program is distributed in the hope that it will be useful,
+% but WITHOUT ANY WARRANTY; without even the implied warranty of
+% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+% GNU General Public License for more details.
+%
+% You should have received a copy of the GNU General Public License
+% along with this program in doc/COPYING; if not, write to the Free
+% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+% MA 02110-1301 USA
+
+\relax
+
+\encoding
+
+\needsfontinstversion{1.918}
+
+\fontinstcc
+\def\galias#1#2{
+ \expandafter\def\csname slot-#2\endcsname{#1}
+}
+\def\setslot#1{
+ \edef\slot_name{
+ \if_defined{slot-#1}\then
+ \csname slot-#1\endcsname
+ \else
+ #1
+ \fi
+ }
+ \do_slot
+}
+\normalcc
+
+\input dbtt-old-alias
+
+\endencoding
+
+% end of dbtt-old-alias.etx
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/thaifont/tools/dbtt-old/dbtt-old-alias.mtx b/language/chinese/CJK/cjk-4.8.4/utils/thaifont/tools/dbtt-old/dbtt-old-alias.mtx
new file mode 100644
index 0000000000..4dbb7382e2
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/thaifont/tools/dbtt-old/dbtt-old-alias.mtx
@@ -0,0 +1,36 @@
+% dbtt-old-alias.mtx
+
+% Copyright (C) 1994-2015 Werner Lemberg <wl@gnu.org>
+%
+% This program is free software; you can redistribute it and/or modify
+% it under the terms of the GNU General Public License as published by
+% the Free Software Foundation; either version 2 of the License, or
+% (at your option) any later version.
+%
+% This program is distributed in the hope that it will be useful,
+% but WITHOUT ANY WARRANTY; without even the implied warranty of
+% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+% GNU General Public License for more details.
+%
+% You should have received a copy of the GNU General Public License
+% along with this program in doc/COPYING; if not, write to the Free
+% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+% MA 02110-1301 USA
+
+\relax
+
+\metrics
+
+\needsfontinstversion{1.918}
+
+\def\galias#1#2{
+ \setglyph{#2}
+ \glyph{#1}{1000}
+ \endsetglyph
+}
+
+\input dbtt-old-alias
+
+\endmetrics
+
+% end of dbtt-old-alias.mtx
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/thaifont/tools/dbtt-old/dbtt-old-alias.tex b/language/chinese/CJK/cjk-4.8.4/utils/thaifont/tools/dbtt-old/dbtt-old-alias.tex
new file mode 100644
index 0000000000..558a1306cd
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/thaifont/tools/dbtt-old/dbtt-old-alias.tex
@@ -0,0 +1,139 @@
+% dbtt-old-alias.tex
+
+% Copyright (C) 1994-2015 Werner Lemberg <wl@gnu.org>
+%
+% This program is free software; you can redistribute it and/or modify
+% it under the terms of the GNU General Public License as published by
+% the Free Software Foundation; either version 2 of the License, or
+% (at your option) any later version.
+%
+% This program is distributed in the hope that it will be useful,
+% but WITHOUT ANY WARRANTY; without even the implied warranty of
+% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+% GNU General Public License for more details.
+%
+% You should have received a copy of the GNU General Public License
+% along with this program in doc/COPYING; if not, write to the Free
+% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+% MA 02110-1301 USA
+
+\galias{ucircumflex}{endash}
+\galias{uacute}{emdash}
+\galias{quotedbl}{quotedblleft}
+\galias{quotedbl}{quotedblright}
+\galias{quotesingle}{quoteright}
+\galias{grave}{quoteleft}
+\galias{florin}{uni0E48.low_left}
+\galias{quotedblbase}{uni0E49.low_left}
+\galias{ellipsis}{uni0E4A.low_left}
+\galias{dagger}{uni0E4B.low_left}
+\galias{daggerdbl}{uni0E4C.low_left}
+\galias{circumflex}{uni0E48.low}
+\galias{perthousand}{uni0E49.low}
+\galias{Scaron}{uni0E4A.low}
+\galias{guilsinglleft}{uni0E4B.low}
+\galias{OE}{uni0E4C.low}
+\galias{u008F}{uni0E4D.left}
+\galias{u0090}{uni0E0D.descless}
+\galias{quoteright}{uni0E31.left}
+\galias{quotedblleft}{uni0E47.left}
+\galias{quotedblright}{uni0E34.left}
+\galias{bullet}{uni0E35.left}
+\galias{emdash}{uni0E36.left}
+\galias{endash}{uni0E37.left}
+\galias{tilde}{uni0E48.left}
+\galias{trademark}{uni0E49.left}
+\galias{scaron}{uni0E4A.left}
+\galias{guilsinglright}{uni0E4B.left}
+\galias{oe}{uni0E4C.left}
+\galias{Ydieresis}{uni0E10.descless}
+\galias{exclamdown}{uni0E01}
+\galias{cent}{uni0E02}
+\galias{sterling}{uni0E03}
+\galias{currency}{uni0E04}
+\galias{yen}{uni0E05}
+\galias{brokenbar}{uni0E06}
+\galias{section}{uni0E07}
+\galias{dieresis}{uni0E08}
+\galias{copyright}{uni0E09}
+\galias{ordfeminine}{uni0E0A}
+\galias{guillemotleft}{uni0E0B}
+\galias{logicalnot}{uni0E0C}
+\galias{hyphen}{uni0E0D}
+\galias{registered}{uni0E0E}
+\galias{macron}{uni0E0F}
+\galias{degree}{uni0E10}
+\galias{plusminus}{uni0E11}
+\galias{twosuperior}{uni0E12}
+\galias{threesuperior}{uni0E13}
+\galias{acute}{uni0E14}
+\galias{mu}{uni0E15}
+\galias{paragraph}{uni0E16}
+\galias{periodcentered}{uni0E17}
+\galias{cedilla}{uni0E18}
+\galias{onesuperior}{uni0E19}
+\galias{ordmasculine}{uni0E1A}
+\galias{guillemotright}{uni0E1B}
+\galias{onequarter}{uni0E1C}
+\galias{onehalf}{uni0E1D}
+\galias{threequarters}{uni0E1E}
+\galias{questiondown}{uni0E1F}
+\galias{Agrave}{uni0E20}
+\galias{Aacute}{uni0E21}
+\galias{Acircumflex}{uni0E22}
+\galias{Atilde}{uni0E23}
+\galias{Adieresis}{uni0E24}
+\galias{Aring}{uni0E25}
+\galias{AE}{uni0E26}
+\galias{Ccedilla}{uni0E27}
+\galias{Egrave}{uni0E28}
+\galias{Eacute}{uni0E29}
+\galias{Ecircumflex}{uni0E2A}
+\galias{Edieresis}{uni0E2B}
+\galias{Igrave}{uni0E2C}
+\galias{Iacute}{uni0E2D}
+\galias{Icircumflex}{uni0E2E}
+\galias{Idieresis}{uni0E2F}
+\galias{Eth}{uni0E30}
+\galias{Ntilde}{uni0E31}
+\galias{Ograve}{uni0E32}
+\galias{Oacute}{uni0E33}
+\galias{Ocircumflex}{uni0E34}
+\galias{Otilde}{uni0E35}
+\galias{Odieresis}{uni0E36}
+\galias{multiply}{uni0E37}
+\galias{Oslash}{uni0E38}
+\galias{Ugrave}{uni0E39}
+\galias{Uacute}{uni0E3A}
+\galias{germandbls}{uni0E3F}
+\galias{agrave}{uni0E40}
+\galias{aacute}{uni0E41}
+\galias{acircumflex}{uni0E42}
+\galias{atilde}{uni0E43}
+\galias{adieresis}{uni0E44}
+\galias{aring}{uni0E45}
+\galias{ae}{uni0E46}
+\galias{ccedilla}{uni0E47}
+\galias{egrave}{uni0E48}
+\galias{eacute}{uni0E49}
+\galias{ecircumflex}{uni0E4A}
+\galias{edieresis}{uni0E4B}
+\galias{igrave}{uni0E4C}
+\galias{iacute}{uni0E4D}
+\galias{icircumflex}{uni0E4E}
+\galias{idieresis}{uni0E4F}
+\galias{eth}{uni0E50}
+\galias{ntilde}{uni0E51}
+\galias{ograve}{uni0E52}
+\galias{oacute}{uni0E53}
+\galias{ocircumflex}{uni0E54}
+\galias{otilde}{uni0E55}
+\galias{odieresis}{uni0E56}
+\galias{divide}{uni0E57}
+\galias{oslash}{uni0E58}
+\galias{ugrave}{uni0E59}
+\galias{udieresis}{uni0E38.low}
+\galias{yacute}{uni0E39.low}
+\galias{Ucircumflex}{uni0E3A.low}
+
+% end of dbtt-old-alias.tex
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/thaifont/tools/dbtt-old/dbtt-old.fontinst b/language/chinese/CJK/cjk-4.8.4/utils/thaifont/tools/dbtt-old/dbtt-old.fontinst
new file mode 100644
index 0000000000..794284d1e0
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/thaifont/tools/dbtt-old/dbtt-old.fontinst
@@ -0,0 +1,78 @@
+% dbtt-old.fontinst
+
+% Copyright (C) 1994-2015 Werner Lemberg <wl@gnu.org>
+%
+% This program is free software; you can redistribute it and/or modify
+% it under the terms of the GNU General Public License as published by
+% the Free Software Foundation; either version 2 of the License, or
+% (at your option) any later version.
+%
+% This program is distributed in the hope that it will be useful,
+% but WITHOUT ANY WARRANTY; without even the implied warranty of
+% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+% GNU General Public License for more details.
+%
+% You should have received a copy of the GNU General Public License
+% along with this program in doc/COPYING; if not, write to the Free
+% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+% MA 02110-1301 USA
+
+\input fontinst.sty
+
+\needsfontinstversion{1.918}
+
+
+% we explicitly set all slots in the encoding, so provide all glyph names
+% in AFM files equally (this is, don't create `<glyph>-not' names)
+\let\setnotglyph \setrawglyph
+
+% we want warnings for missing glyphs
+\fontinstcc
+\add_to\pre_fourth_etx_pass_hook{
+ \def\do_slot{
+ \if_undefined{g-\slot_name}\then
+ \fontinstwarningnoline{fontinst}
+ {missing~glyph~`\slot_name'\space
+ for~slot~\the\slot_number\space
+ in~font~`\out_filename'}
+ \fi
+ \do_character
+ }
+}
+\normalcc
+
+
+% create PL files and an FD file
+\installfonts
+ \setint{fontdimen(2)}{500} % SPACE
+ \setint{fontdimen(3)}{300} % STRETCH
+ \setint{fontdimen(4)}{100} % SHRINK
+ \setint{fontdimen(6)}{1000} % QUAD
+ \setint{fontdimen(7)}{0} % EXTRASPACE
+
+ \installrawfont{fdbr8z}{dbtt,dbtt-old-alias,c90}{c90}
+ {C90}{dbss}{m}{n}{<-> s *[1.3]}
+ \installrawfont{fdbb8z}{dbttb,dbtt-old-alias,c90}{c90}
+ {C90}{dbss}{bx}{n}{<-> s *[1.3]}
+ \installrawfont{fdbbo8z}{dbttbi,dbtt-old-alias,c90}{c90}
+ {C90}{dbss}{bx}{sl}{<-> s *[1.3]}
+ \installrawfont{fdbo8z}{dbtti,dbtt-old-alias,c90}{c90}
+ {C90}{dbss}{m}{sl}{<-> s *[1.3]}
+\endinstallfonts
+
+
+\input finstmsc.sty
+
+
+% create the dbtt-old.enc file
+\installfonts
+ % the `makeenc' flag is used in c90.etx
+ \setint{makeenc}{1}
+ \setstr{encodingname}{dbtt-oldEncoding}
+ \inputetx{dbtt-old-alias}
+ \etxtoenc{c90}{dbtt-old}
+\endinstallfonts
+
+\end
+
+% end of dbtt-old.fontinst
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/thaifont/tools/dbtt-old/dbtt-old.map b/language/chinese/CJK/cjk-4.8.4/utils/thaifont/tools/dbtt-old/dbtt-old.map
new file mode 100644
index 0000000000..c48f73fe71
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/thaifont/tools/dbtt-old/dbtt-old.map
@@ -0,0 +1,4 @@
+fdbr8z DBThaiText " dbtt-oldEncoding ReEncodeFont " <dbtt-old.enc <dbtt.pfb
+fdbb8z DBThaiTextBold " dbtt-oldEncoding ReEncodeFont " <dbtt-old.enc <dbttb.pfb
+fdbo8z DBThaiTextItalic " dbtt-oldEncoding ReEncodeFont " <dbtt-old.enc <dbtti.pfb
+fdbbo8z DBThaiTextBoldItalic " dbtt-oldEncoding ReEncodeFont " <dbtt-old.enc <dbttbi.pfb
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/thaifont/tools/garuda-c90.fontinst b/language/chinese/CJK/cjk-4.8.4/utils/thaifont/tools/garuda-c90.fontinst
new file mode 100644
index 0000000000..a48185c4cb
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/thaifont/tools/garuda-c90.fontinst
@@ -0,0 +1,77 @@
+% garuda-c90.fontinst
+
+% Copyright (C) 1994-2015 Werner Lemberg <wl@gnu.org>
+%
+% This program is free software; you can redistribute it and/or modify
+% it under the terms of the GNU General Public License as published by
+% the Free Software Foundation; either version 2 of the License, or
+% (at your option) any later version.
+%
+% This program is distributed in the hope that it will be useful,
+% but WITHOUT ANY WARRANTY; without even the implied warranty of
+% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+% GNU General Public License for more details.
+%
+% You should have received a copy of the GNU General Public License
+% along with this program in doc/COPYING; if not, write to the Free
+% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+% MA 02110-1301 USA
+
+\input fontinst.sty
+
+\needsfontinstversion{1.918}
+
+
+% we explicitly set all slots in the encoding, so provide all glyph names
+% in AFM files equally (this is, don't create `<glyph>-not' names)
+\let\setnotglyph \setrawglyph
+
+% we want warnings for missing glyphs
+\fontinstcc
+\add_to\pre_fourth_etx_pass_hook{
+ \def\do_slot{
+ \if_undefined{g-\slot_name}\then
+ \fontinstwarningnoline{fontinst}
+ {missing~glyph~`\slot_name'\space
+ for~slot~\the\slot_number\space
+ in~font~`\out_filename'}
+ \fi
+ \do_character
+ }
+}
+\normalcc
+
+
+% create PL files and an FD file
+\installfonts
+ \setint{fontdimen(2)}{500} % SPACE
+ \setint{fontdimen(3)}{300} % STRETCH
+ \setint{fontdimen(4)}{100} % SHRINK
+ \setint{fontdimen(6)}{1000} % QUAD
+ \setint{fontdimen(7)}{0} % EXTRASPACE
+
+ \installrawfont{fgdr8z}{garuda,c90}{c90}
+ {C90}{garuda}{m}{n}{}
+ \installrawfont{fgdb8z}{garuda_b,c90}{c90}
+ {C90}{garuda}{bx}{n}{}
+ \installrawfont{fgdbo8z}{garuda_bo,c90}{c90}
+ {C90}{garuda}{bx}{sl}{}
+ \installrawfont{fgdo8z}{garuda_o,c90}{c90}
+ {C90}{garuda}{m}{sl}{}
+\endinstallfonts
+
+
+\input finstmsc.sty
+
+
+% create the c90.enc file
+\installfonts
+ % the `makeenc' flag is used in c90.etx
+ \setint{makeenc}{1}
+ \setstr{encodingname}{C90Encoding}
+ \etxtoenc{c90}{c90}
+\endinstallfonts
+
+\end
+
+% end of garuda-c90.fontinst
diff --git a/language/chinese/CJK/cjk-4.8.4/utils/thaifont/tools/norasi-c90.fontinst b/language/chinese/CJK/cjk-4.8.4/utils/thaifont/tools/norasi-c90.fontinst
new file mode 100644
index 0000000000..433c89a9ab
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.4/utils/thaifont/tools/norasi-c90.fontinst
@@ -0,0 +1,85 @@
+% norasi-c90.fontinst
+
+% Copyright (C) 1994-2015 Werner Lemberg <wl@gnu.org>
+%
+% This program is free software; you can redistribute it and/or modify
+% it under the terms of the GNU General Public License as published by
+% the Free Software Foundation; either version 2 of the License, or
+% (at your option) any later version.
+%
+% This program is distributed in the hope that it will be useful,
+% but WITHOUT ANY WARRANTY; without even the implied warranty of
+% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+% GNU General Public License for more details.
+%
+% You should have received a copy of the GNU General Public License
+% along with this program in doc/COPYING; if not, write to the Free
+% Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+% MA 02110-1301 USA
+
+\input fontinst.sty
+
+\needsfontinstversion{1.918}
+
+
+% we explicitly set all slots in the encoding, so provide all glyph names
+% in AFM files equally (this is, don't create `<glyph>-not' names)
+\let\setnotglyph \setrawglyph
+
+% we want warnings for missing glyphs
+\fontinstcc
+\add_to\pre_fourth_etx_pass_hook{
+ \def\do_slot{
+ \if_undefined{g-\slot_name}\then
+ \fontinstwarningnoline{fontinst}
+ {missing~glyph~`\slot_name'\space
+ for~slot~\the\slot_number\space
+ in~font~`\out_filename'}
+ \fi
+ \do_character
+ }
+}
+\normalcc
+
+
+% create PL files and an FD file
+\installfonts
+ \setint{fontdimen(2)}{500} % SPACE
+ \setint{fontdimen(3)}{300} % STRETCH
+ \setint{fontdimen(4)}{100} % SHRINK
+ \setint{fontdimen(6)}{1000} % QUAD
+ \setint{fontdimen(7)}{0} % EXTRASPACE
+
+ \installrawfont{ftnr8z}{norasi,c90}{c90}
+ {C90}{nrsr}{m}{n}{}
+ \installrawfont{ftnb8z}{norasi_b,c90}{c90}
+ {C90}{nrsr}{bx}{n}{}
+ \installrawfont{ftnbi8z}{norasi_bi,c90}{c90}
+ {C90}{nrsr}{bx}{it}{}
+ \installrawfont{ftni8z}{norasi_i,c90}{c90}
+ {C90}{nrsr}{m}{it}{}
+
+% Thai glyphs in norasi_o and norasi_bo are identical to the shapes
+% in norasi_i and norasi_bi, respectively.
+%
+% \installrawfont{ftno8z}{norasi_o,c90}{c90}
+% {C90}{nrsr}{m}{sl}{}
+% \installrawfont{ftnbo8z}{norasi_bo,c90}{c90}
+% {C90}{nrsr}{bx}{sl}{}
+\endinstallfonts
+
+
+\input finstmsc.sty
+
+
+% create the c90.enc file
+\installfonts
+ % the `makeenc' flag is used in c90.etx
+ \setint{makeenc}{1}
+ \setstr{encodingname}{C90Encoding}
+ \etxtoenc{c90}{c90}
+\endinstallfonts
+
+\end
+
+% end of norasi-c90.fontinst