texlive[54375] Master: New Tcl/Tk for Windows.

commits+siepo at tug.org commits+siepo at tug.org
Tue Mar 17 21:46:23 CET 2020


Revision: 54375
          http://tug.org/svn/texlive?view=revision&revision=54375
Author:   siepo
Date:     2020-03-17 21:46:21 +0100 (Tue, 17 Mar 2020)
Log Message:
-----------
New Tcl/Tk for Windows. No longer a single-file kit.

Modified Paths:
--------------
    trunk/Master/install-tl-windows.bat
    trunk/Master/source/tlgui/tltcl/tltcl.README
    trunk/Master/tlpkg/tlpsrc/00texlive.installer.tlpsrc
    trunk/Master/tlpkg/tlpsrc/tlshell.tlpsrc

Added Paths:
-----------
    trunk/Master/source/tlgui/tltcl/tcl8.6.10.tar.gz
    trunk/Master/source/tlgui/tltcl/tk8.6.10.tar.gz
    trunk/Master/tlpkg/tltcl/bin/
    trunk/Master/tlpkg/tltcl/bin/tcl86.dll
    trunk/Master/tlpkg/tltcl/bin/tclsh.exe
    trunk/Master/tlpkg/tltcl/bin/tk86.dll
    trunk/Master/tlpkg/tltcl/bin/wish.exe
    trunk/Master/tlpkg/tltcl/bin/zlib1.dll
    trunk/Master/tlpkg/tltcl/lib/
    trunk/Master/tlpkg/tltcl/lib/dde1.4/
    trunk/Master/tlpkg/tltcl/lib/dde1.4/libtcldde14.a
    trunk/Master/tlpkg/tltcl/lib/dde1.4/pkgIndex.tcl
    trunk/Master/tlpkg/tltcl/lib/dde1.4/tcldde14.dll
    trunk/Master/tlpkg/tltcl/lib/itcl4.2.0/
    trunk/Master/tlpkg/tltcl/lib/itcl4.2.0/itcl.tcl
    trunk/Master/tlpkg/tltcl/lib/itcl4.2.0/itcl420.dll
    trunk/Master/tlpkg/tltcl/lib/itcl4.2.0/itclConfig.sh
    trunk/Master/tlpkg/tltcl/lib/itcl4.2.0/itclHullCmds.tcl
    trunk/Master/tlpkg/tltcl/lib/itcl4.2.0/itclWidget.tcl
    trunk/Master/tlpkg/tltcl/lib/itcl4.2.0/libitclstub420.a
    trunk/Master/tlpkg/tltcl/lib/itcl4.2.0/pkgIndex.tcl
    trunk/Master/tlpkg/tltcl/lib/libtcl86.a
    trunk/Master/tlpkg/tltcl/lib/libtclstub86.a
    trunk/Master/tlpkg/tltcl/lib/libtk86.a
    trunk/Master/tlpkg/tltcl/lib/libtkstub86.a
    trunk/Master/tlpkg/tltcl/lib/reg1.3/
    trunk/Master/tlpkg/tltcl/lib/reg1.3/libtclreg13.a
    trunk/Master/tlpkg/tltcl/lib/reg1.3/pkgIndex.tcl
    trunk/Master/tlpkg/tltcl/lib/reg1.3/tclreg13.dll
    trunk/Master/tlpkg/tltcl/lib/sqlite3.30.1.2/
    trunk/Master/tlpkg/tltcl/lib/sqlite3.30.1.2/pkgIndex.tcl
    trunk/Master/tlpkg/tltcl/lib/sqlite3.30.1.2/sqlite33012.dll
    trunk/Master/tlpkg/tltcl/lib/tcl8/
    trunk/Master/tlpkg/tltcl/lib/tcl8/8.4/
    trunk/Master/tlpkg/tltcl/lib/tcl8/8.4/platform/
    trunk/Master/tlpkg/tltcl/lib/tcl8/8.4/platform/shell-1.1.4.tm
    trunk/Master/tlpkg/tltcl/lib/tcl8/8.4/platform-1.0.14.tm
    trunk/Master/tlpkg/tltcl/lib/tcl8/8.5/
    trunk/Master/tlpkg/tltcl/lib/tcl8/8.5/msgcat-1.6.1.tm
    trunk/Master/tlpkg/tltcl/lib/tcl8/8.5/tcltest-2.5.1.tm
    trunk/Master/tlpkg/tltcl/lib/tcl8/8.6/
    trunk/Master/tlpkg/tltcl/lib/tcl8/8.6/http-2.9.1.tm
    trunk/Master/tlpkg/tltcl/lib/tcl8/8.6/tdbc/
    trunk/Master/tlpkg/tltcl/lib/tcl8/8.6/tdbc/sqlite3-1.1.1.tm
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/auto.tcl
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/clock.tcl
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/ascii.enc
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/big5.enc
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp1250.enc
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp1251.enc
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp1252.enc
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp1253.enc
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp1254.enc
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp1255.enc
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp1256.enc
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp1257.enc
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp1258.enc
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp437.enc
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp737.enc
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp775.enc
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp850.enc
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp852.enc
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp855.enc
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp857.enc
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp860.enc
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp861.enc
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp862.enc
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp863.enc
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp864.enc
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp865.enc
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp866.enc
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp869.enc
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp874.enc
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp932.enc
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp936.enc
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp949.enc
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp950.enc
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/dingbats.enc
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/ebcdic.enc
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/euc-cn.enc
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/euc-jp.enc
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/euc-kr.enc
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/gb12345.enc
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/gb1988.enc
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/gb2312-raw.enc
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/gb2312.enc
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/iso2022-jp.enc
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/iso2022-kr.enc
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/iso2022.enc
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/iso8859-1.enc
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/iso8859-10.enc
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/iso8859-13.enc
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/iso8859-14.enc
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/iso8859-15.enc
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/iso8859-16.enc
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/iso8859-2.enc
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/iso8859-3.enc
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/iso8859-4.enc
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/iso8859-5.enc
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/iso8859-6.enc
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/iso8859-7.enc
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/iso8859-8.enc
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/iso8859-9.enc
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/jis0201.enc
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/jis0208.enc
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/jis0212.enc
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/koi8-r.enc
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/koi8-u.enc
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/ksc5601.enc
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/macCentEuro.enc
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/macCroatian.enc
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/macCyrillic.enc
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/macDingbats.enc
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/macGreek.enc
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/macIceland.enc
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/macJapan.enc
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/macRoman.enc
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/macRomania.enc
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/macThai.enc
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/macTurkish.enc
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/macUkraine.enc
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/shiftjis.enc
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/symbol.enc
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/tis-620.enc
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/history.tcl
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/http1.0/
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/http1.0/http.tcl
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/http1.0/pkgIndex.tcl
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/init.tcl
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/af.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/af_za.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/ar.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/ar_in.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/ar_jo.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/ar_lb.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/ar_sy.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/be.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/bg.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/bn.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/bn_in.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/ca.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/cs.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/da.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/de.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/de_at.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/de_be.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/el.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/en_au.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/en_be.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/en_bw.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/en_ca.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/en_gb.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/en_hk.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/en_ie.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/en_in.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/en_nz.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/en_ph.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/en_sg.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/en_za.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/en_zw.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/eo.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/es.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/es_ar.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/es_bo.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/es_cl.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/es_co.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/es_cr.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/es_do.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/es_ec.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/es_gt.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/es_hn.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/es_mx.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/es_ni.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/es_pa.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/es_pe.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/es_pr.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/es_py.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/es_sv.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/es_uy.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/es_ve.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/et.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/eu.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/eu_es.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/fa.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/fa_in.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/fa_ir.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/fi.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/fo.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/fo_fo.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/fr.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/fr_be.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/fr_ca.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/fr_ch.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/ga.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/ga_ie.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/gl.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/gl_es.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/gv.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/gv_gb.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/he.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/hi.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/hi_in.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/hr.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/hu.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/id.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/id_id.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/is.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/it.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/it_ch.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/ja.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/kl.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/kl_gl.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/ko.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/ko_kr.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/kok.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/kok_in.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/kw.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/kw_gb.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/lt.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/lv.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/mk.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/mr.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/mr_in.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/ms.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/ms_my.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/mt.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/nb.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/nl.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/nl_be.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/nn.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/pl.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/pt.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/pt_br.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/ro.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/ru.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/ru_ua.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/sh.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/sk.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/sl.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/sq.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/sr.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/sv.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/sw.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/ta.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/ta_in.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/te.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/te_in.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/th.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/tr.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/uk.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/vi.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/zh.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/zh_cn.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/zh_hk.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/zh_sg.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/msgs/zh_tw.msg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/opt0.4/
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/opt0.4/optparse.tcl
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/opt0.4/pkgIndex.tcl
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/package.tcl
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/parray.tcl
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/safe.tcl
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tclIndex
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tm.tcl
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Africa/
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Africa/Abidjan
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Africa/Accra
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Africa/Addis_Ababa
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Africa/Algiers
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Africa/Asmara
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Africa/Asmera
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Africa/Bamako
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Africa/Bangui
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Africa/Banjul
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Africa/Bissau
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Africa/Blantyre
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Africa/Brazzaville
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Africa/Bujumbura
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Africa/Cairo
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Africa/Casablanca
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Africa/Ceuta
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Africa/Conakry
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Africa/Dakar
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Africa/Dar_es_Salaam
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Africa/Djibouti
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Africa/Douala
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Africa/El_Aaiun
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Africa/Freetown
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Africa/Gaborone
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Africa/Harare
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Africa/Johannesburg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Africa/Juba
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Africa/Kampala
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Africa/Khartoum
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Africa/Kigali
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Africa/Kinshasa
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Africa/Lagos
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Africa/Libreville
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Africa/Lome
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Africa/Luanda
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Africa/Lubumbashi
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Africa/Lusaka
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Africa/Malabo
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Africa/Maputo
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Africa/Maseru
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Africa/Mbabane
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Africa/Mogadishu
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Africa/Monrovia
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Africa/Nairobi
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Africa/Ndjamena
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Africa/Niamey
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Africa/Nouakchott
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Africa/Ouagadougou
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Africa/Porto-Novo
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Africa/Sao_Tome
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Africa/Timbuktu
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Africa/Tripoli
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Africa/Tunis
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Africa/Windhoek
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Adak
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Anchorage
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Anguilla
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Antigua
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Araguaina
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Argentina/
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Argentina/Buenos_Aires
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Argentina/Catamarca
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Argentina/ComodRivadavia
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Argentina/Cordoba
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Argentina/Jujuy
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Argentina/La_Rioja
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Argentina/Mendoza
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Argentina/Rio_Gallegos
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Argentina/Salta
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Argentina/San_Juan
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Argentina/San_Luis
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Argentina/Tucuman
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Argentina/Ushuaia
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Aruba
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Asuncion
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Atikokan
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Atka
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Bahia
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Bahia_Banderas
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Barbados
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Belem
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Belize
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Blanc-Sablon
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Boa_Vista
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Bogota
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Boise
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Buenos_Aires
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Cambridge_Bay
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Campo_Grande
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Cancun
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Caracas
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Catamarca
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Cayenne
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Cayman
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Chicago
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Chihuahua
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Coral_Harbour
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Cordoba
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Costa_Rica
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Creston
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Cuiaba
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Curacao
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Danmarkshavn
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Dawson
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Dawson_Creek
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Denver
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Detroit
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Dominica
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Edmonton
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Eirunepe
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/El_Salvador
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Ensenada
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Fort_Nelson
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Fort_Wayne
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Fortaleza
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Glace_Bay
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Godthab
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Goose_Bay
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Grand_Turk
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Grenada
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Guadeloupe
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Guatemala
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Guayaquil
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Guyana
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Halifax
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Havana
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Hermosillo
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Indiana/
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Indiana/Indianapolis
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Indiana/Knox
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Indiana/Marengo
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Indiana/Petersburg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Indiana/Tell_City
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Indiana/Vevay
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Indiana/Vincennes
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Indiana/Winamac
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Indianapolis
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Inuvik
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Iqaluit
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Jamaica
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Jujuy
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Juneau
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Kentucky/
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Kentucky/Louisville
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Kentucky/Monticello
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Knox_IN
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Kralendijk
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/La_Paz
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Lima
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Los_Angeles
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Louisville
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Lower_Princes
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Maceio
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Managua
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Manaus
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Marigot
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Martinique
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Matamoros
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Mazatlan
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Mendoza
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Menominee
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Merida
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Metlakatla
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Mexico_City
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Miquelon
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Moncton
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Monterrey
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Montevideo
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Montreal
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Montserrat
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Nassau
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/New_York
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Nipigon
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Nome
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Noronha
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/North_Dakota/
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/North_Dakota/Beulah
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/North_Dakota/Center
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/North_Dakota/New_Salem
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Ojinaga
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Panama
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Pangnirtung
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Paramaribo
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Phoenix
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Port-au-Prince
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Port_of_Spain
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Porto_Acre
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Porto_Velho
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Puerto_Rico
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Punta_Arenas
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Rainy_River
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Rankin_Inlet
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Recife
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Regina
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Resolute
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Rio_Branco
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Rosario
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Santa_Isabel
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Santarem
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Santiago
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Santo_Domingo
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Sao_Paulo
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Scoresbysund
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Shiprock
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Sitka
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/St_Barthelemy
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/St_Johns
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/St_Kitts
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/St_Lucia
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/St_Thomas
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/St_Vincent
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Swift_Current
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Tegucigalpa
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Thule
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Thunder_Bay
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Tijuana
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Toronto
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Tortola
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Vancouver
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Virgin
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Whitehorse
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Winnipeg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Yakutat
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/America/Yellowknife
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Antarctica/
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Antarctica/Casey
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Antarctica/Davis
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Antarctica/DumontDUrville
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Antarctica/Macquarie
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Antarctica/Mawson
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Antarctica/McMurdo
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Antarctica/Palmer
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Antarctica/Rothera
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Antarctica/South_Pole
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Antarctica/Syowa
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Antarctica/Troll
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Antarctica/Vostok
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Arctic/
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Arctic/Longyearbyen
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Aden
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Almaty
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Amman
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Anadyr
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Aqtau
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Aqtobe
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Ashgabat
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Ashkhabad
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Atyrau
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Baghdad
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Bahrain
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Baku
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Bangkok
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Barnaul
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Beirut
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Bishkek
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Brunei
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Calcutta
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Chita
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Choibalsan
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Chongqing
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Chungking
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Colombo
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Dacca
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Damascus
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Dhaka
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Dili
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Dubai
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Dushanbe
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Famagusta
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Gaza
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Harbin
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Hebron
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Ho_Chi_Minh
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Hong_Kong
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Hovd
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Irkutsk
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Istanbul
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Jakarta
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Jayapura
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Jerusalem
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Kabul
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Kamchatka
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Karachi
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Kashgar
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Kathmandu
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Katmandu
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Khandyga
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Kolkata
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Krasnoyarsk
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Kuala_Lumpur
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Kuching
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Kuwait
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Macao
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Macau
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Magadan
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Makassar
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Manila
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Muscat
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Nicosia
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Novokuznetsk
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Novosibirsk
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Omsk
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Oral
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Phnom_Penh
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Pontianak
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Pyongyang
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Qatar
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Qostanay
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Qyzylorda
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Rangoon
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Riyadh
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Saigon
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Sakhalin
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Samarkand
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Seoul
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Shanghai
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Singapore
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Srednekolymsk
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Taipei
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Tashkent
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Tbilisi
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Tehran
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Tel_Aviv
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Thimbu
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Thimphu
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Tokyo
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Tomsk
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Ujung_Pandang
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Ulaanbaatar
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Ulan_Bator
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Urumqi
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Ust-Nera
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Vientiane
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Vladivostok
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Yakutsk
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Yangon
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Yekaterinburg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Asia/Yerevan
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Atlantic/
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Atlantic/Azores
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Atlantic/Bermuda
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Atlantic/Canary
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Atlantic/Cape_Verde
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Atlantic/Faeroe
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Atlantic/Faroe
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Atlantic/Jan_Mayen
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Atlantic/Madeira
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Atlantic/Reykjavik
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Atlantic/South_Georgia
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Atlantic/St_Helena
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Atlantic/Stanley
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Australia/
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Australia/ACT
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Australia/Adelaide
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Australia/Brisbane
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Australia/Broken_Hill
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Australia/Canberra
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Australia/Currie
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Australia/Darwin
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Australia/Eucla
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Australia/Hobart
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Australia/LHI
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Australia/Lindeman
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Australia/Lord_Howe
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Australia/Melbourne
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Australia/NSW
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Australia/North
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Australia/Perth
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Australia/Queensland
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Australia/South
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Australia/Sydney
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Australia/Tasmania
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Australia/Victoria
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Australia/West
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Australia/Yancowinna
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Brazil/
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Brazil/Acre
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Brazil/DeNoronha
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Brazil/East
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Brazil/West
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/CET
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/CST6CDT
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Canada/
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Canada/Atlantic
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Canada/Central
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Canada/East-Saskatchewan
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Canada/Eastern
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Canada/Mountain
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Canada/Newfoundland
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Canada/Pacific
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Canada/Saskatchewan
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Canada/Yukon
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Chile/
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Chile/Continental
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Chile/EasterIsland
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Cuba
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/EET
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/EST
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/EST5EDT
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Egypt
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Eire
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Etc/
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Etc/GMT
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Etc/GMT+0
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Etc/GMT+1
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Etc/GMT+10
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Etc/GMT+11
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Etc/GMT+12
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Etc/GMT+2
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Etc/GMT+3
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Etc/GMT+4
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Etc/GMT+5
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Etc/GMT+6
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Etc/GMT+7
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Etc/GMT+8
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Etc/GMT+9
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Etc/GMT-0
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Etc/GMT-1
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Etc/GMT-10
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Etc/GMT-11
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Etc/GMT-12
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Etc/GMT-13
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Etc/GMT-14
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Etc/GMT-2
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Etc/GMT-3
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Etc/GMT-4
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Etc/GMT-5
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Etc/GMT-6
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Etc/GMT-7
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Etc/GMT-8
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Etc/GMT-9
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Etc/GMT0
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Etc/Greenwich
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Etc/UCT
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Etc/UTC
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Etc/Universal
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Etc/Zulu
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Europe/
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Europe/Amsterdam
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Europe/Andorra
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Europe/Astrakhan
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Europe/Athens
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Europe/Belfast
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Europe/Belgrade
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Europe/Berlin
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Europe/Bratislava
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Europe/Brussels
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Europe/Bucharest
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Europe/Budapest
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Europe/Busingen
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Europe/Chisinau
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Europe/Copenhagen
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Europe/Dublin
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Europe/Gibraltar
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Europe/Guernsey
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Europe/Helsinki
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Europe/Isle_of_Man
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Europe/Istanbul
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Europe/Jersey
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Europe/Kaliningrad
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Europe/Kiev
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Europe/Kirov
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Europe/Lisbon
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Europe/Ljubljana
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Europe/London
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Europe/Luxembourg
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Europe/Madrid
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Europe/Malta
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Europe/Mariehamn
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Europe/Minsk
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Europe/Monaco
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Europe/Moscow
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Europe/Nicosia
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Europe/Oslo
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Europe/Paris
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Europe/Podgorica
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Europe/Prague
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Europe/Riga
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Europe/Rome
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Europe/Samara
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Europe/San_Marino
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Europe/Sarajevo
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Europe/Saratov
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Europe/Simferopol
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Europe/Skopje
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Europe/Sofia
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Europe/Stockholm
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Europe/Tallinn
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Europe/Tirane
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Europe/Tiraspol
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Europe/Ulyanovsk
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Europe/Uzhgorod
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Europe/Vaduz
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Europe/Vatican
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Europe/Vienna
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Europe/Vilnius
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Europe/Volgograd
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Europe/Warsaw
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Europe/Zagreb
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Europe/Zaporozhye
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Europe/Zurich
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/GB
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/GB-Eire
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/GMT
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/GMT+0
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/GMT-0
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/GMT0
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Greenwich
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/HST
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Hongkong
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Iceland
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Indian/
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Indian/Antananarivo
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Indian/Chagos
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Indian/Christmas
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Indian/Cocos
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Indian/Comoro
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Indian/Kerguelen
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Indian/Mahe
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Indian/Maldives
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Indian/Mauritius
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Indian/Mayotte
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Indian/Reunion
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Iran
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Israel
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Jamaica
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Japan
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Kwajalein
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Libya
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/MET
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/MST
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/MST7MDT
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Mexico/
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Mexico/BajaNorte
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Mexico/BajaSur
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Mexico/General
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/NZ
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/NZ-CHAT
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Navajo
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/PRC
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/PST8PDT
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Pacific/
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Pacific/Apia
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Pacific/Auckland
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Pacific/Bougainville
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Pacific/Chatham
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Pacific/Chuuk
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Pacific/Easter
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Pacific/Efate
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Pacific/Enderbury
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Pacific/Fakaofo
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Pacific/Fiji
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Pacific/Funafuti
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Pacific/Galapagos
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Pacific/Gambier
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Pacific/Guadalcanal
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Pacific/Guam
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Pacific/Honolulu
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Pacific/Johnston
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Pacific/Kiritimati
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Pacific/Kosrae
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Pacific/Kwajalein
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Pacific/Majuro
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Pacific/Marquesas
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Pacific/Midway
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Pacific/Nauru
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Pacific/Niue
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Pacific/Norfolk
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Pacific/Noumea
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Pacific/Pago_Pago
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Pacific/Palau
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Pacific/Pitcairn
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Pacific/Pohnpei
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Pacific/Ponape
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Pacific/Port_Moresby
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Pacific/Rarotonga
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Pacific/Saipan
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Pacific/Samoa
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Pacific/Tahiti
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Pacific/Tarawa
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Pacific/Tongatapu
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Pacific/Truk
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Pacific/Wake
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Pacific/Wallis
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Pacific/Yap
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Poland
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Portugal
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/ROC
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/ROK
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Singapore
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/SystemV/
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/SystemV/AST4
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/SystemV/AST4ADT
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/SystemV/CST6
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/SystemV/CST6CDT
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/SystemV/EST5
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/SystemV/EST5EDT
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/SystemV/HST10
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/SystemV/MST7
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/SystemV/MST7MDT
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/SystemV/PST8
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/SystemV/PST8PDT
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/SystemV/YST9
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/SystemV/YST9YDT
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Turkey
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/UCT
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/US/
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/US/Alaska
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/US/Aleutian
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/US/Arizona
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/US/Central
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/US/East-Indiana
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/US/Eastern
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/US/Hawaii
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/US/Indiana-Starke
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/US/Michigan
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/US/Mountain
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/US/Pacific
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/US/Pacific-New
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/US/Samoa
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/UTC
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Universal
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/W-SU
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/WET
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/tzdata/Zulu
    trunk/Master/tlpkg/tltcl/lib/tcl8.6/word.tcl
    trunk/Master/tlpkg/tltcl/lib/tclConfig.sh
    trunk/Master/tlpkg/tltcl/lib/tclooConfig.sh
    trunk/Master/tlpkg/tltcl/lib/tdbc1.1.1/
    trunk/Master/tlpkg/tltcl/lib/tdbc1.1.1/libtdbcstub111.a
    trunk/Master/tlpkg/tltcl/lib/tdbc1.1.1/pkgIndex.tcl
    trunk/Master/tlpkg/tltcl/lib/tdbc1.1.1/tdbc.tcl
    trunk/Master/tlpkg/tltcl/lib/tdbc1.1.1/tdbc111.dll
    trunk/Master/tlpkg/tltcl/lib/tdbc1.1.1/tdbcConfig.sh
    trunk/Master/tlpkg/tltcl/lib/tdbcmysql1.1.1/
    trunk/Master/tlpkg/tltcl/lib/tdbcmysql1.1.1/pkgIndex.tcl
    trunk/Master/tlpkg/tltcl/lib/tdbcmysql1.1.1/tdbcmysql.tcl
    trunk/Master/tlpkg/tltcl/lib/tdbcmysql1.1.1/tdbcmysql111.dll
    trunk/Master/tlpkg/tltcl/lib/tdbcodbc1.1.1/
    trunk/Master/tlpkg/tltcl/lib/tdbcodbc1.1.1/pkgIndex.tcl
    trunk/Master/tlpkg/tltcl/lib/tdbcodbc1.1.1/tdbcodbc.tcl
    trunk/Master/tlpkg/tltcl/lib/tdbcodbc1.1.1/tdbcodbc111.dll
    trunk/Master/tlpkg/tltcl/lib/tdbcpostgres1.1.1/
    trunk/Master/tlpkg/tltcl/lib/tdbcpostgres1.1.1/pkgIndex.tcl
    trunk/Master/tlpkg/tltcl/lib/tdbcpostgres1.1.1/tdbcpostgres.tcl
    trunk/Master/tlpkg/tltcl/lib/tdbcpostgres1.1.1/tdbcpostgres111.dll
    trunk/Master/tlpkg/tltcl/lib/thread2.8.5/
    trunk/Master/tlpkg/tltcl/lib/thread2.8.5/pkgIndex.tcl
    trunk/Master/tlpkg/tltcl/lib/thread2.8.5/thread285.dll
    trunk/Master/tlpkg/tltcl/lib/thread2.8.5/ttrace.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/
    trunk/Master/tlpkg/tltcl/lib/tk8.6/bgerror.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/button.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/choosedir.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/clrpick.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/comdlg.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/console.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/demos/
    trunk/Master/tlpkg/tltcl/lib/tk8.6/demos/README
    trunk/Master/tlpkg/tltcl/lib/tk8.6/demos/anilabel.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/demos/aniwave.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/demos/arrow.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/demos/bind.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/demos/bitmap.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/demos/browse
    trunk/Master/tlpkg/tltcl/lib/tk8.6/demos/button.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/demos/check.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/demos/clrpick.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/demos/colors.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/demos/combo.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/demos/cscroll.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/demos/ctext.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/demos/dialog1.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/demos/dialog2.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/demos/en.msg
    trunk/Master/tlpkg/tltcl/lib/tk8.6/demos/entry1.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/demos/entry2.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/demos/entry3.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/demos/filebox.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/demos/floor.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/demos/fontchoose.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/demos/form.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/demos/goldberg.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/demos/hello
    trunk/Master/tlpkg/tltcl/lib/tk8.6/demos/hscale.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/demos/icon.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/demos/image1.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/demos/image2.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/demos/images/
    trunk/Master/tlpkg/tltcl/lib/tk8.6/demos/images/earth.gif
    trunk/Master/tlpkg/tltcl/lib/tk8.6/demos/images/earthmenu.png
    trunk/Master/tlpkg/tltcl/lib/tk8.6/demos/images/earthris.gif
    trunk/Master/tlpkg/tltcl/lib/tk8.6/demos/images/flagdown.xbm
    trunk/Master/tlpkg/tltcl/lib/tk8.6/demos/images/flagup.xbm
    trunk/Master/tlpkg/tltcl/lib/tk8.6/demos/images/gray25.xbm
    trunk/Master/tlpkg/tltcl/lib/tk8.6/demos/images/letters.xbm
    trunk/Master/tlpkg/tltcl/lib/tk8.6/demos/images/noletter.xbm
    trunk/Master/tlpkg/tltcl/lib/tk8.6/demos/images/ouster.png
    trunk/Master/tlpkg/tltcl/lib/tk8.6/demos/images/pattern.xbm
    trunk/Master/tlpkg/tltcl/lib/tk8.6/demos/images/tcllogo.gif
    trunk/Master/tlpkg/tltcl/lib/tk8.6/demos/images/teapot.ppm
    trunk/Master/tlpkg/tltcl/lib/tk8.6/demos/items.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/demos/ixset
    trunk/Master/tlpkg/tltcl/lib/tk8.6/demos/knightstour.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/demos/label.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/demos/labelframe.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/demos/license.terms
    trunk/Master/tlpkg/tltcl/lib/tk8.6/demos/mclist.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/demos/menu.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/demos/menubu.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/demos/msgbox.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/demos/nl.msg
    trunk/Master/tlpkg/tltcl/lib/tk8.6/demos/paned1.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/demos/paned2.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/demos/pendulum.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/demos/plot.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/demos/puzzle.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/demos/radio.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/demos/rmt
    trunk/Master/tlpkg/tltcl/lib/tk8.6/demos/rolodex
    trunk/Master/tlpkg/tltcl/lib/tk8.6/demos/ruler.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/demos/sayings.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/demos/search.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/demos/spin.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/demos/states.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/demos/style.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/demos/tclIndex
    trunk/Master/tlpkg/tltcl/lib/tk8.6/demos/tcolor
    trunk/Master/tlpkg/tltcl/lib/tk8.6/demos/text.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/demos/textpeer.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/demos/timer
    trunk/Master/tlpkg/tltcl/lib/tk8.6/demos/toolbar.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/demos/tree.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/demos/ttkbut.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/demos/ttkmenu.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/demos/ttknote.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/demos/ttkpane.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/demos/ttkprogress.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/demos/ttkscale.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/demos/twind.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/demos/unicodeout.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/demos/vscale.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/demos/widget
    trunk/Master/tlpkg/tltcl/lib/tk8.6/dialog.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/entry.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/focus.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/fontchooser.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/iconlist.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/icons.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/images/
    trunk/Master/tlpkg/tltcl/lib/tk8.6/images/README
    trunk/Master/tlpkg/tltcl/lib/tk8.6/images/logo.eps
    trunk/Master/tlpkg/tltcl/lib/tk8.6/images/logo100.gif
    trunk/Master/tlpkg/tltcl/lib/tk8.6/images/logo64.gif
    trunk/Master/tlpkg/tltcl/lib/tk8.6/images/logoLarge.gif
    trunk/Master/tlpkg/tltcl/lib/tk8.6/images/logoMed.gif
    trunk/Master/tlpkg/tltcl/lib/tk8.6/images/pwrdLogo.eps
    trunk/Master/tlpkg/tltcl/lib/tk8.6/images/pwrdLogo100.gif
    trunk/Master/tlpkg/tltcl/lib/tk8.6/images/pwrdLogo150.gif
    trunk/Master/tlpkg/tltcl/lib/tk8.6/images/pwrdLogo175.gif
    trunk/Master/tlpkg/tltcl/lib/tk8.6/images/pwrdLogo200.gif
    trunk/Master/tlpkg/tltcl/lib/tk8.6/images/pwrdLogo75.gif
    trunk/Master/tlpkg/tltcl/lib/tk8.6/images/tai-ku.gif
    trunk/Master/tlpkg/tltcl/lib/tk8.6/listbox.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/megawidget.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/menu.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/mkpsenc.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/msgbox.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/msgs/
    trunk/Master/tlpkg/tltcl/lib/tk8.6/msgs/cs.msg
    trunk/Master/tlpkg/tltcl/lib/tk8.6/msgs/da.msg
    trunk/Master/tlpkg/tltcl/lib/tk8.6/msgs/de.msg
    trunk/Master/tlpkg/tltcl/lib/tk8.6/msgs/el.msg
    trunk/Master/tlpkg/tltcl/lib/tk8.6/msgs/en.msg
    trunk/Master/tlpkg/tltcl/lib/tk8.6/msgs/en_gb.msg
    trunk/Master/tlpkg/tltcl/lib/tk8.6/msgs/eo.msg
    trunk/Master/tlpkg/tltcl/lib/tk8.6/msgs/es.msg
    trunk/Master/tlpkg/tltcl/lib/tk8.6/msgs/fr.msg
    trunk/Master/tlpkg/tltcl/lib/tk8.6/msgs/hu.msg
    trunk/Master/tlpkg/tltcl/lib/tk8.6/msgs/it.msg
    trunk/Master/tlpkg/tltcl/lib/tk8.6/msgs/nl.msg
    trunk/Master/tlpkg/tltcl/lib/tk8.6/msgs/pl.msg
    trunk/Master/tlpkg/tltcl/lib/tk8.6/msgs/pt.msg
    trunk/Master/tlpkg/tltcl/lib/tk8.6/msgs/ru.msg
    trunk/Master/tlpkg/tltcl/lib/tk8.6/msgs/sv.msg
    trunk/Master/tlpkg/tltcl/lib/tk8.6/obsolete.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/optMenu.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/palette.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/panedwindow.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/pkgIndex.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/safetk.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/scale.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/scrlbar.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/spinbox.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/tclIndex
    trunk/Master/tlpkg/tltcl/lib/tk8.6/tearoff.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/text.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/tk.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/tkAppInit.c
    trunk/Master/tlpkg/tltcl/lib/tk8.6/tkfbox.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/ttk/
    trunk/Master/tlpkg/tltcl/lib/tk8.6/ttk/altTheme.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/ttk/aquaTheme.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/ttk/button.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/ttk/clamTheme.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/ttk/classicTheme.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/ttk/combobox.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/ttk/cursors.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/ttk/defaults.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/ttk/entry.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/ttk/fonts.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/ttk/menubutton.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/ttk/notebook.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/ttk/panedwindow.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/ttk/progress.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/ttk/scale.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/ttk/scrollbar.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/ttk/sizegrip.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/ttk/spinbox.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/ttk/treeview.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/ttk/ttk.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/ttk/utils.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/ttk/vistaTheme.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/ttk/winTheme.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/ttk/xpTheme.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/unsupported.tcl
    trunk/Master/tlpkg/tltcl/lib/tk8.6/xmfbox.tcl
    trunk/Master/tlpkg/tltcl/lib/tkConfig.sh

Removed Paths:
-------------
    trunk/Master/source/tlgui/tltcl/LICENSE
    trunk/Master/source/tlgui/tltcl/kitcreator-0.11.0.tar.gz
    trunk/Master/source/tlgui/tltcl/metakit-2.4.9.7.tar.gz
    trunk/Master/source/tlgui/tltcl/tcl8.6.8.tar.gz
    trunk/Master/source/tlgui/tltcl/tclvfs-20080503.tar.gz
    trunk/Master/source/tlgui/tltcl/tk8.6.8.tar.gz
    trunk/Master/source/tlgui/tltcl/zlib-1.2.8.tar.gz
    trunk/Master/tlpkg/tltcl/tclkit.exe
    trunk/Master/tlpkg/tltcl/tclkit.exe.manifest

Modified: trunk/Master/install-tl-windows.bat
===================================================================
--- trunk/Master/install-tl-windows.bat	2020-03-17 13:49:18 UTC (rev 54374)
+++ trunk/Master/install-tl-windows.bat	2020-03-17 20:46:21 UTC (rev 54375)
@@ -134,6 +134,10 @@
 
 goto rebuildargs
 :nomoreargs
+
+set wish="%instroot%tlpkg\tltcl\tclkit.exe"
+if not exist "%wish%" set wish="%instroot%tlpkg\tltcl\bin\wish.exe"
+if not exist "%wish%" set tcl=no
 if %forbid% == yes set tcl=no
 
 rem Check for tex directories on path and remove them.
@@ -183,9 +187,9 @@
 
 rem Start installer
 if %tcl% == yes (
-rem echo "%instroot%tlpkg\tltcl\tclkit.exe" "%instroot%tlpkg\installer\install-tl-gui.tcl" -- %args%
+rem echo "%wish%" "%instroot%tlpkg\installer\install-tl-gui.tcl" -- %args%
 rem pause
-"%instroot%tlpkg\tltcl\tclkit.exe" "%instroot%tlpkg\installer\install-tl-gui.tcl" -- %args%
+"%wish%" "%instroot%tlpkg\installer\install-tl-gui.tcl" -- %args%
 ) else (
 rem echo perl "%instroot%install-tl" %args%
 rem pause

Deleted: trunk/Master/source/tlgui/tltcl/LICENSE
===================================================================
--- trunk/Master/source/tlgui/tltcl/LICENSE	2020-03-17 13:49:18 UTC (rev 54374)
+++ trunk/Master/source/tlgui/tltcl/LICENSE	2020-03-17 20:46:21 UTC (rev 54375)
@@ -1,60 +0,0 @@
-The MIT License is applied to all files in this distribution, except:
-	kitsh/buildsrc/kitsh-0.0/boot.tcl
-	kitsh/buildsrc/kitsh-0.0/boot.tcl.h
-	kitsh/buildsrc/kitsh-0.0/kit.rc
-	kitsh/buildsrc/kitsh-0.0/kit.ico
-	kitsh/buildsrc/kitsh-0.0/kitInit.c
-	kitsh/buildsrc/kitsh-0.0/license.terms
-	kitsh/buildsrc/kitsh-0.0/pwb.c
-	kitsh/buildsrc/kitsh-0.0/rechan.c
-	kitsh/buildsrc/kitsh-0.0/zipvfs.tcl
-	kitsh/buildsrc/kitsh-0.0/zipvfs.tcl.h
-	kitsh/buildsrc/kitsh-0.0/zlib.c
-	kitsh/buildsrc/kitsh-0.0/winMain.c
-	kitsh/buildsrc/kitsh-0.0/mk4tcl.tcl
-	kitsh/buildsrc/kitsh-0.0/mk4tcl.tcl.h
-	kitdll/buildsrc/kitdll-0.0/rechan.c
-	kitdll/buildsrc/kitdll-0.0/zlib.c
-	kitdll/buildsrc/kitdll-0.0/kitInit.c
-	kitdll/buildsrc/kitdll-0.0/boot.tcl
-	kitdll/buildsrc/kitdll-0.0/pwb.c
-
-Please see "kitsh/buildsrc/kitsh-0.0/license.terms" for licensing information
-regarding these files.
-
-Files that are downloaded are under different licenses (grouped by project):
-	* Tcl: Tcl/Tk License <http://www.tcl.tk/software/tcltk/license.html>
-	* Tk: Tcl/Tk License <http://www.tcl.tk/software/tcltk/license.html>
-	* Itcl: Tcl/Tk License <http://incrtcl.sourceforge.net/itcl/copyright.html>
-	* Mk4tcl: MIT License <http://www.equi4.com/metakit/license.html>
-	* TclVFS: BSD License
-	* Thread: Tcl/Tk License <http://www.tcl.tk/software/tcltk/license.html>
-	* ZLib: Zlib License <http://www.gzip.org/zlib/zlib_license.html>
-
-The final result of this build process is a derivative work of all of these
-projects and is restricted by the cumulative licensing requirements of all of
-them.
-
-All other files in this distribution are licensed under the terms of the MIT
-License, below:
-The MIT License
-
-Copyright (c) 2010  Roy S. Keene
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.

Deleted: trunk/Master/source/tlgui/tltcl/kitcreator-0.11.0.tar.gz
===================================================================
(Binary files differ)

Deleted: trunk/Master/source/tlgui/tltcl/metakit-2.4.9.7.tar.gz
===================================================================
(Binary files differ)

Added: trunk/Master/source/tlgui/tltcl/tcl8.6.10.tar.gz
===================================================================
(Binary files differ)

Index: trunk/Master/source/tlgui/tltcl/tcl8.6.10.tar.gz
===================================================================
--- trunk/Master/source/tlgui/tltcl/tcl8.6.10.tar.gz	2020-03-17 13:49:18 UTC (rev 54374)
+++ trunk/Master/source/tlgui/tltcl/tcl8.6.10.tar.gz	2020-03-17 20:46:21 UTC (rev 54375)

Property changes on: trunk/Master/source/tlgui/tltcl/tcl8.6.10.tar.gz
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Deleted: trunk/Master/source/tlgui/tltcl/tcl8.6.8.tar.gz
===================================================================
(Binary files differ)

Deleted: trunk/Master/source/tlgui/tltcl/tclvfs-20080503.tar.gz
===================================================================
(Binary files differ)

Added: trunk/Master/source/tlgui/tltcl/tk8.6.10.tar.gz
===================================================================
(Binary files differ)

Index: trunk/Master/source/tlgui/tltcl/tk8.6.10.tar.gz
===================================================================
--- trunk/Master/source/tlgui/tltcl/tk8.6.10.tar.gz	2020-03-17 13:49:18 UTC (rev 54374)
+++ trunk/Master/source/tlgui/tltcl/tk8.6.10.tar.gz	2020-03-17 20:46:21 UTC (rev 54375)

Property changes on: trunk/Master/source/tlgui/tltcl/tk8.6.10.tar.gz
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Deleted: trunk/Master/source/tlgui/tltcl/tk8.6.8.tar.gz
===================================================================
(Binary files differ)

Modified: trunk/Master/source/tlgui/tltcl/tltcl.README
===================================================================
--- trunk/Master/source/tlgui/tltcl/tltcl.README	2020-03-17 13:49:18 UTC (rev 54374)
+++ trunk/Master/source/tlgui/tltcl/tltcl.README	2020-03-17 20:46:21 UTC (rev 54375)
@@ -1,54 +1,42 @@
-tclkit.exe is a single-file Tcl/Tk runtime. The one included in TeX
-Live is generated with kitcreator. This program downloads and
-compiles tcl, tk and various pieces of infrastructure.
+Notes on building Tcl/Tk for TeX Live 2020
 
-I used kitcreator's README file for guidance in generating
-tclkit.exe:
+The 2020 edition contains a standard basic Tcl/Tk installation.
+However, I was unable this time to create a single-file Tcl/Tk
+runtime, as for the 2019 TeX Live edition.
 
-from the root of the unpacked kitcreator archive I first created a
-native Linux tclkit:
+The Tcl/Tk 8.6.10 sources were downloaded via
+http://www.tcl.tk/software/tcltk/download.html
 
-./kitcreator
-mv tclkit-8.6.8 tclkit-local
+Tcl/Tk was cross-compiled under Ubuntu Linux 18.04 as follows. For
+first Tcl, then Tk do:
 
-From this same directory I ran the following script:
+- Unpack the source, and run in the win subdirectory:
 
-================
-#!/bin/bash
-export TCLKIT=`pwd`/tclkit-local
-export CROSS=i686-w64-mingw32
+  ./configure --host=i686-w64-mingw32 --enable-embedded-manifest \
+    --prefix=<tcltk root>
 
-export CC=${CROSS}-gcc
-export CXX=${CROSS}-c++
-export AR=${CROSS}-ar
-export RANLIB=${CROSS}-ranlib
-export STRIP=${CROSS}-strip
-export RC=${CROSS}-windres
-./kitcreator --host=${CROSS}
+- For Tk, patch the file tk8.6.10/win/win/wish.exe.manifest for
+  better HiPDI support by adding a dpiAwareness element; the
+  asmv3:windowsSettings element in this file becomes:
 
-mv tclkit-8.6.8 tclkit.exe
-================
+        <asmv3:windowsSettings
+                xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
+            <dpiAware>true</dpiAware>
+            <dpiAwareness xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">PerMonitorV2</dpiAwareness>
+        </asmv3:windowsSettings>
 
-This directory contains the archives of kitcreator and the archives
-it downloaded during the build process.
+  Presumably I could instead have patched wish.exe.manifest.in
+  _before_ running configure.
 
-The LICENSE file is the one I found in the root of the kitcreator
-archive.
+- run 'make' and 'make install'
 
-As to the urls of the downloaded files: a command
+  make
+  make install
 
-find . -name "build*.sh" -exec grep '^SRCURL=' \{} \;
+Portability of the result should be no problem. I removed
+sqlite3_analyzer from <tcltk root>/bin and placed the resulting lib-
+and bin subdirectories under <TL root>/tlpkg/tltcl.
 
-generated the following output:
+Siep Kroonenberg
 
-SRCURL="http://sourceforge.net/projects/incrtcl/files/%5BIncr%20Tcl_Tk%5D-source/Itcl%20${ITCLVERS}/itcl${ITCLVERS}${ITCLVERSEXTRA}.tar.gz/download"
-SRCURL="http://prdownloads.sourceforge.net/tcl/tcl${TCLVERS}-src.tar.gz"
-SRCURL="http://sourceforge.net/projects/tcl/files/Thread%20Extension/${THREADVERS}/thread${THREADVERS}.tar.gz/download"
-SRCURL="http://www.equi4.com/pub/mk/metakit-${MK4VERS}.tar.gz"
-SRCURL="http://pkgs.fedoraproject.org/repo/pkgs/metakit/metakit-${MK4VERS}.tar.gz/17330257376eea657827ed632ea62c9e/metakit-${MK4VERS}.tar.gz"
-SRCURL="http://prdownloads.sourceforge.net/tcl/tk${TCLVERS}-src.tar.gz"
-
-The itcl- and thread- packages listed above were not actually downloaded.
-
-Siep Kroonenberg
-November 2018
+March 2020

Deleted: trunk/Master/source/tlgui/tltcl/zlib-1.2.8.tar.gz
===================================================================
(Binary files differ)

Modified: trunk/Master/tlpkg/tlpsrc/00texlive.installer.tlpsrc
===================================================================
--- trunk/Master/tlpkg/tlpsrc/00texlive.installer.tlpsrc	2020-03-17 13:49:18 UTC (rev 54374)
+++ trunk/Master/tlpkg/tlpsrc/00texlive.installer.tlpsrc	2020-03-17 20:46:21 UTC (rev 54375)
@@ -25,8 +25,8 @@
 #
 # Windows only:
 binpattern d/${wndws} tlpkg/tlperl
-binpattern f/${wndws} tlpkg/tltcl/tclkit.exe
-binpattern f/${wndws} tlpkg/tltcl/tclkit.exe.manifest
+binpattern d/${wndws} tlpkg/tltcl/bin
+binpattern d/${wndws} tlpkg/tltcl/lib
 binpattern f/${wndws} tlpkg/installer/tar.exe
 binpattern f/${wndws} tlpkg/installer/wget/wget.exe
 binpattern f/${wndws} tlpkg/installer/xz/xz.exe

Modified: trunk/Master/tlpkg/tlpsrc/tlshell.tlpsrc
===================================================================
--- trunk/Master/tlpkg/tlpsrc/tlshell.tlpsrc	2020-03-17 13:49:18 UTC (rev 54374)
+++ trunk/Master/tlpkg/tlpsrc/tlshell.tlpsrc	2020-03-17 20:46:21 UTC (rev 54375)
@@ -1,8 +1,8 @@
 category TLCore
 shortdesc GUI frontend (tcl/tk-based) for tlmgr
 binpattern f bin/${ARCH}/${PKGNAME}
-binpattern f/win32 tlpkg/tltcl/tclkit.exe
-binpattern f/win32 tlpkg/tltcl/tclkit.exe.manifest
+binpattern d/win32 tlpkg/tltcl/bin
+binpattern d/win32 tlpkg/tltcl/lib
 #
 runpattern d texmf-dist/scripts/tlshell
 runpattern f tlpkg/tltcl/*.tcl

Added: trunk/Master/tlpkg/tltcl/bin/tcl86.dll
===================================================================
(Binary files differ)

Index: trunk/Master/tlpkg/tltcl/bin/tcl86.dll
===================================================================
--- trunk/Master/tlpkg/tltcl/bin/tcl86.dll	2020-03-17 13:49:18 UTC (rev 54374)
+++ trunk/Master/tlpkg/tltcl/bin/tcl86.dll	2020-03-17 20:46:21 UTC (rev 54375)

Property changes on: trunk/Master/tlpkg/tltcl/bin/tcl86.dll
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Added: trunk/Master/tlpkg/tltcl/bin/tclsh.exe
===================================================================
(Binary files differ)

Index: trunk/Master/tlpkg/tltcl/bin/tclsh.exe
===================================================================
--- trunk/Master/tlpkg/tltcl/bin/tclsh.exe	2020-03-17 13:49:18 UTC (rev 54374)
+++ trunk/Master/tlpkg/tltcl/bin/tclsh.exe	2020-03-17 20:46:21 UTC (rev 54375)

Property changes on: trunk/Master/tlpkg/tltcl/bin/tclsh.exe
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Added: trunk/Master/tlpkg/tltcl/bin/tk86.dll
===================================================================
(Binary files differ)

Index: trunk/Master/tlpkg/tltcl/bin/tk86.dll
===================================================================
--- trunk/Master/tlpkg/tltcl/bin/tk86.dll	2020-03-17 13:49:18 UTC (rev 54374)
+++ trunk/Master/tlpkg/tltcl/bin/tk86.dll	2020-03-17 20:46:21 UTC (rev 54375)

Property changes on: trunk/Master/tlpkg/tltcl/bin/tk86.dll
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Added: trunk/Master/tlpkg/tltcl/bin/wish.exe
===================================================================
(Binary files differ)

Index: trunk/Master/tlpkg/tltcl/bin/wish.exe
===================================================================
--- trunk/Master/tlpkg/tltcl/bin/wish.exe	2020-03-17 13:49:18 UTC (rev 54374)
+++ trunk/Master/tlpkg/tltcl/bin/wish.exe	2020-03-17 20:46:21 UTC (rev 54375)

Property changes on: trunk/Master/tlpkg/tltcl/bin/wish.exe
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Added: trunk/Master/tlpkg/tltcl/bin/zlib1.dll
===================================================================
(Binary files differ)

Index: trunk/Master/tlpkg/tltcl/bin/zlib1.dll
===================================================================
--- trunk/Master/tlpkg/tltcl/bin/zlib1.dll	2020-03-17 13:49:18 UTC (rev 54374)
+++ trunk/Master/tlpkg/tltcl/bin/zlib1.dll	2020-03-17 20:46:21 UTC (rev 54375)

Property changes on: trunk/Master/tlpkg/tltcl/bin/zlib1.dll
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Added: trunk/Master/tlpkg/tltcl/lib/dde1.4/libtcldde14.a
===================================================================
(Binary files differ)

Index: trunk/Master/tlpkg/tltcl/lib/dde1.4/libtcldde14.a
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/dde1.4/libtcldde14.a	2020-03-17 13:49:18 UTC (rev 54374)
+++ trunk/Master/tlpkg/tltcl/lib/dde1.4/libtcldde14.a	2020-03-17 20:46:21 UTC (rev 54375)

Property changes on: trunk/Master/tlpkg/tltcl/lib/dde1.4/libtcldde14.a
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Added: trunk/Master/tlpkg/tltcl/lib/dde1.4/pkgIndex.tcl
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/dde1.4/pkgIndex.tcl	                        (rev 0)
+++ trunk/Master/tlpkg/tltcl/lib/dde1.4/pkgIndex.tcl	2020-03-17 20:46:21 UTC (rev 54375)
@@ -0,0 +1,7 @@
+if {![package vsatisfies [package provide Tcl] 8.5]} return
+if {[info sharedlibextension] != ".dll"} return
+if {[::tcl::pkgconfig get debug]} {
+    package ifneeded dde 1.4.2 [list load [file join $dir tcldde14g.dll] dde]
+} else {
+    package ifneeded dde 1.4.2 [list load [file join $dir tcldde14.dll] dde]
+}


Property changes on: trunk/Master/tlpkg/tltcl/lib/dde1.4/pkgIndex.tcl
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/tlpkg/tltcl/lib/dde1.4/tcldde14.dll
===================================================================
(Binary files differ)

Index: trunk/Master/tlpkg/tltcl/lib/dde1.4/tcldde14.dll
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/dde1.4/tcldde14.dll	2020-03-17 13:49:18 UTC (rev 54374)
+++ trunk/Master/tlpkg/tltcl/lib/dde1.4/tcldde14.dll	2020-03-17 20:46:21 UTC (rev 54375)

Property changes on: trunk/Master/tlpkg/tltcl/lib/dde1.4/tcldde14.dll
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Added: trunk/Master/tlpkg/tltcl/lib/itcl4.2.0/itcl.tcl
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/itcl4.2.0/itcl.tcl	                        (rev 0)
+++ trunk/Master/tlpkg/tltcl/lib/itcl4.2.0/itcl.tcl	2020-03-17 20:46:21 UTC (rev 54375)
@@ -0,0 +1,151 @@
+#
+# itcl.tcl
+# ----------------------------------------------------------------------
+# Invoked automatically upon startup to customize the interpreter
+# for [incr Tcl].
+# ----------------------------------------------------------------------
+#   AUTHOR:  Michael J. McLennan
+#            Bell Labs Innovations for Lucent Technologies
+#            mmclennan at lucent.com
+#            http://www.tcltk.com/itcl
+# ----------------------------------------------------------------------
+#            Copyright (c) 1993-1998  Lucent Technologies, Inc.
+# ======================================================================
+# See the file "license.terms" for information on usage and
+# redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+
+proc ::itcl::delete_helper { name args } {
+    ::itcl::delete object $name
+}
+
+# ----------------------------------------------------------------------
+#  USAGE:  local <className> <objName> ?<arg> <arg>...?
+#
+#  Creates a new object called <objName> in class <className>, passing
+#  the remaining <arg>'s to the constructor.  Unlike the usual
+#  [incr Tcl] objects, however, an object created by this procedure
+#  will be automatically deleted when the local call frame is destroyed.
+#  This command is useful for creating objects that should only remain
+#  alive until a procedure exits.
+# ----------------------------------------------------------------------
+proc ::itcl::local {class name args} {
+    set ptr [uplevel [list $class $name] $args]
+    uplevel [list set itcl-local-$ptr $ptr]
+    set cmd [uplevel namespace which -command $ptr]
+    uplevel [list trace variable itcl-local-$ptr u \
+        "::itcl::delete_helper $cmd"]
+    return $ptr
+}
+
+# ----------------------------------------------------------------------
+# auto_mkindex
+# ----------------------------------------------------------------------
+# Define Itcl commands that will be recognized by the auto_mkindex
+# parser in Tcl...
+#
+
+#
+# USAGE:  itcl::class name body
+# Adds an entry for the given class declaration.
+#
+foreach __cmd {itcl::class class itcl::type type ictl::widget widget itcl::widgetadaptor widgetadaptor itcl::extendedclass extendedclass} {
+    auto_mkindex_parser::command $__cmd {name body} {
+	variable index
+	variable scriptFile
+	append index "set [list auto_index([fullname $name])]"
+	append index " \[list source \[file join \$dir [list $scriptFile]\]\]\n"
+
+	variable parser
+	variable contextStack
+	set contextStack [linsert $contextStack 0 $name]
+	$parser eval $body
+	set contextStack [lrange $contextStack 1 end]
+    }
+}
+
+#
+# USAGE:  itcl::body name arglist body
+# Adds an entry for the given method/proc body.
+#
+foreach __cmd {itcl::body body} {
+    auto_mkindex_parser::command $__cmd {name arglist body} {
+	variable index
+	variable scriptFile
+	append index "set [list auto_index([fullname $name])]"
+	append index " \[list source \[file join \$dir [list $scriptFile]\]\]\n"
+    }
+}
+
+#
+# USAGE:  itcl::configbody name arglist body
+# Adds an entry for the given method/proc body.
+#
+foreach __cmd {itcl::configbody configbody} {
+    auto_mkindex_parser::command $__cmd {name body} {
+	variable index
+	variable scriptFile
+	append index "set [list auto_index([fullname $name])]"
+	append index " \[list source \[file join \$dir [list $scriptFile]\]\]\n"
+    }
+}
+
+#
+# USAGE:  ensemble name ?body?
+# Adds an entry to the auto index list for the given ensemble name.
+#
+foreach __cmd {itcl::ensemble ensemble} {
+    auto_mkindex_parser::command $__cmd {name {body ""}} {
+	variable index
+	variable scriptFile
+	append index "set [list auto_index([fullname $name])]"
+	append index " \[list source \[file join \$dir [list $scriptFile]\]\]\n"
+    }
+}
+
+#
+# USAGE:  public arg ?arg arg...?
+#         protected arg ?arg arg...?
+#         private arg ?arg arg...?
+#
+# Evaluates the arguments as commands, so we can recognize proc
+# declarations within classes.
+#
+foreach __cmd {public protected private} {
+    auto_mkindex_parser::command $__cmd {args} {
+        variable parser
+        $parser eval $args
+    }
+}
+
+# SF bug #246 unset variable __cmd to avoid problems in user programs!!
+unset __cmd
+
+# ----------------------------------------------------------------------
+# auto_import
+# ----------------------------------------------------------------------
+# This procedure overrides the usual "auto_import" function in the
+# Tcl library.  It is invoked during "namespace import" to make see
+# if the imported commands reside in an autoloaded library.  If so,
+# stubs are created to represent the commands.  Executing a stub
+# later on causes the real implementation to be autoloaded.
+#
+# Arguments -
+# pattern	The pattern of commands being imported (like "foo::*")
+#               a canonical namespace as returned by [namespace current]
+
+proc auto_import {pattern} {
+    global auto_index
+
+    set ns [uplevel namespace current]
+    set patternList [auto_qualify $pattern $ns]
+
+    auto_load_index
+
+    foreach pattern $patternList {
+        foreach name [array names auto_index $pattern] {
+            if {"" == [info commands $name]} {
+                ::itcl::import::stub create $name
+            }
+        }
+    }
+}


Property changes on: trunk/Master/tlpkg/tltcl/lib/itcl4.2.0/itcl.tcl
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/tlpkg/tltcl/lib/itcl4.2.0/itcl420.dll
===================================================================
(Binary files differ)

Index: trunk/Master/tlpkg/tltcl/lib/itcl4.2.0/itcl420.dll
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/itcl4.2.0/itcl420.dll	2020-03-17 13:49:18 UTC (rev 54374)
+++ trunk/Master/tlpkg/tltcl/lib/itcl4.2.0/itcl420.dll	2020-03-17 20:46:21 UTC (rev 54375)

Property changes on: trunk/Master/tlpkg/tltcl/lib/itcl4.2.0/itcl420.dll
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Added: trunk/Master/tlpkg/tltcl/lib/itcl4.2.0/itclConfig.sh
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/itcl4.2.0/itclConfig.sh	                        (rev 0)
+++ trunk/Master/tlpkg/tltcl/lib/itcl4.2.0/itclConfig.sh	2020-03-17 20:46:21 UTC (rev 54375)
@@ -0,0 +1,67 @@
+# itclConfig.sh --
+#
+# This shell script (for sh) is generated automatically by Itcl's
+# configure script.  It will create shell variables for most of
+# the configuration options discovered by the configure script.
+# This script is intended to be included by the configure scripts
+# for Itcl extensions so that they don't have to figure this all
+# out for themselves.  This file does not duplicate information
+# already provided by tclConfig.sh, so you may need to use that
+# file in addition to this one.
+#
+# The information in this file is specific to a single platform.
+
+# Itcl's version number.
+itcl_VERSION='4.2.0'
+ITCL_VERSION='4.2.0'
+
+# The name of the Itcl library (may be either a .a file or a shared library):
+itcl_LIB_FILE=itcl420.dll
+ITCL_LIB_FILE=itcl420.dll
+
+# String to pass to linker to pick up the Itcl library from its
+# build directory.
+itcl_BUILD_LIB_SPEC='-L/tmp/siepo/tcl8.6.10/win/pkgs/itcl4.2.0 -litcl420'
+ITCL_BUILD_LIB_SPEC='-L/tmp/siepo/tcl8.6.10/win/pkgs/itcl4.2.0 -litcl420'
+
+# String to pass to linker to pick up the Itcl library from its
+# installed directory.
+itcl_LIB_SPEC='-L/tmp/siepo/tcltk/lib/itcl4.2.0 -litcl420'
+ITCL_LIB_SPEC='-L/tmp/siepo/tcltk/lib/itcl4.2.0 -litcl420'
+
+# The name of the Itcl stub library (a .a file):
+itcl_STUB_LIB_FILE=libitclstub420.a
+ITCL_STUB_LIB_FILE=libitclstub420.a
+
+# String to pass to linker to pick up the Itcl stub library from its
+# build directory.
+itcl_BUILD_STUB_LIB_SPEC='-L/tmp/siepo/tcl8.6.10/win/pkgs/itcl4.2.0 -litclstub420'
+ITCL_BUILD_STUB_LIB_SPEC='-L/tmp/siepo/tcl8.6.10/win/pkgs/itcl4.2.0 -litclstub420'
+
+# String to pass to linker to pick up the Itcl stub library from its
+# installed directory.
+itcl_STUB_LIB_SPEC='-L/tmp/siepo/tcltk/lib/itcl4.2.0 -litclstub420'
+ITCL_STUB_LIB_SPEC='-L/tmp/siepo/tcltk/lib/itcl4.2.0 -litclstub420'
+
+# String to pass to linker to pick up the Itcl stub library from its
+# build directory.
+itcl_BUILD_STUB_LIB_PATH='/tmp/siepo/tcl8.6.10/win/pkgs/itcl4.2.0/libitclstub420.a'
+ITCL_BUILD_STUB_LIB_PATH='/tmp/siepo/tcl8.6.10/win/pkgs/itcl4.2.0/libitclstub420.a'
+
+# String to pass to linker to pick up the Itcl stub library from its
+# installed directory.
+itcl_STUB_LIB_PATH='/tmp/siepo/tcltk/lib/itcl4.2.0/libitclstub420.a'
+ITCL_STUB_LIB_PATH='/tmp/siepo/tcltk/lib/itcl4.2.0/libitclstub420.a'
+
+# Location of the top-level source directories from which [incr Tcl]
+# was built.  This is the directory that contains generic, unix, etc.
+# If [incr Tcl] was compiled in a different place than the directory
+# containing the source files, this points to the location of the sources,
+# not the location where [incr Tcl] was compiled.
+itcl_SRC_DIR='/tmp/siepo/tcl8.6.10/pkgs/itcl4.2.0'
+ITCL_SRC_DIR='/tmp/siepo/tcl8.6.10/pkgs/itcl4.2.0'
+
+# String to pass to the compiler so that an extension can
+# find installed Itcl headers.
+itcl_INCLUDE_SPEC='-I/tmp/siepo/tcl8.6.10/pkgs/itcl4.2.0/generic'
+ITCL_INCLUDE_SPEC='-I/tmp/siepo/tcl8.6.10/pkgs/itcl4.2.0/generic'


Property changes on: trunk/Master/tlpkg/tltcl/lib/itcl4.2.0/itclConfig.sh
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/tlpkg/tltcl/lib/itcl4.2.0/itclHullCmds.tcl
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/itcl4.2.0/itclHullCmds.tcl	                        (rev 0)
+++ trunk/Master/tlpkg/tltcl/lib/itcl4.2.0/itclHullCmds.tcl	2020-03-17 20:46:21 UTC (rev 54375)
@@ -0,0 +1,562 @@
+#
+# itclHullCmds.tcl
+# ----------------------------------------------------------------------
+# Invoked automatically upon startup to customize the interpreter
+# for [incr Tcl] when one of setupcomponent or createhull is called.
+# ----------------------------------------------------------------------
+#   AUTHOR:  Arnulf P. Wiedemann
+#
+# ----------------------------------------------------------------------
+#            Copyright (c) 2008  Arnulf P. Wiedemann
+# ======================================================================
+# See the file "license.terms" for information on usage and
+# redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+
+package require Tk 8.6
+
+namespace eval ::itcl::internal::commands {
+
+# ======================= widgetDeleted ===========================
+
+proc widgetDeleted {oldName newName op} {
+    # The widget is beeing deleted, so we have to delete the object
+    # which had the widget as itcl_hull too!
+    # We have to get the real name from for example
+    # ::itcl::internal::widgets::hull1.lw
+    # we need only .lw here
+
+#puts stderr "widgetDeleted!$oldName!$newName!$op!"
+    set cmdName [namespace tail $oldName]
+    set flds [split $cmdName {.}]
+    set cmdName .[join [lrange $flds 1 end] {.}]
+#puts stderr "DELWIDGET![namespace current]!$cmdName![::info command $cmdName]!"
+    rename $cmdName {}
+}
+
+}
+
+namespace eval ::itcl::builtin {
+
+# ======================= createhull ===========================
+# the hull widget is a tk widget which is the (mega) widget handled behind the itcl
+# extendedclass/itcl widget.
+# It is created be renaming the itcl class object to a temporary name <itcl object name>_
+# creating the widget with the
+# appropriate options and the installing that as the "hull" widget (the container)
+# All the options in args and the options delegated to component itcl_hull are used
+# Then a unique name (hull_widget_name) in the itcl namespace is created for widget:
+# ::itcl::internal::widgets::hull<unique number><namespace tail path>
+# and widget is renamed to that name
+# Finally the <itcl object name>_ is renamed to the original <itcl object name> again
+# Component itcl_hull is created if not existent
+# itcl_hull is set to the hull_widget_name and the <itcl object name>
+# is returned to the caller
+# ==============================================================
+
+proc createhull {widget_type path args} {
+    variable hullCount
+    upvar this this
+    upvar win win
+
+
+#puts stderr "il-1![::info level -1]!$this!"
+#puts stderr "createhull!$widget_type!$path!$args!$this![::info command $this]!"
+#puts stderr "ns1![uplevel 1 namespace current]!"
+#puts stderr "ns2![uplevel 2 namespace current]!"
+#puts stderr "ns3![uplevel 3 namespace current]!"
+#puts stderr "level-1![::info level -1]!"
+#puts stderr "level-2![::info level -2]!"
+#    set my_this [namespace tail $this]
+    set my_this $this
+    set tmp $my_this
+#puts stderr "II![::info command $this]![::info command $tmp]!"
+#puts stderr "rename1!rename $my_this ${tmp}_!"
+    rename ::$my_this ${tmp}_
+    set options [list]
+    foreach {option_name value} $args {
+        switch -glob -- $option_name {
+	-class {
+	      lappend options $option_name [namespace tail $value]
+	  }
+        -* {
+            lappend options $option_name $value
+          }
+        default {
+	    return -code error "bad option name\"$option_name\" options must start with a \"-\""
+          }
+        }
+    }
+    set my_win [namespace tail $path]
+    set cmd [list $widget_type $my_win]
+#puts stderr "my_win!$my_win!cmd!$cmd!$path!"
+    if {[llength $options] > 0} {
+        lappend cmd {*}$options
+    }
+    set widget [uplevel 1 $cmd]
+#puts stderr "widget!$widget!"
+    trace add command $widget delete ::itcl::internal::commands::widgetDeleted
+    set opts [uplevel 1 info delegated options]
+    foreach entry $opts {
+        foreach {optName compName} $entry break
+	if {$compName eq "itcl_hull"} {
+	    set optInfos [uplevel 1 info delegated option $optName]
+	    set realOptName [lindex $optInfos 4]
+	    # strip off the "-" at the beginning
+	    set myOptName [string range $realOptName 1 end]
+            set my_opt_val [option get $my_win $myOptName *]
+            if {$my_opt_val ne ""} {
+                $my_win configure -$myOptName $my_opt_val
+            }
+	}
+    }
+    set idx 1
+    while {1} {
+        set widgetName ::itcl::internal::widgets::hull${idx}$my_win
+#puts stderr "widgetName!$widgetName!"
+	if {[string length [::info command $widgetName]] == 0} {
+	    break
+	}
+        incr idx
+    }
+#puts stderr "rename2!rename $widget $widgetName!"
+    set dorename 0
+    rename $widget $widgetName
+#puts stderr "rename3!rename ${tmp}_ $tmp![::info command ${tmp}_]!my_this!$my_this!"
+    rename ${tmp}_ ::$tmp
+    set exists [uplevel 1 ::info exists itcl_hull]
+    if {!$exists} {
+	# that does not yet work, beacause of problems with resolving
+        ::itcl::addcomponent $my_this itcl_hull
+    }
+    upvar itcl_hull itcl_hull
+    ::itcl::setcomponent $my_this itcl_hull $widgetName
+#puts stderr "IC![::info command $my_win]!"
+    set exists [uplevel 1 ::info exists itcl_interior]
+    if {!$exists} {
+	# that does not yet work, beacause of problems with resolving
+        ::itcl::addcomponent $this itcl_interior
+    }
+    upvar itcl_interior itcl_interior
+    set itcl_interior $my_win
+#puts stderr "hull end!win!$win!itcl_hull!$itcl_hull!itcl_interior!$itcl_interior!"
+    return $my_win
+}
+
+# ======================= addToItclOptions ===========================
+
+proc addToItclOptions {my_class my_win myOptions argsDict} {
+    upvar win win
+    upvar itcl_hull itcl_hull
+
+    set opt_lst [list configure]
+    foreach opt [lsort $myOptions] {
+#puts stderr "IOPT!$opt!$my_class!$my_win![::itcl::is class $my_class]!"
+        set isClass [::itcl::is class $my_class]
+	set found 0
+	if {$isClass} {
+            if {[catch {
+                set resource [namespace eval $my_class info option $opt -resource]
+                set class [namespace eval $my_class info option $opt -class]
+                set default_val [uplevel 2 info option $opt -default]
+                set found 1
+            } msg]} {
+#                puts stderr "MSG!$opt!$my_class!$msg!"
+            }
+        } else {
+            set tmp_win [uplevel #0 $my_class .___xx]
+
+            set my_info [$tmp_win configure $opt]
+            set resource [lindex $my_info 1]
+            set class [lindex $my_info 2]
+            set default_val [lindex $my_info 3]
+	    uplevel #0 destroy $tmp_win
+            set found 1
+        }
+	if {$found} {
+           if {[catch {
+               set val [uplevel #0 ::option get $win $resource $class]
+           } msg]} {
+               set val ""
+           }
+           if {[::dict exists $argsDict $opt]} {
+               # we have an explicitly set option
+               set val [::dict get $argsDict $opt]
+           } else {
+	       if {[string length $val] == 0} {
+                   set val $default_val
+	       }
+           }
+           set ::itcl::internal::variables::${my_win}::itcl_options($opt) $val
+           set ::itcl::internal::variables::${my_win}::__itcl_option_infos($opt) [list $resource $class $default_val]
+#puts stderr "OPT1!$opt!$val!"
+#	   uplevel 1 [list set itcl_options($opt) [list $val]]
+           if {[catch {uplevel 1 $win configure $opt [list $val]} msg]} {
+#puts stderr "addToItclOptions ERR!$msg!$my_class!$win!configure!$opt!$val!"
+	   }
+        }
+    }
+}
+
+# ======================= setupcomponent ===========================
+
+proc setupcomponent {comp using widget_type path args} {
+    upvar this this
+    upvar win win
+    upvar itcl_hull itcl_hull
+
+#puts stderr "setupcomponent!$comp!$widget_type!$path!$args!$this!$win!$itcl_hull!"
+#puts stderr "CONT![uplevel 1 info context]!"
+#puts stderr "ns1![uplevel 1 namespace current]!"
+#puts stderr "ns2![uplevel 2 namespace current]!"
+#puts stderr "ns3![uplevel 3 namespace current]!"
+    set my_comp_object  [lindex [uplevel 1 info context] 1]
+    if {[::info exists ::itcl::internal::component_objects($my_comp_object)]} {
+        set my_comp_object [set ::itcl::internal::component_objects($my_comp_object)]
+    } else {
+        set ::itcl::internal::component_objects($path) $my_comp_object
+    }
+    set options [list]
+    foreach {option_name value} $args {
+        switch -glob -- $option_name {
+        -* {
+            lappend options $option_name $value
+          }
+        default {
+	    return -code error "bad option name\"$option_name\" options must start with a \"-\""
+          }
+        }
+    }
+    if {[llength $args]} {
+        set argsDict [dict create {*}$args]
+    } else {
+        set argsDict [dict create]
+    }
+    set cmd [list $widget_type $path]
+    if {[llength $options] > 0} {
+        lappend cmd {*}$options
+    }
+#puts stderr "cmd0![::info command $widget_type]!$path![::info command $path]!"
+#puts stderr "cmd1!$cmd!"
+#    set my_comp [uplevel 3 $cmd]
+    set my_comp [uplevel #0 $cmd]
+#puts stderr 111![::info command $path]!
+    ::itcl::setcomponent $this $comp $my_comp
+    set opts [uplevel 1 info delegated options]
+    foreach entry $opts {
+        foreach {optName compName} $entry break
+	if {$compName eq $my_comp} {
+	    set optInfos [uplevel 1 info delegated option $optName]
+	    set realOptName [lindex $optInfos 4]
+	    # strip off the "-" at the beginning
+	    set myOptName [string range $realOptName 1 end]
+            set my_opt_val [option get $my_win $myOptName *]
+            if {$my_opt_val ne ""} {
+                $my_comp configure -$myOptName $my_opt_val
+            }
+	}
+    }
+    set my_class $widget_type
+    set my_parent_class [uplevel 1 namespace current]
+    if {[catch {
+        set myOptions [namespace eval $my_class {info classoptions}]
+    } msg]} {
+        set myOptions [list]
+    }
+    foreach entry [$path configure] {
+        foreach {opt dummy1 dummy2 dummy3} $entry break
+        lappend myOptions $opt
+    }
+#puts stderr "OPTS!$myOptions!"
+    addToItclOptions $widget_type $my_comp_object $myOptions $argsDict
+#puts stderr END!$path![::info command $path]!
+}
+
+proc itcl_initoptions {args} {
+puts stderr "ITCL_INITOPT!$args!"
+}
+
+# ======================= initoptions ===========================
+
+proc initoptions {args} {
+    upvar win win
+    upvar itcl_hull itcl_hull
+    upvar itcl_option_components itcl_option_components
+
+#puts stderr "INITOPT!!$win!"
+    if {[llength $args]} {
+        set argsDict [dict create {*}$args]
+    } else {
+        set argsDict [dict create]
+    }
+    set my_class [uplevel 1 namespace current]
+    set myOptions [namespace eval $my_class {info classoptions}]
+    if {[dict exists $::itcl::internal::dicts::classComponents $my_class]} {
+        set class_info_dict [dict get $::itcl::internal::dicts::classComponents $my_class]
+#    set myOptions [lsort -unique [namespace eval $my_class {info options}]]
+        foreach comp [uplevel 1 info components] {
+           if {[dict exists $class_info_dict $comp -keptoptions]} {
+               foreach my_opt [dict get $class_info_dict $comp -keptoptions] {
+                   if {[lsearch $myOptions $my_opt] < 0} {
+#puts stderr "KEOPT!$my_opt!"
+                       lappend myOptions $my_opt
+                   }
+               }
+           }
+        }
+    } else {
+        set class_info_dict [list]
+    }
+#puts stderr "OPTS!$win!$my_class![join [lsort $myOptions]] \n]!"
+    set opt_lst [list configure]
+    set my_win $win
+    foreach opt [lsort $myOptions] {
+	set found 0
+        if {[catch {
+            set resource [uplevel 1 info option $opt -resource]
+            set class [uplevel 1 info option $opt -class]
+            set default_val [uplevel 1 info option $opt -default]
+	    set found 1
+        } msg]} {
+#            puts stderr "MSG!$opt!$msg!"
+        }
+#puts stderr "OPT!$opt!$found!"
+	if {$found} {
+           if {[catch {
+               set val [uplevel #0 ::option get $my_win $resource $class]
+           } msg]} {
+               set val ""
+           }
+           if {[::dict exists $argsDict $opt]} {
+               # we have an explicitly set option
+               set val [::dict get $argsDict $opt]
+           } else {
+	       if {[string length $val] == 0} {
+                   set val $default_val
+	       }
+           }
+           set ::itcl::internal::variables::${win}::itcl_options($opt) $val
+           set ::itcl::internal::variables::${win}::__itcl_option_infos($opt) [list $resource $class $default_val]
+#puts stderr "OPT1!$opt!$val!"
+#	   uplevel 1 [list set itcl_options($opt) [list $val]]
+           if {[catch {uplevel 1 $my_win configure $opt [list $val]} msg]} {
+puts stderr "initoptions ERR!$msg!$my_class!$my_win!configure!$opt!$val!"
+	   }
+        }
+        foreach comp [dict keys $class_info_dict] {
+#puts stderr "OPT1!$opt!$comp![dict get $class_info_dict $comp]!"
+            if {[dict exists $class_info_dict $comp -keptoptions]} {
+                if {[lsearch [dict get $class_info_dict $comp -keptoptions] $opt] >= 0} {
+                    if {$found == 0} {
+                        # we use the option value of the first component for setting
+                        # the option, as the components are traversed in the dict
+                        # depending on the ordering of the component creation!!
+                        set my_info [uplevel 1 \[set $comp\] configure $opt]
+                        set resource [lindex $my_info 1]
+                        set class [lindex $my_info 2]
+                        set default_val [lindex $my_info 3]
+                        set found 2
+                        set val [uplevel #0 ::option get $my_win $resource $class]
+                        if {[::dict exists $argsDict $opt]} {
+                            # we have an explicitly set option
+                            set val [::dict get $argsDict $opt]
+                        } else {
+	                    if {[string length $val] == 0} {
+                                set val $default_val
+	                    }
+                        }
+#puts stderr "OPT2!$opt!$val!"
+		        set ::itcl::internal::variables::${win}::itcl_options($opt) $val
+		        set ::itcl::internal::variables::${win}::__itcl_option_infos($opt) [list $resource $class $default_val]
+#	                uplevel 1 [list set itcl_options($opt) [list $val]]
+                    }
+                    if {[catch {uplevel 1 \[set $comp\] configure $opt [list $val]} msg]} {
+puts stderr "initoptions ERR2!$msg!$my_class!$comp!configure!$opt!$val!"
+	            }
+		    if {![uplevel 1 info exists itcl_option_components($opt)]} {
+                        set itcl_option_components($opt) [list]
+		    }
+		    if {[lsearch [set itcl_option_components($opt)] $comp] < 0} {
+		        if {![catch {
+		            set optval [uplevel 1 [list set itcl_options($opt)]]
+                        } msg3]} {
+                                uplevel 1 \[set $comp\] configure $opt $optval
+                        }
+                        lappend itcl_option_components($opt) $comp
+		    }
+                }
+            }
+        }
+    }
+#    uplevel 1 $opt_lst
+}
+
+# ======================= setoptions ===========================
+
+proc setoptions {args} {
+
+#puts stderr "setOPT!!$args!"
+    if {[llength $args]} {
+        set argsDict [dict create {*}$args]
+    } else {
+        set argsDict [dict create]
+    }
+    set my_class [uplevel 1 namespace current]
+    set myOptions [namespace eval $my_class {info options}]
+#puts stderr "OPTS!$win!$my_class![join [lsort $myOptions]] \n]!"
+    set opt_lst [list configure]
+    foreach opt [lsort $myOptions] {
+	set found 0
+        if {[catch {
+            set resource [uplevel 1 info option $opt -resource]
+            set class [uplevel 1 info option $opt -class]
+            set default_val [uplevel 1 info option $opt -default]
+	    set found 1
+        } msg]} {
+#            puts stderr "MSG!$opt!$msg!"
+        }
+#puts stderr "OPT!$opt!$found!"
+	if {$found} {
+           set val ""
+           if {[::dict exists $argsDict $opt]} {
+               # we have an explicitly set option
+               set val [::dict get $argsDict $opt]
+           } else {
+	       if {[string length $val] == 0} {
+                   set val $default_val
+	       }
+           }
+	   set myObj [uplevel 1 set this]
+#puts stderr "myObj!$myObj!"
+           set ::itcl::internal::variables::${myObj}::itcl_options($opt) $val
+           set ::itcl::internal::variables::${myObj}::__itcl_option_infos($opt) [list $resource $class $default_val]
+#puts stderr "OPT1!$opt!$val!"
+	   uplevel 1 [list set itcl_options($opt) [list $val]]
+#           if {[catch {uplevel 1 $myObj configure $opt [list $val]} msg]} {
+#puts stderr "initoptions ERR!$msg!$my_class!$my_win!configure!$opt!$val!"
+#	   }
+        }
+    }
+#    uplevel 1 $opt_lst
+}
+
+# ========================= keepcomponentoption ======================
+#  Invoked by Tcl during evaluating constructor whenever
+#  the "keepcomponentoption" command is invoked to list the options
+#  to be kept when an ::itcl::extendedclass component has been setup
+#  for an object.
+#
+#  It checks, for all arguments, if the opt is an option of that class
+#  and of that component. If that is the case it adds the component name
+#  to the list of components for that option.
+#  The variable is the object variable: itcl_option_components($opt)
+#
+#  Handles the following syntax:
+#
+#    keepcomponentoption <componentName> <optionName> ?<optionName> ...?
+#
+# ======================================================================
+
+
+proc keepcomponentoption {args} {
+    upvar win win
+    upvar itcl_hull itcl_hull
+
+    set usage "wrong # args, should be: keepcomponentoption componentName optionName ?optionName ...?"
+
+#puts stderr "KEEP!$args![uplevel 1 namespace current]!"
+    if {[llength $args] < 2} {
+        puts stderr $usage
+	return -code error
+    }
+    set my_hull [uplevel 1 set itcl_hull]
+    set my_class [uplevel 1 namespace current]
+    set comp [lindex $args 0]
+    set args [lrange $args 1 end]
+    set class_info_dict [dict get $::itcl::internal::dicts::classComponents $my_class]
+    if {![dict exists $class_info_dict $comp]} {
+        puts stderr "keepcomponentoption cannot find component \"$comp\""
+	return -code error
+    }
+    set class_comp_dict [dict get $class_info_dict $comp]
+    if {![dict exists $class_comp_dict -keptoptions]} {
+        dict set class_comp_dict -keptoptions [list]
+    }
+    foreach opt $args {
+#puts stderr "KEEP!$opt!"
+	if {[string range $opt 0 0] ne "-"} {
+            puts stderr "keepcomponentoption: option must begin with a \"-\"!"
+	    return -code error
+	}
+        if {[lsearch [dict get $class_comp_dict -keptoptions] $opt] < 0} {
+            dict lappend class_comp_dict -keptoptions $opt
+	}
+    }
+    if {![info exists ::itcl::internal::component_objects([lindex [uplevel 1 info context] 1])]} {
+        set comp_object $::itcl::internal::component_objects([lindex [uplevel 1 info context] 1])
+    } else {
+        set comp_object "unknown_comp_obj_$comp!"
+    }
+    dict set class_info_dict $comp $class_comp_dict
+    dict set ::itcl::internal::dicts::classComponents $my_class $class_info_dict
+puts stderr "CLDI!$class_comp_dict!"
+    addToItclOptions $my_class $comp_object $args [list]
+}
+
+proc ignorecomponentoption {args} {
+puts stderr "IGNORE_COMPONENT_OPTION!$args!"
+}
+
+proc renamecomponentoption {args} {
+puts stderr "rename_COMPONENT_OPTION!$args!"
+}
+
+proc addoptioncomponent {args} {
+puts stderr "ADD_OPTION_COMPONENT!$args!"
+}
+
+proc ignoreoptioncomponent {args} {
+puts stderr "IGNORE_OPTION_COMPONENT!$args!"
+}
+
+proc renameoptioncomponent {args} {
+puts stderr "RENAME_OPTION_COMPONENT!$args!"
+}
+
+proc getEclassOptions {args} {
+    upvar win win
+
+#puts stderr "getEclassOptions!$args!$win![uplevel 1 namespace current]!"
+#parray ::itcl::internal::variables::${win}::itcl_options
+    set result [list]
+    foreach opt [array names ::itcl::internal::variables::${win}::itcl_options] {
+        if {[catch {
+            foreach {res cls def} [set ::itcl::internal::variables::${win}::__itcl_option_infos($opt)] break
+            lappend result [list $opt $res $cls $def [set ::itcl::internal::variables::${win}::itcl_options($opt)]]
+        } msg]} {
+        }
+    }
+    return $result
+}
+
+proc eclassConfigure {args} {
+    upvar win win
+
+#puts stderr "+++ eclassConfigure!$args!"
+    if {[llength $args] > 1} {
+        foreach {opt val}  $args break
+        if {[::info exists ::itcl::internal::variables::${win}::itcl_options($opt)]} {
+            set ::itcl::internal::variables::${win}::itcl_options($opt) $val
+	    return
+        }
+    } else {
+        foreach {opt}  $args break
+        if {[::info exists ::itcl::internal::variables::${win}::itcl_options($opt)]} {
+#puts stderr "OP![set ::itcl::internal::variables::${win}::itcl_options($opt)]!"
+            foreach {res cls def} [set ::itcl::internal::variables::${win}::__itcl_option_infos($opt)] break
+            return [list $opt $res $cls $def [set ::itcl::internal::variables::${win}::itcl_options($opt)]]
+        }
+    }
+    return -code error
+}
+
+}


Property changes on: trunk/Master/tlpkg/tltcl/lib/itcl4.2.0/itclHullCmds.tcl
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/tlpkg/tltcl/lib/itcl4.2.0/itclWidget.tcl
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/itcl4.2.0/itclWidget.tcl	                        (rev 0)
+++ trunk/Master/tlpkg/tltcl/lib/itcl4.2.0/itclWidget.tcl	2020-03-17 20:46:21 UTC (rev 54375)
@@ -0,0 +1,447 @@
+#
+# itclWidget.tcl
+# ----------------------------------------------------------------------
+# Invoked automatically upon startup to customize the interpreter
+# for [incr Tcl] when one of ::itcl::widget or ::itcl::widgetadaptor is called.
+# ----------------------------------------------------------------------
+#   AUTHOR:  Arnulf P. Wiedemann
+#
+# ----------------------------------------------------------------------
+#            Copyright (c) 2008  Arnulf P. Wiedemann
+# ======================================================================
+# See the file "license.terms" for information on usage and
+# redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+
+package require Tk 8.6
+# package require itclwidget [set ::itcl::version]
+
+namespace eval ::itcl {
+
+proc widget {name args} {
+    set result [uplevel 1 ::itcl::internal::commands::genericclass widget $name $args]
+    # we handle create by owerselfs !! allow classunknown to handle that
+    oo::objdefine $result unexport create
+    return $result
+}
+
+proc widgetadaptor {name args} {
+    set result [uplevel 1 ::itcl::internal::commands::genericclass widgetadaptor $name $args]
+    # we handle create by owerselfs !! allow classunknown to handle that
+    oo::objdefine $result unexport create
+    return $result
+}
+
+} ; # end ::itcl
+
+
+namespace eval ::itcl::internal::commands {
+
+proc initWidgetOptions {varNsName widgetName className} {
+    set myDict [set ::itcl::internal::dicts::classOptions]
+    if {$myDict eq ""} {
+        return
+    }
+    if {![dict exists $myDict $className]} {
+        return
+    }
+    set myDict [dict get $myDict $className]
+    foreach option [dict keys $myDict] {
+        set infos [dict get $myDict $option]
+	set resource [dict get $infos -resource]
+	set class [dict get $infos -class]
+	set value [::option get $widgetName $resource $class]
+	if {$value eq ""} {
+	    if {[dict exists $infos -default]} {
+	        set defaultValue [dict get $infos -default]
+	        uplevel 1 set ${varNsName}::itcl_options($option) $defaultValue
+	    }
+	} else {
+	    uplevel 1 set ${varNsName}::itcl_options($option) $value
+	}
+    }
+}
+
+proc initWidgetDelegatedOptions {varNsName widgetName className args} {
+    set myDict [set ::itcl::internal::dicts::classDelegatedOptions]
+    if {$myDict eq ""} {
+        return
+    }
+    if {![dict exists $myDict $className]} {
+        return
+    }
+    set myDict [dict get $myDict $className]
+    foreach option [dict keys $myDict] {
+        set infos [dict get $myDict $option]
+	if {![dict exists $infos -resource]} {
+	    # this is the case when delegating "*"
+	    continue
+	}
+	if {![dict exists $infos -component]} {
+	    # nothing to do
+	    continue
+	}
+	# check if not in the command line options
+	# these have higher priority
+	set myOption $option
+	if {[dict exists $infos -as]} {
+	   set myOption [dict get $infos -as]
+	}
+	set noOptionSet 0
+	foreach {optName optVal} $args {
+	    if {$optName eq $myOption} {
+	        set noOptionSet 1
+		break
+	    }
+	}
+	if {$noOptionSet} {
+	    continue
+	}
+	set resource [dict get $infos -resource]
+	set class [dict get $infos -class]
+	set component [dict get $infos -component]
+	set value [::option get $widgetName $resource $class]
+	if {$component ne ""} {
+	    if {$value ne ""} {
+		set compVar [namespace eval ${varNsName}${className} "set $component"]
+		if {$compVar ne ""} {
+	            uplevel 1 $compVar configure $myOption $value
+	        }
+	    }
+	}
+    }
+}
+
+proc widgetinitobjectoptions {varNsName widgetName className} {
+#puts stderr "initWidgetObjectOptions!$varNsName!$widgetName!$className!"
+}
+
+proc deletehull {newName oldName what} {
+    if {$what eq "delete"} {
+        set name [namespace tail $newName]
+        regsub {hull[0-9]+} $name {} name
+        rename $name {}
+    }
+    if {$what eq "rename"} {
+        set name [namespace tail $newName]
+        regsub {hull[0-9]+} $name {} name
+        rename $name {}
+    }
+}
+
+proc hullandoptionsinstall {objectName className widgetClass hulltype args} {
+    if {$hulltype eq ""} {
+        set hulltype frame
+    }
+    set idx 0
+    set found 0
+    foreach {optName optValue} $args {
+	if {$optName eq "-class"} {
+	    set found 1
+	    set widgetClass $optValue
+	    break
+	}
+        incr idx
+    }
+    if {$found} {
+        set args [lreplace $args $idx [expr {$idx + 1}]]
+    }
+    if {$widgetClass eq ""} {
+        set widgetClass $className
+	set widgetClass [string totitle $widgetClass]
+    }
+    set cmd "set win $objectName; ::itcl::builtin::installhull using $hulltype -class $widgetClass $args"
+    uplevel 2 $cmd
+}
+
+} ; # end ::itcl::internal::commands
+
+namespace eval ::itcl::builtin {
+
+proc installhull {args} {
+    set cmdPath ::itcl::internal::commands
+    set className [uplevel 1 info class]
+
+    set replace 0
+    switch -- [llength $args] {
+	0	{
+		return -code error\
+		"wrong # args: should be \"[lindex [info level 0] 0]\
+		name|using <widgetType> ?arg ...?\""
+	}
+	1	{
+		set widgetName [lindex $args 0]
+		set varNsName $::itcl::internal::varNsName($widgetName)
+	}
+	default	{
+		upvar win win
+		set widgetName $win
+
+		set varNsName $::itcl::internal::varNsName($widgetName)
+	        set widgetType [lindex $args 1]
+		incr replace
+		if {[llength $args] > 3 && [lindex $args 2] eq "-class"} {
+		    set classNam [lindex $args 3]
+		    incr replace 2
+		} else {
+		    set classNam [string totitle $widgetType]
+		}
+		uplevel 1 [lreplace $args 0 $replace $widgetType $widgetName -class $classNam]
+		uplevel 1 [list ${cmdPath}::initWidgetOptions $varNsName $widgetName $className]
+	}
+    }
+
+    # initialize the itcl_hull variable
+    set i 0
+    set nam ::itcl::internal::widgets::hull
+    while {1} {
+         incr i
+	 set hullNam ${nam}${i}$widgetName
+	 if {[::info command $hullNam] eq ""} {
+	     break
+	}
+    }
+    uplevel 1 [list ${cmdPath}::sethullwindowname $widgetName]
+    uplevel 1 [list ::rename $widgetName $hullNam]
+    uplevel 1 [list ::trace add command $hullNam {delete rename} ::itcl::internal::commands::deletehull]
+    catch {${cmdPath}::checksetitclhull [list] 0}
+    namespace eval ${varNsName}${className} "set itcl_hull $hullNam"
+    catch {${cmdPath}::checksetitclhull [list] 2}
+    uplevel 1 [lreplace $args 0 $replace ${cmdPath}::initWidgetDelegatedOptions $varNsName $widgetName $className]
+}
+
+proc installcomponent {args} {
+    upvar win win
+
+    set className [uplevel 1 info class]
+    set myType [${className}::info types [namespace tail $className]]
+    set isType 0
+    if {$myType ne ""} {
+        set isType 1
+    }
+    set numArgs [llength $args]
+    set usage "usage: installcomponent <componentName> using <widgetType> <widgetPath> ?-option value ...?"
+    if {$numArgs < 4} {
+        error $usage
+    }
+    foreach {componentName using widgetType widgetPath} $args break
+    set opts [lrange $args 4 end]
+    if {$using ne "using"} {
+        error $usage
+    }
+    if {!$isType} {
+        set hullExists [uplevel 1 ::info exists itcl_hull]
+        if {!$hullExists} {
+            error "cannot install \"$componentName\" before \"itcl_hull\" exists"
+        }
+        set hullVal [uplevel 1 set itcl_hull]
+        if {$hullVal eq ""} {
+            error "cannot install \"$componentName\" before \"itcl_hull\" exists"
+        }
+    }
+    # check for delegated option and ask the option database for the values
+    # first check for number of delegated options
+    set numOpts 0
+    set starOption 0
+    set myDict [set ::itcl::internal::dicts::classDelegatedOptions]
+    if {[dict exists $myDict $className]} {
+        set myDict [dict get $myDict $className]
+	foreach option [dict keys $myDict] {
+	    if {$option eq "*"} {
+	        set starOption 1
+	    }
+	    incr numOpts
+	}
+    }
+    set myOptionDict [set ::itcl::internal::dicts::classOptions]
+    if {[dict exists $myOptionDict $className]} {
+        set myOptionDict [dict get $myOptionDict $className]
+    }
+    set cmd [list $widgetPath configure]
+    set cmd1 "set $componentName \[$widgetType $widgetPath\]"
+    uplevel 1 $cmd1
+    if {$starOption} {
+	upvar $componentName compName
+	set cmd1 [list $compName configure]
+        set configInfos [uplevel 1 $cmd1]
+	foreach entry $configInfos {
+	    if {[llength $entry] > 2} {
+	        foreach {optName resource class defaultValue} $entry break
+		set val ""
+		catch {
+		    set val [::option get $win $resource $class]
+		}
+		if {$val ne ""} {
+		    set addOpt 1
+		    if {[dict exists $myDict $$optName]} {
+		        set addOpt 0
+		    } else {
+		        set starDict [dict get $myDict "*"]
+			if {[dict exists $starDict -except]} {
+			    set exceptions [dict get $starDict -except]
+			    if {[lsearch $exceptions $optName] >= 0} {
+			        set addOpt 0
+			    }
+
+			}
+			if {[dict exists $myOptionDict $optName]} {
+			    set addOpt 0
+			}
+                    }
+		    if {$addOpt} {
+		        lappend cmd $optName $val
+		    }
+
+		}
+
+	    }
+        }
+    } else {
+        foreach optName [dict keys $myDict] {
+	    set optInfos [dict get $myDict $optName]
+	    set resource [dict get $optInfos -resource]
+	    set class [namespace tail $className]
+	    set class [string totitle $class]
+	    set val ""
+	    catch {
+	        set val [::option get $win $resource $class]
+            }
+	    if {$val ne ""} {
+		if {[dict exists $optInfos -as] } {
+	            set optName [dict get $optInfos -as]
+		}
+		lappend cmd $optName $val
+	    }
+	}
+    }
+    lappend cmd {*}$opts
+    uplevel 1 $cmd
+}
+
+} ; # end ::itcl::builtin
+
+set ::itcl::internal::dicts::hullTypes [list \
+       frame \
+       toplevel \
+       labelframe \
+       ttk:frame \
+       ttk:toplevel \
+       ttk:labelframe \
+    ]
+
+namespace eval ::itcl::builtin::Info {
+
+proc hulltypes {args} {
+    namespace upvar ::itcl::internal::dicts hullTypes hullTypes
+
+    set numArgs [llength $args]
+    if {$numArgs > 1} {
+        error "wrong # args should be: info hulltypes ?<pattern>?"
+    }
+    set pattern ""
+    if {$numArgs > 0} {
+        set pattern [lindex $args 0]
+    }
+    if {$pattern ne ""} {
+        return [lsearch -all -inline -glob $hullTypes $pattern]
+    }
+    return $hullTypes
+
+}
+
+proc widgetclasses {args} {
+    set numArgs [llength $args]
+    if {$numArgs > 1} {
+        error "wrong # args should be: info widgetclasses ?<pattern>?"
+    }
+    set pattern ""
+    if {$numArgs > 0} {
+        set pattern [lindex $args 0]
+    }
+    set myDict [set ::itcl::internal::dicts::classes]
+    if {![dict exists $myDict widget]} {
+        return [list]
+    }
+    set myDict [dict get $myDict widget]
+    set result [list]
+    if {$pattern ne ""} {
+        foreach key [dict keys $myDict] {
+	    set myInfo [dict get $myDict $key]
+	    set value [dict get $myInfo -widget]
+	    if {[string match $pattern $value]} {
+	        lappend result $value
+            }
+        }
+    } else {
+        foreach key [dict keys $myDict] {
+	    set myInfo [dict get $myDict $key]
+	    lappend result [dict get $myInfo -widget]
+	}
+    }
+    return $result
+}
+
+proc widgets {args} {
+    set numArgs [llength $args]
+    if {$numArgs > 1} {
+        error "wrong # args should be: info widgets ?<pattern>?"
+    }
+    set pattern ""
+    if {$numArgs > 0} {
+        set pattern [lindex $args 0]
+    }
+    set myDict [set ::itcl::internal::dicts::classes]
+    if {![dict exists $myDict widget]} {
+        return [list]
+    }
+    set myDict [dict get $myDict widget]
+    set result [list]
+    if {$pattern ne ""} {
+        foreach key [dict keys $myDict] {
+	    set myInfo [dict get $myDict $key]
+	    set value [dict get $myInfo -name]
+	    if {[string match $pattern $value]} {
+	        lappend result $value
+            }
+        }
+    } else {
+        foreach key [dict keys $myDict] {
+	    set myInfo [dict get $myDict $key]
+	    lappend result [dict get $myInfo -name]
+	}
+    }
+    return $result
+}
+
+proc widgetadaptors {args} {
+    set numArgs [llength $args]
+    if {$numArgs > 1} {
+        error "wrong # args should be: info widgetadaptors ?<pattern>?"
+    }
+    set pattern ""
+    if {$numArgs > 0} {
+        set pattern [lindex $args 0]
+    }
+    set myDict [set ::itcl::internal::dicts::classes]
+    if {![dict exists $myDict widgetadaptor]} {
+        return [list]
+    }
+    set myDict [dict get $myDict widgetadaptor]
+    set result [list]
+    if {$pattern ne ""} {
+        foreach key [dict keys $myDict] {
+	    set myInfo [dict get $myDict $key]
+	    set value [dict get $myInfo -name]
+	    if {[string match $pattern $value]} {
+	        lappend result $value
+            }
+        }
+    } else {
+        foreach key [dict keys $myDict] {
+	    set myInfo [dict get $myDict $key]
+	    lappend result [dict get $myInfo -name]
+	}
+    }
+    return $result
+}
+
+} ; # end ::itcl::builtin::Info


Property changes on: trunk/Master/tlpkg/tltcl/lib/itcl4.2.0/itclWidget.tcl
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/tlpkg/tltcl/lib/itcl4.2.0/libitclstub420.a
===================================================================
(Binary files differ)

Index: trunk/Master/tlpkg/tltcl/lib/itcl4.2.0/libitclstub420.a
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/itcl4.2.0/libitclstub420.a	2020-03-17 13:49:18 UTC (rev 54374)
+++ trunk/Master/tlpkg/tltcl/lib/itcl4.2.0/libitclstub420.a	2020-03-17 20:46:21 UTC (rev 54375)

Property changes on: trunk/Master/tlpkg/tltcl/lib/itcl4.2.0/libitclstub420.a
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Added: trunk/Master/tlpkg/tltcl/lib/itcl4.2.0/pkgIndex.tcl
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/itcl4.2.0/pkgIndex.tcl	                        (rev 0)
+++ trunk/Master/tlpkg/tltcl/lib/itcl4.2.0/pkgIndex.tcl	2020-03-17 20:46:21 UTC (rev 54375)
@@ -0,0 +1,21 @@
+# Tcl package index file, version 1.0
+#
+# Do NOT try this command
+# 
+#   if {![package vsatisfies [package provide Tcl] 8.6-]} {return}
+#
+# as a way to accept working with all of Tcl 8.6, Tcl 8.X, X>6, and
+# Tcl Y, for Y > 8.
+# Itcl is a binary package, added to an interp with [load].
+# There is no libitcl.so that will [load] into both Tcl 8 and Tcl 9.
+# The indexed libitcl.so was built to [load] into one or the other.
+# Thus the pkgIndex.tcl should only accept the version of Tcl for which
+# the indexed itcl420.dll was built.
+#
+# More work replacing the literal "8.6" below with the proper value substituted
+# by configure is the right way forward.
+
+if {![package vsatisfies [package provide Tcl] 8.6]} {return}
+
+package ifneeded itcl 4.2.0 [list load [file join $dir "itcl420.dll"] itcl]
+package ifneeded Itcl 4.2.0 [list load [file join $dir "itcl420.dll"] itcl]


Property changes on: trunk/Master/tlpkg/tltcl/lib/itcl4.2.0/pkgIndex.tcl
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/tlpkg/tltcl/lib/libtcl86.a
===================================================================
(Binary files differ)

Index: trunk/Master/tlpkg/tltcl/lib/libtcl86.a
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/libtcl86.a	2020-03-17 13:49:18 UTC (rev 54374)
+++ trunk/Master/tlpkg/tltcl/lib/libtcl86.a	2020-03-17 20:46:21 UTC (rev 54375)

Property changes on: trunk/Master/tlpkg/tltcl/lib/libtcl86.a
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Added: trunk/Master/tlpkg/tltcl/lib/libtclstub86.a
===================================================================
(Binary files differ)

Index: trunk/Master/tlpkg/tltcl/lib/libtclstub86.a
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/libtclstub86.a	2020-03-17 13:49:18 UTC (rev 54374)
+++ trunk/Master/tlpkg/tltcl/lib/libtclstub86.a	2020-03-17 20:46:21 UTC (rev 54375)

Property changes on: trunk/Master/tlpkg/tltcl/lib/libtclstub86.a
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Added: trunk/Master/tlpkg/tltcl/lib/libtk86.a
===================================================================
(Binary files differ)

Index: trunk/Master/tlpkg/tltcl/lib/libtk86.a
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/libtk86.a	2020-03-17 13:49:18 UTC (rev 54374)
+++ trunk/Master/tlpkg/tltcl/lib/libtk86.a	2020-03-17 20:46:21 UTC (rev 54375)

Property changes on: trunk/Master/tlpkg/tltcl/lib/libtk86.a
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Added: trunk/Master/tlpkg/tltcl/lib/libtkstub86.a
===================================================================
(Binary files differ)

Index: trunk/Master/tlpkg/tltcl/lib/libtkstub86.a
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/libtkstub86.a	2020-03-17 13:49:18 UTC (rev 54374)
+++ trunk/Master/tlpkg/tltcl/lib/libtkstub86.a	2020-03-17 20:46:21 UTC (rev 54375)

Property changes on: trunk/Master/tlpkg/tltcl/lib/libtkstub86.a
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Added: trunk/Master/tlpkg/tltcl/lib/reg1.3/libtclreg13.a
===================================================================
(Binary files differ)

Index: trunk/Master/tlpkg/tltcl/lib/reg1.3/libtclreg13.a
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/reg1.3/libtclreg13.a	2020-03-17 13:49:18 UTC (rev 54374)
+++ trunk/Master/tlpkg/tltcl/lib/reg1.3/libtclreg13.a	2020-03-17 20:46:21 UTC (rev 54375)

Property changes on: trunk/Master/tlpkg/tltcl/lib/reg1.3/libtclreg13.a
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Added: trunk/Master/tlpkg/tltcl/lib/reg1.3/pkgIndex.tcl
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/reg1.3/pkgIndex.tcl	                        (rev 0)
+++ trunk/Master/tlpkg/tltcl/lib/reg1.3/pkgIndex.tcl	2020-03-17 20:46:21 UTC (rev 54375)
@@ -0,0 +1,9 @@
+if {![package vsatisfies [package provide Tcl] 8.5]} return
+if {[info sharedlibextension] != ".dll"} return
+if {[::tcl::pkgconfig get debug]} {
+    package ifneeded registry 1.3.4 \
+            [list load [file join $dir tclreg13g.dll] registry]
+} else {
+    package ifneeded registry 1.3.4 \
+            [list load [file join $dir tclreg13.dll] registry]
+}


Property changes on: trunk/Master/tlpkg/tltcl/lib/reg1.3/pkgIndex.tcl
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: trunk/Master/tlpkg/tltcl/lib/reg1.3/tclreg13.dll
===================================================================
(Binary files differ)

Index: trunk/Master/tlpkg/tltcl/lib/reg1.3/tclreg13.dll
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/reg1.3/tclreg13.dll	2020-03-17 13:49:18 UTC (rev 54374)
+++ trunk/Master/tlpkg/tltcl/lib/reg1.3/tclreg13.dll	2020-03-17 20:46:21 UTC (rev 54375)

Property changes on: trunk/Master/tlpkg/tltcl/lib/reg1.3/tclreg13.dll
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Added: trunk/Master/tlpkg/tltcl/lib/sqlite3.30.1.2/pkgIndex.tcl
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/sqlite3.30.1.2/pkgIndex.tcl	                        (rev 0)
+++ trunk/Master/tlpkg/tltcl/lib/sqlite3.30.1.2/pkgIndex.tcl	2020-03-17 20:46:21 UTC (rev 54375)
@@ -0,0 +1,7 @@
+#
+# Tcl package index file
+#
+# Note sqlite*3* init specifically
+#
+package ifneeded sqlite3 3.30.1.2 \
+    [list load [file join $dir sqlite33012.dll] Sqlite3]


Property changes on: trunk/Master/tlpkg/tltcl/lib/sqlite3.30.1.2/pkgIndex.tcl
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/tlpkg/tltcl/lib/sqlite3.30.1.2/sqlite33012.dll
===================================================================
(Binary files differ)

Index: trunk/Master/tlpkg/tltcl/lib/sqlite3.30.1.2/sqlite33012.dll
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/sqlite3.30.1.2/sqlite33012.dll	2020-03-17 13:49:18 UTC (rev 54374)
+++ trunk/Master/tlpkg/tltcl/lib/sqlite3.30.1.2/sqlite33012.dll	2020-03-17 20:46:21 UTC (rev 54375)

Property changes on: trunk/Master/tlpkg/tltcl/lib/sqlite3.30.1.2/sqlite33012.dll
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Added: trunk/Master/tlpkg/tltcl/lib/tcl8/8.4/platform/shell-1.1.4.tm
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tcl8/8.4/platform/shell-1.1.4.tm	                        (rev 0)
+++ trunk/Master/tlpkg/tltcl/lib/tcl8/8.4/platform/shell-1.1.4.tm	2020-03-17 20:46:21 UTC (rev 54375)
@@ -0,0 +1,241 @@
+
+# -*- tcl -*-
+# ### ### ### ######### ######### #########
+## Overview
+
+# Higher-level commands which invoke the functionality of this package
+# for an arbitrary tcl shell (tclsh, wish, ...). This is required by a
+# repository as while the tcl shell executing packages uses the same
+# platform in general as a repository application there can be
+# differences in detail (i.e. 32/64 bit builds).
+
+# ### ### ### ######### ######### #########
+## Requirements
+
+package require platform
+namespace eval ::platform::shell {}
+
+# ### ### ### ######### ######### #########
+## Implementation
+
+# -- platform::shell::generic
+
+proc ::platform::shell::generic {shell} {
+    # Argument is the path to a tcl shell.
+
+    CHECK $shell
+    LOCATE base out
+
+    set     code {}
+    # Forget any pre-existing platform package, it might be in
+    # conflict with this one.
+    lappend code {package forget platform}
+    # Inject our platform package
+    lappend code [list source $base]
+    # Query and print the architecture
+    lappend code {puts [platform::generic]}
+    # And done
+    lappend code {exit 0}
+
+    set arch [RUN $shell [join $code \n]]
+
+    if {$out} {file delete -force $base}
+    return $arch
+}
+
+# -- platform::shell::identify
+
+proc ::platform::shell::identify {shell} {
+    # Argument is the path to a tcl shell.
+
+    CHECK $shell
+    LOCATE base out
+
+    set     code {}
+    # Forget any pre-existing platform package, it might be in
+    # conflict with this one.
+    lappend code {package forget platform}
+    # Inject our platform package
+    lappend code [list source $base]
+    # Query and print the architecture
+    lappend code {puts [platform::identify]}
+    # And done
+    lappend code {exit 0}
+
+    set arch [RUN $shell [join $code \n]]
+
+    if {$out} {file delete -force $base}
+    return $arch
+}
+
+# -- platform::shell::platform
+
+proc ::platform::shell::platform {shell} {
+    # Argument is the path to a tcl shell.
+
+    CHECK $shell
+
+    set     code {}
+    lappend code {puts $tcl_platform(platform)}
+    lappend code {exit 0}
+
+    return [RUN $shell [join $code \n]]
+}
+
+# ### ### ### ######### ######### #########
+## Internal helper commands.
+
+proc ::platform::shell::CHECK {shell} {
+    if {![file exists $shell]} {
+	return -code error "Shell \"$shell\" does not exist"
+    }
+    if {![file executable $shell]} {
+	return -code error "Shell \"$shell\" is not executable (permissions)"
+    }
+    return
+}
+
+proc ::platform::shell::LOCATE {bv ov} {
+    upvar 1 $bv base $ov out
+
+    # Locate the platform package for injection into the specified
+    # shell. We are using package management to find it, whereever it
+    # is, instead of using hardwired relative paths. This allows us to
+    # install the two packages as TMs without breaking the code
+    # here. If the found package is wrapped we copy the code somewhere
+    # where the spawned shell will be able to read it.
+
+    # This code is brittle, it needs has to adapt to whatever changes
+    # are made to the TM code, i.e. the provide statement generated by
+    # tm.tcl
+
+    set pl [package ifneeded platform [package require platform]]
+    set base [lindex $pl end]
+
+    set out 0
+    if {[lindex [file system $base]] ne "native"} {
+	set temp [TEMP]
+	file copy -force $base $temp
+	set base $temp
+	set out 1
+    }
+    return
+}
+
+proc ::platform::shell::RUN {shell code} {
+    set     c [TEMP]
+    set    cc [open $c w]
+    puts  $cc $code
+    close $cc
+
+    set e [TEMP]
+
+    set code [catch {
+        exec $shell $c 2> $e
+    } res]
+
+    file delete $c
+
+    if {$code} {
+	append res \n[read [set chan [open $e r]]][close $chan]
+	file delete $e
+	return -code error "Shell \"$shell\" is not executable ($res)"
+    }
+
+    file delete $e
+    return $res
+}
+
+proc ::platform::shell::TEMP {} {
+    set prefix platform
+
+    # This code is copied out of Tcllib's fileutil package.
+    # (TempFile/tempfile)
+
+    set tmpdir [DIR]
+
+    set chars "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
+    set nrand_chars 10
+    set maxtries 10
+    set access [list RDWR CREAT EXCL TRUNC]
+    set permission 0600
+    set channel ""
+    set checked_dir_writable 0
+    set mypid [pid]
+    for {set i 0} {$i < $maxtries} {incr i} {
+ 	set newname $prefix
+ 	for {set j 0} {$j < $nrand_chars} {incr j} {
+ 	    append newname [string index $chars \
+		    [expr {int(rand()*62)}]]
+ 	}
+	set newname [file join $tmpdir $newname]
+ 	if {[file exists $newname]} {
+ 	    after 1
+ 	} else {
+ 	    if {[catch {open $newname $access $permission} channel]} {
+ 		if {!$checked_dir_writable} {
+ 		    set dirname [file dirname $newname]
+ 		    if {![file writable $dirname]} {
+ 			return -code error "Directory $dirname is not writable"
+ 		    }
+ 		    set checked_dir_writable 1
+ 		}
+ 	    } else {
+ 		# Success
+		close $channel
+ 		return [file normalize $newname]
+ 	    }
+ 	}
+    }
+    if {$channel ne ""} {
+ 	return -code error "Failed to open a temporary file: $channel"
+    } else {
+ 	return -code error "Failed to find an unused temporary file name"
+    }
+}
+
+proc ::platform::shell::DIR {} {
+    # This code is copied out of Tcllib's fileutil package.
+    # (TempDir/tempdir)
+
+    global tcl_platform env
+
+    set attempdirs [list]
+
+    foreach tmp {TMPDIR TEMP TMP} {
+	if { [info exists env($tmp)] } {
+	    lappend attempdirs $env($tmp)
+	}
+    }
+
+    switch $tcl_platform(platform) {
+	windows {
+	    lappend attempdirs "C:\\TEMP" "C:\\TMP" "\\TEMP" "\\TMP"
+	}
+	macintosh {
+	    set tmpdir $env(TRASH_FOLDER)  ;# a better place?
+	}
+	default {
+	    lappend attempdirs \
+		[file join / tmp] \
+		[file join / var tmp] \
+		[file join / usr tmp]
+	}
+    }
+
+    lappend attempdirs [pwd]
+
+    foreach tmp $attempdirs {
+	if { [file isdirectory $tmp] && [file writable $tmp] } {
+	    return [file normalize $tmp]
+	}
+    }
+
+    # Fail if nothing worked.
+    return -code error "Unable to determine a proper directory for temporary files"
+}
+
+# ### ### ### ######### ######### #########
+## Ready
+
+package provide platform::shell 1.1.4

Added: trunk/Master/tlpkg/tltcl/lib/tcl8/8.4/platform-1.0.14.tm
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tcl8/8.4/platform-1.0.14.tm	                        (rev 0)
+++ trunk/Master/tlpkg/tltcl/lib/tcl8/8.4/platform-1.0.14.tm	2020-03-17 20:46:21 UTC (rev 54375)
@@ -0,0 +1,397 @@
+# -*- tcl -*-
+# ### ### ### ######### ######### #########
+## Overview
+
+# Heuristics to assemble a platform identifier from publicly available
+# information. The identifier describes the platform of the currently
+# running tcl shell. This is a mixture of the runtime environment and
+# of build-time properties of the executable itself.
+#
+# Examples:
+# <1> A tcl shell executing on a x86_64 processor, but having a
+#   wordsize of 4 was compiled for the x86 environment, i.e. 32
+#   bit, and loaded packages have to match that, and not the
+#   actual cpu.
+#
+# <2> The hp/solaris 32/64 bit builds of the core cannot be
+#   distinguished by looking at tcl_platform. As packages have to
+#   match the 32/64 information we have to look in more places. In
+#   this case we inspect the executable itself (magic numbers,
+#   i.e. fileutil::magic::filetype).
+#
+# The basic information used comes out of the 'os' and 'machine'
+# entries of the 'tcl_platform' array. A number of general and
+# os/machine specific transformation are applied to get a canonical
+# result.
+#
+# General
+# Only the first element of 'os' is used - we don't care whether we
+# are on "Windows NT" or "Windows XP" or whatever.
+#
+# Machine specific
+# % arm*   -> arm
+# % sun4*  -> sparc
+# % intel  -> ix86
+# % i*86*  -> ix86
+# % Power* -> powerpc
+# % x86_64 + wordSize 4 => x86 code
+#
+# OS specific
+# % AIX are always powerpc machines
+# % HP-UX 9000/800 etc means parisc
+# % linux has to take glibc version into account
+# % sunos -> solaris, and keep version number
+#
+# NOTE: A platform like linux glibc 2.3, which can use glibc 2.2 stuff
+# has to provide all possible allowed platform identifiers when
+# searching search. Ditto a solaris 2.8 platform can use solaris 2.6
+# packages. Etc. This is handled by the other procedure, see below.
+
+# ### ### ### ######### ######### #########
+## Requirements
+
+namespace eval ::platform {}
+
+# ### ### ### ######### ######### #########
+## Implementation
+
+# -- platform::generic
+#
+# Assembles an identifier for the generic platform. It leaves out
+# details like kernel version, libc version, etc.
+
+proc ::platform::generic {} {
+    global tcl_platform
+
+    set plat [string tolower [lindex $tcl_platform(os) 0]]
+    set cpu  $tcl_platform(machine)
+
+    switch -glob -- $cpu {
+	sun4* {
+	    set cpu sparc
+	}
+	intel -
+	i*86* {
+	    set cpu ix86
+	}
+	x86_64 {
+	    if {$tcl_platform(wordSize) == 4} {
+		# See Example <1> at the top of this file.
+		set cpu ix86
+	    }
+	}
+	"Power*" {
+	    set cpu powerpc
+	}
+	"arm*" {
+	    set cpu arm
+	}
+	ia64 {
+	    if {$tcl_platform(wordSize) == 4} {
+		append cpu _32
+	    }
+	}
+    }
+
+    switch -glob -- $plat {
+	cygwin* {
+	    set plat cygwin
+	}
+	windows {
+	    if {$tcl_platform(platform) == "unix"} {
+		set plat cygwin
+	    } else {
+		set plat win32
+	    }
+	    if {$cpu eq "amd64"} {
+		# Do not check wordSize, win32-x64 is an IL32P64 platform.
+		set cpu x86_64
+	    }
+	}
+	sunos {
+	    set plat solaris
+	    if {[string match "ix86" $cpu]} {
+		if {$tcl_platform(wordSize) == 8} {
+		    set cpu x86_64
+		}
+	    } elseif {![string match "ia64*" $cpu]} {
+		# sparc
+		if {$tcl_platform(wordSize) == 8} {
+		    append cpu 64
+		}
+	    }
+	}
+	darwin {
+	    set plat macosx
+	    # Correctly identify the cpu when running as a 64bit
+	    # process on a machine with a 32bit kernel
+	    if {$cpu eq "ix86"} {
+		if {$tcl_platform(wordSize) == 8} {
+		    set cpu x86_64
+		}
+	    }
+	}
+	aix {
+	    set cpu powerpc
+	    if {$tcl_platform(wordSize) == 8} {
+		append cpu 64
+	    }
+	}
+	hp-ux {
+	    set plat hpux
+	    if {![string match "ia64*" $cpu]} {
+		set cpu parisc
+		if {$tcl_platform(wordSize) == 8} {
+		    append cpu 64
+		}
+	    }
+	}
+	osf1 {
+	    set plat tru64
+	}
+    }
+
+    return "${plat}-${cpu}"
+}
+
+# -- platform::identify
+#
+# Assembles an identifier for the exact platform, by extending the
+# generic identifier. I.e. it adds in details like kernel version,
+# libc version, etc., if they are relevant for the loading of
+# packages on the platform.
+
+proc ::platform::identify {} {
+    global tcl_platform
+
+    set id [generic]
+    regexp {^([^-]+)-([^-]+)$} $id -> plat cpu
+
+    switch -- $plat {
+	solaris {
+	    regsub {^5} $tcl_platform(osVersion) 2 text
+	    append plat $text
+	    return "${plat}-${cpu}"
+	}
+	macosx {
+	    set major [lindex [split $tcl_platform(osVersion) .] 0]
+	    if {$major > 8} {
+		incr major -4
+		append plat 10.$major
+		return "${plat}-${cpu}"
+	    }
+	}
+	linux {
+	    # Look for the libc*.so and determine its version
+	    # (libc5/6, libc6 further glibc 2.X)
+
+	    set v unknown
+
+	    # Determine in which directory to look. /lib, or /lib64.
+	    # For that we use the tcl_platform(wordSize).
+	    #
+	    # We could use the 'cpu' info, per the equivalence below,
+	    # that however would be restricted to intel. And this may
+	    # be a arm, mips, etc. system. The wordsize is more
+	    # fundamental.
+	    #
+	    # ix86   <=> (wordSize == 4) <=> 32 bit ==> /lib
+	    # x86_64 <=> (wordSize == 8) <=> 64 bit ==> /lib64
+	    #
+	    # Do not look into /lib64 even if present, if the cpu
+	    # doesn't fit.
+
+	    # TODO: Determine the prefixes (i386, x86_64, ...) for
+	    # other cpus.  The path after the generic one is utterly
+	    # specific to intel right now.  Ok, on Ubuntu, possibly
+	    # other Debian systems we may apparently be able to query
+	    # the necessary CPU code. If we can't we simply use the
+	    # hardwired fallback.
+
+	    switch -exact -- $tcl_platform(wordSize) {
+		4 {
+		    lappend bases /lib
+		    if {[catch {
+			exec dpkg-architecture -qDEB_HOST_MULTIARCH
+		    } res]} {
+			lappend bases /lib/i386-linux-gnu
+		    } else {
+			# dpkg-arch returns the full tripled, not just cpu.
+			lappend bases /lib/$res
+		    }
+		}
+		8 {
+		    lappend bases /lib64
+		    if {[catch {
+			exec dpkg-architecture -qDEB_HOST_MULTIARCH
+		    } res]} {
+			lappend bases /lib/x86_64-linux-gnu
+		    } else {
+			# dpkg-arch returns the full tripled, not just cpu.
+			lappend bases /lib/$res
+		    }
+		}
+		default {
+		    return -code error "Bad wordSize $tcl_platform(wordSize), expected 4 or 8"
+		}
+	    }
+
+	    foreach base $bases {
+		if {[LibcVersion $base -> v]} break
+	    }
+
+	    append plat -$v
+	    return "${plat}-${cpu}"
+	}
+    }
+
+    return $id
+}
+
+proc ::platform::LibcVersion {base _->_ vv} {
+    upvar 1 $vv v
+    set libclist [lsort [glob -nocomplain -directory $base libc*]]
+
+    if {![llength $libclist]} { return 0 }
+
+    set libc [lindex $libclist 0]
+
+    # Try executing the library first. This should suceed
+    # for a glibc library, and return the version
+    # information.
+
+    if {![catch {
+	set vdata [lindex [split [exec $libc] \n] 0]
+    }]} {
+	regexp {version ([0-9]+(\.[0-9]+)*)} $vdata -> v
+	foreach {major minor} [split $v .] break
+	set v glibc${major}.${minor}
+	return 1
+    } else {
+	# We had trouble executing the library. We are now
+	# inspecting its name to determine the version
+	# number. This code by Larry McVoy.
+
+	if {[regexp -- {libc-([0-9]+)\.([0-9]+)} $libc -> major minor]} {
+	    set v glibc${major}.${minor}
+	    return 1
+	}
+    }
+    return 0
+}
+
+# -- platform::patterns
+#
+# Given an exact platform identifier, i.e. _not_ the generic
+# identifier it assembles a list of exact platform identifier
+# describing platform which should be compatible with the
+# input.
+#
+# I.e. packages for all platforms in the result list should be
+# loadable on the specified platform.
+
+# << Should we add the generic identifier to the list as well ? In
+#    general it is not compatible I believe. So better not. In many
+#    cases the exact identifier is identical to the generic one
+#    anyway.
+# >>
+
+proc ::platform::patterns {id} {
+    set res [list $id]
+    if {$id eq "tcl"} {return $res}
+
+    switch -glob --  $id {
+	solaris*-* {
+	    if {[regexp {solaris([^-]*)-(.*)} $id -> v cpu]} {
+		if {$v eq ""} {return $id}
+		foreach {major minor} [split $v .] break
+		incr minor -1
+		for {set j $minor} {$j >= 6} {incr j -1} {
+		    lappend res solaris${major}.${j}-${cpu}
+		}
+	    }
+	}
+	linux*-* {
+	    if {[regexp {linux-glibc([^-]*)-(.*)} $id -> v cpu]} {
+		foreach {major minor} [split $v .] break
+		incr minor -1
+		for {set j $minor} {$j >= 0} {incr j -1} {
+		    lappend res linux-glibc${major}.${j}-${cpu}
+		}
+	    }
+	}
+	macosx-powerpc {
+	    lappend res macosx-universal
+	}
+	macosx-x86_64 {
+	    lappend res macosx-i386-x86_64
+	}
+	macosx-ix86 {
+	    lappend res macosx-universal macosx-i386-x86_64
+	}
+	macosx*-*    {
+	    # 10.5+
+	    if {[regexp {macosx([^-]*)-(.*)} $id -> v cpu]} {
+
+		switch -exact -- $cpu {
+		    ix86    {
+			lappend alt i386-x86_64
+			lappend alt universal
+		    }
+		    x86_64  { lappend alt i386-x86_64 }
+		    default { set alt {} }
+		}
+
+		if {$v ne ""} {
+		    foreach {major minor} [split $v .] break
+
+		    # Add 10.5 to 10.minor to patterns.
+		    set res {}
+		    for {set j $minor} {$j >= 5} {incr j -1} {
+			lappend res macosx${major}.${j}-${cpu}
+			foreach a $alt {
+			    lappend res macosx${major}.${j}-$a
+			}
+		    }
+
+		    # Add unversioned patterns for 10.3/10.4 builds.
+		    lappend res macosx-${cpu}
+		    foreach a $alt {
+			lappend res macosx-$a
+		    }
+		} else {
+		    # No version, just do unversioned patterns.
+		    foreach a $alt {
+			lappend res macosx-$a
+		    }
+		}
+	    } else {
+		# no v, no cpu ... nothing
+	    }
+	}
+    }
+    lappend res tcl ; # Pure tcl packages are always compatible.
+    return $res
+}
+
+
+# ### ### ### ######### ######### #########
+## Ready
+
+package provide platform 1.0.14
+
+# ### ### ### ######### ######### #########
+## Demo application
+
+if {[info exists argv0] && ($argv0 eq [info script])} {
+    puts ====================================
+    parray tcl_platform
+    puts ====================================
+    puts Generic\ identification:\ [::platform::generic]
+    puts Exact\ identification:\ \ \ [::platform::identify]
+    puts ====================================
+    puts Search\ patterns:
+    puts *\ [join [::platform::patterns [::platform::identify]] \n*\ ]
+    puts ====================================
+    exit 0
+}

Added: trunk/Master/tlpkg/tltcl/lib/tcl8/8.5/msgcat-1.6.1.tm
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tcl8/8.5/msgcat-1.6.1.tm	                        (rev 0)
+++ trunk/Master/tlpkg/tltcl/lib/tcl8/8.5/msgcat-1.6.1.tm	2020-03-17 20:46:21 UTC (rev 54375)
@@ -0,0 +1,1210 @@
+# msgcat.tcl --
+#
+#	This file defines various procedures which implement a
+#	message catalog facility for Tcl programs.  It should be
+#	loaded with the command "package require msgcat".
+#
+# Copyright (c) 2010-2015 by Harald Oehlmann.
+# Copyright (c) 1998-2000 by Ajuba Solutions.
+# Copyright (c) 1998 by Mark Harrison.
+#
+# See the file "license.terms" for information on usage and redistribution
+# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+
+package require Tcl 8.5-
+# When the version number changes, be sure to update the pkgIndex.tcl file,
+# and the installation directory in the Makefiles.
+package provide msgcat 1.6.1
+
+namespace eval msgcat {
+    namespace export mc mcexists mcload mclocale mcmax mcmset mcpreferences mcset\
+            mcunknown mcflset mcflmset mcloadedlocales mcforgetpackage\
+	    mcpackageconfig mcpackagelocale
+
+    # Records the list of locales to search
+    variable Loclist {}
+
+    # List of currently loaded locales
+    variable LoadedLocales {}
+
+    # Records the locale of the currently sourced message catalogue file
+    variable FileLocale
+
+    # Configuration values per Package (e.g. client namespace).
+    # The dict key is of the form "<option> <namespace>" and the value is the
+    # configuration option. A nonexisting key is an unset option.
+    variable PackageConfig [dict create mcfolder {} loadcmd {} changecmd {}\
+	    unknowncmd {} loadedlocales {} loclist {}]
+
+    # Records the mapping between source strings and translated strings.  The
+    # dict key is of the form "<namespace> <locale> <src>", where locale and
+    # namespace should be themselves dict values and the value is
+    # the translated string.
+    variable Msgs [dict create]
+
+    # Map of language codes used in Windows registry to those of ISO-639
+    if {[info sharedlibextension] eq ".dll"} {
+	variable WinRegToISO639 [dict create  {*}{
+	    01 ar 0401 ar_SA 0801 ar_IQ 0c01 ar_EG 1001 ar_LY 1401 ar_DZ
+		  1801 ar_MA 1c01 ar_TN 2001 ar_OM 2401 ar_YE 2801 ar_SY
+		  2c01 ar_JO 3001 ar_LB 3401 ar_KW 3801 ar_AE 3c01 ar_BH
+		  4001 ar_QA
+	    02 bg 0402 bg_BG
+	    03 ca 0403 ca_ES
+	    04 zh 0404 zh_TW 0804 zh_CN 0c04 zh_HK 1004 zh_SG 1404 zh_MO
+	    05 cs 0405 cs_CZ
+	    06 da 0406 da_DK
+	    07 de 0407 de_DE 0807 de_CH 0c07 de_AT 1007 de_LU 1407 de_LI
+	    08 el 0408 el_GR
+	    09 en 0409 en_US 0809 en_GB 0c09 en_AU 1009 en_CA 1409 en_NZ
+		  1809 en_IE 1c09 en_ZA 2009 en_JM 2409 en_GD 2809 en_BZ
+		  2c09 en_TT 3009 en_ZW 3409 en_PH
+	    0a es 040a es_ES 080a es_MX 0c0a es_ES at modern 100a es_GT 140a es_CR
+		  180a es_PA 1c0a es_DO 200a es_VE 240a es_CO 280a es_PE
+		  2c0a es_AR 300a es_EC 340a es_CL 380a es_UY 3c0a es_PY
+		  400a es_BO 440a es_SV 480a es_HN 4c0a es_NI 500a es_PR
+	    0b fi 040b fi_FI
+	    0c fr 040c fr_FR 080c fr_BE 0c0c fr_CA 100c fr_CH 140c fr_LU
+		  180c fr_MC
+	    0d he 040d he_IL
+	    0e hu 040e hu_HU
+	    0f is 040f is_IS
+	    10 it 0410 it_IT 0810 it_CH
+	    11 ja 0411 ja_JP
+	    12 ko 0412 ko_KR
+	    13 nl 0413 nl_NL 0813 nl_BE
+	    14 no 0414 no_NO 0814 nn_NO
+	    15 pl 0415 pl_PL
+	    16 pt 0416 pt_BR 0816 pt_PT
+	    17 rm 0417 rm_CH
+	    18 ro 0418 ro_RO 0818 ro_MO
+	    19 ru 0819 ru_MO
+	    1a hr 041a hr_HR 081a sr_YU 0c1a sr_YU at cyrillic
+	    1b sk 041b sk_SK
+	    1c sq 041c sq_AL
+	    1d sv 041d sv_SE 081d sv_FI
+	    1e th 041e th_TH
+	    1f tr 041f tr_TR
+	    20 ur 0420 ur_PK 0820 ur_IN
+	    21 id 0421 id_ID
+	    22 uk 0422 uk_UA
+	    23 be 0423 be_BY
+	    24 sl 0424 sl_SI
+	    25 et 0425 et_EE
+	    26 lv 0426 lv_LV
+	    27 lt 0427 lt_LT
+	    28 tg 0428 tg_TJ
+	    29 fa 0429 fa_IR
+	    2a vi 042a vi_VN
+	    2b hy 042b hy_AM
+	    2c az 042c az_AZ at latin 082c az_AZ at cyrillic
+	    2d eu
+	    2e wen 042e wen_DE
+	    2f mk 042f mk_MK
+	    30 bnt 0430 bnt_TZ
+	    31 ts 0431 ts_ZA
+	    32 tn
+	    33 ven 0433 ven_ZA
+	    34 xh 0434 xh_ZA
+	    35 zu 0435 zu_ZA
+	    36 af 0436 af_ZA
+	    37 ka 0437 ka_GE
+	    38 fo 0438 fo_FO
+	    39 hi 0439 hi_IN
+	    3a mt 043a mt_MT
+	    3b se 043b se_NO
+	    043c gd_UK 083c ga_IE
+	    3d yi 043d yi_IL
+	    3e ms 043e ms_MY 083e ms_BN
+	    3f kk 043f kk_KZ
+	    40 ky 0440 ky_KG
+	    41 sw 0441 sw_KE
+	    42 tk 0442 tk_TM
+	    43 uz 0443 uz_UZ at latin 0843 uz_UZ at cyrillic
+	    44 tt 0444 tt_RU
+	    45 bn 0445 bn_IN
+	    46 pa 0446 pa_IN
+	    47 gu 0447 gu_IN
+	    48 or 0448 or_IN
+	    49 ta
+	    4a te 044a te_IN
+	    4b kn 044b kn_IN
+	    4c ml 044c ml_IN
+	    4d as 044d as_IN
+	    4e mr 044e mr_IN
+	    4f sa 044f sa_IN
+	    50 mn
+	    51 bo 0451 bo_CN
+	    52 cy 0452 cy_GB
+	    53 km 0453 km_KH
+	    54 lo 0454 lo_LA
+	    55 my 0455 my_MM
+	    56 gl 0456 gl_ES
+	    57 kok 0457 kok_IN
+	    58 mni 0458 mni_IN
+	    59 sd
+	    5a syr 045a syr_TR
+	    5b si 045b si_LK
+	    5c chr 045c chr_US
+	    5d iu 045d iu_CA
+	    5e am 045e am_ET
+	    5f ber 045f ber_MA
+	    60 ks 0460 ks_PK 0860 ks_IN
+	    61 ne 0461 ne_NP 0861 ne_IN
+	    62 fy 0462 fy_NL
+	    63 ps
+	    64 tl 0464 tl_PH
+	    65 div 0465 div_MV
+	    66 bin 0466 bin_NG
+	    67 ful 0467 ful_NG
+	    68 ha 0468 ha_NG
+	    69 nic 0469 nic_NG
+	    6a yo 046a yo_NG
+	    70 ibo 0470 ibo_NG
+	    71 kau 0471 kau_NG
+	    72 om 0472 om_ET
+	    73 ti 0473 ti_ET
+	    74 gn 0474 gn_PY
+	    75 cpe 0475 cpe_US
+	    76 la 0476 la_VA
+	    77 so 0477 so_SO
+	    78 sit 0478 sit_CN
+	    79 pap 0479 pap_AN
+	}]
+    }
+}
+
+# msgcat::mc --
+#
+#	Find the translation for the given string based on the current
+#	locale setting. Check the local namespace first, then look in each
+#	parent namespace until the source is found.  If additional args are
+#	specified, use the format command to work them into the traslated
+#	string.
+#	If no catalog item is found, mcunknown is called in the caller frame
+#	and its result is returned.
+#
+# Arguments:
+#	src	The string to translate.
+#	args	Args to pass to the format command
+#
+# Results:
+#	Returns the translated string.  Propagates errors thrown by the
+#	format command.
+
+proc msgcat::mc {src args} {
+    # this may be replaced by:
+    # return [mcget -namespace [uplevel 1 [list ::namespace current]] --\
+    #	    $src {*}$args]
+
+    # Check for the src in each namespace starting from the local and
+    # ending in the global.
+
+    variable Msgs
+    variable Loclist
+
+    set ns [uplevel 1 [list ::namespace current]]
+    set loclist [PackagePreferences $ns]
+
+    set nscur $ns
+    while {$nscur != ""} {
+	foreach loc $loclist {
+	    if {[dict exists $Msgs $nscur $loc $src]} {
+		return [DefaultUnknown "" [dict get $Msgs $nscur $loc $src]\
+			{*}$args]
+	    }
+	}
+	set nscur [namespace parent $nscur]
+    }
+    # call package local or default unknown command
+    set args [linsert $args 0 [lindex $loclist 0] $src]
+    switch -exact -- [Invoke unknowncmd $args $ns result 1] {
+	0 { return [uplevel 1 [linsert $args 0 [namespace origin mcunknown]]] }
+	1 { return [DefaultUnknown {*}$args] }
+	default { return $result }
+    }
+}
+
+# msgcat::mcexists --
+#
+#	Check if a catalog item is set or if mc would invoke mcunknown.
+#
+# Arguments:
+#	-exactnamespace		Only check the exact namespace and no
+#				parent namespaces
+#	-exactlocale		Only check the exact locale and not all members
+#				of the preferences list
+#	src			Message catalog key
+#
+# Results:
+#	true if an adequate catalog key was found
+
+proc msgcat::mcexists {args} {
+
+    variable Msgs
+    variable Loclist
+    variable PackageConfig
+
+    set ns [uplevel 1 [list ::namespace current]]
+    set loclist [PackagePreferences $ns]
+
+    while {[llength $args] != 1} {
+	set args [lassign $args option]
+	switch -glob -- $option {
+	    -exactnamespace { set exactnamespace 1 }
+	    -exactlocale { set loclist [lrange $loclist 0 0] }
+	    -* { return -code error "unknown option \"$option\"" }
+	    default {
+		return -code error "wrong # args: should be\
+			\"[lindex [info level 0] 0] ?-exactnamespace?\
+			?-exactlocale? src\""
+	    }
+	}
+    }
+    set src [lindex $args 0]
+
+    while {$ns ne ""} {
+	foreach loc $loclist {
+	    if {[dict exists $Msgs $ns $loc $src]} {
+		return 1
+	    }
+	}
+	if {[info exists exactnamespace]} {return 0}
+	set ns [namespace parent $ns]
+    }
+    return 0
+}
+
+# msgcat::mclocale --
+#
+#	Query or set the current locale.
+#
+# Arguments:
+#	newLocale	(Optional) The new locale string. Locale strings
+#			should be composed of one or more sublocale parts
+#			separated by underscores (e.g. en_US).
+#
+# Results:
+#	Returns the normalized set locale.
+
+proc msgcat::mclocale {args} {
+    variable Loclist
+    variable LoadedLocales
+    set len [llength $args]
+
+    if {$len > 1} {
+	return -code error "wrong # args: should be\
+		\"[lindex [info level 0] 0] ?newLocale?\""
+    }
+
+    if {$len == 1} {
+	set newLocale [string tolower [lindex $args 0]]
+	if {$newLocale ne [file tail $newLocale]} {
+	    return -code error "invalid newLocale value \"$newLocale\":\
+		    could be path to unsafe code."
+	}
+	if {[lindex $Loclist 0] ne $newLocale} {
+	    set Loclist [GetPreferences $newLocale]
+
+	    # locale not loaded jet
+	    LoadAll $Loclist
+	    # Invoke callback
+	    Invoke changecmd $Loclist
+	}
+    }
+    return [lindex $Loclist 0]
+}
+
+# msgcat::GetPreferences --
+#
+#	Get list of locales from a locale.
+#	The first element is always the lowercase locale.
+#	Other elements have one component separated by "_" less.
+#	Multiple "_" are seen as one separator: de__ch_spec de__ch de {}
+#
+# Arguments:
+#	Locale.
+#
+# Results:
+#	Locale list
+
+proc msgcat::GetPreferences {locale} {
+    set locale [string tolower $locale]
+    set loclist [list $locale]
+    while {-1 !=[set pos [string last "_" $locale]]} {
+	set locale [string range $locale 0 $pos-1]
+	if { "_" ne [string index $locale end] } {
+	    lappend loclist $locale
+	}
+    }
+    if {"" ne [lindex $loclist end]} {
+	lappend loclist {}
+    }
+    return $loclist
+}
+
+# msgcat::mcpreferences --
+#
+#	Fetch the list of locales used to look up strings, ordered from
+#	most preferred to least preferred.
+#
+# Arguments:
+#	None.
+#
+# Results:
+#	Returns an ordered list of the locales preferred by the user.
+
+proc msgcat::mcpreferences {} {
+    variable Loclist
+    return $Loclist
+}
+
+# msgcat::mcloadedlocales --
+#
+#	Get or change the list of currently loaded default locales
+#
+#	The following subcommands are available:
+#	loaded
+#	    Get the current list of loaded locales
+#	clear
+#	    Remove all loaded locales not present in mcpreferences.
+#
+# Arguments:
+#	subcommand		One of loaded or clear
+#
+# Results:
+#	Empty string, if not stated differently for the subcommand
+
+proc msgcat::mcloadedlocales {subcommand} {
+    variable Loclist
+    variable LoadedLocales
+    variable Msgs
+    variable PackageConfig
+    switch -exact -- $subcommand {
+	clear {
+	    # Remove all locales not contained in Loclist
+	    # skip any packages with package locale
+	    set LoadedLocales $Loclist
+	    foreach ns [dict keys $Msgs] {
+		if {![dict exists $PackageConfig loclist $ns]} {
+		    foreach locale [dict keys [dict get $Msgs $ns]] {
+			if {$locale ni $Loclist} {
+			    dict unset Msgs $ns $locale
+			}
+		    }
+		}
+	    }
+	}
+	loaded { return $LoadedLocales }
+	default {
+	    return -code error "unknown subcommand \"$subcommand\": must be\
+		    clear, or loaded"
+	}
+    }
+    return
+}
+
+# msgcat::mcpackagelocale --
+#
+#	Get or change the package locale of the calling package.
+#
+#	The following subcommands are available:
+#	set
+#	    Set a package locale.
+#	    This may load message catalog files and may clear message catalog
+#	    items, if the former locale was the default locale.
+#	    Returns the normalized set locale.
+#	    The default locale is taken, if locale is not given.
+#	get
+#	    Get the locale valid for this package.
+#	isset
+#	    Returns true, if a package locale is set
+#	unset
+#	    Unset the package locale and activate the default locale.
+#	    This loads message catalog file which where missing in the package
+#	    locale.
+#	preferences
+#	    Return locale preference list valid for the package.
+#	loaded
+#	    Return loaded locale list valid for the current package.
+#	clear
+#	    If the current package has a package locale, remove all package
+#	    locales not containes in package mcpreferences.
+#	    It is an error to call this without a package locale set.
+#
+#	The subcommands get, preferences and loaded return the corresponding
+#	default data, if no package locale is set.
+#
+# Arguments:
+#	subcommand		see list above
+#	locale			package locale (only set subcommand)
+#
+# Results:
+#	Empty string, if not stated differently for the subcommand
+
+proc msgcat::mcpackagelocale {subcommand {locale ""}} {
+    # todo: implement using an ensemble
+    variable Loclist
+    variable LoadedLocales
+    variable Msgs
+    variable PackageConfig
+    # Check option
+    # check if required item is exactly provided
+    if {[llength [info level 0]] == 2} {
+	# locale not given
+	unset locale
+    } else {
+	# locale given
+	if {$subcommand in
+		{"get" "isset" "unset" "preferences" "loaded" "clear"} } {
+	    return -code error "wrong # args: should be\
+		    \"[lrange [info level 0] 0 1]\""
+	}
+        set locale [string tolower $locale]
+    }
+    set ns [uplevel 1 {::namespace current}]
+
+    switch -exact -- $subcommand {
+	get { return [lindex [PackagePreferences $ns] 0] }
+	preferences { return [PackagePreferences $ns] }
+	loaded { return [PackageLocales $ns] }
+	present { return [expr {$locale in [PackageLocales $ns]} ]}
+	isset { return [dict exists $PackageConfig loclist $ns] }
+	set { # set a package locale or add a package locale
+
+	    # Copy the default locale if no package locale set so far
+	    if {![dict exists $PackageConfig loclist $ns]} {
+		dict set PackageConfig loclist $ns $Loclist
+		dict set PackageConfig loadedlocales $ns $LoadedLocales
+	    }
+
+	    # Check if changed
+	    set loclist [dict get $PackageConfig loclist $ns]
+	    if {! [info exists locale] || $locale eq [lindex $loclist 0] } {
+		return [lindex $loclist 0]
+	    }
+
+	    # Change loclist
+	    set loclist [GetPreferences $locale]
+	    set locale [lindex $loclist 0]
+	    dict set PackageConfig loclist $ns $loclist
+
+	    # load eventual missing locales
+	    set loadedLocales [dict get $PackageConfig loadedlocales $ns]
+	    if {$locale in $loadedLocales} { return $locale }
+	    set loadLocales [ListComplement $loadedLocales $loclist]
+	    dict set PackageConfig loadedlocales $ns\
+		    [concat $loadedLocales $loadLocales]
+	    Load $ns $loadLocales
+	    return $locale
+	}
+	clear { # Remove all locales not contained in Loclist
+	    if {![dict exists $PackageConfig loclist $ns]} {
+		return -code error "clear only when package locale set"
+	    }
+	    set loclist [dict get $PackageConfig loclist $ns]
+	    dict set PackageConfig loadedlocales $ns $loclist
+	    if {[dict exists $Msgs $ns]} {
+		foreach locale [dict keys [dict get $Msgs $ns]] {
+		    if {$locale ni $loclist} {
+			dict unset Msgs $ns $locale
+		    }
+		}
+	    }
+	}
+	unset {	# unset package locale and restore default locales
+
+	    if { ![dict exists $PackageConfig loclist $ns] } { return }
+
+	    # unset package locale
+	    set loadLocales [ListComplement\
+		    [dict get $PackageConfig loadedlocales $ns] $LoadedLocales]
+	    dict unset PackageConfig loadedlocales $ns
+	    dict unset PackageConfig loclist $ns
+
+	    # unset keys not in global loaded locales
+	    if {[dict exists $Msgs $ns]} {
+		foreach locale [dict keys [dict get $Msgs $ns]] {
+		    if {$locale ni $LoadedLocales} {
+			dict unset Msgs $ns $locale
+		    }
+		}
+	    }
+
+	    # Add missing locales
+	    Load $ns $loadLocales
+	}
+	default {
+	    return -code error "unknown subcommand \"$subcommand\": must be\
+		    clear, get, isset, loaded, present, set, or unset"
+	}
+    }
+    return
+}
+
+# msgcat::mcforgetpackage --
+#
+#	Remove any data of the calling package from msgcat
+#
+
+proc msgcat::mcforgetpackage {} {
+    # todo: this may be implemented using an ensemble
+    variable PackageConfig
+    variable Msgs
+    set ns [uplevel 1 {::namespace current}]
+    # Remove MC items
+    dict unset Msgs $ns
+    # Remove config items
+    foreach key [dict keys $PackageConfig] {
+	dict unset PackageConfig $key $ns
+    }
+    return
+}
+
+# msgcat::mcpackageconfig --
+#
+#	Get or modify the per caller namespace (e.g. packages) config options.
+#
+#	Available subcommands are:
+#
+#	    get		get the current value or an error if not set.
+#	    isset	return true, if the option is set
+#	    set		set the value (see also distinct option).
+#			Returns the number of loaded message files.
+#	    unset	Clear option. return "".
+#
+#	Available options are:
+#
+#	mcfolder
+#	    The message catalog folder of the package.
+#	    This is automatically set by mcload.
+#	    If the value is changed using the set subcommand, an evntual
+#	    loadcmd is invoked and all message files of the package locale are
+#	    loaded.
+#
+#	loadcmd
+#	    The command gets executed before a message file would be
+#	    sourced for this module.
+#	    The command is invoked with the expanded locale list to load.
+#	    The command is not invoked if the registering package namespace
+#	    is not present.
+#	    This callback might also be used as an alternative to message
+#	    files.
+#	    If the value is changed using the set subcommand, the callback is
+#	    directly invoked with the current file locale list. No file load is
+#	    executed.
+#
+#	changecmd
+#	    The command is invoked, after an executed locale change.
+#	    Appended argument is expanded mcpreferences.
+#
+#	unknowncmd
+#	    Use a package locale mcunknown procedure instead the global one.
+#	    The appended arguments are identical to mcunknown.
+#	    A default unknown handler is used if set to the empty string.
+#	    This consists in returning the key if no arguments are given.
+#	    With given arguments, format is used to process the arguments.
+#
+# Arguments:
+#	subcommand		Operation on the package
+#	option			The package option to get or set.
+#	?value?			Eventual value for the subcommand
+#
+# Results:
+#	Depends on the subcommand and option and is described there
+
+proc msgcat::mcpackageconfig {subcommand option {value ""}} {
+    variable PackageConfig
+    # get namespace
+    set ns [uplevel 1 {::namespace current}]
+
+    if {$option ni {"mcfolder" "loadcmd" "changecmd" "unknowncmd"}} {
+	return -code error "bad option \"$option\": must be mcfolder, loadcmd,\
+		changecmd, or unknowncmd"
+    }
+
+    # check if value argument is exactly provided
+    if {[llength [info level 0]] == 4 } {
+	# value provided
+	if {$subcommand in {"get" "isset" "unset"}} {
+	    return -code error "wrong # args: should be\
+		    \"[lrange [info level 0] 0 2] value\""
+	}
+    } elseif {$subcommand eq "set"} {
+        return -code error\
+		"wrong # args: should be \"[lrange [info level 0] 0 2]\""
+    }
+
+    # Execute subcommands
+    switch -exact -- $subcommand {
+	get {	# Operation get return current value
+	    if {![dict exists $PackageConfig $option $ns]} {
+		return -code error "package option \"$option\" not set"
+	    }
+	    return [dict get $PackageConfig $option $ns]
+	}
+	isset {	return [dict exists $PackageConfig $option $ns] }
+	unset {	dict unset PackageConfig $option $ns }
+	set {	# Set option
+
+	    if {$option eq "mcfolder"} {
+		set value [file normalize $value]
+	    }
+	    # Check if changed
+	    if { [dict exists $PackageConfig $option $ns]
+		    && $value eq [dict get $PackageConfig $option $ns] } {
+		return 0
+	    }
+
+	    # set new value
+	    dict set PackageConfig $option $ns $value
+
+	    # Reload pending message catalogs
+	    switch -exact -- $option {
+		mcfolder { return [Load $ns [PackageLocales $ns]] }
+		loadcmd { return [Load $ns [PackageLocales $ns] 1] }
+	    }
+	    return 0
+	}
+	default {
+	    return -code error "unknown subcommand \"$subcommand\":\
+		    must be get, isset, set, or unset"
+	}
+    }
+    return
+}
+
+# msgcat::PackagePreferences --
+#
+#	Return eventual present package preferences or the default list if not
+#	present.
+#
+# Arguments:
+#	ns		Package namespace
+#
+# Results:
+#	locale list
+
+proc msgcat::PackagePreferences {ns} {
+    variable PackageConfig
+    if {[dict exists $PackageConfig loclist $ns]} {
+	return [dict get $PackageConfig loclist $ns]
+    }
+    variable Loclist
+    return $Loclist
+}
+
+# msgcat::PackageLocales --
+#
+#	Return eventual present package locales or the default list if not
+#	present.
+#
+# Arguments:
+#	ns		Package namespace
+#
+# Results:
+#	locale list
+
+proc msgcat::PackageLocales {ns} {
+    variable PackageConfig
+    if {[dict exists $PackageConfig loadedlocales $ns]} {
+	return [dict get $PackageConfig loadedlocales $ns]
+    }
+    variable LoadedLocales
+    return $LoadedLocales
+}
+
+# msgcat::ListComplement --
+#
+#	Build the complement of two lists.
+#	Return a list with all elements in list2 but not in list1.
+#	Optionally return the intersection.
+#
+# Arguments:
+#	list1		excluded list
+#	list2		included list
+#	inlistname	If not "", write in this variable the intersection list
+#
+# Results:
+#	list with all elements in list2 but not in list1
+
+proc msgcat::ListComplement {list1 list2 {inlistname ""}} {
+    if {"" ne $inlistname} {
+	upvar 1 $inlistname inlist
+    }
+    set inlist {}
+    set outlist {}
+    foreach item $list2 {
+	if {$item in $list1} {
+	    lappend inlist $item
+	} else {
+	    lappend outlist $item
+	}
+    }
+    return $outlist
+}
+
+# msgcat::mcload --
+#
+#	Attempt to load message catalogs for each locale in the
+#	preference list from the specified directory.
+#
+# Arguments:
+#	langdir		The directory to search.
+#
+# Results:
+#	Returns the number of message catalogs that were loaded.
+
+proc msgcat::mcload {langdir} {
+    return [uplevel 1 [list\
+	    [namespace origin mcpackageconfig] set mcfolder $langdir]]
+}
+
+# msgcat::LoadAll --
+#
+#	Load a list of locales for all packages not having a package locale
+#	list.
+#
+# Arguments:
+#	langdir		The directory to search.
+#
+# Results:
+#	Returns the number of message catalogs that were loaded.
+
+proc msgcat::LoadAll {locales} {
+    variable PackageConfig
+    variable LoadedLocales
+    if {0 == [llength $locales]} { return {} }
+    # filter jet unloaded locales
+    set locales [ListComplement $LoadedLocales $locales]
+    if {0 == [llength $locales]} { return {} }
+    lappend LoadedLocales {*}$locales
+
+    set packages [lsort -unique [concat\
+	    [dict keys [dict get $PackageConfig loadcmd]]\
+	    [dict keys [dict get $PackageConfig mcfolder]]]]
+    foreach ns $packages {
+	if {! [dict exists $PackageConfig loclist $ns] } {
+	    Load $ns $locales
+	}
+    }
+    return $locales
+}
+
+# msgcat::Load --
+#
+#	Invoke message load callback and load message catalog files.
+#
+# Arguments:
+#	ns		Namespace (equal package) to load the message catalog.
+#	locales		List of locales to load.
+#	callbackonly	true if only callback should be invoked
+#
+# Results:
+#	Returns the number of message catalogs that were loaded.
+
+proc msgcat::Load {ns locales {callbackonly 0}} {
+    variable FileLocale
+    variable PackageConfig
+    variable LoadedLocals
+
+    if {0 == [llength $locales]} { return 0 }
+
+    # Invoke callback
+    Invoke loadcmd $locales $ns
+
+    if {$callbackonly || ![dict exists $PackageConfig mcfolder $ns]} {
+	return 0
+    }
+
+    # Invoke file load
+    set langdir [dict get $PackageConfig mcfolder $ns]
+
+    # Save the file locale if we are recursively called
+    if {[info exists FileLocale]} {
+	set nestedFileLocale $FileLocale
+    }
+    set x 0
+    foreach p $locales {
+	if {$p eq {}} {
+	    set p ROOT
+	}
+	set langfile [file join $langdir $p.msg]
+	if {[file exists $langfile]} {
+	    incr x
+	    set FileLocale [string tolower\
+		    [file tail [file rootname $langfile]]]
+	    if {"root" eq $FileLocale} {
+		set FileLocale ""
+	    }
+	    namespace inscope $ns [list ::source -encoding utf-8 $langfile]
+	    unset FileLocale
+	}
+    }
+    if {[info exists nestedFileLocale]} {
+	set FileLocale $nestedFileLocale
+    }
+    return $x
+}
+
+# msgcat::Invoke --
+#
+#	Invoke a set of registered callbacks.
+#	The callback is only invoked, if its registered namespace exists.
+#
+# Arguments:
+#	index		Index into PackageConfig to get callback command
+#	arglist		parameters to the callback invocation
+#	ns		(Optional) package to call.
+#			If not given or empty, check all registered packages.
+#	resultname	Variable to save the callback result of the last called
+#			callback to. May be set to "" to discard the result.
+#	failerror (0)	Fail on error if true. Otherwise call bgerror.
+#
+# Results:
+#	Possible values:
+#	- 0: no valid command registered
+#	- 1: registered command was the empty string
+#	- 2: registered command called, resultname is set
+#	- 3: registered command failed
+#	If multiple commands are called, the maximum of all results is returned.
+
+proc msgcat::Invoke {index arglist {ns ""} {resultname ""} {failerror 0}} {
+    variable PackageConfig
+    variable Config
+    if {"" ne $resultname} {
+	upvar 1 $resultname result
+    }
+    if {"" eq $ns} {
+	set packageList [dict keys [dict get $PackageConfig $index]]
+    } else {
+	set packageList [list $ns]
+    }
+    set ret 0
+    foreach ns $packageList {
+	if {[dict exists $PackageConfig $index $ns] && [namespace exists $ns]} {
+	    set cmd [dict get $PackageConfig $index $ns]
+	    if {"" eq $cmd} {
+		if {$ret == 0} {set ret 1}
+	    } else {
+		if {$failerror} {
+		    set result [namespace inscope $ns $cmd {*}$arglist]
+		    set ret 2
+		} elseif {1 == [catch {
+		    set result [namespace inscope $ns $cmd {*}$arglist]
+		    if {$ret < 2} {set ret 2}
+		} err derr]} {
+		    after idle [concat [::interp bgerror ""]\
+			    [list $err $derr]]
+		    set ret 3
+		}
+	    }
+	}
+    }
+    return $ret
+}
+
+# msgcat::mcset --
+#
+#	Set the translation for a given string in a specified locale.
+#
+# Arguments:
+#	locale		The locale to use.
+#	src		The source string.
+#	dest		(Optional) The translated string.  If omitted,
+#			the source string is used.
+#
+# Results:
+#	Returns the new locale.
+
+proc msgcat::mcset {locale src {dest ""}} {
+    variable Msgs
+    if {[llength [info level 0]] == 3} { ;# dest not specified
+	set dest $src
+    }
+
+    set ns [uplevel 1 [list ::namespace current]]
+
+    set locale [string tolower $locale]
+
+    dict set Msgs $ns $locale $src $dest
+    return $dest
+}
+
+# msgcat::mcflset --
+#
+#	Set the translation for a given string in the current file locale.
+#
+# Arguments:
+#	src		The source string.
+#	dest		(Optional) The translated string.  If omitted,
+#			the source string is used.
+#
+# Results:
+#	Returns the new locale.
+
+proc msgcat::mcflset {src {dest ""}} {
+    variable FileLocale
+    variable Msgs
+
+    if {![info exists FileLocale]} {
+	return -code error "must only be used inside a message catalog loaded\
+		with ::msgcat::mcload"
+    }
+    return [uplevel 1 [list [namespace origin mcset] $FileLocale $src $dest]]
+}
+
+# msgcat::mcmset --
+#
+#	Set the translation for multiple strings in a specified locale.
+#
+# Arguments:
+#	locale		The locale to use.
+#	pairs		One or more src/dest pairs (must be even length)
+#
+# Results:
+#	Returns the number of pairs processed
+
+proc msgcat::mcmset {locale pairs} {
+    variable Msgs
+
+    set length [llength $pairs]
+    if {$length % 2} {
+	return -code error "bad translation list:\
+		should be \"[lindex [info level 0] 0] locale {src dest ...}\""
+    }
+
+    set locale [string tolower $locale]
+    set ns [uplevel 1 [list ::namespace current]]
+
+    foreach {src dest} $pairs {
+	dict set Msgs $ns $locale $src $dest
+    }
+
+    return [expr {$length / 2}]
+}
+
+# msgcat::mcflmset --
+#
+#	Set the translation for multiple strings in the mc file locale.
+#
+# Arguments:
+#	pairs		One or more src/dest pairs (must be even length)
+#
+# Results:
+#	Returns the number of pairs processed
+
+proc msgcat::mcflmset {pairs} {
+    variable FileLocale
+    variable Msgs
+
+    if {![info exists FileLocale]} {
+	return -code error "must only be used inside a message catalog loaded\
+		with ::msgcat::mcload"
+    }
+    return [uplevel 1 [list [namespace origin mcmset] $FileLocale $pairs]]
+}
+
+# msgcat::mcunknown --
+#
+#	This routine is called by msgcat::mc if a translation cannot
+#	be found for a string and no unknowncmd is set for the current
+#	package. This routine is intended to be replaced
+#	by an application specific routine for error reporting
+#	purposes.  The default behavior is to return the source string.
+#	If additional args are specified, the format command will be used
+#	to work them into the traslated string.
+#
+# Arguments:
+#	locale		The current locale.
+#	src		The string to be translated.
+#	args		Args to pass to the format command
+#
+# Results:
+#	Returns the translated value.
+
+proc msgcat::mcunknown {args} {
+    return [uplevel 1 [list [namespace origin DefaultUnknown] {*}$args]]
+}
+
+# msgcat::DefaultUnknown --
+#
+#	This routine is called by msgcat::mc if a translation cannot
+#	be found for a string in the following circumstances:
+#	- Default global handler, if mcunknown is not redefined.
+#	- Per package handler, if the package sets unknowncmd to the empty
+#	  string.
+#	It returna the source string if the argument list is empty.
+#	If additional args are specified, the format command will be used
+#	to work them into the traslated string.
+#
+# Arguments:
+#	locale		(unused) The current locale.
+#	src		The string to be translated.
+#	args		Args to pass to the format command
+#
+# Results:
+#	Returns the translated value.
+
+proc msgcat::DefaultUnknown {locale src args} {
+    if {[llength $args]} {
+	return [format $src {*}$args]
+    } else {
+	return $src
+    }
+}
+
+# msgcat::mcmax --
+#
+#	Calculates the maximum length of the translated strings of the given
+#	list.
+#
+# Arguments:
+#	args	strings to translate.
+#
+# Results:
+#	Returns the length of the longest translated string.
+
+proc msgcat::mcmax {args} {
+    set max 0
+    foreach string $args {
+	set translated [uplevel 1 [list [namespace origin mc] $string]]
+	set len [string length $translated]
+	if {$len>$max} {
+	    set max $len
+	}
+    }
+    return $max
+}
+
+# Convert the locale values stored in environment variables to a form
+# suitable for passing to [mclocale]
+proc msgcat::ConvertLocale {value} {
+    # Assume $value is of form: $language[_$territory][.$codeset][@modifier]
+    # Convert to form: $language[_$territory][_$modifier]
+    #
+    # Comment out expanded RE version -- bugs alleged
+    # regexp -expanded {
+    #	^		# Match all the way to the beginning
+    #	([^_.@]*)	# Match "lanugage"; ends with _, ., or @
+    #	(_([^.@]*))?	# Match (optional) "territory"; starts with _
+    #	([.]([^@]*))?	# Match (optional) "codeset"; starts with .
+    #	(@(.*))?	# Match (optional) "modifier"; starts with @
+    #	$		# Match all the way to the end
+    # } $value -> language _ territory _ codeset _ modifier
+    if {![regexp {^([^_.@]+)(_([^.@]*))?([.]([^@]*))?(@(.*))?$} $value \
+	    -> language _ territory _ codeset _ modifier]} {
+	return -code error "invalid locale '$value': empty language part"
+    }
+    set ret $language
+    if {[string length $territory]} {
+	append ret _$territory
+    }
+    if {[string length $modifier]} {
+	append ret _$modifier
+    }
+    return $ret
+}
+
+# Initialize the default locale
+proc msgcat::Init {} {
+    global env
+
+    #
+    # set default locale, try to get from environment
+    #
+    foreach varName {LC_ALL LC_MESSAGES LANG} {
+	if {[info exists env($varName)] && ("" ne $env($varName))} {
+	    if {![catch {
+		mclocale [ConvertLocale $env($varName)]
+	    }]} {
+		return
+	    }
+	}
+    }
+    #
+    # On Darwin, fallback to current CFLocale identifier if available.
+    #
+    if {[info exists ::tcl::mac::locale] && $::tcl::mac::locale ne ""} {
+	if {![catch {
+	    mclocale [ConvertLocale $::tcl::mac::locale]
+	}]} {
+	    return
+	}
+    }
+    #
+    # The rest of this routine is special processing for Windows or
+    # Cygwin. All other platforms, get out now.
+    #
+    if {([info sharedlibextension] ne ".dll")
+	    || [catch {package require registry}]} {
+	mclocale C
+	return
+    }
+    #
+    # On Windows or Cygwin, try to set locale depending on registry
+    # settings, or fall back on locale of "C".
+    #
+
+    # On Vista and later:
+    # HCU/Control Panel/Desktop : PreferredUILanguages is for language packs,
+    # HCU/Control Pannel/International : localName is the default locale.
+    #
+    # They contain the local string as RFC5646, composed of:
+    # [a-z]{2,3} : language
+    # -[a-z]{4}  : script (optional, translated by table Latn->latin)
+    # -[a-z]{2}|[0-9]{3} : territory (optional, numerical region codes not used)
+    # (-.*)* : variant, extension, private use (optional, not used)
+    # Those are translated to local strings.
+    # Examples: de-CH -> de_ch, sr-Latn-CS -> sr_cs at latin, es-419 -> es
+    #
+    foreach key {{HKEY_CURRENT_USER\Control Panel\Desktop} {HKEY_CURRENT_USER\Control Panel\International}}\
+	    value {PreferredUILanguages localeName} {
+	if {![catch {registry get $key $value} localeName]
+		&& [regexp {^([a-z]{2,3})(?:-([a-z]{4}))?(?:-([a-z]{2}))?(?:-.+)?$}\
+		    [string tolower $localeName] match locale script territory]} {
+	    if {"" ne $territory} {
+		append locale _ $territory
+	    }
+	    set modifierDict [dict create latn latin cyrl cyrillic]
+	    if {[dict exists $modifierDict $script]} {
+		append locale @ [dict get $modifierDict $script]
+	    }
+	    if {![catch {mclocale [ConvertLocale $locale]}]} {
+		return
+	    }
+	}
+    }
+
+    # then check value locale which contains a numerical language ID
+    if {[catch {
+	set locale [registry get $key "locale"]
+    }]} {
+	mclocale C
+	return
+    }
+    #
+    # Keep trying to match against smaller and smaller suffixes
+    # of the registry value, since the latter hexadigits appear
+    # to determine general language and earlier hexadigits determine
+    # more precise information, such as territory.  For example,
+    #     0409 - English - United States
+    #     0809 - English - United Kingdom
+    # Add more translations to the WinRegToISO639 array above.
+    #
+    variable WinRegToISO639
+    set locale [string tolower $locale]
+    while {[string length $locale]} {
+	if {![catch {
+	    mclocale [ConvertLocale [dict get $WinRegToISO639 $locale]]
+	}]} {
+	    return
+	}
+	set locale [string range $locale 1 end]
+    }
+    #
+    # No translation known.  Fall back on "C" locale
+    #
+    mclocale C
+}
+msgcat::Init

Added: trunk/Master/tlpkg/tltcl/lib/tcl8/8.5/tcltest-2.5.1.tm
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tcl8/8.5/tcltest-2.5.1.tm	                        (rev 0)
+++ trunk/Master/tlpkg/tltcl/lib/tcl8/8.5/tcltest-2.5.1.tm	2020-03-17 20:46:21 UTC (rev 54375)
@@ -0,0 +1,3446 @@
+# tcltest.tcl --
+#
+#	This file contains support code for the Tcl test suite.  It
+#       defines the tcltest namespace and finds and defines the output
+#       directory, constraints available, output and error channels,
+#	etc. used by Tcl tests.  See the tcltest man page for more
+#	details.
+#
+#       This design was based on the Tcl testing approach designed and
+#       initially implemented by Mary Ann May-Pumphrey of Sun
+#	Microsystems.
+#
+# Copyright (c) 1994-1997 Sun Microsystems, Inc.
+# Copyright (c) 1998-1999 by Scriptics Corporation.
+# Copyright (c) 2000 by Ajuba Solutions
+# Contributions from Don Porter, NIST, 2002.  (not subject to US copyright)
+# All rights reserved.
+
+package require Tcl 8.5-		;# -verbose line uses [info frame]
+namespace eval tcltest {
+
+    # When the version number changes, be sure to update the pkgIndex.tcl file,
+    # and the install directory in the Makefiles.  When the minor version
+    # changes (new feature) be sure to update the man page as well.
+    variable Version 2.5.1
+
+    # Compatibility support for dumb variables defined in tcltest 1
+    # Do not use these.  Call [package provide Tcl] and [info patchlevel]
+    # yourself.  You don't need tcltest to wrap it for you.
+    variable version [package provide Tcl]
+    variable patchLevel [info patchlevel]
+
+##### Export the public tcltest procs; several categories
+    #
+    # Export the main functional commands that do useful things
+    namespace export cleanupTests loadTestedCommands makeDirectory \
+	makeFile removeDirectory removeFile runAllTests test
+
+    # Export configuration commands that control the functional commands
+    namespace export configure customMatch errorChannel interpreter \
+	    outputChannel testConstraint
+
+    # Export commands that are duplication (candidates for deprecation)
+    namespace export bytestring		;# dups [encoding convertfrom identity]
+    namespace export debug		;#	[configure -debug]
+    namespace export errorFile		;#	[configure -errfile]
+    namespace export limitConstraints	;#	[configure -limitconstraints]
+    namespace export loadFile		;#	[configure -loadfile]
+    namespace export loadScript		;#	[configure -load]
+    namespace export match		;#	[configure -match]
+    namespace export matchFiles		;#	[configure -file]
+    namespace export matchDirectories	;#	[configure -relateddir]
+    namespace export normalizeMsg	;#	application of [customMatch]
+    namespace export normalizePath	;#	[file normalize] (8.4)
+    namespace export outputFile		;#	[configure -outfile]
+    namespace export preserveCore	;#	[configure -preservecore]
+    namespace export singleProcess	;#	[configure -singleproc]
+    namespace export skip		;#	[configure -skip]
+    namespace export skipFiles		;#	[configure -notfile]
+    namespace export skipDirectories	;#	[configure -asidefromdir]
+    namespace export temporaryDirectory	;#	[configure -tmpdir]
+    namespace export testsDirectory	;#	[configure -testdir]
+    namespace export verbose		;#	[configure -verbose]
+    namespace export viewFile		;#	binary encoding [read]
+    namespace export workingDirectory	;#	[cd] [pwd]
+
+    # Export deprecated commands for tcltest 1 compatibility
+    namespace export getMatchingFiles mainThread restoreState saveState \
+	    threadReap
+
+    # tcltest::normalizePath --
+    #
+    #     This procedure resolves any symlinks in the path thus creating
+    #     a path without internal redirection. It assumes that the
+    #     incoming path is absolute.
+    #
+    # Arguments
+    #     pathVar - name of variable containing path to modify.
+    #
+    # Results
+    #     The path is modified in place.
+    #
+    # Side Effects:
+    #     None.
+    #
+    proc normalizePath {pathVar} {
+	upvar 1 $pathVar path
+	set oldpwd [pwd]
+	catch {cd $path}
+	set path [pwd]
+	cd $oldpwd
+	return $path
+    }
+
+##### Verification commands used to test values of variables and options
+    #
+    # Verification command that accepts everything
+    proc AcceptAll {value} {
+	return $value
+    }
+
+    # Verification command that accepts valid Tcl lists
+    proc AcceptList { list } {
+	return [lrange $list 0 end]
+    }
+
+    # Verification command that accepts a glob pattern
+    proc AcceptPattern { pattern } {
+	return [AcceptAll $pattern]
+    }
+
+    # Verification command that accepts integers
+    proc AcceptInteger { level } {
+	return [incr level 0]
+    }
+
+    # Verification command that accepts boolean values
+    proc AcceptBoolean { boolean } {
+	return [expr {$boolean && $boolean}]
+    }
+
+    # Verification command that accepts (syntactically) valid Tcl scripts
+    proc AcceptScript { script } {
+	if {![info complete $script]} {
+	    return -code error "invalid Tcl script: $script"
+	}
+	return $script
+    }
+
+    # Verification command that accepts (converts to) absolute pathnames
+    proc AcceptAbsolutePath { path } {
+	return [file join [pwd] $path]
+    }
+
+    # Verification command that accepts existing readable directories
+    proc AcceptReadable { path } {
+	if {![file readable $path]} {
+	    return -code error "\"$path\" is not readable"
+	}
+	return $path
+    }
+    proc AcceptDirectory { directory } {
+	set directory [AcceptAbsolutePath $directory]
+	if {![file exists $directory]} {
+	    return -code error "\"$directory\" does not exist"
+	}
+	if {![file isdir $directory]} {
+	    return -code error "\"$directory\" is not a directory"
+	}
+	return [AcceptReadable $directory]
+    }
+
+##### Initialize internal arrays of tcltest, but only if the caller
+    # has not already pre-initialized them.  This is done to support
+    # compatibility with older tests that directly access internals
+    # rather than go through command interfaces.
+    #
+    proc ArrayDefault {varName value} {
+	variable $varName
+	if {[array exists $varName]} {
+	    return
+	}
+	if {[info exists $varName]} {
+	    # Pre-initialized value is a scalar: destroy it!
+	    unset $varName
+	}
+	array set $varName $value
+    }
+
+    # save the original environment so that it can be restored later
+    ArrayDefault originalEnv [array get ::env]
+
+    # initialize numTests array to keep track of the number of tests
+    # that pass, fail, and are skipped.
+    ArrayDefault numTests [list Total 0 Passed 0 Skipped 0 Failed 0]
+
+    # createdNewFiles will store test files as indices and the list of
+    # files (that should not have been) left behind by the test files
+    # as values.
+    ArrayDefault createdNewFiles {}
+
+    # initialize skippedBecause array to keep track of constraints that
+    # kept tests from running; a constraint name of "userSpecifiedSkip"
+    # means that the test appeared on the list of tests that matched the
+    # -skip value given to the flag; "userSpecifiedNonMatch" means that
+    # the test didn't match the argument given to the -match flag; both
+    # of these constraints are counted only if tcltest::debug is set to
+    # true.
+    ArrayDefault skippedBecause {}
+
+    # initialize the testConstraints array to keep track of valid
+    # predefined constraints (see the explanation for the
+    # InitConstraints proc for more details).
+    ArrayDefault testConstraints {}
+
+##### Initialize internal variables of tcltest, but only if the caller
+    # has not already pre-initialized them.  This is done to support
+    # compatibility with older tests that directly access internals
+    # rather than go through command interfaces.
+    #
+    proc Default {varName value {verify AcceptAll}} {
+	variable $varName
+	if {![info exists $varName]} {
+	    variable $varName [$verify $value]
+	} else {
+	    variable $varName [$verify [set $varName]]
+	}
+    }
+
+    # Save any arguments that we might want to pass through to other
+    # programs.  This is used by the -args flag.
+    # FINDUSER
+    Default parameters {}
+
+    # Count the number of files tested (0 if runAllTests wasn't called).
+    # runAllTests will set testSingleFile to false, so stats will
+    # not be printed until runAllTests calls the cleanupTests proc.
+    # The currentFailure var stores the boolean value of whether the
+    # current test file has had any failures.  The failFiles list
+    # stores the names of test files that had failures.
+    Default numTestFiles 0 AcceptInteger
+    Default testSingleFile true AcceptBoolean
+    Default currentFailure false AcceptBoolean
+    Default failFiles {} AcceptList
+
+    # Tests should remove all files they create.  The test suite will
+    # check the current working dir for files created by the tests.
+    # filesMade keeps track of such files created using the makeFile and
+    # makeDirectory procedures.  filesExisted stores the names of
+    # pre-existing files.
+    #
+    # Note that $filesExisted lists only those files that exist in
+    # the original [temporaryDirectory].
+    Default filesMade {} AcceptList
+    Default filesExisted {} AcceptList
+    proc FillFilesExisted {} {
+	variable filesExisted
+
+	# Save the names of files that already exist in the scratch directory.
+	foreach file [glob -nocomplain -directory [temporaryDirectory] *] {
+	    lappend filesExisted [file tail $file]
+	}
+
+	# After successful filling, turn this into a no-op.
+	proc FillFilesExisted args {}
+    }
+
+    # Kept only for compatibility
+    Default constraintsSpecified {} AcceptList
+    trace add variable constraintsSpecified read [namespace code {
+	    set constraintsSpecified [array names testConstraints] ;#}]
+
+    # tests that use threads need to know which is the main thread
+    Default mainThread 1
+    variable mainThread
+    if {[info commands thread::id] ne {}} {
+	set mainThread [thread::id]
+    } elseif {[info commands testthread] ne {}} {
+	set mainThread [testthread id]
+    }
+
+    # Set workingDirectory to [pwd]. The default output directory for
+    # Tcl tests is the working directory.  Whenever this value changes
+    # change to that directory.
+    variable workingDirectory
+    trace add variable workingDirectory write \
+	    [namespace code {cd $workingDirectory ;#}]
+
+    Default workingDirectory [pwd] AcceptAbsolutePath
+    proc workingDirectory { {dir ""} } {
+	variable workingDirectory
+	if {[llength [info level 0]] == 1} {
+	    return $workingDirectory
+	}
+	set workingDirectory [AcceptAbsolutePath $dir]
+    }
+
+    # Set the location of the execuatble
+    Default tcltest [info nameofexecutable]
+    trace add variable tcltest write [namespace code {testConstraint stdio \
+	    [eval [ConstraintInitializer stdio]] ;#}]
+
+    # save the platform information so it can be restored later
+    Default originalTclPlatform [array get ::tcl_platform]
+
+    # If a core file exists, save its modification time.
+    if {[file exists [file join [workingDirectory] core]]} {
+	Default coreModTime \
+		[file mtime [file join [workingDirectory] core]]
+    }
+
+    # stdout and stderr buffers for use when we want to store them
+    Default outData {}
+    Default errData {}
+
+    # keep track of test level for nested test commands
+    variable testLevel 0
+
+    # the variables and procs that existed when saveState was called are
+    # stored in a variable of the same name
+    Default saveState {}
+
+    # Internationalization support -- used in [SetIso8859_1_Locale] and
+    # [RestoreLocale]. Those commands are used in cmdIL.test.
+
+    if {![info exists [namespace current]::isoLocale]} {
+	variable isoLocale fr
+	switch -- $::tcl_platform(platform) {
+	    "unix" {
+
+		# Try some 'known' values for some platforms:
+
+		switch -exact -- $::tcl_platform(os) {
+		    "FreeBSD" {
+			set isoLocale fr_FR.ISO_8859-1
+		    }
+		    HP-UX {
+			set isoLocale fr_FR.iso88591
+		    }
+		    Linux -
+		    IRIX {
+			set isoLocale fr
+		    }
+		    default {
+
+			# Works on SunOS 4 and Solaris, and maybe
+			# others...  Define it to something else on your
+			# system if you want to test those.
+
+			set isoLocale iso_8859_1
+		    }
+		}
+	    }
+	    "windows" {
+		set isoLocale French
+	    }
+	}
+    }
+
+    variable ChannelsWeOpened; array set ChannelsWeOpened {}
+    # output goes to stdout by default
+    Default outputChannel stdout
+    proc outputChannel { {filename ""} } {
+	variable outputChannel
+	variable ChannelsWeOpened
+
+	# This is very subtle and tricky, so let me try to explain.
+	# (Hopefully this longer comment will be clear when I come
+	# back in a few months, unlike its predecessor :) )
+	#
+	# The [outputChannel] command (and underlying variable) have to
+	# be kept in sync with the [configure -outfile] configuration
+	# option ( and underlying variable Option(-outfile) ).  This is
+	# accomplished with a write trace on Option(-outfile) that will
+	# update [outputChannel] whenver a new value is written.  That
+	# much is easy.
+	#
+	# The trick is that in order to maintain compatibility with
+	# version 1 of tcltest, we must allow every configuration option
+	# to get its inital value from command line arguments.  This is
+	# accomplished by setting initial read traces on all the
+	# configuration options to parse the command line option the first
+	# time they are read.  These traces are cancelled whenever the
+	# program itself calls [configure].
+	#
+	# OK, then so to support tcltest 1 compatibility, it seems we want
+	# to get the return from [outputFile] to trigger the read traces,
+	# just in case.
+	#
+	# BUT!  A little known feature of Tcl variable traces is that
+	# traces are disabled during the handling of other traces.  So,
+	# if we trigger read traces on Option(-outfile) and that triggers
+	# command line parsing which turns around and sets an initial
+	# value for Option(-outfile) -- <whew!> -- the write trace that
+	# would keep [outputChannel] in sync with that new initial value
+	# would not fire!
+	#
+	# SO, finally, as a workaround, instead of triggering read traces
+	# by invoking [outputFile], we instead trigger the same set of
+	# read traces by invoking [debug].  Any command that reads a
+	# configuration option would do.  [debug] is just a handy one.
+	# The end result is that we support tcltest 1 compatibility and
+	# keep outputChannel and -outfile in sync in all cases.
+	debug
+
+	if {[llength [info level 0]] == 1} {
+	    return $outputChannel
+	}
+	if {[info exists ChannelsWeOpened($outputChannel)]} {
+	    close $outputChannel
+	    unset ChannelsWeOpened($outputChannel)
+	}
+	switch -exact -- $filename {
+	    stderr -
+	    stdout {
+		set outputChannel $filename
+	    }
+	    default {
+		set outputChannel [open $filename a]
+		set ChannelsWeOpened($outputChannel) 1
+
+		# If we created the file in [temporaryDirectory], then
+		# [cleanupTests] will delete it, unless we claim it was
+		# already there.
+		set outdir [normalizePath [file dirname \
+			[file join [pwd] $filename]]]
+		if {$outdir eq [temporaryDirectory]} {
+		    variable filesExisted
+		    FillFilesExisted
+		    set filename [file tail $filename]
+		    if {$filename ni $filesExisted} {
+			lappend filesExisted $filename
+		    }
+		}
+	    }
+	}
+	return $outputChannel
+    }
+
+    # errors go to stderr by default
+    Default errorChannel stderr
+    proc errorChannel { {filename ""} } {
+	variable errorChannel
+	variable ChannelsWeOpened
+
+	# This is subtle and tricky.  See the comment above in
+	# [outputChannel] for a detailed explanation.
+	debug
+
+	if {[llength [info level 0]] == 1} {
+	    return $errorChannel
+	}
+	if {[info exists ChannelsWeOpened($errorChannel)]} {
+	    close $errorChannel
+	    unset ChannelsWeOpened($errorChannel)
+	}
+	switch -exact -- $filename {
+	    stderr -
+	    stdout {
+		set errorChannel $filename
+	    }
+	    default {
+		set errorChannel [open $filename a]
+		set ChannelsWeOpened($errorChannel) 1
+
+		# If we created the file in [temporaryDirectory], then
+		# [cleanupTests] will delete it, unless we claim it was
+		# already there.
+		set outdir [normalizePath [file dirname \
+			[file join [pwd] $filename]]]
+		if {$outdir eq [temporaryDirectory]} {
+		    variable filesExisted
+		    FillFilesExisted
+		    set filename [file tail $filename]
+		    if {$filename ni $filesExisted} {
+			lappend filesExisted $filename
+		    }
+		}
+	    }
+	}
+	return $errorChannel
+    }
+
+##### Set up the configurable options
+    #
+    # The configurable options of the package
+    variable Option; array set Option {}
+
+    # Usage strings for those options
+    variable Usage; array set Usage {}
+
+    # Verification commands for those options
+    variable Verify; array set Verify {}
+
+    # Initialize the default values of the configurable options that are
+    # historically associated with an exported variable.  If that variable
+    # is already set, support compatibility by accepting its pre-set value.
+    # Use [trace] to establish ongoing connection between the deprecated
+    # exported variable and the modern option kept as a true internal var.
+    # Also set up usage string and value testing for the option.
+    proc Option {option value usage {verify AcceptAll} {varName {}}} {
+	variable Option
+	variable Verify
+	variable Usage
+	variable OptionControlledVariables
+	variable DefaultValue
+	set Usage($option) $usage
+	set Verify($option) $verify
+	set DefaultValue($option) $value
+	if {[catch {$verify $value} msg]} {
+	    return -code error $msg
+	} else {
+	    set Option($option) $msg
+	}
+	if {[string length $varName]} {
+	    variable $varName
+	    if {[info exists $varName]} {
+		if {[catch {$verify [set $varName]} msg]} {
+		    return -code error $msg
+		} else {
+		    set Option($option) $msg
+		}
+		unset $varName
+	    }
+	    namespace eval [namespace current] \
+	    	    [list upvar 0 Option($option) $varName]
+	    # Workaround for Bug (now Feature Request) 572889.  Grrrr....
+	    # Track all the variables tied to options
+	    lappend OptionControlledVariables $varName
+	    # Later, set auto-configure read traces on all
+	    # of them, since a single trace on Option does not work.
+	    proc $varName {{value {}}} [subst -nocommands {
+		if {[llength [info level 0]] == 2} {
+		    Configure $option [set value]
+		}
+		return [Configure $option]
+	    }]
+	}
+    }
+
+    proc MatchingOption {option} {
+	variable Option
+	set match [array names Option $option*]
+	switch -- [llength $match] {
+	    0 {
+		set sorted [lsort [array names Option]]
+		set values [join [lrange $sorted 0 end-1] ", "]
+		append values ", or [lindex $sorted end]"
+		return -code error "unknown option $option: should be\
+			one of $values"
+	    }
+	    1 {
+		return [lindex $match 0]
+	    }
+	    default {
+		# Exact match trumps ambiguity
+		if {$option in $match} {
+		    return $option
+		}
+		set values [join [lrange $match 0 end-1] ", "]
+		append values ", or [lindex $match end]"
+		return -code error "ambiguous option $option:\
+			could match $values"
+	    }
+	}
+    }
+
+    proc EstablishAutoConfigureTraces {} {
+	variable OptionControlledVariables
+	foreach varName [concat $OptionControlledVariables Option] {
+	    variable $varName
+	    trace add variable $varName read [namespace code {
+		    ProcessCmdLineArgs ;#}]
+	}
+    }
+
+    proc RemoveAutoConfigureTraces {} {
+	variable OptionControlledVariables
+	foreach varName [concat $OptionControlledVariables Option] {
+	    variable $varName
+	    foreach pair [trace info variable $varName] {
+		lassign $pair op cmd
+		if {($op eq "read") &&
+			[string match *ProcessCmdLineArgs* $cmd]} {
+		    trace remove variable $varName $op $cmd
+		}
+	    }
+	}
+	# Once the traces are removed, this can become a no-op
+	proc RemoveAutoConfigureTraces {} {}
+    }
+
+    proc Configure args {
+	variable Option
+	variable Verify
+	set n [llength $args]
+	if {$n == 0} {
+	    return [lsort [array names Option]]
+	}
+	if {$n == 1} {
+	    if {[catch {MatchingOption [lindex $args 0]} option]} {
+		return -code error $option
+	    }
+	    return $Option($option)
+	}
+	while {[llength $args] > 1} {
+	    if {[catch {MatchingOption [lindex $args 0]} option]} {
+		return -code error $option
+	    }
+	    if {[catch {$Verify($option) [lindex $args 1]} value]} {
+		return -code error "invalid $option\
+			value \"[lindex $args 1]\": $value"
+	    }
+	    set Option($option) $value
+	    set args [lrange $args 2 end]
+	}
+	if {[llength $args]} {
+	    if {[catch {MatchingOption [lindex $args 0]} option]} {
+		return -code error $option
+	    }
+	    return -code error "missing value for option $option"
+	}
+    }
+    proc configure args {
+	if {[llength $args] > 1} {
+	    RemoveAutoConfigureTraces
+	}
+	set code [catch {Configure {*}$args} msg]
+	return -code $code $msg
+    }
+
+    proc AcceptVerbose { level } {
+	set level [AcceptList $level]
+	set levelMap {
+	    l list
+	    p pass
+	    b body
+	    s skip
+	    t start
+	    e error
+	    l line
+	    m msec
+	    u usec
+	}
+	set levelRegexp "^([join [dict values $levelMap] |])\$"
+	if {[llength $level] == 1} {
+	    if {![regexp $levelRegexp $level]} {
+		# translate single characters abbreviations to expanded list
+		set level [string map $levelMap [split $level {}]]
+	    }
+	}
+	set valid [list]
+	foreach v $level {
+	    if {[regexp $levelRegexp $v]} {
+		lappend valid $v
+	    }
+	}
+	return $valid
+    }
+
+    proc IsVerbose {level} {
+	variable Option
+	return [expr {[lsearch -exact $Option(-verbose) $level] != -1}]
+    }
+
+    # Default verbosity is to show bodies of failed tests
+    Option -verbose {body error} {
+	Takes any combination of the values 'p', 's', 'b', 't', 'e' and 'l'.
+	Test suite will display all passed tests if 'p' is specified, all
+	skipped tests if 's' is specified, the bodies of failed tests if
+	'b' is specified, and when tests start if 't' is specified.
+	ErrorInfo is displayed if 'e' is specified. Source file line
+	information of failed tests is displayed if 'l' is specified.
+    } AcceptVerbose verbose
+
+    # Match and skip patterns default to the empty list, except for
+    # matchFiles, which defaults to all .test files in the
+    # testsDirectory and matchDirectories, which defaults to all
+    # directories.
+    Option -match * {
+	Run all tests within the specified files that match one of the
+	list of glob patterns given.
+    } AcceptList match
+
+    Option -skip {} {
+	Skip all tests within the specified tests (via -match) and files
+	that match one of the list of glob patterns given.
+    } AcceptList skip
+
+    Option -file *.test {
+	Run tests in all test files that match the glob pattern given.
+    } AcceptPattern matchFiles
+
+    # By default, skip files that appear to be SCCS lock files.
+    Option -notfile l.*.test {
+	Skip all test files that match the glob pattern given.
+    } AcceptPattern skipFiles
+
+    Option -relateddir * {
+	Run tests in directories that match the glob pattern given.
+    } AcceptPattern matchDirectories
+
+    Option -asidefromdir {} {
+	Skip tests in directories that match the glob pattern given.
+    } AcceptPattern skipDirectories
+
+    # By default, don't save core files
+    Option -preservecore 0 {
+	If 2, save any core files produced during testing in the directory
+	specified by -tmpdir. If 1, notify the user if core files are
+	created.
+    } AcceptInteger preserveCore
+
+    # debug output doesn't get printed by default; debug level 1 spits
+    # up only the tests that were skipped because they didn't match or
+    # were specifically skipped.  A debug level of 2 would spit up the
+    # tcltest variables and flags provided; a debug level of 3 causes
+    # some additional output regarding operations of the test harness.
+    # The tcltest package currently implements only up to debug level 3.
+    Option -debug 0 {
+	Internal debug level
+    } AcceptInteger debug
+
+    proc SetSelectedConstraints args {
+	variable Option
+	foreach c $Option(-constraints) {
+	    testConstraint $c 1
+	}
+    }
+    Option -constraints {} {
+	Do not skip the listed constraints listed in -constraints.
+    } AcceptList
+    trace add variable Option(-constraints) write \
+	    [namespace code {SetSelectedConstraints ;#}]
+
+    # Don't run only the "-constraint" specified tests by default
+    proc ClearUnselectedConstraints args {
+	variable Option
+	variable testConstraints
+	if {!$Option(-limitconstraints)} {return}
+	foreach c [array names testConstraints] {
+	    if {$c ni $Option(-constraints)} {
+		testConstraint $c 0
+	    }
+	}
+    }
+    Option -limitconstraints 0 {
+	whether to run only tests with the constraints
+    } AcceptBoolean limitConstraints
+    trace add variable Option(-limitconstraints) write \
+	    [namespace code {ClearUnselectedConstraints ;#}]
+
+    # A test application has to know how to load the tested commands
+    # into the interpreter.
+    Option -load {} {
+	Specifies the script to load the tested commands.
+    } AcceptScript loadScript
+
+    # Default is to run each test file in a separate process
+    Option -singleproc 0 {
+	whether to run all tests in one process
+    } AcceptBoolean singleProcess
+
+    proc AcceptTemporaryDirectory { directory } {
+	set directory [AcceptAbsolutePath $directory]
+	if {![file exists $directory]} {
+	    file mkdir $directory
+	}
+	set directory [AcceptDirectory $directory]
+	if {![file writable $directory]} {
+	    if {[workingDirectory] eq $directory} {
+		# Special exception: accept the default value
+		# even if the directory is not writable
+		return $directory
+	    }
+	    return -code error "\"$directory\" is not writeable"
+	}
+	return $directory
+    }
+
+    # Directory where files should be created
+    Option -tmpdir [workingDirectory] {
+	Save temporary files in the specified directory.
+    } AcceptTemporaryDirectory temporaryDirectory
+    trace add variable Option(-tmpdir) write \
+	    [namespace code {normalizePath Option(-tmpdir) ;#}]
+
+    # Tests should not rely on the current working directory.
+    # Files that are part of the test suite should be accessed relative
+    # to [testsDirectory]
+    Option -testdir [workingDirectory] {
+	Search tests in the specified directory.
+    } AcceptDirectory testsDirectory
+    trace add variable Option(-testdir) write \
+	    [namespace code {normalizePath Option(-testdir) ;#}]
+
+    proc AcceptLoadFile { file } {
+	if {$file eq {}} {return $file}
+	set file [file join [temporaryDirectory] $file]
+	return [AcceptReadable $file]
+    }
+    proc ReadLoadScript {args} {
+	variable Option
+	if {$Option(-loadfile) eq {}} {return}
+	set tmp [open $Option(-loadfile) r]
+	loadScript [read $tmp]
+	close $tmp
+    }
+    Option -loadfile {} {
+	Read the script to load the tested commands from the specified file.
+    } AcceptLoadFile loadFile
+    trace add variable Option(-loadfile) write [namespace code ReadLoadScript]
+
+    proc AcceptOutFile { file } {
+	if {[string equal stderr $file]} {return $file}
+	if {[string equal stdout $file]} {return $file}
+	return [file join [temporaryDirectory] $file]
+    }
+
+    # output goes to stdout by default
+    Option -outfile stdout {
+	Send output from test runs to the specified file.
+    } AcceptOutFile outputFile
+    trace add variable Option(-outfile) write \
+	    [namespace code {outputChannel $Option(-outfile) ;#}]
+
+    # errors go to stderr by default
+    Option -errfile stderr {
+	Send errors from test runs to the specified file.
+    } AcceptOutFile errorFile
+    trace add variable Option(-errfile) write \
+	    [namespace code {errorChannel $Option(-errfile) ;#}]
+
+    proc loadIntoSlaveInterpreter {slave args} {
+	variable Version
+	interp eval $slave [package ifneeded tcltest $Version]
+	interp eval $slave "tcltest::configure {*}{$args}"
+	interp alias $slave ::tcltest::ReportToMaster \
+	    {} ::tcltest::ReportedFromSlave
+    }
+    proc ReportedFromSlave {total passed skipped failed because newfiles} {
+	variable numTests
+	variable skippedBecause
+	variable createdNewFiles
+	incr numTests(Total)   $total
+	incr numTests(Passed)  $passed
+	incr numTests(Skipped) $skipped
+	incr numTests(Failed)  $failed
+	foreach {constraint count} $because {
+	    incr skippedBecause($constraint) $count
+	}
+	foreach {testfile created} $newfiles {
+	    lappend createdNewFiles($testfile) {*}$created
+	}
+	return
+    }
+}
+
+#####################################################################
+
+# tcltest::Debug* --
+#
+#     Internal helper procedures to write out debug information
+#     dependent on the chosen level. A test shell may overide
+#     them, f.e. to redirect the output into a different
+#     channel, or even into a GUI.
+
+# tcltest::DebugPuts --
+#
+#     Prints the specified string if the current debug level is
+#     higher than the provided level argument.
+#
+# Arguments:
+#     level   The lowest debug level triggering the output
+#     string  The string to print out.
+#
+# Results:
+#     Prints the string. Nothing else is allowed.
+#
+# Side Effects:
+#     None.
+#
+
+proc tcltest::DebugPuts {level string} {
+    variable debug
+    if {$debug >= $level} {
+	puts $string
+    }
+    return
+}
+
+# tcltest::DebugPArray --
+#
+#     Prints the contents of the specified array if the current
+#       debug level is higher than the provided level argument
+#
+# Arguments:
+#     level           The lowest debug level triggering the output
+#     arrayvar        The name of the array to print out.
+#
+# Results:
+#     Prints the contents of the array. Nothing else is allowed.
+#
+# Side Effects:
+#     None.
+#
+
+proc tcltest::DebugPArray {level arrayvar} {
+    variable debug
+
+    if {$debug >= $level} {
+	catch {upvar 1 $arrayvar $arrayvar}
+	parray $arrayvar
+    }
+    return
+}
+
+# Define our own [parray] in ::tcltest that will inherit use of the [puts]
+# defined in ::tcltest.  NOTE: Ought to construct with [info args] and
+# [info default], but can't be bothered now.  If [parray] changes, then
+# this will need changing too.
+auto_load ::parray
+proc tcltest::parray {a {pattern *}} [info body ::parray]
+
+# tcltest::DebugDo --
+#
+#     Executes the script if the current debug level is greater than
+#       the provided level argument
+#
+# Arguments:
+#     level   The lowest debug level triggering the execution.
+#     script  The tcl script executed upon a debug level high enough.
+#
+# Results:
+#     Arbitrary side effects, dependent on the executed script.
+#
+# Side Effects:
+#     None.
+#
+
+proc tcltest::DebugDo {level script} {
+    variable debug
+
+    if {$debug >= $level} {
+	uplevel 1 $script
+    }
+    return
+}
+
+#####################################################################
+
+proc tcltest::Warn {msg} {
+    puts [outputChannel] "WARNING: $msg"
+}
+
+# tcltest::mainThread
+#
+#     Accessor command for tcltest variable mainThread.
+#
+proc tcltest::mainThread { {new ""} } {
+    variable mainThread
+    if {[llength [info level 0]] == 1} {
+	return $mainThread
+    }
+    set mainThread $new
+}
+
+# tcltest::testConstraint --
+#
+#	sets a test constraint to a value; to do multiple constraints,
+#       call this proc multiple times.  also returns the value of the
+#       named constraint if no value was supplied.
+#
+# Arguments:
+#	constraint - name of the constraint
+#       value - new value for constraint (should be boolean) - if not
+#               supplied, this is a query
+#
+# Results:
+#	content of tcltest::testConstraints($constraint)
+#
+# Side effects:
+#	none
+
+proc tcltest::testConstraint {constraint {value ""}} {
+    variable testConstraints
+    variable Option
+    DebugPuts 3 "entering testConstraint $constraint $value"
+    if {[llength [info level 0]] == 2} {
+	return $testConstraints($constraint)
+    }
+    # Check for boolean values
+    if {[catch {expr {$value && $value}} msg]} {
+	return -code error $msg
+    }
+    if {[limitConstraints] && ($constraint ni $Option(-constraints))} {
+	set value 0
+    }
+    set testConstraints($constraint) $value
+}
+
+# tcltest::interpreter --
+#
+#	the interpreter name stored in tcltest::tcltest
+#
+# Arguments:
+#	executable name
+#
+# Results:
+#	content of tcltest::tcltest
+#
+# Side effects:
+#	None.
+
+proc tcltest::interpreter { {interp ""} } {
+    variable tcltest
+    if {[llength [info level 0]] == 1} {
+	return $tcltest
+    }
+    set tcltest $interp
+}
+
+#####################################################################
+
+# tcltest::AddToSkippedBecause --
+#
+#	Increments the variable used to track how many tests were
+#       skipped because of a particular constraint.
+#
+# Arguments:
+#	constraint     The name of the constraint to be modified
+#
+# Results:
+#	Modifies tcltest::skippedBecause; sets the variable to 1 if
+#       didn't previously exist - otherwise, it just increments it.
+#
+# Side effects:
+#	None.
+
+proc tcltest::AddToSkippedBecause { constraint {value 1}} {
+    # add the constraint to the list of constraints that kept tests
+    # from running
+    variable skippedBecause
+
+    if {[info exists skippedBecause($constraint)]} {
+	incr skippedBecause($constraint) $value
+    } else {
+	set skippedBecause($constraint) $value
+    }
+    return
+}
+
+# tcltest::PrintError --
+#
+#	Prints errors to tcltest::errorChannel and then flushes that
+#       channel, making sure that all messages are < 80 characters per
+#       line.
+#
+# Arguments:
+#	errorMsg     String containing the error to be printed
+#
+# Results:
+#	None.
+#
+# Side effects:
+#	None.
+
+proc tcltest::PrintError {errorMsg} {
+    set InitialMessage "Error:  "
+    set InitialMsgLen  [string length $InitialMessage]
+    puts -nonewline [errorChannel] $InitialMessage
+
+    # Keep track of where the end of the string is.
+    set endingIndex [string length $errorMsg]
+
+    if {$endingIndex < (80 - $InitialMsgLen)} {
+	puts [errorChannel] $errorMsg
+    } else {
+	# Print up to 80 characters on the first line, including the
+	# InitialMessage.
+	set beginningIndex [string last " " [string range $errorMsg 0 \
+		[expr {80 - $InitialMsgLen}]]]
+	puts [errorChannel] [string range $errorMsg 0 $beginningIndex]
+
+	while {$beginningIndex ne "end"} {
+	    puts -nonewline [errorChannel] \
+		    [string repeat " " $InitialMsgLen]
+	    if {($endingIndex - $beginningIndex)
+		    < (80 - $InitialMsgLen)} {
+		puts [errorChannel] [string trim \
+			[string range $errorMsg $beginningIndex end]]
+		break
+	    } else {
+		set newEndingIndex [expr {[string last " " \
+			[string range $errorMsg $beginningIndex \
+				[expr {$beginningIndex
+					+ (80 - $InitialMsgLen)}]
+		]] + $beginningIndex}]
+		if {($newEndingIndex <= 0)
+			|| ($newEndingIndex <= $beginningIndex)} {
+		    set newEndingIndex end
+		}
+		puts [errorChannel] [string trim \
+			[string range $errorMsg \
+			    $beginningIndex $newEndingIndex]]
+		set beginningIndex $newEndingIndex
+	    }
+	}
+    }
+    flush [errorChannel]
+    return
+}
+
+# tcltest::SafeFetch --
+#
+#	 The following trace procedure makes it so that we can safely
+#        refer to non-existent members of the testConstraints array
+#        without causing an error.  Instead, reading a non-existent
+#        member will return 0. This is necessary because tests are
+#        allowed to use constraint "X" without ensuring that
+#        testConstraints("X") is defined.
+#
+# Arguments:
+#	n1 - name of the array (testConstraints)
+#       n2 - array key value (constraint name)
+#       op - operation performed on testConstraints (generally r)
+#
+# Results:
+#	none
+#
+# Side effects:
+#	sets testConstraints($n2) to 0 if it's referenced but never
+#       before used
+
+proc tcltest::SafeFetch {n1 n2 op} {
+    variable testConstraints
+    DebugPuts 3 "entering SafeFetch $n1 $n2 $op"
+    if {$n2 eq {}} {return}
+    if {![info exists testConstraints($n2)]} {
+	if {[catch {testConstraint $n2 [eval [ConstraintInitializer $n2]]}]} {
+	    testConstraint $n2 0
+	}
+    }
+}
+
+# tcltest::ConstraintInitializer --
+#
+#	Get or set a script that when evaluated in the tcltest namespace
+#	will return a boolean value with which to initialize the
+#	associated constraint.
+#
+# Arguments:
+#	constraint - name of the constraint initialized by the script
+#	script - the initializer script
+#
+# Results
+#	boolean value of the constraint - enabled or disabled
+#
+# Side effects:
+#	Constraint is initialized for future reference by [test]
+proc tcltest::ConstraintInitializer {constraint {script ""}} {
+    variable ConstraintInitializer
+    DebugPuts 3 "entering ConstraintInitializer $constraint $script"
+    if {[llength [info level 0]] == 2} {
+	return $ConstraintInitializer($constraint)
+    }
+    # Check for boolean values
+    if {![info complete $script]} {
+	return -code error "ConstraintInitializer must be complete script"
+    }
+    set ConstraintInitializer($constraint) $script
+}
+
+# tcltest::InitConstraints --
+#
+# Call all registered constraint initializers to force initialization
+# of all known constraints.
+# See the tcltest man page for the list of built-in constraints defined
+# in this procedure.
+#
+# Arguments:
+#	none
+#
+# Results:
+#	The testConstraints array is reset to have an index for each
+#	built-in test constraint.
+#
+# Side Effects:
+#       None.
+#
+
+proc tcltest::InitConstraints {} {
+    variable ConstraintInitializer
+    initConstraintsHook
+    foreach constraint [array names ConstraintInitializer] {
+	testConstraint $constraint
+    }
+}
+
+proc tcltest::DefineConstraintInitializers {} {
+    ConstraintInitializer singleTestInterp {singleProcess}
+
+    # All the 'pc' constraints are here for backward compatibility and
+    # are not documented.  They have been replaced with equivalent 'win'
+    # constraints.
+
+    ConstraintInitializer unixOnly \
+	    {string equal $::tcl_platform(platform) unix}
+    ConstraintInitializer macOnly \
+	    {string equal $::tcl_platform(platform) macintosh}
+    ConstraintInitializer pcOnly \
+	    {string equal $::tcl_platform(platform) windows}
+    ConstraintInitializer winOnly \
+	    {string equal $::tcl_platform(platform) windows}
+
+    ConstraintInitializer unix {testConstraint unixOnly}
+    ConstraintInitializer mac {testConstraint macOnly}
+    ConstraintInitializer pc {testConstraint pcOnly}
+    ConstraintInitializer win {testConstraint winOnly}
+
+    ConstraintInitializer unixOrPc \
+	    {expr {[testConstraint unix] || [testConstraint pc]}}
+    ConstraintInitializer macOrPc \
+	    {expr {[testConstraint mac] || [testConstraint pc]}}
+    ConstraintInitializer unixOrWin \
+	    {expr {[testConstraint unix] || [testConstraint win]}}
+    ConstraintInitializer macOrWin \
+	    {expr {[testConstraint mac] || [testConstraint win]}}
+    ConstraintInitializer macOrUnix \
+	    {expr {[testConstraint mac] || [testConstraint unix]}}
+
+    ConstraintInitializer nt {string equal $::tcl_platform(os) "Windows NT"}
+    ConstraintInitializer 95 {string equal $::tcl_platform(os) "Windows 95"}
+    ConstraintInitializer 98 {string equal $::tcl_platform(os) "Windows 98"}
+
+    # The following Constraints switches are used to mark tests that
+    # should work, but have been temporarily disabled on certain
+    # platforms because they don't and we haven't gotten around to
+    # fixing the underlying problem.
+
+    ConstraintInitializer tempNotPc {expr {![testConstraint pc]}}
+    ConstraintInitializer tempNotWin {expr {![testConstraint win]}}
+    ConstraintInitializer tempNotMac {expr {![testConstraint mac]}}
+    ConstraintInitializer tempNotUnix {expr {![testConstraint unix]}}
+
+    # The following Constraints switches are used to mark tests that
+    # crash on certain platforms, so that they can be reactivated again
+    # when the underlying problem is fixed.
+
+    ConstraintInitializer pcCrash {expr {![testConstraint pc]}}
+    ConstraintInitializer winCrash {expr {![testConstraint win]}}
+    ConstraintInitializer macCrash {expr {![testConstraint mac]}}
+    ConstraintInitializer unixCrash {expr {![testConstraint unix]}}
+
+    # Skip empty tests
+
+    ConstraintInitializer emptyTest {format 0}
+
+    # By default, tests that expose known bugs are skipped.
+
+    ConstraintInitializer knownBug {format 0}
+
+    # By default, non-portable tests are skipped.
+
+    ConstraintInitializer nonPortable {format 0}
+
+    # Some tests require user interaction.
+
+    ConstraintInitializer userInteraction {format 0}
+
+    # Some tests must be skipped if the interpreter is not in
+    # interactive mode
+
+    ConstraintInitializer interactive \
+	    {expr {[info exists ::tcl_interactive] && $::tcl_interactive}}
+
+    # Some tests can only be run if the installation came from a CD
+    # image instead of a web image.  Some tests must be skipped if you
+    # are running as root on Unix.  Other tests can only be run if you
+    # are running as root on Unix.
+
+    ConstraintInitializer root {expr \
+	    {($::tcl_platform(platform) eq "unix") &&
+		    ($::tcl_platform(user) in {root {}})}}
+    ConstraintInitializer notRoot {expr {![testConstraint root]}}
+
+    # Set nonBlockFiles constraint: 1 means this platform supports
+    # setting files into nonblocking mode.
+
+    ConstraintInitializer nonBlockFiles {
+	    set code [expr {[catch {set f [open defs r]}]
+		    || [catch {chan configure $f -blocking off}]}]
+	    catch {close $f}
+	    set code
+    }
+
+    # Set asyncPipeClose constraint: 1 means this platform supports
+    # async flush and async close on a pipe.
+    #
+    # Test for SCO Unix - cannot run async flushing tests because a
+    # potential problem with select is apparently interfering.
+    # (Mark Diekhans).
+
+    ConstraintInitializer asyncPipeClose {expr {
+	    !([string equal unix $::tcl_platform(platform)]
+	    && ([catch {exec uname -X | fgrep {Release = 3.2v}}] == 0))}}
+
+    # Test to see if we have a broken version of sprintf with respect
+    # to the "e" format of floating-point numbers.
+
+    ConstraintInitializer eformat {string equal [format %g 5e-5] 5e-05}
+
+    # Test to see if execed commands such as cat, echo, rm and so forth
+    # are present on this machine.
+
+    ConstraintInitializer unixExecs {
+	set code 1
+        if {$::tcl_platform(platform) eq "macintosh"} {
+	    set code 0
+        }
+        if {$::tcl_platform(platform) eq "windows"} {
+	    if {[catch {
+	        set file _tcl_test_remove_me.txt
+	        makeFile {hello} $file
+	    }]} {
+	        set code 0
+	    } elseif {
+	        [catch {exec cat $file}] ||
+	        [catch {exec echo hello}] ||
+	        [catch {exec sh -c echo hello}] ||
+	        [catch {exec wc $file}] ||
+	        [catch {exec sleep 1}] ||
+	        [catch {exec echo abc > $file}] ||
+	        [catch {exec chmod 644 $file}] ||
+	        [catch {exec rm $file}] ||
+	        [llength [auto_execok mkdir]] == 0 ||
+	        [llength [auto_execok fgrep]] == 0 ||
+	        [llength [auto_execok grep]] == 0 ||
+	        [llength [auto_execok ps]] == 0
+	    } {
+	        set code 0
+	    }
+	    removeFile $file
+        }
+	set code
+    }
+
+    ConstraintInitializer stdio {
+	set code 0
+	if {![catch {set f [open "|[list [interpreter]]" w]}]} {
+	    if {![catch {puts $f exit}]} {
+		if {![catch {close $f}]} {
+		    set code 1
+		}
+	    }
+	}
+	set code
+    }
+
+    # Deliberately call socket with the wrong number of arguments.  The
+    # error message you get will indicate whether sockets are available
+    # on this system.
+
+    ConstraintInitializer socket {
+	catch {socket} msg
+	string compare $msg "sockets are not available on this system"
+    }
+
+    # Check for internationalization
+    ConstraintInitializer hasIsoLocale {
+	if {[llength [info commands testlocale]] == 0} {
+	    set code 0
+	} else {
+	    set code [string length [SetIso8859_1_Locale]]
+	    RestoreLocale
+	}
+	set code
+    }
+
+}
+#####################################################################
+
+# Usage and command line arguments processing.
+
+# tcltest::PrintUsageInfo
+#
+#	Prints out the usage information for package tcltest.  This can
+#	be customized with the redefinition of [PrintUsageInfoHook].
+#
+# Arguments:
+#	none
+#
+# Results:
+#       none
+#
+# Side Effects:
+#       none
+proc tcltest::PrintUsageInfo {} {
+    puts [Usage]
+    PrintUsageInfoHook
+}
+
+proc tcltest::Usage { {option ""} } {
+    variable Usage
+    variable Verify
+    if {[llength [info level 0]] == 1} {
+	set msg "Usage: [file tail [info nameofexecutable]] script "
+	append msg "?-help? ?flag value? ... \n"
+	append msg "Available flags (and valid input values) are:"
+
+	set max 0
+	set allOpts [concat -help [Configure]]
+	foreach opt $allOpts {
+	    set foo [Usage $opt]
+	    lassign $foo x type($opt) usage($opt)
+	    set line($opt) "  $opt $type($opt)  "
+	    set length($opt) [string length $line($opt)]
+	    if {$length($opt) > $max} {set max $length($opt)}
+	}
+	set rest [expr {72 - $max}]
+	foreach opt $allOpts {
+	    append msg \n$line($opt)
+	    append msg [string repeat " " [expr {$max - $length($opt)}]]
+	    set u [string trim $usage($opt)]
+	    catch {append u "  (default: \[[Configure $opt]])"}
+	    regsub -all {\s*\n\s*} $u " " u
+	    while {[string length $u] > $rest} {
+		set break [string wordstart $u $rest]
+		if {$break == 0} {
+		    set break [string wordend $u 0]
+		}
+		append msg [string range $u 0 [expr {$break - 1}]]
+		set u [string trim [string range $u $break end]]
+		append msg \n[string repeat " " $max]
+	    }
+	    append msg $u
+	}
+	return $msg\n
+    } elseif {$option eq "-help"} {
+	return [list -help "" "Display this usage information."]
+    } else {
+	set type [lindex [info args $Verify($option)] 0]
+	return [list $option $type $Usage($option)]
+    }
+}
+
+# tcltest::ProcessFlags --
+#
+#	process command line arguments supplied in the flagArray - this
+#	is called by processCmdLineArgs.  Modifies tcltest variables
+#	according to the content of the flagArray.
+#
+# Arguments:
+#	flagArray - array containing name/value pairs of flags
+#
+# Results:
+#	sets tcltest variables according to their values as defined by
+#       flagArray
+#
+# Side effects:
+#	None.
+
+proc tcltest::ProcessFlags {flagArray} {
+    # Process -help first
+    if {"-help" in $flagArray} {
+	PrintUsageInfo
+	exit 1
+    }
+
+    if {[llength $flagArray] == 0} {
+	RemoveAutoConfigureTraces
+    } else {
+	set args $flagArray
+	while {[llength $args] > 1 && [catch {configure {*}$args} msg]} {
+
+	    # Something went wrong parsing $args for tcltest options
+	    # Check whether the problem is "unknown option"
+	    if {[regexp {^unknown option (\S+):} $msg -> option]} {
+		# Could be this is an option the Hook knows about
+		set moreOptions [processCmdLineArgsAddFlagsHook]
+		if {$option ni $moreOptions} {
+		    # Nope.  Report the error, including additional options,
+		    # but keep going
+		    if {[llength $moreOptions]} {
+			append msg ", "
+			append msg [join [lrange $moreOptions 0 end-1] ", "]
+			append msg "or [lindex $moreOptions end]"
+		    }
+		    Warn $msg
+		}
+	    } else {
+		# error is something other than "unknown option"
+		# notify user of the error; and exit
+		puts [errorChannel] $msg
+		exit 1
+	    }
+
+	    # To recover, find that unknown option and remove up to it.
+	    # then retry
+	    while {[lindex $args 0] ne $option} {
+		set args [lrange $args 2 end]
+	    }
+	    set args [lrange $args 2 end]
+	}
+	if {[llength $args] == 1} {
+	    puts [errorChannel] \
+		    "missing value for option [lindex $args 0]"
+	    exit 1
+	}
+    }
+
+    # Call the hook
+    catch {
+        array set flag $flagArray
+        processCmdLineArgsHook [array get flag]
+    }
+    return
+}
+
+# tcltest::ProcessCmdLineArgs --
+#
+#       This procedure must be run after constraint initialization is
+#	set up (by [DefineConstraintInitializers]) because some constraints
+#	can be overridden.
+#
+#       Perform configuration according to the command-line options.
+#
+# Arguments:
+#	none
+#
+# Results:
+#	Sets the above-named variables in the tcltest namespace.
+#
+# Side Effects:
+#       None.
+#
+
+proc tcltest::ProcessCmdLineArgs {} {
+    variable originalEnv
+    variable testConstraints
+
+    # The "argv" var doesn't exist in some cases, so use {}.
+    if {![info exists ::argv]} {
+	ProcessFlags {}
+    } else {
+	ProcessFlags $::argv
+    }
+
+    # Spit out everything you know if we're at a debug level 2 or
+    # greater
+    DebugPuts 2 "Flags passed into tcltest:"
+    if {[info exists ::env(TCLTEST_OPTIONS)]} {
+	DebugPuts 2 \
+		"    ::env(TCLTEST_OPTIONS): $::env(TCLTEST_OPTIONS)"
+    }
+    if {[info exists ::argv]} {
+	DebugPuts 2 "    argv: $::argv"
+    }
+    DebugPuts    2 "tcltest::debug              = [debug]"
+    DebugPuts    2 "tcltest::testsDirectory     = [testsDirectory]"
+    DebugPuts    2 "tcltest::workingDirectory   = [workingDirectory]"
+    DebugPuts    2 "tcltest::temporaryDirectory = [temporaryDirectory]"
+    DebugPuts    2 "tcltest::outputChannel      = [outputChannel]"
+    DebugPuts    2 "tcltest::errorChannel       = [errorChannel]"
+    DebugPuts    2 "Original environment (tcltest::originalEnv):"
+    DebugPArray  2 originalEnv
+    DebugPuts    2 "Constraints:"
+    DebugPArray  2 testConstraints
+}
+
+#####################################################################
+
+# Code to run the tests goes here.
+
+# tcltest::TestPuts --
+#
+#	Used to redefine puts in test environment.  Stores whatever goes
+#	out on stdout in tcltest::outData and stderr in errData before
+#	sending it on to the regular puts.
+#
+# Arguments:
+#	same as standard puts
+#
+# Results:
+#	none
+#
+# Side effects:
+#       Intercepts puts; data that would otherwise go to stdout, stderr,
+#	or file channels specified in outputChannel and errorChannel
+#	does not get sent to the normal puts function.
+namespace eval tcltest::Replace {
+    namespace export puts
+}
+proc tcltest::Replace::puts {args} {
+    variable [namespace parent]::outData
+    variable [namespace parent]::errData
+    switch [llength $args] {
+	1 {
+	    # Only the string to be printed is specified
+	    append outData [lindex $args 0]\n
+	    return
+	    # return [Puts [lindex $args 0]]
+	}
+	2 {
+	    # Either -nonewline or channelId has been specified
+	    if {[lindex $args 0] eq "-nonewline"} {
+		append outData [lindex $args end]
+		return
+		# return [Puts -nonewline [lindex $args end]]
+	    } else {
+		set channel [lindex $args 0]
+		set newline \n
+	    }
+	}
+	3 {
+	    if {[lindex $args 0] eq "-nonewline"} {
+		# Both -nonewline and channelId are specified, unless
+		# it's an error.  -nonewline is supposed to be argv[0].
+		set channel [lindex $args 1]
+		set newline ""
+	    }
+	}
+    }
+
+    if {[info exists channel]} {
+	if {$channel in [list [[namespace parent]::outputChannel] stdout]} {
+	    append outData [lindex $args end]$newline
+	    return
+	} elseif {$channel in [list [[namespace parent]::errorChannel] stderr]} {
+	    append errData [lindex $args end]$newline
+	    return
+	}
+    }
+
+    # If we haven't returned by now, we don't know how to handle the
+    # input.  Let puts handle it.
+    return [Puts {*}$args]
+}
+
+# tcltest::Eval --
+#
+#	Evaluate the script in the test environment.  If ignoreOutput is
+#       false, store data sent to stderr and stdout in outData and
+#       errData.  Otherwise, ignore this output altogether.
+#
+# Arguments:
+#	script             Script to evaluate
+#       ?ignoreOutput?     Indicates whether or not to ignore output
+#			   sent to stdout & stderr
+#
+# Results:
+#	result from running the script
+#
+# Side effects:
+#	Empties the contents of outData and errData before running a
+#	test if ignoreOutput is set to 0.
+
+proc tcltest::Eval {script {ignoreOutput 1}} {
+    variable outData
+    variable errData
+    DebugPuts 3 "[lindex [info level 0] 0] called"
+    if {!$ignoreOutput} {
+	set outData {}
+	set errData {}
+	rename ::puts [namespace current]::Replace::Puts
+	namespace eval :: [list namespace import [namespace origin Replace::puts]]
+	namespace import Replace::puts
+    }
+    set result [uplevel 1 $script]
+    if {!$ignoreOutput} {
+	namespace forget puts
+	namespace eval :: namespace forget puts
+	rename [namespace current]::Replace::Puts ::puts
+    }
+    return $result
+}
+
+# tcltest::CompareStrings --
+#
+#	compares the expected answer to the actual answer, depending on
+#	the mode provided.  Mode determines whether a regexp, exact,
+#	glob or custom comparison is done.
+#
+# Arguments:
+#	actual - string containing the actual result
+#       expected - pattern to be matched against
+#       mode - type of comparison to be done
+#
+# Results:
+#	result of the match
+#
+# Side effects:
+#	None.
+
+proc tcltest::CompareStrings {actual expected mode} {
+    variable CustomMatch
+    if {![info exists CustomMatch($mode)]} {
+        return -code error "No matching command registered for `-match $mode'"
+    }
+    set match [namespace eval :: $CustomMatch($mode) [list $expected $actual]]
+    if {[catch {expr {$match && $match}} result]} {
+	return -code error "Invalid result from `-match $mode' command: $result"
+    }
+    return $match
+}
+
+# tcltest::customMatch --
+#
+#	registers a command to be called when a particular type of
+#	matching is required.
+#
+# Arguments:
+#	nickname - Keyword for the type of matching
+#	cmd - Incomplete command that implements that type of matching
+#		when completed with expected string and actual string
+#		and then evaluated.
+#
+# Results:
+#	None.
+#
+# Side effects:
+#	Sets the variable tcltest::CustomMatch
+
+proc tcltest::customMatch {mode script} {
+    variable CustomMatch
+    if {![info complete $script]} {
+	return -code error \
+		"invalid customMatch script; can't evaluate after completion"
+    }
+    set CustomMatch($mode) $script
+}
+
+# tcltest::SubstArguments list
+#
+# This helper function takes in a list of words, then perform a
+# substitution on the list as though each word in the list is a separate
+# argument to the Tcl function.  For example, if this function is
+# invoked as:
+#
+#      SubstArguments {$a {$a}}
+#
+# Then it is as though the function is invoked as:
+#
+#      SubstArguments $a {$a}
+#
+# This code is adapted from Paul Duffin's function "SplitIntoWords".
+# The original function can be found  on:
+#
+#      http://purl.org/thecliff/tcl/wiki/858.html
+#
+# Results:
+#     a list containing the result of the substitution
+#
+# Exceptions:
+#     An error may occur if the list containing unbalanced quote or
+#     unknown variable.
+#
+# Side Effects:
+#     None.
+#
+
+proc tcltest::SubstArguments {argList} {
+
+    # We need to split the argList up into tokens but cannot use list
+    # operations as they throw away some significant quoting, and
+    # [split] ignores braces as it should.  Therefore what we do is
+    # gradually build up a string out of whitespace seperated strings.
+    # We cannot use [split] to split the argList into whitespace
+    # separated strings as it throws away the whitespace which maybe
+    # important so we have to do it all by hand.
+
+    set result {}
+    set token ""
+
+    while {[string length $argList]} {
+        # Look for the next word containing a quote: " { }
+        if {[regexp -indices {[^ \t\n]*[\"\{\}]+[^ \t\n]*} \
+		$argList all]} {
+            # Get the text leading up to this word, but not including
+	    # this word, from the argList.
+            set text [string range $argList 0 \
+		    [expr {[lindex $all 0] - 1}]]
+            # Get the word with the quote
+            set word [string range $argList \
+                    [lindex $all 0] [lindex $all 1]]
+
+            # Remove all text up to and including the word from the
+            # argList.
+            set argList [string range $argList \
+                    [expr {[lindex $all 1] + 1}] end]
+        } else {
+            # Take everything up to the end of the argList.
+            set text $argList
+            set word {}
+            set argList {}
+        }
+
+        if {$token ne {}} {
+            # If we saw a word with quote before, then there is a
+            # multi-word token starting with that word.  In this case,
+            # add the text and the current word to this token.
+            append token $text $word
+        } else {
+            # Add the text to the result.  There is no need to parse
+            # the text because it couldn't be a part of any multi-word
+            # token.  Then start a new multi-word token with the word
+            # because we need to pass this token to the Tcl parser to
+            # check for balancing quotes
+            append result $text
+            set token $word
+        }
+
+        if { [catch {llength $token} length] == 0 && $length == 1} {
+            # The token is a valid list so add it to the result.
+            # lappend result [string trim $token]
+            append result \{$token\}
+            set token {}
+        }
+    }
+
+    # If the last token has not been added to the list then there
+    # is a problem.
+    if { [string length $token] } {
+        error "incomplete token \"$token\""
+    }
+
+    return $result
+}
+
+
+# tcltest::test --
+#
+# This procedure runs a test and prints an error message if the test
+# fails.  If verbose has been set, it also prints a message even if the
+# test succeeds.  The test will be skipped if it doesn't match the
+# match variable, if it matches an element in skip, or if one of the
+# elements of "constraints" turns out not to be true.
+#
+# If testLevel is 1, then this is a top level test, and we record
+# pass/fail information; otherwise, this information is not logged and
+# is not added to running totals.
+#
+# Attributes:
+#   Only description is a required attribute.  All others are optional.
+#   Default values are indicated.
+#
+#   constraints -	A list of one or more keywords, each of which
+#			must be the name of an element in the array
+#			"testConstraints".  If any of these elements is
+#			zero, the test is skipped. This attribute is
+#			optional; default is {}
+#   body -	        Script to run to carry out the test.  It must
+#		        return a result that can be checked for
+#		        correctness.  This attribute is optional;
+#                       default is {}
+#   result -	        Expected result from script.  This attribute is
+#                       optional; default is {}.
+#   output -            Expected output sent to stdout.  This attribute
+#                       is optional; default is {}.
+#   errorOutput -       Expected output sent to stderr.  This attribute
+#                       is optional; default is {}.
+#   returnCodes -       Expected return codes.  This attribute is
+#                       optional; default is {0 2}.
+#   errorCode -         Expected error code.  This attribute is
+#                       optional; default is {*}. It is a glob pattern.
+#                       If given, returnCodes defaults to {1}.
+#   setup -             Code to run before $script (above).  This
+#                       attribute is optional; default is {}.
+#   cleanup -           Code to run after $script (above).  This
+#                       attribute is optional; default is {}.
+#   match -             specifies type of matching to do on result,
+#                       output, errorOutput; this must be a string
+#			previously registered by a call to [customMatch].
+#			The strings exact, glob, and regexp are pre-registered
+#			by the tcltest package.  Default value is exact.
+#
+# Arguments:
+#   name -		Name of test, in the form foo-1.2.
+#   description -	Short textual description of the test, to
+#  		  	help humans understand what it does.
+#
+# Results:
+#	None.
+#
+# Side effects:
+#       Just about anything is possible depending on the test.
+#
+
+proc tcltest::test {name description args} {
+    global tcl_platform
+    variable testLevel
+    variable coreModTime
+    DebugPuts 3 "test $name $args"
+    DebugDo 1 {
+	variable TestNames
+	catch {
+	    puts "test name '$name' re-used; prior use in $TestNames($name)"
+	}
+	set TestNames($name) [info script]
+    }
+
+    FillFilesExisted
+    incr testLevel
+
+    # Pre-define everything to null except output and errorOutput.  We
+    # determine whether or not to trap output based on whether or not
+    # these variables (output & errorOutput) are defined.
+    lassign {} constraints setup cleanup body result returnCodes errorCode match
+
+    # Set the default match mode
+    set match exact
+
+    # Set the default match values for return codes (0 is the standard
+    # expected return value if everything went well; 2 represents
+    # 'return' being used in the test script).
+    set returnCodes [list 0 2]
+
+    # Set the default error code pattern
+    set errorCode "*"
+
+    # The old test format can't have a 3rd argument (constraints or
+    # script) that starts with '-'.
+    if {[string match -* [lindex $args 0]] || ([llength $args] <= 1)} {
+	if {[llength $args] == 1} {
+	    set list [SubstArguments [lindex $args 0]]
+	    foreach {element value} $list {
+		set testAttributes($element) $value
+	    }
+	    foreach item {constraints match setup body cleanup \
+		    result returnCodes errorCode output errorOutput} {
+		if {[info exists testAttributes(-$item)]} {
+		    set testAttributes(-$item) [uplevel 1 \
+			    ::concat $testAttributes(-$item)]
+		}
+	    }
+	} else {
+	    array set testAttributes $args
+	}
+
+	set validFlags {-setup -cleanup -body -result -returnCodes \
+		-errorCode -match -output -errorOutput -constraints}
+
+	foreach flag [array names testAttributes] {
+	    if {$flag ni $validFlags} {
+		incr testLevel -1
+		set sorted [lsort $validFlags]
+		set options [join [lrange $sorted 0 end-1] ", "]
+		append options ", or [lindex $sorted end]"
+		return -code error "bad option \"$flag\": must be $options"
+	    }
+	}
+
+	# store whatever the user gave us
+	foreach item [array names testAttributes] {
+	    set [string trimleft $item "-"] $testAttributes($item)
+	}
+
+	# Check the values supplied for -match
+	variable CustomMatch
+	if {$match ni [array names CustomMatch]} {
+	    incr testLevel -1
+	    set sorted [lsort [array names CustomMatch]]
+	    set values [join [lrange $sorted 0 end-1] ", "]
+	    append values ", or [lindex $sorted end]"
+	    return -code error "bad -match value \"$match\":\
+		    must be $values"
+	}
+
+	# Replace symbolic valies supplied for -returnCodes
+	foreach {strcode numcode} {ok 0 normal 0 error 1 return 2 break 3 continue 4} {
+	    set returnCodes [string map -nocase [list $strcode $numcode] $returnCodes]
+	}
+        # errorCode without returnCode 1 is meaningless
+        if {$errorCode ne "*" && 1 ni $returnCodes} {
+            set returnCodes 1
+        }
+    } else {
+	# This is parsing for the old test command format; it is here
+	# for backward compatibility.
+	set result [lindex $args end]
+	if {[llength $args] == 2} {
+	    set body [lindex $args 0]
+	} elseif {[llength $args] == 3} {
+	    set constraints [lindex $args 0]
+	    set body [lindex $args 1]
+	} else {
+	    incr testLevel -1
+	    return -code error "wrong # args:\
+		    should be \"test name desc ?options?\""
+	}
+    }
+
+    if {[Skipped $name $constraints]} {
+	incr testLevel -1
+	return
+    }
+
+    # Save information about the core file.
+    if {[preserveCore]} {
+	if {[file exists [file join [workingDirectory] core]]} {
+	    set coreModTime [file mtime [file join [workingDirectory] core]]
+	}
+    }
+
+    # First, run the setup script
+    set code [catch {uplevel 1 $setup} setupMsg]
+    if {$code == 1} {
+	set errorInfo(setup) $::errorInfo
+	set errorCodeRes(setup) $::errorCode
+    }
+    set setupFailure [expr {$code != 0}]
+
+    # Only run the test body if the setup was successful
+    if {!$setupFailure} {
+
+	# Register startup time
+	if {[IsVerbose msec] || [IsVerbose usec]} {
+	    set timeStart [clock microseconds]
+	}
+
+	# Verbose notification of $body start
+	if {[IsVerbose start]} {
+	    puts [outputChannel] "---- $name start"
+	    flush [outputChannel]
+	}
+
+	set command [list [namespace origin RunTest] $name $body]
+	if {[info exists output] || [info exists errorOutput]} {
+	    set testResult [uplevel 1 [list [namespace origin Eval] $command 0]]
+	} else {
+	    set testResult [uplevel 1 [list [namespace origin Eval] $command 1]]
+	}
+	lassign $testResult actualAnswer returnCode
+	if {$returnCode == 1} {
+	    set errorInfo(body) $::errorInfo
+	    set errorCodeRes(body) $::errorCode
+	}
+    }
+
+    # check if the return code matched the expected return code
+    set codeFailure 0
+    if {!$setupFailure && ($returnCode ni $returnCodes)} {
+	set codeFailure 1
+    }
+    set errorCodeFailure 0
+    if {!$setupFailure && !$codeFailure && $returnCode == 1 && \
+                ![string match $errorCode $errorCodeRes(body)]} {
+	set errorCodeFailure 1
+    }
+
+    # If expected output/error strings exist, we have to compare
+    # them.  If the comparison fails, then so did the test.
+    set outputFailure 0
+    variable outData
+    if {[info exists output] && !$codeFailure} {
+	if {[set outputCompare [catch {
+	    CompareStrings $outData $output $match
+	} outputMatch]] == 0} {
+	    set outputFailure [expr {!$outputMatch}]
+	} else {
+	    set outputFailure 1
+	}
+    }
+
+    set errorFailure 0
+    variable errData
+    if {[info exists errorOutput] && !$codeFailure} {
+	if {[set errorCompare [catch {
+	    CompareStrings $errData $errorOutput $match
+	} errorMatch]] == 0} {
+	    set errorFailure [expr {!$errorMatch}]
+	} else {
+	    set errorFailure 1
+	}
+    }
+
+    # check if the answer matched the expected answer
+    # Only check if we ran the body of the test (no setup failure)
+    if {$setupFailure || $codeFailure} {
+	set scriptFailure 0
+    } elseif {[set scriptCompare [catch {
+	CompareStrings $actualAnswer $result $match
+    } scriptMatch]] == 0} {
+	set scriptFailure [expr {!$scriptMatch}]
+    } else {
+	set scriptFailure 1
+    }
+
+    # Always run the cleanup script
+    set code [catch {uplevel 1 $cleanup} cleanupMsg]
+    if {$code == 1} {
+	set errorInfo(cleanup) $::errorInfo
+	set errorCodeRes(cleanup) $::errorCode
+    }
+    set cleanupFailure [expr {$code != 0}]
+
+    set coreFailure 0
+    set coreMsg ""
+    # check for a core file first - if one was created by the test,
+    # then the test failed
+    if {[preserveCore]} {
+	if {[file exists [file join [workingDirectory] core]]} {
+	    # There's only a test failure if there is a core file
+	    # and (1) there previously wasn't one or (2) the new
+	    # one is different from the old one.
+	    if {[info exists coreModTime]} {
+		if {$coreModTime != [file mtime \
+			[file join [workingDirectory] core]]} {
+		    set coreFailure 1
+		}
+	    } else {
+		set coreFailure 1
+	    }
+
+	    if {([preserveCore] > 1) && ($coreFailure)} {
+		append coreMsg "\nMoving file to:\
+		    [file join [temporaryDirectory] core-$name]"
+		catch {file rename -force -- \
+		    [file join [workingDirectory] core] \
+		    [file join [temporaryDirectory] core-$name]
+		} msg
+		if {$msg ne {}} {
+		    append coreMsg "\nError:\
+			Problem renaming core file: $msg"
+		}
+	    }
+	}
+    }
+
+    if {[IsVerbose msec] || [IsVerbose usec]} {
+	set t [expr {[clock microseconds] - $timeStart}]
+	if {[IsVerbose usec]} {
+	    puts [outputChannel] "++++ $name took $t μs"
+	}
+	if {[IsVerbose msec]} {
+	    puts [outputChannel] "++++ $name took [expr {round($t/1000.)}] ms"
+	}
+    }
+
+    # if we didn't experience any failures, then we passed
+    variable numTests
+    if {!($setupFailure || $cleanupFailure || $coreFailure
+	    || $outputFailure || $errorFailure || $codeFailure
+	    || $errorCodeFailure || $scriptFailure)} {
+	if {$testLevel == 1} {
+	    incr numTests(Passed)
+	    if {[IsVerbose pass]} {
+		puts [outputChannel] "++++ $name PASSED"
+	    }
+	}
+	incr testLevel -1
+	return
+    }
+
+    # We know the test failed, tally it...
+    if {$testLevel == 1} {
+	incr numTests(Failed)
+    }
+
+    # ... then report according to the type of failure
+    variable currentFailure true
+    if {![IsVerbose body]} {
+	set body ""
+    }
+    puts [outputChannel] "\n"
+    if {[IsVerbose line]} {
+	if {![catch {set testFrame [info frame -1]}] &&
+		[dict get $testFrame type] eq "source"} {
+	    set testFile [dict get $testFrame file]
+	    set testLine [dict get $testFrame line]
+	} else {
+	    set testFile [file normalize [uplevel 1 {info script}]]
+	    if {[file readable $testFile]} {
+		set testFd [open $testFile r]
+		set testLine [expr {[lsearch -regexp \
+			[split [read $testFd] "\n"] \
+			"^\[ \t\]*test [string map {. \\.} $name] "] + 1}]
+		close $testFd
+	    }
+	}
+	if {[info exists testLine]} {
+	    puts [outputChannel] "$testFile:$testLine: error: test failed:\
+		    $name [string trim $description]"
+	}
+    }
+    puts [outputChannel] "==== $name\
+	    [string trim $description] FAILED"
+    if {[string length $body]} {
+	puts [outputChannel] "==== Contents of test case:"
+	puts [outputChannel] $body
+    }
+    if {$setupFailure} {
+	puts [outputChannel] "---- Test setup\
+		failed:\n$setupMsg"
+	if {[info exists errorInfo(setup)]} {
+	    puts [outputChannel] "---- errorInfo(setup): $errorInfo(setup)"
+	    puts [outputChannel] "---- errorCode(setup): $errorCodeRes(setup)"
+	}
+    }
+    if {$scriptFailure} {
+	if {$scriptCompare} {
+	    puts [outputChannel] "---- Error testing result: $scriptMatch"
+	} else {
+	    puts [outputChannel] "---- Result was:\n$actualAnswer"
+	    puts [outputChannel] "---- Result should have been\
+		    ($match matching):\n$result"
+	}
+    }
+    if {$errorCodeFailure} {
+	puts [outputChannel] "---- Error code was: '$errorCodeRes(body)'"
+	puts [outputChannel] "---- Error code should have been: '$errorCode'"
+    }
+    if {$codeFailure} {
+	switch -- $returnCode {
+	    0 { set msg "Test completed normally" }
+	    1 { set msg "Test generated error" }
+	    2 { set msg "Test generated return exception" }
+	    3 { set msg "Test generated break exception" }
+	    4 { set msg "Test generated continue exception" }
+	    default { set msg "Test generated exception" }
+	}
+	puts [outputChannel] "---- $msg; Return code was: $returnCode"
+	puts [outputChannel] "---- Return code should have been\
+		one of: $returnCodes"
+	if {[IsVerbose error]} {
+	    if {[info exists errorInfo(body)] && (1 ni $returnCodes)} {
+		puts [outputChannel] "---- errorInfo: $errorInfo(body)"
+		puts [outputChannel] "---- errorCode: $errorCodeRes(body)"
+	    }
+	}
+    }
+    if {$outputFailure} {
+	if {$outputCompare} {
+	    puts [outputChannel] "---- Error testing output: $outputMatch"
+	} else {
+	    puts [outputChannel] "---- Output was:\n$outData"
+	    puts [outputChannel] "---- Output should have been\
+		    ($match matching):\n$output"
+	}
+    }
+    if {$errorFailure} {
+	if {$errorCompare} {
+	    puts [outputChannel] "---- Error testing errorOutput: $errorMatch"
+	} else {
+	    puts [outputChannel] "---- Error output was:\n$errData"
+	    puts [outputChannel] "---- Error output should have\
+		    been ($match matching):\n$errorOutput"
+	}
+    }
+    if {$cleanupFailure} {
+	puts [outputChannel] "---- Test cleanup failed:\n$cleanupMsg"
+	if {[info exists errorInfo(cleanup)]} {
+	    puts [outputChannel] "---- errorInfo(cleanup): $errorInfo(cleanup)"
+	    puts [outputChannel] "---- errorCode(cleanup): $errorCodeRes(cleanup)"
+	}
+    }
+    if {$coreFailure} {
+	puts [outputChannel] "---- Core file produced while running\
+		test!  $coreMsg"
+    }
+    puts [outputChannel] "==== $name FAILED\n"
+
+    incr testLevel -1
+    return
+}
+
+# Skipped --
+#
+# Given a test name and it constraints, returns a boolean indicating
+# whether the current configuration says the test should be skipped.
+#
+# Side Effects:  Maintains tally of total tests seen and tests skipped.
+#
+proc tcltest::Skipped {name constraints} {
+    variable testLevel
+    variable numTests
+    variable testConstraints
+
+    if {$testLevel == 1} {
+	incr numTests(Total)
+    }
+    # skip the test if it's name matches an element of skip
+    foreach pattern [skip] {
+	if {[string match $pattern $name]} {
+	    if {$testLevel == 1} {
+		incr numTests(Skipped)
+		DebugDo 1 {AddToSkippedBecause userSpecifiedSkip}
+	    }
+	    return 1
+	}
+    }
+    # skip the test if it's name doesn't match any element of match
+    set ok 0
+    foreach pattern [match] {
+	if {[string match $pattern $name]} {
+	    set ok 1
+	    break
+	}
+    }
+    if {!$ok} {
+	if {$testLevel == 1} {
+	    incr numTests(Skipped)
+	    DebugDo 1 {AddToSkippedBecause userSpecifiedNonMatch}
+	}
+	return 1
+    }
+    if {$constraints eq {}} {
+	# If we're limited to the listed constraints and there aren't
+	# any listed, then we shouldn't run the test.
+	if {[limitConstraints]} {
+	    AddToSkippedBecause userSpecifiedLimitConstraint
+	    if {$testLevel == 1} {
+		incr numTests(Skipped)
+	    }
+	    return 1
+	}
+    } else {
+	# "constraints" argument exists;
+	# make sure that the constraints are satisfied.
+
+	set doTest 0
+	if {[string match {*[$\[]*} $constraints] != 0} {
+	    # full expression, e.g. {$foo > [info tclversion]}
+	    catch {set doTest [uplevel #0 [list expr $constraints]]}
+	} elseif {[regexp {[^.:_a-zA-Z0-9 \n\r\t]+} $constraints] != 0} {
+	    # something like {a || b} should be turned into
+	    # $testConstraints(a) || $testConstraints(b).
+	    regsub -all {[.\w]+} $constraints {$testConstraints(&)} c
+	    catch {set doTest [eval [list expr $c]]}
+	} elseif {![catch {llength $constraints}]} {
+	    # just simple constraints such as {unixOnly fonts}.
+	    set doTest 1
+	    foreach constraint $constraints {
+		if {(![info exists testConstraints($constraint)]) \
+			|| (!$testConstraints($constraint))} {
+		    set doTest 0
+
+		    # store the constraint that kept the test from
+		    # running
+		    set constraints $constraint
+		    break
+		}
+	    }
+	}
+
+	if {!$doTest} {
+	    if {[IsVerbose skip]} {
+		puts [outputChannel] "++++ $name SKIPPED: $constraints"
+	    }
+
+	    if {$testLevel == 1} {
+		incr numTests(Skipped)
+		AddToSkippedBecause $constraints
+	    }
+	    return 1
+	}
+    }
+    return 0
+}
+
+# RunTest --
+#
+# This is where the body of a test is evaluated.  The combination of
+# [RunTest] and [Eval] allows the output and error output of the test
+# body to be captured for comparison against the expected values.
+
+proc tcltest::RunTest {name script} {
+    DebugPuts 3 "Running $name {$script}"
+
+    # If there is no "memory" command (because memory debugging isn't
+    # enabled), then don't attempt to use the command.
+
+    if {[llength [info commands memory]] == 1} {
+	memory tag $name
+    }
+
+    set code [catch {uplevel 1 $script} actualAnswer]
+
+    return [list $actualAnswer $code]
+}
+
+#####################################################################
+
+# tcltest::cleanupTestsHook --
+#
+#	This hook allows a harness that builds upon tcltest to specify
+#       additional things that should be done at cleanup.
+#
+
+if {[llength [info commands tcltest::cleanupTestsHook]] == 0} {
+    proc tcltest::cleanupTestsHook {} {}
+}
+
+# tcltest::cleanupTests --
+#
+# Remove files and dirs created using the makeFile and makeDirectory
+# commands since the last time this proc was invoked.
+#
+# Print the names of the files created without the makeFile command
+# since the tests were invoked.
+#
+# Print the number tests (total, passed, failed, and skipped) since the
+# tests were invoked.
+#
+# Restore original environment (as reported by special variable env).
+#
+# Arguments:
+#      calledFromAllFile - if 0, behave as if we are running a single
+#      test file within an entire suite of tests.  if we aren't running
+#      a single test file, then don't report status.  check for new
+#      files created during the test run and report on them.  if 1,
+#      report collated status from all the test file runs.
+#
+# Results:
+#      None.
+#
+# Side Effects:
+#      None
+#
+
+proc tcltest::cleanupTests {{calledFromAllFile 0}} {
+    variable filesMade
+    variable filesExisted
+    variable createdNewFiles
+    variable testSingleFile
+    variable numTests
+    variable numTestFiles
+    variable failFiles
+    variable skippedBecause
+    variable currentFailure
+    variable originalEnv
+    variable originalTclPlatform
+    variable coreModTime
+
+    FillFilesExisted
+    set testFileName [file tail [info script]]
+
+    # Hook to handle reporting to a parent interpreter
+    if {[llength [info commands [namespace current]::ReportToMaster]]} {
+	ReportToMaster $numTests(Total) $numTests(Passed) $numTests(Skipped) \
+	    $numTests(Failed) [array get skippedBecause] \
+	    [array get createdNewFiles]
+	set testSingleFile false
+    }
+
+    # Call the cleanup hook
+    cleanupTestsHook
+
+    # Remove files and directories created by the makeFile and
+    # makeDirectory procedures.  Record the names of files in
+    # workingDirectory that were not pre-existing, and associate them
+    # with the test file that created them.
+
+    if {!$calledFromAllFile} {
+	foreach file $filesMade {
+	    if {[file exists $file]} {
+		DebugDo 1 {Warn "cleanupTests deleting $file..."}
+		catch {file delete -force -- $file}
+	    }
+	}
+	set currentFiles {}
+	foreach file [glob -nocomplain \
+		-directory [temporaryDirectory] *] {
+	    lappend currentFiles [file tail $file]
+	}
+	set newFiles {}
+	foreach file $currentFiles {
+	    if {$file ni $filesExisted} {
+		lappend newFiles $file
+	    }
+	}
+	set filesExisted $currentFiles
+	if {[llength $newFiles] > 0} {
+	    set createdNewFiles($testFileName) $newFiles
+	}
+    }
+
+    if {$calledFromAllFile || $testSingleFile} {
+
+	# print stats
+
+	puts -nonewline [outputChannel] "$testFileName:"
+	foreach index [list "Total" "Passed" "Skipped" "Failed"] {
+	    puts -nonewline [outputChannel] \
+		    "\t$index\t$numTests($index)"
+	}
+	puts [outputChannel] ""
+
+	# print number test files sourced
+	# print names of files that ran tests which failed
+
+	if {$calledFromAllFile} {
+	    puts [outputChannel] \
+		    "Sourced $numTestFiles Test Files."
+	    set numTestFiles 0
+	    if {[llength $failFiles] > 0} {
+		puts [outputChannel] \
+			"Files with failing tests: $failFiles"
+		set failFiles {}
+	    }
+	}
+
+	# if any tests were skipped, print the constraints that kept
+	# them from running.
+
+	set constraintList [array names skippedBecause]
+	if {[llength $constraintList] > 0} {
+	    puts [outputChannel] \
+		    "Number of tests skipped for each constraint:"
+	    foreach constraint [lsort $constraintList] {
+		puts [outputChannel] \
+			"\t$skippedBecause($constraint)\t$constraint"
+		unset skippedBecause($constraint)
+	    }
+	}
+
+	# report the names of test files in createdNewFiles, and reset
+	# the array to be empty.
+
+	set testFilesThatTurded [lsort [array names createdNewFiles]]
+	if {[llength $testFilesThatTurded] > 0} {
+	    puts [outputChannel] "Warning: files left behind:"
+	    foreach testFile $testFilesThatTurded {
+		puts [outputChannel] \
+			"\t$testFile:\t$createdNewFiles($testFile)"
+		unset createdNewFiles($testFile)
+	    }
+	}
+
+	# reset filesMade, filesExisted, and numTests
+
+	set filesMade {}
+	foreach index [list "Total" "Passed" "Skipped" "Failed"] {
+	    set numTests($index) 0
+	}
+
+	# exit only if running Tk in non-interactive mode
+	# This should be changed to determine if an event
+	# loop is running, which is the real issue.
+	# Actually, this doesn't belong here at all.  A package
+	# really has no business [exit]-ing an application.
+	if {![catch {package present Tk}] && ![testConstraint interactive]} {
+	    exit
+	}
+    } else {
+
+	# if we're deferring stat-reporting until all files are sourced,
+	# then add current file to failFile list if any tests in this
+	# file failed
+
+	if {$currentFailure && ($testFileName ni $failFiles)} {
+	    lappend failFiles $testFileName
+	}
+	set currentFailure false
+
+	# restore the environment to the state it was in before this package
+	# was loaded
+
+	set newEnv {}
+	set changedEnv {}
+	set removedEnv {}
+	foreach index [array names ::env] {
+	    if {![info exists originalEnv($index)]} {
+		lappend newEnv $index
+		unset ::env($index)
+	    }
+	}
+	foreach index [array names originalEnv] {
+	    if {![info exists ::env($index)]} {
+		lappend removedEnv $index
+		set ::env($index) $originalEnv($index)
+	    } elseif {$::env($index) ne $originalEnv($index)} {
+		lappend changedEnv $index
+		set ::env($index) $originalEnv($index)
+	    }
+	}
+	if {[llength $newEnv] > 0} {
+	    puts [outputChannel] \
+		    "env array elements created:\t$newEnv"
+	}
+	if {[llength $changedEnv] > 0} {
+	    puts [outputChannel] \
+		    "env array elements changed:\t$changedEnv"
+	}
+	if {[llength $removedEnv] > 0} {
+	    puts [outputChannel] \
+		    "env array elements removed:\t$removedEnv"
+	}
+
+	set changedTclPlatform {}
+	foreach index [array names originalTclPlatform] {
+	    if {$::tcl_platform($index) \
+		    != $originalTclPlatform($index)} {
+		lappend changedTclPlatform $index
+		set ::tcl_platform($index) $originalTclPlatform($index)
+	    }
+	}
+	if {[llength $changedTclPlatform] > 0} {
+	    puts [outputChannel] "tcl_platform array elements\
+		    changed:\t$changedTclPlatform"
+	}
+
+	if {[file exists [file join [workingDirectory] core]]} {
+	    if {[preserveCore] > 1} {
+		puts "rename core file (> 1)"
+		puts [outputChannel] "produced core file! \
+			Moving file to: \
+			[file join [temporaryDirectory] core-$testFileName]"
+		catch {file rename -force -- \
+			[file join [workingDirectory] core] \
+			[file join [temporaryDirectory] core-$testFileName]
+		} msg
+		if {$msg ne {}} {
+		    PrintError "Problem renaming file: $msg"
+		}
+	    } else {
+		# Print a message if there is a core file and (1) there
+		# previously wasn't one or (2) the new one is different
+		# from the old one.
+
+		if {[info exists coreModTime]} {
+		    if {$coreModTime != [file mtime \
+			    [file join [workingDirectory] core]]} {
+			puts [outputChannel] "A core file was created!"
+		    }
+		} else {
+		    puts [outputChannel] "A core file was created!"
+		}
+	    }
+	}
+    }
+    flush [outputChannel]
+    flush [errorChannel]
+    return
+}
+
+#####################################################################
+
+# Procs that determine which tests/test files to run
+
+# tcltest::GetMatchingFiles
+#
+#       Looks at the patterns given to match and skip files and uses
+#	them to put together a list of the tests that will be run.
+#
+# Arguments:
+#       directory to search
+#
+# Results:
+#       The constructed list is returned to the user.  This will
+#	primarily be used in 'all.tcl' files.  It is used in
+#	runAllTests.
+#
+# Side Effects:
+#       None
+
+# a lower case version is needed for compatibility with tcltest 1.0
+proc tcltest::getMatchingFiles args {GetMatchingFiles {*}$args}
+
+proc tcltest::GetMatchingFiles { args } {
+    if {[llength $args]} {
+	set dirList $args
+    } else {
+	# Finding tests only in [testsDirectory] is normal operation.
+	# This procedure is written to accept multiple directory arguments
+	# only to satisfy version 1 compatibility.
+	set dirList [list [testsDirectory]]
+    }
+
+    set matchingFiles [list]
+    foreach directory $dirList {
+
+	# List files in $directory that match patterns to run.
+	set matchFileList [list]
+	foreach match [matchFiles] {
+	    set matchFileList [concat $matchFileList \
+		    [glob -directory $directory -types {b c f p s} \
+		    -nocomplain -- $match]]
+	}
+
+	# List files in $directory that match patterns to skip.
+	set skipFileList [list]
+	foreach skip [skipFiles] {
+	    set skipFileList [concat $skipFileList \
+		    [glob -directory $directory -types {b c f p s} \
+		    -nocomplain -- $skip]]
+	}
+
+	# Add to result list all files in match list and not in skip list
+	foreach file $matchFileList {
+	    if {$file ni $skipFileList} {
+		lappend matchingFiles $file
+	    }
+	}
+    }
+
+    if {[llength $matchingFiles] == 0} {
+	PrintError "No test files remain after applying your match and\
+		skip patterns!"
+    }
+    return $matchingFiles
+}
+
+# tcltest::GetMatchingDirectories --
+#
+#	Looks at the patterns given to match and skip directories and
+#	uses them to put together a list of the test directories that we
+#	should attempt to run.  (Only subdirectories containing an
+#	"all.tcl" file are put into the list.)
+#
+# Arguments:
+#	root directory from which to search
+#
+# Results:
+#	The constructed list is returned to the user.  This is used in
+#	the primary all.tcl file.
+#
+# Side Effects:
+#       None.
+
+proc tcltest::GetMatchingDirectories {rootdir} {
+
+    # Determine the skip list first, to avoid [glob]-ing over subdirectories
+    # we're going to throw away anyway.  Be sure we skip the $rootdir if it
+    # comes up to avoid infinite loops.
+    set skipDirs [list $rootdir]
+    foreach pattern [skipDirectories] {
+	set skipDirs [concat $skipDirs [glob -directory $rootdir -types d \
+		-nocomplain -- $pattern]]
+    }
+
+    # Now step through the matching directories, prune out the skipped ones
+    # as you go.
+    set matchDirs [list]
+    foreach pattern [matchDirectories] {
+	foreach path [glob -directory $rootdir -types d -nocomplain -- \
+		$pattern] {
+	    if {$path ni $skipDirs} {
+		set matchDirs [concat $matchDirs [GetMatchingDirectories $path]]
+		if {[file exists [file join $path all.tcl]]} {
+		    lappend matchDirs $path
+		}
+	    }
+	}
+    }
+
+    if {[llength $matchDirs] == 0} {
+	DebugPuts 1 "No test directories remain after applying match\
+		and skip patterns!"
+    }
+    return [lsort $matchDirs]
+}
+
+# tcltest::runAllTests --
+#
+#	prints output and sources test files according to the match and
+#	skip patterns provided.  after sourcing test files, it goes on
+#	to source all.tcl files in matching test subdirectories.
+#
+# Arguments:
+#	shell being tested
+#
+# Results:
+#	Whether there were any failures.
+#
+# Side effects:
+#	None.
+
+proc tcltest::runAllTests { {shell ""} } {
+    variable testSingleFile
+    variable numTestFiles
+    variable numTests
+    variable failFiles
+    variable DefaultValue
+    set failFilesAccum {}
+
+    FillFilesExisted
+    if {[llength [info level 0]] == 1} {
+	set shell [interpreter]
+    }
+
+    set testSingleFile false
+
+    puts [outputChannel] "Tests running in interp:  $shell"
+    puts [outputChannel] "Tests located in:  [testsDirectory]"
+    puts [outputChannel] "Tests running in:  [workingDirectory]"
+    puts [outputChannel] "Temporary files stored in\
+	    [temporaryDirectory]"
+
+    # [file system] first available in Tcl 8.4
+    if {![catch {file system [testsDirectory]} result]
+	    && ([lindex $result 0] ne "native")} {
+	# If we aren't running in the native filesystem, then we must
+	# run the tests in a single process (via 'source'), because
+	# trying to run then via a pipe will fail since the files don't
+	# really exist.
+	singleProcess 1
+    }
+
+    if {[singleProcess]} {
+	puts [outputChannel] \
+		"Test files sourced into current interpreter"
+    } else {
+	puts [outputChannel] \
+		"Test files run in separate interpreters"
+    }
+    if {[llength [skip]] > 0} {
+	puts [outputChannel] "Skipping tests that match:  [skip]"
+    }
+    puts [outputChannel] "Running tests that match:  [match]"
+
+    if {[llength [skipFiles]] > 0} {
+	puts [outputChannel] \
+		"Skipping test files that match:  [skipFiles]"
+    }
+    if {[llength [matchFiles]] > 0} {
+	puts [outputChannel] \
+		"Only running test files that match:  [matchFiles]"
+    }
+
+    set timeCmd {clock format [clock seconds]}
+    puts [outputChannel] "Tests began at [eval $timeCmd]"
+
+    # Run each of the specified tests
+    foreach file [lsort [GetMatchingFiles]] {
+	set tail [file tail $file]
+	puts [outputChannel] $tail
+	flush [outputChannel]
+
+	if {[singleProcess]} {
+	    incr numTestFiles
+	    uplevel 1 [list ::source $file]
+	} else {
+	    # Pass along our configuration to the child processes.
+	    # EXCEPT for the -outfile, because the parent process
+	    # needs to read and process output of children.
+	    set childargv [list]
+	    foreach opt [Configure] {
+		if {$opt eq "-outfile"} {continue}
+		set value [Configure $opt]
+		# Don't bother passing default configuration options
+		if {$value eq $DefaultValue($opt)} {
+			continue
+		}
+		lappend childargv $opt $value
+	    }
+	    set cmd [linsert $childargv 0 | $shell $file]
+	    if {[catch {
+		incr numTestFiles
+		set pipeFd [open $cmd "r"]
+		while {[gets $pipeFd line] >= 0} {
+		    if {[regexp [join {
+			    {^([^:]+):\t}
+			    {Total\t([0-9]+)\t}
+			    {Passed\t([0-9]+)\t}
+			    {Skipped\t([0-9]+)\t}
+			    {Failed\t([0-9]+)}
+			    } ""] $line null testFile \
+			    Total Passed Skipped Failed]} {
+			foreach index {Total Passed Skipped Failed} {
+			    incr numTests($index) [set $index]
+			}
+			if {$Failed > 0} {
+			    lappend failFiles $testFile
+			    lappend failFilesAccum $testFile
+			}
+		    } elseif {[regexp [join {
+			    {^Number of tests skipped }
+			    {for each constraint:}
+			    {|^\t(\d+)\t(.+)$}
+			    } ""] $line match skipped constraint]} {
+			if {[string match \t* $match]} {
+			    AddToSkippedBecause $constraint $skipped
+			}
+		    } else {
+			puts [outputChannel] $line
+		    }
+		}
+		close $pipeFd
+	    } msg]} {
+		puts [outputChannel] "Test file error: $msg"
+		# append the name of the test to a list to be reported
+		# later
+		lappend testFileFailures $file
+	    }
+	}
+    }
+
+    # cleanup
+    puts [outputChannel] "\nTests ended at [eval $timeCmd]"
+    cleanupTests 1
+    if {[info exists testFileFailures]} {
+	puts [outputChannel] "\nTest files exiting with errors:  \n"
+	foreach file $testFileFailures {
+	    puts [outputChannel] "  [file tail $file]\n"
+	}
+    }
+
+    # Checking for subdirectories in which to run tests
+    foreach directory [GetMatchingDirectories [testsDirectory]] {
+	set dir [file tail $directory]
+	puts [outputChannel] [string repeat ~ 44]
+	puts [outputChannel] "$dir test began at [eval $timeCmd]\n"
+
+	uplevel 1 [list ::source [file join $directory all.tcl]]
+
+	set endTime [eval $timeCmd]
+	puts [outputChannel] "\n$dir test ended at $endTime"
+	puts [outputChannel] ""
+	puts [outputChannel] [string repeat ~ 44]
+    }
+    return [expr {[info exists testFileFailures] || [llength $failFilesAccum]}]
+}
+
+#####################################################################
+
+# Test utility procs - not used in tcltest, but may be useful for
+# testing.
+
+# tcltest::loadTestedCommands --
+#
+#     Uses the specified script to load the commands to test. Allowed to
+#     be empty, as the tested commands could have been compiled into the
+#     interpreter.
+#
+# Arguments
+#     none
+#
+# Results
+#     none
+#
+# Side Effects:
+#     none.
+
+proc tcltest::loadTestedCommands {} {
+    return [uplevel 1 [loadScript]]
+}
+
+# tcltest::saveState --
+#
+#	Save information regarding what procs and variables exist.
+#
+# Arguments:
+#	none
+#
+# Results:
+#	Modifies the variable saveState
+#
+# Side effects:
+#	None.
+
+proc tcltest::saveState {} {
+    variable saveState
+    uplevel 1 [list ::set [namespace which -variable saveState]] \
+	    {[::list [::info procs] [::info vars]]}
+    DebugPuts  2 "[lindex [info level 0] 0]: $saveState"
+    return
+}
+
+# tcltest::restoreState --
+#
+#	Remove procs and variables that didn't exist before the call to
+#       [saveState].
+#
+# Arguments:
+#	none
+#
+# Results:
+#	Removes procs and variables from your environment if they don't
+#	exist in the saveState variable.
+#
+# Side effects:
+#	None.
+
+proc tcltest::restoreState {} {
+    variable saveState
+    foreach p [uplevel 1 {::info procs}] {
+	if {($p ni [lindex $saveState 0]) && ("[namespace current]::$p" ne
+		[uplevel 1 [list ::namespace origin $p]])} {
+
+	    DebugPuts 2 "[lindex [info level 0] 0]: Removing proc $p"
+	    uplevel 1 [list ::catch [list ::rename $p {}]]
+	}
+    }
+    foreach p [uplevel 1 {::info vars}] {
+	if {$p ni [lindex $saveState 1]} {
+	    DebugPuts 2 "[lindex [info level 0] 0]:\
+		    Removing variable $p"
+	    uplevel 1 [list ::catch [list ::unset $p]]
+	}
+    }
+    return
+}
+
+# tcltest::normalizeMsg --
+#
+#	Removes "extra" newlines from a string.
+#
+# Arguments:
+#	msg        String to be modified
+#
+# Results:
+#	string with extra newlines removed
+#
+# Side effects:
+#	None.
+
+proc tcltest::normalizeMsg {msg} {
+    regsub "\n$" [string tolower $msg] "" msg
+    set msg [string map [list "\n\n" "\n"] $msg]
+    return [string map [list "\n\}" "\}"] $msg]
+}
+
+# tcltest::makeFile --
+#
+# Create a new file with the name <name>, and write <contents> to it.
+#
+# If this file hasn't been created via makeFile since the last time
+# cleanupTests was called, add it to the $filesMade list, so it will be
+# removed by the next call to cleanupTests.
+#
+# Arguments:
+#	contents        content of the new file
+#       name            name of the new file
+#       directory       directory name for new file
+#
+# Results:
+#	absolute path to the file created
+#
+# Side effects:
+#	None.
+
+proc tcltest::makeFile {contents name {directory ""}} {
+    variable filesMade
+    FillFilesExisted
+
+    if {[llength [info level 0]] == 3} {
+	set directory [temporaryDirectory]
+    }
+
+    set fullName [file join $directory $name]
+
+    DebugPuts 3 "[lindex [info level 0] 0]:\
+	     putting ``$contents'' into $fullName"
+
+    set fd [open $fullName w]
+    chan configure $fd -translation lf
+    if {[string index $contents end] eq "\n"} {
+	puts -nonewline $fd $contents
+    } else {
+	puts $fd $contents
+    }
+    close $fd
+
+    if {$fullName ni $filesMade} {
+	lappend filesMade $fullName
+    }
+    return $fullName
+}
+
+# tcltest::removeFile --
+#
+#	Removes the named file from the filesystem
+#
+# Arguments:
+#	name          file to be removed
+#       directory     directory from which to remove file
+#
+# Results:
+#	return value from [file delete]
+#
+# Side effects:
+#	None.
+
+proc tcltest::removeFile {name {directory ""}} {
+    variable filesMade
+    FillFilesExisted
+    if {[llength [info level 0]] == 2} {
+	set directory [temporaryDirectory]
+    }
+    set fullName [file join $directory $name]
+    DebugPuts 3 "[lindex [info level 0] 0]: removing $fullName"
+    set idx [lsearch -exact $filesMade $fullName]
+    set filesMade [lreplace $filesMade $idx $idx]
+    if {$idx == -1} {
+	DebugDo 1 {
+	    Warn "removeFile removing \"$fullName\":\n  not created by makeFile"
+	}
+    }
+    if {![file isfile $fullName]} {
+	DebugDo 1 {
+	    Warn "removeFile removing \"$fullName\":\n  not a file"
+	}
+    }
+    if {[catch {file delete -- $fullName} msg ]} {
+	DebugDo 1 {
+	    Warn "removeFile removing \"$fullName\":\n  failed: $msg"
+	}
+    }
+    return
+}
+
+# tcltest::makeDirectory --
+#
+# Create a new dir with the name <name>.
+#
+# If this dir hasn't been created via makeDirectory since the last time
+# cleanupTests was called, add it to the $directoriesMade list, so it
+# will be removed by the next call to cleanupTests.
+#
+# Arguments:
+#       name            name of the new directory
+#       directory       directory in which to create new dir
+#
+# Results:
+#	absolute path to the directory created
+#
+# Side effects:
+#	None.
+
+proc tcltest::makeDirectory {name {directory ""}} {
+    variable filesMade
+    FillFilesExisted
+    if {[llength [info level 0]] == 2} {
+	set directory [temporaryDirectory]
+    }
+    set fullName [file join $directory $name]
+    DebugPuts 3 "[lindex [info level 0] 0]: creating $fullName"
+    file mkdir $fullName
+    if {$fullName ni $filesMade} {
+	lappend filesMade $fullName
+    }
+    return $fullName
+}
+
+# tcltest::removeDirectory --
+#
+#	Removes a named directory from the file system.
+#
+# Arguments:
+#	name          Name of the directory to remove
+#       directory     Directory from which to remove
+#
+# Results:
+#	return value from [file delete]
+#
+# Side effects:
+#	None
+
+proc tcltest::removeDirectory {name {directory ""}} {
+    variable filesMade
+    FillFilesExisted
+    if {[llength [info level 0]] == 2} {
+	set directory [temporaryDirectory]
+    }
+    set fullName [file join $directory $name]
+    DebugPuts 3 "[lindex [info level 0] 0]: deleting $fullName"
+    set idx [lsearch -exact $filesMade $fullName]
+    set filesMade [lreplace $filesMade $idx $idx]
+    if {$idx == -1} {
+	DebugDo 1 {
+	    Warn "removeDirectory removing \"$fullName\":\n  not created\
+		    by makeDirectory"
+	}
+    }
+    if {![file isdirectory $fullName]} {
+	DebugDo 1 {
+	    Warn "removeDirectory removing \"$fullName\":\n  not a directory"
+	}
+    }
+    return [file delete -force -- $fullName]
+}
+
+# tcltest::viewFile --
+#
+#	reads the content of a file and returns it
+#
+# Arguments:
+#	name of the file to read
+#       directory in which file is located
+#
+# Results:
+#	content of the named file
+#
+# Side effects:
+#	None.
+
+proc tcltest::viewFile {name {directory ""}} {
+    FillFilesExisted
+    if {[llength [info level 0]] == 2} {
+	set directory [temporaryDirectory]
+    }
+    set fullName [file join $directory $name]
+    set f [open $fullName]
+    set data [read -nonewline $f]
+    close $f
+    return $data
+}
+
+# tcltest::bytestring --
+#
+# Construct a string that consists of the requested sequence of bytes,
+# as opposed to a string of properly formed UTF-8 characters.
+# This allows the tester to
+# 1. Create denormalized or improperly formed strings to pass to C
+#    procedures that are supposed to accept strings with embedded NULL
+#    bytes.
+# 2. Confirm that a string result has a certain pattern of bytes, for
+#    instance to confirm that "\xe0\0" in a Tcl script is stored
+#    internally in UTF-8 as the sequence of bytes "\xc3\xa0\xc0\x80".
+#
+# Generally, it's a bad idea to examine the bytes in a Tcl string or to
+# construct improperly formed strings in this manner, because it involves
+# exposing that Tcl uses UTF-8 internally.
+#
+# Arguments:
+#	string being converted
+#
+# Results:
+#	result fom encoding
+#
+# Side effects:
+#	None
+
+proc tcltest::bytestring {string} {
+    return [encoding convertfrom identity $string]
+}
+
+# tcltest::OpenFiles --
+#
+#	used in io tests, uses testchannel
+#
+# Arguments:
+#	None.
+#
+# Results:
+#	???
+#
+# Side effects:
+#	None.
+
+proc tcltest::OpenFiles {} {
+    if {[catch {testchannel open} result]} {
+	return {}
+    }
+    return $result
+}
+
+# tcltest::LeakFiles --
+#
+#	used in io tests, uses testchannel
+#
+# Arguments:
+#	None.
+#
+# Results:
+#	???
+#
+# Side effects:
+#	None.
+
+proc tcltest::LeakFiles {old} {
+    if {[catch {testchannel open} new]} {
+	return {}
+    }
+    set leak {}
+    foreach p $new {
+	if {$p ni $old} {
+	    lappend leak $p
+	}
+    }
+    return $leak
+}
+
+#
+# Internationalization / ISO support procs     -- dl
+#
+
+# tcltest::SetIso8859_1_Locale --
+#
+#	used in cmdIL.test, uses testlocale
+#
+# Arguments:
+#	None.
+#
+# Results:
+#	None.
+#
+# Side effects:
+#	None.
+
+proc tcltest::SetIso8859_1_Locale {} {
+    variable previousLocale
+    variable isoLocale
+    if {[info commands testlocale] != ""} {
+	set previousLocale [testlocale ctype]
+	testlocale ctype $isoLocale
+    }
+    return
+}
+
+# tcltest::RestoreLocale --
+#
+#	used in cmdIL.test, uses testlocale
+#
+# Arguments:
+#	None.
+#
+# Results:
+#	None.
+#
+# Side effects:
+#	None.
+
+proc tcltest::RestoreLocale {} {
+    variable previousLocale
+    if {[info commands testlocale] != ""} {
+	testlocale ctype $previousLocale
+    }
+    return
+}
+
+# tcltest::threadReap --
+#
+#	Kill all threads except for the main thread.
+#	Do nothing if testthread is not defined.
+#
+# Arguments:
+#	none.
+#
+# Results:
+#	Returns the number of existing threads.
+#
+# Side Effects:
+#       none.
+#
+
+proc tcltest::threadReap {} {
+    if {[info commands testthread] ne {}} {
+
+	# testthread built into tcltest
+
+	testthread errorproc ThreadNullError
+	while {[llength [testthread names]] > 1} {
+	    foreach tid [testthread names] {
+		if {$tid != [mainThread]} {
+		    catch {
+			testthread send -async $tid {testthread exit}
+		    }
+		}
+	    }
+	    ## Enter a bit a sleep to give the threads enough breathing
+	    ## room to kill themselves off, otherwise the end up with a
+	    ## massive queue of repeated events
+	    after 1
+	}
+	testthread errorproc ThreadError
+	return [llength [testthread names]]
+    } elseif {[info commands thread::id] ne {}} {
+
+	# Thread extension
+
+	thread::errorproc ThreadNullError
+	while {[llength [thread::names]] > 1} {
+	    foreach tid [thread::names] {
+		if {$tid != [mainThread]} {
+		    catch {thread::send -async $tid {thread::exit}}
+		}
+	    }
+	    ## Enter a bit a sleep to give the threads enough breathing
+	    ## room to kill themselves off, otherwise the end up with a
+	    ## massive queue of repeated events
+	    after 1
+	}
+	thread::errorproc ThreadError
+	return [llength [thread::names]]
+    } else {
+	return 1
+    }
+    return 0
+}
+
+# Initialize the constraints and set up command line arguments
+namespace eval tcltest {
+    # Define initializers for all the built-in contraint definitions
+    DefineConstraintInitializers
+
+    # Set up the constraints in the testConstraints array to be lazily
+    # initialized by a registered initializer, or by "false" if no
+    # initializer is registered.
+    trace add variable testConstraints read [namespace code SafeFetch]
+
+    # Only initialize constraints at package load time if an
+    # [initConstraintsHook] has been pre-defined.  This is only
+    # for compatibility support.  The modern way to add a custom
+    # test constraint is to just call the [testConstraint] command
+    # straight away, without all this "hook" nonsense.
+    if {[namespace current] eq
+	    [namespace qualifiers [namespace which initConstraintsHook]]} {
+	InitConstraints
+    } else {
+	proc initConstraintsHook {} {}
+    }
+
+    # Define the standard match commands
+    customMatch exact	[list string equal]
+    customMatch glob	[list string match]
+    customMatch regexp	[list regexp --]
+
+    # If the TCLTEST_OPTIONS environment variable exists, configure
+    # tcltest according to the option values it specifies.  This has
+    # the effect of resetting tcltest's default configuration.
+    proc ConfigureFromEnvironment {} {
+	upvar #0 env(TCLTEST_OPTIONS) options
+	if {[catch {llength $options} msg]} {
+	    Warn "invalid TCLTEST_OPTIONS \"$options\":\n  invalid\
+		    Tcl list: $msg"
+	    return
+	}
+	if {[llength $options] % 2} {
+	    Warn "invalid TCLTEST_OPTIONS: \"$options\":\n  should be\
+		    -option value ?-option value ...?"
+	    return
+	}
+	if {[catch {Configure {*}$options} msg]} {
+	    Warn "invalid TCLTEST_OPTIONS: \"$options\":\n  $msg"
+	    return
+	}
+    }
+    if {[info exists ::env(TCLTEST_OPTIONS)]} {
+	ConfigureFromEnvironment
+    }
+
+    proc LoadTimeCmdLineArgParsingRequired {} {
+	set required false
+	if {[info exists ::argv] && ("-help" in $::argv)} {
+	    # The command line asks for -help, so give it (and exit)
+	    # right now.  ([configure] does not process -help)
+	    set required true
+	}
+	foreach hook { PrintUsageInfoHook processCmdLineArgsHook
+			processCmdLineArgsAddFlagsHook } {
+	    if {[namespace current] eq
+		    [namespace qualifiers [namespace which $hook]]} {
+		set required true
+	    } else {
+		proc $hook args {}
+	    }
+	}
+	return $required
+    }
+
+    # Only initialize configurable options from the command line arguments
+    # at package load time if necessary for backward compatibility.  This
+    # lets the tcltest user call [configure] for themselves if they wish.
+    # Traces are established for auto-configuration from the command line
+    # if any configurable options are accessed before the user calls
+    # [configure].
+    if {[LoadTimeCmdLineArgParsingRequired]} {
+	ProcessCmdLineArgs
+    } else {
+	EstablishAutoConfigureTraces
+    }
+
+    package provide [namespace tail [namespace current]] $Version
+}

Added: trunk/Master/tlpkg/tltcl/lib/tcl8/8.6/http-2.9.1.tm
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tcl8/8.6/http-2.9.1.tm	                        (rev 0)
+++ trunk/Master/tlpkg/tltcl/lib/tcl8/8.6/http-2.9.1.tm	2020-03-17 20:46:21 UTC (rev 54375)
@@ -0,0 +1,3427 @@
+# http.tcl --
+#
+#	Client-side HTTP for GET, POST, and HEAD commands. These routines can
+#	be used in untrusted code that uses the Safesock security policy.
+#	These procedures use a callback interface to avoid using vwait, which
+#	is not defined in the safe base.
+#
+# See the file "license.terms" for information on usage and redistribution of
+# this file, and for a DISCLAIMER OF ALL WARRANTIES.
+
+package require Tcl 8.6-
+# Keep this in sync with pkgIndex.tcl and with the install directories in
+# Makefiles
+package provide http 2.9.1
+
+namespace eval http {
+    # Allow resourcing to not clobber existing data
+
+    variable http
+    if {![info exists http]} {
+	array set http {
+	    -accept */*
+	    -pipeline 1
+	    -postfresh 0
+	    -proxyhost {}
+	    -proxyport {}
+	    -proxyfilter http::ProxyRequired
+	    -repost 0
+	    -urlencoding utf-8
+	    -zip 1
+	}
+	# We need a useragent string of this style or various servers will
+	# refuse to send us compressed content even when we ask for it. This
+	# follows the de-facto layout of user-agent strings in current browsers.
+	# Safe interpreters do not have ::tcl_platform(os) or
+	# ::tcl_platform(osVersion).
+	if {[interp issafe]} {
+	    set http(-useragent) "Mozilla/5.0\
+		(Windows; U;\
+		Windows NT 10.0)\
+		http/[package provide http] Tcl/[package provide Tcl]"
+	} else {
+	    set http(-useragent) "Mozilla/5.0\
+		([string totitle $::tcl_platform(platform)]; U;\
+		$::tcl_platform(os) $::tcl_platform(osVersion))\
+		http/[package provide http] Tcl/[package provide Tcl]"
+	}
+    }
+
+    proc init {} {
+	# Set up the map for quoting chars. RFC3986 Section 2.3 say percent
+	# encode all except: "... percent-encoded octets in the ranges of
+	# ALPHA (%41-%5A and %61-%7A), DIGIT (%30-%39), hyphen (%2D), period
+	# (%2E), underscore (%5F), or tilde (%7E) should not be created by URI
+	# producers ..."
+	for {set i 0} {$i <= 256} {incr i} {
+	    set c [format %c $i]
+	    if {![string match {[-._~a-zA-Z0-9]} $c]} {
+		set map($c) %[format %.2X $i]
+	    }
+	}
+	# These are handled specially
+	set map(\n) %0D%0A
+	variable formMap [array get map]
+
+	# Create a map for HTTP/1.1 open sockets
+	variable socketMapping
+	variable socketRdState
+	variable socketWrState
+	variable socketRdQueue
+	variable socketWrQueue
+	variable socketClosing
+	variable socketPlayCmd
+	if {[info exists socketMapping]} {
+	    # Close open sockets on re-init.  Do not permit retries.
+	    foreach {url sock} [array get socketMapping] {
+		unset -nocomplain socketClosing($url)
+		unset -nocomplain socketPlayCmd($url)
+		CloseSocket $sock
+	    }
+	}
+
+	# CloseSocket should have unset the socket* arrays, one element at
+	# a time.  Now unset anything that was overlooked.
+	# Traces on "unset socketRdState(*)" will call CancelReadPipeline and
+	# cancel any queued responses.
+	# Traces on "unset socketWrState(*)" will call CancelWritePipeline and
+	# cancel any queued requests.
+	array unset socketMapping
+	array unset socketRdState
+	array unset socketWrState
+	array unset socketRdQueue
+	array unset socketWrQueue
+	array unset socketClosing
+	array unset socketPlayCmd
+	array set socketMapping {}
+	array set socketRdState {}
+	array set socketWrState {}
+	array set socketRdQueue {}
+	array set socketWrQueue {}
+	array set socketClosing {}
+	array set socketPlayCmd {}
+    }
+    init
+
+    variable urlTypes
+    if {![info exists urlTypes]} {
+	set urlTypes(http) [list 80 ::socket]
+    }
+
+    variable encodings [string tolower [encoding names]]
+    # This can be changed, but iso8859-1 is the RFC standard.
+    variable defaultCharset
+    if {![info exists defaultCharset]} {
+	set defaultCharset "iso8859-1"
+    }
+
+    # Force RFC 3986 strictness in geturl url verification?
+    variable strict
+    if {![info exists strict]} {
+	set strict 1
+    }
+
+    # Let user control default keepalive for compatibility
+    variable defaultKeepalive
+    if {![info exists defaultKeepalive]} {
+	set defaultKeepalive 0
+    }
+
+    namespace export geturl config reset wait formatQuery quoteString
+    namespace export register unregister registerError
+    # - Useful, but not exported: data, size, status, code, cleanup, error,
+    #   meta, ncode, mapReply, init.  Comments suggest that "init" can be used
+    #   for re-initialisation, although the command is undocumented.
+    # - Not exported, probably should be upper-case initial letter as part
+    #   of the internals: getTextLine, make-transformation-chunked.
+}
+
+# http::Log --
+#
+#	Debugging output -- define this to observe HTTP/1.1 socket usage.
+#	Should echo any args received.
+#
+# Arguments:
+#     msg	Message to output
+#
+if {[info command http::Log] eq {}} {proc http::Log {args} {}}
+
+# http::register --
+#
+#     See documentation for details.
+#
+# Arguments:
+#     proto	URL protocol prefix, e.g. https
+#     port	Default port for protocol
+#     command	Command to use to create socket
+# Results:
+#     list of port and command that was registered.
+
+proc http::register {proto port command} {
+    variable urlTypes
+    set urlTypes([string tolower $proto]) [list $port $command]
+}
+
+# http::unregister --
+#
+#     Unregisters URL protocol handler
+#
+# Arguments:
+#     proto	URL protocol prefix, e.g. https
+# Results:
+#     list of port and command that was unregistered.
+
+proc http::unregister {proto} {
+    variable urlTypes
+    set lower [string tolower $proto]
+    if {![info exists urlTypes($lower)]} {
+	return -code error "unsupported url type \"$proto\""
+    }
+    set old $urlTypes($lower)
+    unset urlTypes($lower)
+    return $old
+}
+
+# http::config --
+#
+#	See documentation for details.
+#
+# Arguments:
+#	args		Options parsed by the procedure.
+# Results:
+#        TODO
+
+proc http::config {args} {
+    variable http
+    set options [lsort [array names http -*]]
+    set usage [join $options ", "]
+    if {[llength $args] == 0} {
+	set result {}
+	foreach name $options {
+	    lappend result $name $http($name)
+	}
+	return $result
+    }
+    set options [string map {- ""} $options]
+    set pat ^-(?:[join $options |])$
+    if {[llength $args] == 1} {
+	set flag [lindex $args 0]
+	if {![regexp -- $pat $flag]} {
+	    return -code error "Unknown option $flag, must be: $usage"
+	}
+	return $http($flag)
+    } else {
+	foreach {flag value} $args {
+	    if {![regexp -- $pat $flag]} {
+		return -code error "Unknown option $flag, must be: $usage"
+	    }
+	    set http($flag) $value
+	}
+    }
+}
+
+# http::Finish --
+#
+#	Clean up the socket and eval close time callbacks
+#
+# Arguments:
+#	token	    Connection token.
+#	errormsg    (optional) If set, forces status to error.
+#	skipCB      (optional) If set, don't call the -command callback. This
+#		    is useful when geturl wants to throw an exception instead
+#		    of calling the callback. That way, the same error isn't
+#		    reported to two places.
+#
+# Side Effects:
+#        May close the socket.
+
+proc http::Finish {token {errormsg ""} {skipCB 0}} {
+    variable socketMapping
+    variable socketRdState
+    variable socketWrState
+    variable socketRdQueue
+    variable socketWrQueue
+    variable socketClosing
+    variable socketPlayCmd
+
+    variable $token
+    upvar 0 $token state
+    global errorInfo errorCode
+    set closeQueue 0
+    if {$errormsg ne ""} {
+	set state(error) [list $errormsg $errorInfo $errorCode]
+	set state(status) "error"
+    }
+    if {[info commands ${token}EventCoroutine] ne {}} {
+	rename ${token}EventCoroutine {}
+    }
+    if {  ($state(status) eq "timeout")
+       || ($state(status) eq "error")
+       || ($state(status) eq "eof")
+       || ([info exists state(-keepalive)] && !$state(-keepalive))
+       || ([info exists state(connection)] && ($state(connection) eq "close"))
+    } {
+	set closeQueue 1
+	set connId $state(socketinfo)
+	set sock $state(sock)
+	CloseSocket $state(sock) $token
+    } elseif {
+	  ([info exists state(-keepalive)] && $state(-keepalive))
+       && ([info exists state(connection)] && ($state(connection) ne "close"))
+    } {
+	KeepSocket $token
+    }
+    if {[info exists state(after)]} {
+	after cancel $state(after)
+	unset state(after)
+    }
+    if {[info exists state(-command)] && (!$skipCB)
+	    && (![info exists state(done-command-cb)])} {
+	set state(done-command-cb) yes
+	if {[catch {eval $state(-command) {$token}} err] && $errormsg eq ""} {
+	    set state(error) [list $err $errorInfo $errorCode]
+	    set state(status) error
+	}
+    }
+
+    if {    $closeQueue
+	 && [info exists socketMapping($connId)]
+	 && ($socketMapping($connId) eq $sock)
+    } {
+	http::CloseQueuedQueries $connId $token
+    }
+}
+
+# http::KeepSocket -
+#
+#	Keep a socket in the persistent sockets table and connect it to its next
+#	queued task if possible.  Otherwise leave it idle and ready for its next
+#	use.
+#
+#	If $socketClosing(*), then ($state(connection) eq "close") and therefore
+#	this command will not be called by Finish.
+#
+# Arguments:
+#	token	    Connection token.
+
+proc http::KeepSocket {token} {
+    variable http
+    variable socketMapping
+    variable socketRdState
+    variable socketWrState
+    variable socketRdQueue
+    variable socketWrQueue
+    variable socketClosing
+    variable socketPlayCmd
+
+    variable $token
+    upvar 0 $token state
+    set tk [namespace tail $token]
+
+    # Keep this socket open for another request ("Keep-Alive").
+    # React if the server half-closes the socket.
+    # Discussion is in http::geturl.
+    catch {fileevent $state(sock) readable [list http::CheckEof $state(sock)]}
+
+    # The line below should not be changed in production code.
+    # It is edited by the test suite.
+    set TEST_EOF 0
+    if {$TEST_EOF} {
+	# ONLY for testing reaction to server eof.
+	# No server timeouts will be caught.
+	catch {fileevent $state(sock) readable {}}
+    }
+
+    if {    [info exists state(socketinfo)]
+	 && [info exists socketMapping($state(socketinfo))]
+    } {
+	set connId $state(socketinfo)
+	# The value "Rready" is set only here.
+	set socketRdState($connId) Rready
+
+	if {    $state(-pipeline)
+	     && [info exists socketRdQueue($connId)]
+	     && [llength $socketRdQueue($connId)]
+	} {
+	    # The usual case for pipelined responses - if another response is
+	    # queued, arrange to read it.
+	    set token3 [lindex $socketRdQueue($connId) 0]
+	    set socketRdQueue($connId) [lrange $socketRdQueue($connId) 1 end]
+	    variable $token3
+	    upvar 0 $token3 state3
+	    set tk2 [namespace tail $token3]
+
+	    #Log pipelined, GRANT read access to $token3 in KeepSocket
+	    set socketRdState($connId) $token3
+	    ReceiveResponse $token3
+
+	    # Other pipelined cases.
+	    # - The test above ensures that, for the pipelined cases in the two
+	    #   tests below, the read queue is empty.
+	    # - In those two tests, check whether the next write will be
+	    #   nonpipeline.
+	} elseif {
+		$state(-pipeline)
+	     && [info exists socketWrState($connId)]
+	     && ($socketWrState($connId) eq "peNding")
+
+	     && [info exists socketWrQueue($connId)]
+	     && [llength $socketWrQueue($connId)]
+	     && (![set token3 [lindex $socketWrQueue($connId) 0]
+		   set ${token3}(-pipeline)
+		  ]
+		)
+	} {
+	    # This case:
+	    # - Now it the time to run the "pending" request.
+	    # - The next token in the write queue is nonpipeline, and
+	    #   socketWrState has been marked "pending" (in
+	    #   http::NextPipelinedWrite or http::geturl) so a new pipelined
+	    #   request cannot jump the queue.
+	    #
+	    # Tests:
+	    # - In this case the read queue (tested above) is empty and this
+	    #   "pending" write token is in front of the rest of the write
+	    #   queue.
+	    # - The write state is not Wready and therefore appears to be busy,
+	    #   but because it is "pending" we know that it is reserved for the
+	    #   first item in the write queue, a non-pipelined request that is
+	    #   waiting for the read queue to empty.  That has now happened: so
+	    #   give that request read and write access.
+	    variable $token3
+	    set conn [set ${token3}(tmpConnArgs)]
+	    #Log nonpipeline, GRANT r/w access to $token3 in KeepSocket
+	    set socketRdState($connId) $token3
+	    set socketWrState($connId) $token3
+	    set socketWrQueue($connId) [lrange $socketWrQueue($connId) 1 end]
+	    # Connect does its own fconfigure.
+	    fileevent $state(sock) writable [list http::Connect $token3 {*}$conn]
+	    #Log ---- $state(sock) << conn to $token3 for HTTP request (c)
+
+	} elseif {
+		$state(-pipeline)
+	     && [info exists socketWrState($connId)]
+	     && ($socketWrState($connId) eq "peNding")
+
+	} {
+	    # Should not come here.  The second block in the previous "elseif"
+	    # test should be tautologous (but was needed in an earlier
+	    # implementation) and will be removed after testing.
+	    # If we get here, the value "pending" was assigned in error.
+	    # This error would block the queue for ever.
+	    Log ^X$tk <<<<< Error in queueing of requests >>>>> - token $token
+
+	} elseif {
+		$state(-pipeline)
+	     && [info exists socketWrState($connId)]
+	     && ($socketWrState($connId) eq "Wready")
+
+	     && [info exists socketWrQueue($connId)]
+	     && [llength $socketWrQueue($connId)]
+	     && (![set token3 [lindex $socketWrQueue($connId) 0]
+		   set ${token3}(-pipeline)
+		  ]
+		)
+	} {
+	    # This case:
+	    # - The next token in the write queue is nonpipeline, and
+	    #   socketWrState is Wready.  Get the next event from socketWrQueue.
+	    # Tests:
+	    # - In this case the read state (tested above) is Rready and the
+	    #   write state (tested here) is Wready - there is no "pending"
+	    #   request.
+	    # Code:
+	    # - The code is the same as the code below for the nonpipelined
+	    #   case with a queued request.
+	    variable $token3
+	    set conn [set ${token3}(tmpConnArgs)]
+	    #Log nonpipeline, GRANT r/w access to $token3 in KeepSocket
+	    set socketRdState($connId) $token3
+	    set socketWrState($connId) $token3
+	    set socketWrQueue($connId) [lrange $socketWrQueue($connId) 1 end]
+	    # Connect does its own fconfigure.
+	    fileevent $state(sock) writable [list http::Connect $token3 {*}$conn]
+	    #Log ---- $state(sock) << conn to $token3 for HTTP request (c)
+
+	} elseif {
+		(!$state(-pipeline))
+	     && [info exists socketWrQueue($connId)]
+	     && [llength $socketWrQueue($connId)]
+	     && ($state(connection) ne "close")
+	} {
+	    # If not pipelined, (socketRdState eq Rready) tells us that we are
+	    # ready for the next write - there is no need to check
+	    # socketWrState. Write the next request, if one is waiting.
+	    # If the next request is pipelined, it receives premature read
+	    # access to the socket. This is not a problem.
+	    set token3 [lindex $socketWrQueue($connId) 0]
+	    variable $token3
+	    set conn [set ${token3}(tmpConnArgs)]
+	    #Log nonpipeline, GRANT r/w access to $token3 in KeepSocket
+	    set socketRdState($connId) $token3
+	    set socketWrState($connId) $token3
+	    set socketWrQueue($connId) [lrange $socketWrQueue($connId) 1 end]
+	    # Connect does its own fconfigure.
+	    fileevent $state(sock) writable [list http::Connect $token3 {*}$conn]
+	    #Log ---- $state(sock) << conn to $token3 for HTTP request (d)
+
+	} elseif {(!$state(-pipeline))} {
+	    set socketWrState($connId) Wready
+	    # Rready and Wready and idle: nothing to do.
+	}
+
+    } else {
+	CloseSocket $state(sock) $token
+	# There is no socketMapping($state(socketinfo)), so it does not matter
+	# that CloseQueuedQueries is not called.
+    }
+}
+
+# http::CheckEof -
+#
+#	Read from a socket and close it if eof.
+#	The command is bound to "fileevent readable" on an idle socket, and
+#	"eof" is the only event that should trigger the binding, occurring when
+#	the server times out and half-closes the socket.
+#
+#	A read is necessary so that [eof] gives a meaningful result.
+#	Any bytes sent are junk (or a bug).
+
+proc http::CheckEof {sock} {
+    set junk [read $sock]
+    set n [string length $junk]
+    if {$n} {
+	Log "WARNING: $n bytes received but no HTTP request sent"
+    }
+
+    if {[catch {eof $sock} res] || $res} {
+	# The server has half-closed the socket.
+	# If a new write has started, its transaction will fail and
+	# will then be error-handled.
+	CloseSocket $sock
+    }
+}
+
+# http::CloseSocket -
+#
+#	Close a socket and remove it from the persistent sockets table.  If
+#	possible an http token is included here but when we are called from a
+#	fileevent on remote closure we need to find the correct entry - hence
+#	the "else" block of the first "if" command.
+
+proc http::CloseSocket {s {token {}}} {
+    variable socketMapping
+    variable socketRdState
+    variable socketWrState
+    variable socketRdQueue
+    variable socketWrQueue
+    variable socketClosing
+    variable socketPlayCmd
+
+    set tk [namespace tail $token]
+
+    catch {fileevent $s readable {}}
+    set connId {}
+    if {$token ne ""} {
+	variable $token
+	upvar 0 $token state
+	if {[info exists state(socketinfo)]} {
+	    set connId $state(socketinfo)
+	}
+    } else {
+	set map [array get socketMapping]
+	set ndx [lsearch -exact $map $s]
+	if {$ndx != -1} {
+	    incr ndx -1
+	    set connId [lindex $map $ndx]
+	}
+    }
+    if {    ($connId ne {})
+	 && [info exists socketMapping($connId)]
+	 && ($socketMapping($connId) eq $s)
+    } {
+	Log "Closing connection $connId (sock $socketMapping($connId))"
+	if {[catch {close $socketMapping($connId)} err]} {
+	    Log "Error closing connection: $err"
+	}
+	if {$token eq {}} {
+	    # Cases with a non-empty token are handled by Finish, so the tokens
+	    # are finished in connection order.
+	    http::CloseQueuedQueries $connId
+	}
+    } else {
+	Log "Closing socket $s (no connection info)"
+	if {[catch {close $s} err]} {
+	    Log "Error closing socket: $err"
+	}
+    }
+}
+
+# http::CloseQueuedQueries
+#
+#	connId  - identifier "domain:port" for the connection
+#	token   - (optional) used only for logging
+#
+# Called from http::CloseSocket and http::Finish, after a connection is closed,
+# to clear the read and write queues if this has not already been done.
+
+proc http::CloseQueuedQueries {connId {token {}}} {
+    variable socketMapping
+    variable socketRdState
+    variable socketWrState
+    variable socketRdQueue
+    variable socketWrQueue
+    variable socketClosing
+    variable socketPlayCmd
+
+    if {![info exists socketMapping($connId)]} {
+	# Command has already been called.
+	# Don't come here again - especially recursively.
+	return
+    }
+
+    # Used only for logging.
+    if {$token eq {}} {
+	set tk {}
+    } else {
+	set tk [namespace tail $token]
+    }
+
+    if {    [info exists socketPlayCmd($connId)]
+	 && ($socketPlayCmd($connId) ne {ReplayIfClose Wready {} {}})
+    } {
+	# Before unsetting, there is some unfinished business.
+	# - If the server sent "Connection: close", we have stored the command
+	#   for retrying any queued requests in socketPlayCmd, so copy that
+	#   value for execution below.  socketClosing(*) was also set.
+	# - Also clear the queues to prevent calls to Finish that would set the
+	#   state for the requests that will be retried to "finished with error
+	#   status".
+	set unfinished $socketPlayCmd($connId)
+	set socketRdQueue($connId) {}
+	set socketWrQueue($connId) {}
+    } else {
+	set unfinished {}
+    }
+
+    Unset $connId
+
+    if {$unfinished ne {}} {
+	Log ^R$tk Any unfinished transactions (excluding $token) failed \
+		- token $token
+	{*}$unfinished
+    }
+}
+
+# http::Unset
+#
+#	The trace on "unset socketRdState(*)" will call CancelReadPipeline
+#	and cancel any queued responses.
+#	The trace on "unset socketWrState(*)" will call CancelWritePipeline
+#	and cancel any queued requests.
+
+proc http::Unset {connId} {
+    variable socketMapping
+    variable socketRdState
+    variable socketWrState
+    variable socketRdQueue
+    variable socketWrQueue
+    variable socketClosing
+    variable socketPlayCmd
+
+    unset socketMapping($connId)
+    unset socketRdState($connId)
+    unset socketWrState($connId)
+    unset -nocomplain socketRdQueue($connId)
+    unset -nocomplain socketWrQueue($connId)
+    unset -nocomplain socketClosing($connId)
+    unset -nocomplain socketPlayCmd($connId)
+}
+
+# http::reset --
+#
+#	See documentation for details.
+#
+# Arguments:
+#	token	Connection token.
+#	why	Status info.
+#
+# Side Effects:
+#        See Finish
+
+proc http::reset {token {why reset}} {
+    variable $token
+    upvar 0 $token state
+    set state(status) $why
+    catch {fileevent $state(sock) readable {}}
+    catch {fileevent $state(sock) writable {}}
+    Finish $token
+    if {[info exists state(error)]} {
+	set errorlist $state(error)
+	unset state
+	eval ::error $errorlist
+    }
+}
+
+# http::geturl --
+#
+#	Establishes a connection to a remote url via http.
+#
+# Arguments:
+#	url		The http URL to goget.
+#	args		Option value pairs. Valid options include:
+#				-blocksize, -validate, -headers, -timeout
+# Results:
+#	Returns a token for this connection. This token is the name of an
+#	array that the caller should unset to garbage collect the state.
+
+proc http::geturl {url args} {
+    variable http
+    variable urlTypes
+    variable defaultCharset
+    variable defaultKeepalive
+    variable strict
+
+    # Initialize the state variable, an array. We'll return the name of this
+    # array as the token for the transaction.
+
+    if {![info exists http(uid)]} {
+	set http(uid) 0
+    }
+    set token [namespace current]::[incr http(uid)]
+    ##Log Starting http::geturl - token $token
+    variable $token
+    upvar 0 $token state
+    set tk [namespace tail $token]
+    reset $token
+    Log ^A$tk URL $url - token $token
+
+    # Process command options.
+
+    array set state {
+	-binary		false
+	-blocksize	8192
+	-queryblocksize 8192
+	-validate	0
+	-headers	{}
+	-timeout	0
+	-type		application/x-www-form-urlencoded
+	-queryprogress	{}
+	-protocol	1.1
+	binary		0
+	state		created
+	meta		{}
+	method		{}
+	coding		{}
+	currentsize	0
+	totalsize	0
+	querylength	0
+	queryoffset	0
+	type		text/html
+	body		{}
+	status		""
+	http		""
+	connection	close
+    }
+    set state(-keepalive) $defaultKeepalive
+    set state(-strict) $strict
+    # These flags have their types verified [Bug 811170]
+    array set type {
+	-binary		boolean
+	-blocksize	integer
+	-queryblocksize integer
+	-strict		boolean
+	-timeout	integer
+	-validate	boolean
+    }
+    set state(charset)	$defaultCharset
+    set options {
+	-binary -blocksize -channel -command -handler -headers -keepalive
+	-method -myaddr -progress -protocol -query -queryblocksize
+	-querychannel -queryprogress -strict -timeout -type -validate
+    }
+    set usage [join [lsort $options] ", "]
+    set options [string map {- ""} $options]
+    set pat ^-(?:[join $options |])$
+    foreach {flag value} $args {
+	if {[regexp -- $pat $flag]} {
+	    # Validate numbers
+	    if {
+		[info exists type($flag)] &&
+		![string is $type($flag) -strict $value]
+	    } {
+		unset $token
+		return -code error \
+		    "Bad value for $flag ($value), must be $type($flag)"
+	    }
+	    set state($flag) $value
+	} else {
+	    unset $token
+	    return -code error "Unknown option $flag, can be: $usage"
+	}
+    }
+
+    # Make sure -query and -querychannel aren't both specified
+
+    set isQueryChannel [info exists state(-querychannel)]
+    set isQuery [info exists state(-query)]
+    if {$isQuery && $isQueryChannel} {
+	unset $token
+	return -code error "Can't combine -query and -querychannel options!"
+    }
+
+    # Validate URL, determine the server host and port, and check proxy case
+    # Recognize user:pass at host URLs also, although we do not do anything with
+    # that info yet.
+
+    # URLs have basically four parts.
+    # First, before the colon, is the protocol scheme (e.g. http)
+    # Second, for HTTP-like protocols, is the authority
+    #	The authority is preceded by // and lasts up to (but not including)
+    #	the following / or ? and it identifies up to four parts, of which
+    #	only one, the host, is required (if an authority is present at all).
+    #	All other parts of the authority (user name, password, port number)
+    #	are optional.
+    # Third is the resource name, which is split into two parts at a ?
+    #	The first part (from the single "/" up to "?") is the path, and the
+    #	second part (from that "?" up to "#") is the query. *HOWEVER*, we do
+    #	not need to separate them; we send the whole lot to the server.
+    #	Both, path and query are allowed to be missing, including their
+    #	delimiting character.
+    # Fourth is the fragment identifier, which is everything after the first
+    #	"#" in the URL. The fragment identifier MUST NOT be sent to the server
+    #	and indeed, we don't bother to validate it (it could be an error to
+    #	pass it in here, but it's cheap to strip).
+    #
+    # An example of a URL that has all the parts:
+    #
+    #     http://jschmoe:xyzzy@www.bogus.net:8000/foo/bar.tml?q=foo#changes
+    #
+    # The "http" is the protocol, the user is "jschmoe", the password is
+    # "xyzzy", the host is "www.bogus.net", the port is "8000", the path is
+    # "/foo/bar.tml", the query is "q=foo", and the fragment is "changes".
+    #
+    # Note that the RE actually combines the user and password parts, as
+    # recommended in RFC 3986. Indeed, that RFC states that putting passwords
+    # in URLs is a Really Bad Idea, something with which I would agree utterly.
+    #
+    # From a validation perspective, we need to ensure that the parts of the
+    # URL that are going to the server are correctly encoded.  This is only
+    # done if $state(-strict) is true (inherited from $::http::strict).
+
+    set URLmatcher {(?x)		# this is _expanded_ syntax
+	^
+	(?: (\w+) : ) ?			# <protocol scheme>
+	(?: //
+	    (?:
+		(
+		    [^@/\#?]+		# <userinfo part of authority>
+		) @
+	    )?
+	    (				# <host part of authority>
+		[^/:\#?]+ |		# host name or IPv4 address
+		\[ [^/\#?]+ \]		# IPv6 address in square brackets
+	    )
+	    (?: : (\d+) )?		# <port part of authority>
+	)?
+	( [/\?] [^\#]*)?		# <path> (including query)
+	(?: \# (.*) )?			# <fragment>
+	$
+    }
+
+    # Phase one: parse
+    if {![regexp -- $URLmatcher $url -> proto user host port srvurl]} {
+	unset $token
+	return -code error "Unsupported URL: $url"
+    }
+    # Phase two: validate
+    set host [string trim $host {[]}]; # strip square brackets from IPv6 address
+    if {$host eq ""} {
+	# Caller has to provide a host name; we do not have a "default host"
+	# that would enable us to handle relative URLs.
+	unset $token
+	return -code error "Missing host part: $url"
+	# Note that we don't check the hostname for validity here; if it's
+	# invalid, we'll simply fail to resolve it later on.
+    }
+    if {$port ne "" && $port > 65535} {
+	unset $token
+	return -code error "Invalid port number: $port"
+    }
+    # The user identification and resource identification parts of the URL can
+    # have encoded characters in them; take care!
+    if {$user ne ""} {
+	# Check for validity according to RFC 3986, Appendix A
+	set validityRE {(?xi)
+	    ^
+	    (?: [-\w.~!$&'()*+,;=:] | %[0-9a-f][0-9a-f] )+
+	    $
+	}
+	if {$state(-strict) && ![regexp -- $validityRE $user]} {
+	    unset $token
+	    # Provide a better error message in this error case
+	    if {[regexp {(?i)%(?![0-9a-f][0-9a-f]).?.?} $user bad]} {
+		return -code error \
+			"Illegal encoding character usage \"$bad\" in URL user"
+	    }
+	    return -code error "Illegal characters in URL user"
+	}
+    }
+    if {$srvurl ne ""} {
+	# RFC 3986 allows empty paths (not even a /), but servers
+	# return 400 if the path in the HTTP request doesn't start
+	# with / , so add it here if needed.
+	if {[string index $srvurl 0] ne "/"} {
+	    set srvurl /$srvurl
+	}
+	# Check for validity according to RFC 3986, Appendix A
+	set validityRE {(?xi)
+	    ^
+	    # Path part (already must start with / character)
+	    (?:	      [-\w.~!$&'()*+,;=:@/]  | %[0-9a-f][0-9a-f] )*
+	    # Query part (optional, permits ? characters)
+	    (?: \? (?: [-\w.~!$&'()*+,;=:@/?] | %[0-9a-f][0-9a-f] )* )?
+	    $
+	}
+	if {$state(-strict) && ![regexp -- $validityRE $srvurl]} {
+	    unset $token
+	    # Provide a better error message in this error case
+	    if {[regexp {(?i)%(?![0-9a-f][0-9a-f])..} $srvurl bad]} {
+		return -code error \
+		    "Illegal encoding character usage \"$bad\" in URL path"
+	    }
+	    return -code error "Illegal characters in URL path"
+	}
+    } else {
+	set srvurl /
+    }
+    if {$proto eq ""} {
+	set proto http
+    }
+    set lower [string tolower $proto]
+    if {![info exists urlTypes($lower)]} {
+	unset $token
+	return -code error "Unsupported URL type \"$proto\""
+    }
+    set defport [lindex $urlTypes($lower) 0]
+    set defcmd [lindex $urlTypes($lower) 1]
+
+    if {$port eq ""} {
+	set port $defport
+    }
+    if {![catch {$http(-proxyfilter) $host} proxy]} {
+	set phost [lindex $proxy 0]
+	set pport [lindex $proxy 1]
+    }
+
+    # OK, now reassemble into a full URL
+    set url ${proto}://
+    if {$user ne ""} {
+	append url $user
+	append url @
+    }
+    append url $host
+    if {$port != $defport} {
+	append url : $port
+    }
+    append url $srvurl
+    # Don't append the fragment!
+    set state(url) $url
+
+    set sockopts [list -async]
+
+    # If we are using the proxy, we must pass in the full URL that includes
+    # the server name.
+
+    if {[info exists phost] && ($phost ne "")} {
+	set srvurl $url
+	set targetAddr [list $phost $pport]
+    } else {
+	set targetAddr [list $host $port]
+    }
+    # Proxy connections aren't shared among different hosts.
+    set state(socketinfo) $host:$port
+
+    # Save the accept types at this point to prevent a race condition. [Bug
+    # c11a51c482]
+    set state(accept-types) $http(-accept)
+
+    if {$isQuery || $isQueryChannel} {
+	# It's a POST.
+	# A client wishing to send a non-idempotent request SHOULD wait to send
+	# that request until it has received the response status for the
+	# previous request.
+	if {$http(-postfresh)} {
+	    # Override -keepalive for a POST.  Use a new connection, and thus
+	    # avoid the small risk of a race against server timeout.
+	    set state(-keepalive) 0
+	} else {
+	    # Allow -keepalive but do not -pipeline - wait for the previous
+	    # transaction to finish.
+	    # There is a small risk of a race against server timeout.
+	    set state(-pipeline) 0
+	}
+    } else {
+	# It's a GET or HEAD.
+	set state(-pipeline) $http(-pipeline)
+    }
+
+    # See if we are supposed to use a previously opened channel.
+    # - In principle, ANY call to http::geturl could use a previously opened
+    #   channel if it is available - the "Connection: keep-alive" header is a
+    #   request to leave the channel open AFTER completion of this call.
+    # - In fact, we try to use an existing channel only if -keepalive 1 -- this
+    #   means that at most one channel is left open for each value of
+    #   $state(socketinfo). This property simplifies the mapping of open
+    #   channels.
+    set reusing 0
+    set alreadyQueued 0
+    if {$state(-keepalive)} {
+	variable socketMapping
+	variable socketRdState
+	variable socketWrState
+	variable socketRdQueue
+	variable socketWrQueue
+	variable socketClosing
+	variable socketPlayCmd
+
+	if {[info exists socketMapping($state(socketinfo))]} {
+	    # - If the connection is idle, it has a "fileevent readable" binding
+	    #   to http::CheckEof, in case the server times out and half-closes
+	    #   the socket (http::CheckEof closes the other half).
+	    # - We leave this binding in place until just before the last
+	    #   puts+flush in http::Connected (GET/HEAD) or http::Write (POST),
+	    #   after which the HTTP response might be generated.
+
+	    if {    [info exists socketClosing($state(socketinfo))]
+		       && $socketClosing($state(socketinfo))
+	    } {
+		# socketClosing(*) is set because the server has sent a
+		# "Connection: close" header.
+		# Do not use the persistent socket again.
+		# Since we have only one persistent socket per server, and the
+		# old socket is not yet dead, add the request to the write queue
+		# of the dying socket, which will be replayed by ReplayIfClose.
+		# Also add it to socketWrQueue(*) which is used only if an error
+		# causes a call to Finish.
+		set reusing 1
+		set sock $socketMapping($state(socketinfo))
+		Log "reusing socket $sock for $state(socketinfo) - token $token"
+
+		set alreadyQueued 1
+		lassign $socketPlayCmd($state(socketinfo)) com0 com1 com2 com3
+		lappend com3 $token
+		set socketPlayCmd($state(socketinfo)) [list $com0 $com1 $com2 $com3]
+		lappend socketWrQueue($state(socketinfo)) $token
+	    } elseif {[catch {fconfigure $socketMapping($state(socketinfo))}]} {
+		# FIXME Is it still possible for this code to be executed? If
+		#       so, this could be another place to call TestForReplay,
+		#       rather than discarding the queued transactions.
+		Log "WARNING: socket for $state(socketinfo) was closed\
+			- token $token"
+		Log "WARNING - if testing, pay special attention to this\
+			case (GH) which is seldom executed - token $token"
+
+		# This will call CancelReadPipeline, CancelWritePipeline, and
+		# cancel any queued requests, responses.
+		Unset $state(socketinfo)
+	    } else {
+		# Use the persistent socket.
+		# The socket may not be ready to write: an earlier request might
+		# still be still writing (in the pipelined case) or
+		# writing/reading (in the nonpipeline case). This possibility
+		# is handled by socketWrQueue later in this command.
+		set reusing 1
+		set sock $socketMapping($state(socketinfo))
+		Log "reusing socket $sock for $state(socketinfo) - token $token"
+
+	    }
+	    # Do not automatically close the connection socket.
+	    set state(connection) {}
+	}
+    }
+
+    if {$reusing} {
+	# Define state(tmpState) and state(tmpOpenCmd) for use
+	# by http::ReplayIfDead if the persistent connection has died.
+	set state(tmpState) [array get state]
+
+	# Pass -myaddr directly to the socket command
+	if {[info exists state(-myaddr)]} {
+	    lappend sockopts -myaddr $state(-myaddr)
+	}
+
+	set state(tmpOpenCmd) [list {*}$defcmd {*}$sockopts {*}$targetAddr]
+    }
+
+    set state(reusing) $reusing
+    # Excluding ReplayIfDead and the decision whether to call it, there are four
+    # places outside http::geturl where state(reusing) is used:
+    # - Connected   - if reusing and not pipelined, start the state(-timeout)
+    #                 timeout (when writing).
+    # - DoneRequest - if reusing and pipelined, send the next pipelined write
+    # - Event       - if reusing and pipelined, start the state(-timeout)
+    #                 timeout (when reading).
+    # - Event       - if (not reusing) and pipelined, send the next pipelined
+    #                 write
+
+    # See comments above re the start of this timeout in other cases.
+    if {(!$state(reusing)) && ($state(-timeout) > 0)} {
+	set state(after) [after $state(-timeout) \
+		[list http::reset $token timeout]]
+    }
+
+    if {![info exists sock]} {
+	# Pass -myaddr directly to the socket command
+	if {[info exists state(-myaddr)]} {
+	    lappend sockopts -myaddr $state(-myaddr)
+	}
+	set pre [clock milliseconds]
+	##Log pre socket opened, - token $token
+	##Log [concat $defcmd $sockopts $targetAddr] - token $token
+	if {[catch {eval $defcmd $sockopts $targetAddr} sock errdict]} {
+	    # Something went wrong while trying to establish the connection.
+	    # Clean up after events and such, but DON'T call the command
+	    # callback (if available) because we're going to throw an
+	    # exception from here instead.
+
+	    set state(sock) NONE
+	    Finish $token $sock 1
+	    cleanup $token
+	    dict unset errdict -level
+	    return -options $errdict $sock
+	} else {
+	    # Initialisation of a new socket.
+	    ##Log post socket opened, - token $token
+	    ##Log socket opened, now fconfigure - token $token
+	    set delay [expr {[clock milliseconds] - $pre}]
+	    if {$delay > 3000} {
+		Log socket delay $delay - token $token
+	    }
+	    fconfigure $sock -translation {auto crlf} \
+			     -buffersize $state(-blocksize)
+	    ##Log socket opened, DONE fconfigure - token $token
+	}
+    }
+    # Command [socket] is called with -async, but takes 5s to 5.1s to return,
+    # with probability of order 1 in 10,000.  This may be a bizarre scheduling
+    # issue with my (KJN's) system (Fedora Linux).
+    # This does not cause a problem (unless the request times out when this
+    # command returns).
+
+    set state(sock) $sock
+    Log "Using $sock for $state(socketinfo) - token $token" \
+	[expr {$state(-keepalive)?"keepalive":""}]
+
+    if {    $state(-keepalive)
+	 && (![info exists socketMapping($state(socketinfo))])
+    } {
+	# Freshly-opened socket that we would like to become persistent.
+	set socketMapping($state(socketinfo)) $sock
+
+	if {![info exists socketRdState($state(socketinfo))]} {
+	    set socketRdState($state(socketinfo)) {}
+	    set varName ::http::socketRdState($state(socketinfo))
+	    trace add variable $varName unset ::http::CancelReadPipeline
+	}
+	if {![info exists socketWrState($state(socketinfo))]} {
+	    set socketWrState($state(socketinfo)) {}
+	    set varName ::http::socketWrState($state(socketinfo))
+	    trace add variable $varName unset ::http::CancelWritePipeline
+	}
+
+	if {$state(-pipeline)} {
+	    #Log new, init for pipelined, GRANT write access to $token in geturl
+	    # Also grant premature read access to the socket. This is OK.
+	    set socketRdState($state(socketinfo)) $token
+	    set socketWrState($state(socketinfo)) $token
+	} else {
+	    # socketWrState is not used by this non-pipelined transaction.
+	    # We cannot leave it as "Wready" because the next call to
+	    # http::geturl with a pipelined transaction would conclude that the
+	    # socket is available for writing.
+	    #Log new, init for nonpipeline, GRANT r/w access to $token in geturl
+	    set socketRdState($state(socketinfo)) $token
+	    set socketWrState($state(socketinfo)) $token
+	}
+
+	set socketRdQueue($state(socketinfo)) {}
+	set socketWrQueue($state(socketinfo)) {}
+	set socketClosing($state(socketinfo)) 0
+	set socketPlayCmd($state(socketinfo)) {ReplayIfClose Wready {} {}}
+    }
+
+    if {![info exists phost]} {
+	set phost ""
+    }
+    if {$reusing} {
+	# For use by http::ReplayIfDead if the persistent connection has died.
+	# Also used by NextPipelinedWrite.
+	set state(tmpConnArgs) [list $proto $phost $srvurl]
+    }
+
+    # The element socketWrState($connId) has a value which is either the name of
+    # the token that is permitted to write to the socket, or "Wready" if no
+    # token is permitted to write.
+    #
+    # The code that sets the value to Wready immediately calls
+    # http::NextPipelinedWrite, which examines socketWrQueue($connId) and
+    # processes the next request in the queue, if there is one.  The value
+    # Wready is not found when the interpreter is in the event loop unless the
+    # socket is idle.
+    #
+    # The element socketRdState($connId) has a value which is either the name of
+    # the token that is permitted to read from the socket, or "Rready" if no
+    # token is permitted to read.
+    #
+    # The code that sets the value to Rready then examines
+    # socketRdQueue($connId) and processes the next request in the queue, if
+    # there is one.  The value Rready is not found when the interpreter is in
+    # the event loop unless the socket is idle.
+
+    if {$alreadyQueued} {
+	# A write may or may not be in progress.  There is no need to set
+	# socketWrState to prevent another call stealing write access - all
+	# subsequent calls on this socket will come here because the socket
+	# will close after the current read, and its
+	# socketClosing($connId) is 1.
+	##Log "HTTP request for token $token is queued"
+
+    } elseif {    $reusing
+	       && $state(-pipeline)
+	       && ($socketWrState($state(socketinfo)) ne "Wready")
+    } {
+	##Log "HTTP request for token $token is queued for pipelined use"
+	lappend socketWrQueue($state(socketinfo)) $token
+
+    } elseif {    $reusing
+	       && (!$state(-pipeline))
+	       && ($socketWrState($state(socketinfo)) ne "Wready")
+    } {
+	# A write is queued or in progress.  Lappend to the write queue.
+	##Log "HTTP request for token $token is queued for nonpipeline use"
+	lappend socketWrQueue($state(socketinfo)) $token
+
+    } elseif {    $reusing
+	       && (!$state(-pipeline))
+	       && ($socketWrState($state(socketinfo)) eq "Wready")
+	       && ($socketRdState($state(socketinfo)) ne "Rready")
+    } {
+	# A read is queued or in progress, but not a write.  Cannot start the
+	# nonpipeline transaction, but must set socketWrState to prevent a
+	# pipelined request jumping the queue.
+	##Log "HTTP request for token $token is queued for nonpipeline use"
+	#Log re-use nonpipeline, GRANT delayed write access to $token in geturl
+
+	set socketWrState($state(socketinfo)) peNding
+	lappend socketWrQueue($state(socketinfo)) $token
+
+    } else {
+	if {$reusing && $state(-pipeline)} {
+	    #Log re-use pipelined, GRANT write access to $token in geturl
+	    set socketWrState($state(socketinfo)) $token
+
+	} elseif {$reusing} {
+	    # Cf tests above - both are ready.
+	    #Log re-use nonpipeline, GRANT r/w access to $token in geturl
+	    set socketRdState($state(socketinfo)) $token
+	    set socketWrState($state(socketinfo)) $token
+	}
+
+	# All (!$reusing) cases come here, and also some $reusing cases if the
+	# connection is ready.
+	#Log ---- $state(socketinfo) << conn to $token for HTTP request (a)
+	# Connect does its own fconfigure.
+	fileevent $sock writable \
+		[list http::Connect $token $proto $phost $srvurl]
+    }
+
+    # Wait for the connection to complete.
+    if {![info exists state(-command)]} {
+	# geturl does EVERYTHING asynchronously, so if the user
+	# calls it synchronously, we just do a wait here.
+	http::wait $token
+
+	if {![info exists state]} {
+	    # If we timed out then Finish has been called and the users
+	    # command callback may have cleaned up the token. If so we end up
+	    # here with nothing left to do.
+	    return $token
+	} elseif {$state(status) eq "error"} {
+	    # Something went wrong while trying to establish the connection.
+	    # Clean up after events and such, but DON'T call the command
+	    # callback (if available) because we're going to throw an
+	    # exception from here instead.
+	    set err [lindex $state(error) 0]
+	    cleanup $token
+	    return -code error $err
+	}
+    }
+    ##Log Leaving http::geturl - token $token
+    return $token
+}
+
+# http::Connected --
+#
+#	Callback used when the connection to the HTTP server is actually
+#	established.
+#
+# Arguments:
+#	token	State token.
+#	proto	What protocol (http, https, etc.) was used to connect.
+#	phost	Are we using keep-alive? Non-empty if yes.
+#	srvurl	Service-local URL that we're requesting
+# Results:
+#	None.
+
+proc http::Connected {token proto phost srvurl} {
+    variable http
+    variable urlTypes
+    variable socketMapping
+    variable socketRdState
+    variable socketWrState
+    variable socketRdQueue
+    variable socketWrQueue
+    variable socketClosing
+    variable socketPlayCmd
+
+    variable $token
+    upvar 0 $token state
+    set tk [namespace tail $token]
+
+    if {$state(reusing) && (!$state(-pipeline)) && ($state(-timeout) > 0)} {
+	set state(after) [after $state(-timeout) \
+		[list http::reset $token timeout]]
+    }
+
+    # Set back the variables needed here.
+    set sock $state(sock)
+    set isQueryChannel [info exists state(-querychannel)]
+    set isQuery [info exists state(-query)]
+    set host [lindex [split $state(socketinfo) :] 0]
+    set port [lindex [split $state(socketinfo) :] 1]
+
+    set lower [string tolower $proto]
+    set defport [lindex $urlTypes($lower) 0]
+
+    # Send data in cr-lf format, but accept any line terminators.
+    # Initialisation to {auto *} now done in geturl, KeepSocket and DoneRequest.
+    # We are concerned here with the request (write) not the response (read).
+    lassign [fconfigure $sock -translation] trRead trWrite
+    fconfigure $sock -translation [list $trRead crlf] \
+		     -buffersize $state(-blocksize)
+
+    # The following is disallowed in safe interpreters, but the socket is
+    # already in non-blocking mode in that case.
+
+    catch {fconfigure $sock -blocking off}
+    set how GET
+    if {$isQuery} {
+	set state(querylength) [string length $state(-query)]
+	if {$state(querylength) > 0} {
+	    set how POST
+	    set contDone 0
+	} else {
+	    # There's no query data.
+	    unset state(-query)
+	    set isQuery 0
+	}
+    } elseif {$state(-validate)} {
+	set how HEAD
+    } elseif {$isQueryChannel} {
+	set how POST
+	# The query channel must be blocking for the async Write to
+	# work properly.
+	lassign [fconfigure $sock -translation] trRead trWrite
+	fconfigure $state(-querychannel) -blocking 1 \
+					 -translation [list $trRead binary]
+	set contDone 0
+    }
+    if {[info exists state(-method)] && ($state(-method) ne "")} {
+	set how $state(-method)
+    }
+    # We cannot handle chunked encodings with -handler, so force HTTP/1.0
+    # until we can manage this.
+    if {[info exists state(-handler)]} {
+	set state(-protocol) 1.0
+    }
+    set accept_types_seen 0
+
+    Log ^B$tk begin sending request - token $token
+
+    if {[catch {
+	set state(method) $how
+	puts $sock "$how $srvurl HTTP/$state(-protocol)"
+	if {[dict exists $state(-headers) Host]} {
+	    # Allow Host spoofing. [Bug 928154]
+	    puts $sock "Host: [dict get $state(-headers) Host]"
+	} elseif {$port == $defport} {
+	    # Don't add port in this case, to handle broken servers. [Bug
+	    # #504508]
+	    puts $sock "Host: $host"
+	} else {
+	    puts $sock "Host: $host:$port"
+	}
+	puts $sock "User-Agent: $http(-useragent)"
+	if {($state(-protocol) >= 1.0) && $state(-keepalive)} {
+	    # Send this header, because a 1.1 server is not compelled to treat
+	    # this as the default.
+	    puts $sock "Connection: keep-alive"
+	}
+	if {($state(-protocol) > 1.0) && !$state(-keepalive)} {
+	    puts $sock "Connection: close" ;# RFC2616 sec 8.1.2.1
+	}
+	if {[info exists phost] && ($phost ne "") && $state(-keepalive)} {
+	    puts $sock "Proxy-Connection: Keep-Alive"
+	}
+	set accept_encoding_seen 0
+	set content_type_seen 0
+	dict for {key value} $state(-headers) {
+	    set value [string map [list \n "" \r ""] $value]
+	    set key [string map {" " -} [string trim $key]]
+	    if {[string equal -nocase $key "host"]} {
+		continue
+	    }
+	    if {[string equal -nocase $key "accept-encoding"]} {
+		set accept_encoding_seen 1
+	    }
+	    if {[string equal -nocase $key "accept"]} {
+		set accept_types_seen 1
+	    }
+	    if {[string equal -nocase $key "content-type"]} {
+		set content_type_seen 1
+	    }
+	    if {[string equal -nocase $key "content-length"]} {
+		set contDone 1
+		set state(querylength) $value
+	    }
+	    if {[string length $key]} {
+		puts $sock "$key: $value"
+	    }
+	}
+	# Allow overriding the Accept header on a per-connection basis. Useful
+	# for working with REST services. [Bug c11a51c482]
+	if {!$accept_types_seen} {
+	    puts $sock "Accept: $state(accept-types)"
+	}
+	if {    (!$accept_encoding_seen)
+	     && (![info exists state(-handler)])
+	     && $http(-zip)
+	} {
+	    puts $sock "Accept-Encoding: gzip,deflate,compress"
+	}
+	if {$isQueryChannel && ($state(querylength) == 0)} {
+	    # Try to determine size of data in channel. If we cannot seek, the
+	    # surrounding catch will trap us
+
+	    set start [tell $state(-querychannel)]
+	    seek $state(-querychannel) 0 end
+	    set state(querylength) \
+		    [expr {[tell $state(-querychannel)] - $start}]
+	    seek $state(-querychannel) $start
+	}
+
+	# Flush the request header and set up the fileevent that will either
+	# push the POST data or read the response.
+	#
+	# fileevent note:
+	#
+	# It is possible to have both the read and write fileevents active at
+	# this point. The only scenario it seems to affect is a server that
+	# closes the connection without reading the POST data. (e.g., early
+	# versions TclHttpd in various error cases). Depending on the
+	# platform, the client may or may not be able to get the response from
+	# the server because of the error it will get trying to write the post
+	# data. Having both fileevents active changes the timing and the
+	# behavior, but no two platforms (among Solaris, Linux, and NT) behave
+	# the same, and none behave all that well in any case. Servers should
+	# always read their POST data if they expect the client to read their
+	# response.
+
+	if {$isQuery || $isQueryChannel} {
+	    # POST method.
+	    if {!$content_type_seen} {
+		puts $sock "Content-Type: $state(-type)"
+	    }
+	    if {!$contDone} {
+		puts $sock "Content-Length: $state(querylength)"
+	    }
+	    puts $sock ""
+	    flush $sock
+	    # Flush flushes the error in the https case with a bad handshake:
+	    # else the socket never becomes writable again, and hangs until
+	    # timeout (if any).
+
+	    lassign [fconfigure $sock -translation] trRead trWrite
+	    fconfigure $sock -translation [list $trRead binary]
+	    fileevent $sock writable [list http::Write $token]
+	    # The http::Write command decides when to make the socket readable,
+	    # using the same test as the GET/HEAD case below.
+	} else {
+	    # GET or HEAD method.
+	    if {    (![catch {fileevent $sock readable} binding])
+		 && ($binding eq [list http::CheckEof $sock])
+	    } {
+		# Remove the "fileevent readable" binding of an idle persistent
+		# socket to http::CheckEof.  We can no longer treat bytes
+		# received as junk. The server might still time out and
+		# half-close the socket if it has not yet received the first
+		# "puts".
+		fileevent $sock readable {}
+	    }
+	    puts $sock ""
+	    flush $sock
+	    Log ^C$tk end sending request - token $token
+	    # End of writing (GET/HEAD methods).  The request has been sent.
+
+	    DoneRequest $token
+	}
+
+    } err]} {
+	# The socket probably was never connected, OR the connection dropped
+	# later, OR https handshake error, which may be discovered as late as
+	# the "flush" command above...
+	Log "WARNING - if testing, pay special attention to this\
+		case (GI) which is seldom executed - token $token"
+	if {[info exists state(reusing)] && $state(reusing)} {
+	    # The socket was closed at the server end, and closed at
+	    # this end by http::CheckEof.
+    	    if {[TestForReplay $token write $err a]} {
+		return
+	    } else {
+		Finish $token {failed to re-use socket}
+	    }
+
+	    # else:
+	    # This is NOT a persistent socket that has been closed since its
+	    # last use.
+	    # If any other requests are in flight or pipelined/queued, they will
+	    # be discarded.
+	} elseif {$state(status) eq ""} {
+	    # ...https handshake errors come here.
+	    set msg [registerError $sock]
+	    registerError $sock {}
+	    if {$msg eq {}} {
+		set msg {failed to use socket}
+	    }
+	    Finish $token $msg
+	} elseif {$state(status) ne "error"} {
+	    Finish $token $err
+	}
+    }
+}
+
+# http::registerError
+#
+#	Called (for example when processing TclTLS activity) to register
+#	an error for a connection on a specific socket.  This helps
+#	http::Connected to deliver meaningful error messages, e.g. when a TLS
+#	certificate fails verification.
+#
+#	Usage: http::registerError socket ?newValue?
+#
+#	"set" semantics, except that a "get" (a call without a new value) for a
+#	non-existent socket returns {}, not an error.
+
+proc http::registerError {sock args} {
+    variable registeredErrors
+
+    if {    ([llength $args] == 0)
+	 && (![info exists registeredErrors($sock)])
+    } {
+	return
+    } elseif {    ([llength $args] == 1)
+	       && ([lindex $args 0] eq {})
+    } {
+	unset -nocomplain registeredErrors($sock)
+	return
+    }
+    set registeredErrors($sock) {*}$args
+}
+
+# http::DoneRequest --
+#
+#	Command called when a request has been sent.  It will arrange the
+#	next request and/or response as appropriate.
+#
+#	If this command is called when $socketClosing(*), the request $token
+#	that calls it must be pipelined and destined to fail.
+
+proc http::DoneRequest {token} {
+    variable http
+    variable socketMapping
+    variable socketRdState
+    variable socketWrState
+    variable socketRdQueue
+    variable socketWrQueue
+    variable socketClosing
+    variable socketPlayCmd
+
+    variable $token
+    upvar 0 $token state
+    set tk [namespace tail $token]
+    set sock $state(sock)
+
+    # If pipelined, connect the next HTTP request to the socket.
+    if {$state(reusing) && $state(-pipeline)} {
+	# Enable next token (if any) to write.
+	# The value "Wready" is set only here, and
+	# in http::Event after reading the response-headers of a
+	# non-reusing transaction.
+	# Previous value is $token. It cannot be pending.
+	set socketWrState($state(socketinfo)) Wready
+
+	# Now ready to write the next pipelined request (if any).
+	http::NextPipelinedWrite $token
+    } else {
+	# If pipelined, this is the first transaction on this socket.  We wait
+	# for the response headers to discover whether the connection is
+	# persistent.  (If this is not done and the connection is not
+	# persistent, we SHOULD retry and then MUST NOT pipeline before knowing
+	# that we have a persistent connection
+	# (rfc2616 8.1.2.2)).
+    }
+
+    # Connect to receive the response, unless the socket is pipelined
+    # and another response is being sent.
+    # This code block is separate from the code below because there are
+    # cases where socketRdState already has the value $token.
+    if {    $state(-keepalive)
+	 && $state(-pipeline)
+	 && [info exists socketRdState($state(socketinfo))]
+	 && ($socketRdState($state(socketinfo)) eq "Rready")
+    } {
+	#Log pipelined, GRANT read access to $token in Connected
+	set socketRdState($state(socketinfo)) $token
+    }
+
+    if {    $state(-keepalive)
+	 && $state(-pipeline)
+	 && [info exists socketRdState($state(socketinfo))]
+	 && ($socketRdState($state(socketinfo)) ne $token)
+    } {
+	# Do not read from the socket until it is ready.
+	##Log "HTTP response for token $token is queued for pipelined use"
+	# If $socketClosing(*), then the caller will be a pipelined write and
+	# execution will come here.
+	# This token has already been recorded as "in flight" for writing.
+	# When the socket is closed, the read queue will be cleared in
+	# CloseQueuedQueries and so the "lappend" here has no effect.
+	lappend socketRdQueue($state(socketinfo)) $token
+    } else {
+	# In the pipelined case, connection for reading depends on the
+	# value of socketRdState.
+	# In the nonpipeline case, connection for reading always occurs.
+	ReceiveResponse $token
+    }
+}
+
+# http::ReceiveResponse
+#
+#	Connects token to its socket for reading.
+
+proc http::ReceiveResponse {token} {
+    variable $token
+    upvar 0 $token state
+    set tk [namespace tail $token]
+    set sock $state(sock)
+
+    #Log ---- $state(socketinfo) >> conn to $token for HTTP response
+    lassign [fconfigure $sock -translation] trRead trWrite
+    fconfigure $sock -translation [list auto $trWrite] \
+		     -buffersize $state(-blocksize)
+    Log ^D$tk begin receiving response - token $token
+
+    coroutine ${token}EventCoroutine http::Event $sock $token
+    fileevent $sock readable ${token}EventCoroutine
+}
+
+# http::NextPipelinedWrite
+#
+# - Connecting a socket to a token for writing is done by this command and by
+#   command KeepSocket.
+# - If another request has a pipelined write scheduled for $token's socket,
+#   and if the socket is ready to accept it, connect the write and update
+#   the queue accordingly.
+# - This command is called from http::DoneRequest and http::Event,
+#   IF $state(-pipeline) AND (the current transfer has reached the point at
+#   which the socket is ready for the next request to be written).
+# - This command is called when a token has write access and is pipelined and
+#   keep-alive, and sets socketWrState to Wready.
+# - The command need not consider the case where socketWrState is set to a token
+#   that does not yet have write access.  Such a token is waiting for Rready,
+#   and the assignment of the connection to the token will be done elsewhere (in
+#   http::KeepSocket).
+# - This command cannot be called after socketWrState has been set to a
+#   "pending" token value (that is then overwritten by the caller), because that
+#   value is set by this command when it is called by an earlier token when it
+#   relinquishes its write access, and the pending token is always the next in
+#   line to write.
+
+proc http::NextPipelinedWrite {token} {
+    variable http
+    variable socketRdState
+    variable socketWrState
+    variable socketWrQueue
+    variable socketClosing
+    variable $token
+    upvar 0 $token state
+    set connId $state(socketinfo)
+
+    if {    [info exists socketClosing($connId)]
+	 && $socketClosing($connId)
+    } {
+	# socketClosing(*) is set because the server has sent a
+	# "Connection: close" header.
+	# Behave as if the queues are empty - so do nothing.
+    } elseif {    $state(-pipeline)
+	 && [info exists socketWrState($connId)]
+	 && ($socketWrState($connId) eq "Wready")
+
+	 && [info exists socketWrQueue($connId)]
+	 && [llength $socketWrQueue($connId)]
+	 && ([set token2 [lindex $socketWrQueue($connId) 0]
+	      set ${token2}(-pipeline)
+	     ]
+	    )
+    } {
+	# - The usual case for a pipelined connection, ready for a new request.
+	#Log pipelined, GRANT write access to $token2 in NextPipelinedWrite
+	set conn [set ${token2}(tmpConnArgs)]
+	set socketWrState($connId) $token2
+	set socketWrQueue($connId) [lrange $socketWrQueue($connId) 1 end]
+	# Connect does its own fconfigure.
+	fileevent $state(sock) writable [list http::Connect $token2 {*}$conn]
+	#Log ---- $connId << conn to $token2 for HTTP request (b)
+
+	# In the tests below, the next request will be nonpipeline.
+    } elseif {    $state(-pipeline)
+	       && [info exists socketWrState($connId)]
+	       && ($socketWrState($connId) eq "Wready")
+
+	       && [info exists socketWrQueue($connId)]
+	       && [llength $socketWrQueue($connId)]
+	       && (![ set token3 [lindex $socketWrQueue($connId) 0]
+		      set ${token3}(-pipeline)
+		    ]
+		  )
+
+	       && [info exists socketRdState($connId)]
+	       && ($socketRdState($connId) eq "Rready")
+    } {
+	# The case in which the next request will be non-pipelined, and the read
+	# and write queues is ready: which is the condition for a non-pipelined
+	# write.
+	variable $token3
+	upvar 0 $token3 state3
+	set conn [set ${token3}(tmpConnArgs)]
+	#Log nonpipeline, GRANT r/w access to $token3 in NextPipelinedWrite
+	set socketRdState($connId) $token3
+	set socketWrState($connId) $token3
+	set socketWrQueue($connId) [lrange $socketWrQueue($connId) 1 end]
+	# Connect does its own fconfigure.
+	fileevent $state(sock) writable [list http::Connect $token3 {*}$conn]
+	#Log ---- $state(sock) << conn to $token3 for HTTP request (c)
+
+    } elseif {    $state(-pipeline)
+	 && [info exists socketWrState($connId)]
+	 && ($socketWrState($connId) eq "Wready")
+
+	 && [info exists socketWrQueue($connId)]
+	 && [llength $socketWrQueue($connId)]
+	 && (![set token2 [lindex $socketWrQueue($connId) 0]
+	      set ${token2}(-pipeline)
+	     ]
+	    )
+    } {
+	# - The case in which the next request will be non-pipelined, but the
+	#   read queue is NOT ready.
+	# - A read is queued or in progress, but not a write.  Cannot start the
+	#   nonpipeline transaction, but must set socketWrState to prevent a new
+	#   pipelined request (in http::geturl) jumping the queue.
+	# - Because socketWrState($connId) is not set to Wready, the assignment
+	#   of the connection to $token2 will be done elsewhere - by command
+	#   http::KeepSocket when $socketRdState($connId) is set to "Rready".
+
+	#Log re-use nonpipeline, GRANT delayed write access to $token in NextP..
+	set socketWrState($connId) peNding
+    }
+}
+
+# http::CancelReadPipeline
+#
+#	Cancel pipelined responses on a closing "Keep-Alive" socket.
+#
+#	- Called by a variable trace on "unset socketRdState($connId)".
+#	- The variable relates to a Keep-Alive socket, which has been closed.
+#	- Cancels all pipelined responses. The requests have been sent,
+#	  the responses have not yet been received.
+#	- This is a hard cancel that ends each transaction with error status,
+#	  and closes the connection. Do not use it if you want to replay failed
+#	  transactions.
+#	- N.B. Always delete ::http::socketRdState($connId) before deleting
+#	  ::http::socketRdQueue($connId), or this command will do nothing.
+#
+# Arguments
+#	As for a trace command on a variable.
+
+proc http::CancelReadPipeline {name1 connId op} {
+    variable socketRdQueue
+    ##Log CancelReadPipeline $name1 $connId $op
+    if {[info exists socketRdQueue($connId)]} {
+	set msg {the connection was closed by CancelReadPipeline}
+	foreach token $socketRdQueue($connId) {
+	    set tk [namespace tail $token]
+	    Log ^X$tk end of response "($msg)" - token $token
+	    set ${token}(status) eof
+	    Finish $token ;#$msg
+	}
+	set socketRdQueue($connId) {}
+    }
+}
+
+# http::CancelWritePipeline
+#
+#	Cancel queued events on a closing "Keep-Alive" socket.
+#
+#	- Called by a variable trace on "unset socketWrState($connId)".
+#	- The variable relates to a Keep-Alive socket, which has been closed.
+#	- In pipelined or nonpipeline case: cancels all queued requests.  The
+#	  requests have not yet been sent, the responses are not due.
+#	- This is a hard cancel that ends each transaction with error status,
+#	  and closes the connection. Do not use it if you want to replay failed
+#	  transactions.
+#	- N.B. Always delete ::http::socketWrState($connId) before deleting
+#	  ::http::socketWrQueue($connId), or this command will do nothing.
+#
+# Arguments
+#	As for a trace command on a variable.
+
+proc http::CancelWritePipeline {name1 connId op} {
+    variable socketWrQueue
+
+    ##Log CancelWritePipeline $name1 $connId $op
+    if {[info exists socketWrQueue($connId)]} {
+	set msg {the connection was closed by CancelWritePipeline}
+	foreach token $socketWrQueue($connId) {
+	    set tk [namespace tail $token]
+	    Log ^X$tk end of response "($msg)" - token $token
+	    set ${token}(status) eof
+	    Finish $token ;#$msg
+	}
+	set socketWrQueue($connId) {}
+    }
+}
+
+# http::ReplayIfDead --
+#
+# - A query on a re-used persistent socket failed at the earliest opportunity,
+#   because the socket had been closed by the server.  Keep the token, tidy up,
+#   and try to connect on a fresh socket.
+# - The connection is monitored for eof by the command http::CheckEof.  Thus
+#   http::ReplayIfDead is needed only when a server event (half-closing an
+#   apparently idle connection), and a client event (sending a request) occur at
+#   almost the same time, and neither client nor server detects the other's
+#   action before performing its own (an "asynchronous close event").
+# - To simplify testing of http::ReplayIfDead, set TEST_EOF 1 in
+#   http::KeepSocket, and then http::ReplayIfDead will be called if http::geturl
+#   is called at any time after the server timeout.
+#
+# Arguments:
+#	token	Connection token.
+#
+# Side Effects:
+#	Use the same token, but try to open a new socket.
+
+proc http::ReplayIfDead {tokenArg doing} {
+    variable socketMapping
+    variable socketRdState
+    variable socketWrState
+    variable socketRdQueue
+    variable socketWrQueue
+    variable socketClosing
+    variable socketPlayCmd
+
+    variable $tokenArg
+    upvar 0 $tokenArg stateArg
+
+    Log running http::ReplayIfDead for $tokenArg $doing
+
+    # 1. Merge the tokens for transactions in flight, the read (response) queue,
+    #    and the write (request) queue.
+
+    set InFlightR {}
+    set InFlightW {}
+
+    # Obtain the tokens for transactions in flight.
+    if {$stateArg(-pipeline)} {
+	# Two transactions may be in flight.  The "read" transaction was first.
+	# It is unlikely that the server would close the socket if a response
+	# was pending; however, an earlier request (as well as the present
+	# request) may have been sent and ignored if the socket was half-closed
+	# by the server.
+
+	if {    [info exists socketRdState($stateArg(socketinfo))]
+	     && ($socketRdState($stateArg(socketinfo)) ne "Rready")
+	} {
+	    lappend InFlightR $socketRdState($stateArg(socketinfo))
+	} elseif {($doing eq "read")} {
+	    lappend InFlightR $tokenArg
+	}
+
+	if {    [info exists socketWrState($stateArg(socketinfo))]
+	     && $socketWrState($stateArg(socketinfo)) ni {Wready peNding}
+	} {
+	    lappend InFlightW $socketWrState($stateArg(socketinfo))
+	} elseif {($doing eq "write")} {
+	    lappend InFlightW $tokenArg
+	}
+
+	# Report any inconsistency of $tokenArg with socket*state.
+	if {    ($doing eq "read")
+	     && [info exists socketRdState($stateArg(socketinfo))]
+	     && ($tokenArg ne $socketRdState($stateArg(socketinfo)))
+	} {
+	    Log WARNING - ReplayIfDead pipelined tokenArg $tokenArg $doing \
+		    ne socketRdState($stateArg(socketinfo)) \
+		      $socketRdState($stateArg(socketinfo))
+
+	} elseif {
+		($doing eq "write")
+	     && [info exists socketWrState($stateArg(socketinfo))]
+	     && ($tokenArg ne $socketWrState($stateArg(socketinfo)))
+	} {
+	    Log WARNING - ReplayIfDead pipelined tokenArg $tokenArg $doing \
+		    ne socketWrState($stateArg(socketinfo)) \
+		      $socketWrState($stateArg(socketinfo))
+	}
+    } else {
+	# One transaction should be in flight.
+	# socketRdState, socketWrQueue are used.
+	# socketRdQueue should be empty.
+
+	# Report any inconsistency of $tokenArg with socket*state.
+	if {$tokenArg ne $socketRdState($stateArg(socketinfo))} {
+	    Log WARNING - ReplayIfDead nonpipeline tokenArg $tokenArg $doing \
+		    ne socketRdState($stateArg(socketinfo)) \
+		      $socketRdState($stateArg(socketinfo))
+	}
+
+	# Report the inconsistency that socketRdQueue is non-empty.
+	if {    [info exists socketRdQueue($stateArg(socketinfo))]
+	     && ($socketRdQueue($stateArg(socketinfo)) ne {})
+	} {
+	    Log WARNING - ReplayIfDead nonpipeline tokenArg $tokenArg $doing \
+		    has read queue socketRdQueue($stateArg(socketinfo)) \
+		    $socketRdQueue($stateArg(socketinfo)) ne {}
+	}
+
+	lappend InFlightW $socketRdState($stateArg(socketinfo))
+	set socketRdQueue($stateArg(socketinfo)) {}
+    }
+
+    set newQueue {}
+    lappend newQueue {*}$InFlightR
+    lappend newQueue {*}$socketRdQueue($stateArg(socketinfo))
+    lappend newQueue {*}$InFlightW
+    lappend newQueue {*}$socketWrQueue($stateArg(socketinfo))
+
+
+    # 2. Tidy up tokenArg.  This is a cut-down form of Finish/CloseSocket.
+    #    Do not change state(status).
+    #    No need to after cancel stateArg(after) - either this is done in
+    #    ReplayCore/ReInit, or Finish is called.
+
+    catch {close $stateArg(sock)}
+
+    # 2a. Tidy the tokens in the queues - this is done in ReplayCore/ReInit.
+    # - Transactions, if any, that are awaiting responses cannot be completed.
+    #   They are listed for re-sending in newQueue.
+    # - All tokens are preserved for re-use by ReplayCore, and their variables
+    #   will be re-initialised by calls to ReInit.
+    # - The relevant element of socketMapping, socketRdState, socketWrState,
+    #   socketRdQueue, socketWrQueue, socketClosing, socketPlayCmd will be set
+    #   to new values in ReplayCore.
+
+    ReplayCore $newQueue
+}
+
+# http::ReplayIfClose --
+#
+#	A request on a socket that was previously "Connection: keep-alive" has
+#	received a "Connection: close" response header.  The server supplies
+#	that response correctly, but any later requests already queued on this
+#	connection will be lost when the socket closes.
+#
+#	This command takes arguments that represent the socketWrState,
+#	socketRdQueue and socketWrQueue for this connection.  The socketRdState
+#	is not needed because the server responds in full to the request that
+#	received the "Connection: close" response header.
+#
+#	Existing request tokens $token (::http::$n) are preserved.  The caller
+#	will be unaware that the request was processed this way.
+
+proc http::ReplayIfClose {Wstate Rqueue Wqueue} {
+    Log running http::ReplayIfClose for $Wstate $Rqueue $Wqueue
+
+    if {$Wstate in $Rqueue || $Wstate in $Wqueue} {
+	Log WARNING duplicate token in http::ReplayIfClose - token $Wstate
+	set Wstate Wready
+    }
+
+    # 1. Create newQueue
+    set InFlightW {}
+    if {$Wstate ni {Wready peNding}} {
+	lappend InFlightW $Wstate
+    }
+
+    set newQueue {}
+    lappend newQueue {*}$Rqueue
+    lappend newQueue {*}$InFlightW
+    lappend newQueue {*}$Wqueue
+
+    # 2. Cleanup - none needed, done by the caller.
+
+    ReplayCore $newQueue
+}
+
+# http::ReInit --
+#
+#	Command to restore a token's state to a condition that
+#	makes it ready to replay a request.
+#
+#	Command http::geturl stores extra state in state(tmp*) so
+#	we don't need to do the argument processing again.
+#
+#	The caller must:
+#	- Set state(reusing) and state(sock) to their new values after calling
+#	  this command.
+#	- Unset state(tmpState), state(tmpOpenCmd) if future calls to ReplayCore
+#	  or ReInit are inappropriate for this token. Typically only one retry
+#	  is allowed.
+#	The caller may also unset state(tmpConnArgs) if this value (and the
+#	token) will be used immediately.  The value is needed by tokens that
+#	will be stored in a queue.
+#
+# Arguments:
+#	token	Connection token.
+#
+# Return Value: (boolean) true iff the re-initialisation was successful.
+
+proc http::ReInit {token} {
+    variable $token
+    upvar 0 $token state
+
+    if {!(
+	      [info exists state(tmpState)]
+	   && [info exists state(tmpOpenCmd)]
+	   && [info exists state(tmpConnArgs)]
+	 )
+    } {
+	Log FAILED in http::ReInit via ReplayCore - NO tmp vars for $token
+	return 0
+    }
+
+    if {[info exists state(after)]} {
+	after cancel $state(after)
+	unset state(after)
+    }
+
+    # Don't alter state(status) - this would trigger http::wait if it is in use.
+    set tmpState    $state(tmpState)
+    set tmpOpenCmd  $state(tmpOpenCmd)
+    set tmpConnArgs $state(tmpConnArgs)
+    foreach name [array names state] {
+	if {$name ne "status"} {
+	    unset state($name)
+	}
+    }
+
+    # Don't alter state(status).
+    # Restore state(tmp*) - the caller may decide to unset them.
+    # Restore state(tmpConnArgs) which is needed for connection.
+    # state(tmpState), state(tmpOpenCmd) are needed only for retries.
+
+    dict unset tmpState status
+    array set state $tmpState
+    set state(tmpState)    $tmpState
+    set state(tmpOpenCmd)  $tmpOpenCmd
+    set state(tmpConnArgs) $tmpConnArgs
+
+    return 1
+}
+
+# http::ReplayCore --
+#
+#	Command to replay a list of requests, using existing connection tokens.
+#
+#	Abstracted from http::geturl which stores extra state in state(tmp*) so
+#	we don't need to do the argument processing again.
+#
+# Arguments:
+#	newQueue	List of connection tokens.
+#
+# Side Effects:
+#	Use existing tokens, but try to open a new socket.
+
+proc http::ReplayCore {newQueue} {
+    variable socketMapping
+    variable socketRdState
+    variable socketWrState
+    variable socketRdQueue
+    variable socketWrQueue
+    variable socketClosing
+    variable socketPlayCmd
+
+    if {[llength $newQueue] == 0} {
+	# Nothing to do.
+	return
+    }
+
+    ##Log running ReplayCore for {*}$newQueue
+    set newToken [lindex $newQueue 0]
+    set newQueue [lrange $newQueue 1 end]
+
+    # 3. Use newToken, and restore its values of state(*).  Do not restore
+    #    elements tmp* - we try again only once.
+
+    set token $newToken
+    variable $token
+    upvar 0 $token state
+
+    if {![ReInit $token]} {
+	Log FAILED in http::ReplayCore - NO tmp vars
+	Finish $token {cannot send this request again}
+	return
+    }
+
+    set tmpState    $state(tmpState)
+    set tmpOpenCmd  $state(tmpOpenCmd)
+    set tmpConnArgs $state(tmpConnArgs)
+    unset state(tmpState)
+    unset state(tmpOpenCmd)
+    unset state(tmpConnArgs)
+
+    set state(reusing) 0
+
+    if {$state(-timeout) > 0} {
+	set resetCmd [list http::reset $token timeout]
+	set state(after) [after $state(-timeout) $resetCmd]
+    }
+
+    set pre [clock milliseconds]
+    ##Log pre socket opened, - token $token
+    ##Log $tmpOpenCmd - token $token
+    # 4. Open a socket.
+    if {[catch {eval $tmpOpenCmd} sock]} {
+	# Something went wrong while trying to establish the connection.
+	Log FAILED - $sock
+	set state(sock) NONE
+	Finish $token $sock
+	return
+    }
+    ##Log post socket opened, - token $token
+    set delay [expr {[clock milliseconds] - $pre}]
+    if {$delay > 3000} {
+	Log socket delay $delay - token $token
+    }
+    # Command [socket] is called with -async, but takes 5s to 5.1s to return,
+    # with probability of order 1 in 10,000.  This may be a bizarre scheduling
+    # issue with my (KJN's) system (Fedora Linux).
+    # This does not cause a problem (unless the request times out when this
+    # command returns).
+
+    # 5. Configure the persistent socket data.
+    if {$state(-keepalive)} {
+	set socketMapping($state(socketinfo)) $sock
+
+	if {![info exists socketRdState($state(socketinfo))]} {
+	    set socketRdState($state(socketinfo)) {}
+	    set varName ::http::socketRdState($state(socketinfo))
+	    trace add variable $varName unset ::http::CancelReadPipeline
+	}
+
+	if {![info exists socketWrState($state(socketinfo))]} {
+	    set socketWrState($state(socketinfo)) {}
+	    set varName ::http::socketWrState($state(socketinfo))
+	    trace add variable $varName unset ::http::CancelWritePipeline
+	}
+
+	if {$state(-pipeline)} {
+	    #Log new, init for pipelined, GRANT write acc to $token ReplayCore
+	    set socketRdState($state(socketinfo)) $token
+	    set socketWrState($state(socketinfo)) $token
+	} else {
+	    #Log new, init for nonpipeline, GRANT r/w acc to $token ReplayCore
+	    set socketRdState($state(socketinfo)) $token
+	    set socketWrState($state(socketinfo)) $token
+	}
+
+	set socketRdQueue($state(socketinfo)) {}
+	set socketWrQueue($state(socketinfo)) $newQueue
+	set socketClosing($state(socketinfo)) 0
+	set socketPlayCmd($state(socketinfo)) {ReplayIfClose Wready {} {}}
+    }
+
+    ##Log pre newQueue ReInit, - token $token
+    # 6. Configure sockets in the queue.
+    foreach tok $newQueue {
+	if {[ReInit $tok]} {
+	    set ${tok}(reusing) 1
+	    set ${tok}(sock) $sock
+	} else {
+	    set ${tok}(reusing) 1
+	    set ${tok}(sock) NONE
+	    Finish $token {cannot send this request again}
+	}
+    }
+
+    # 7. Configure the socket for newToken to send a request.
+    set state(sock) $sock
+    Log "Using $sock for $state(socketinfo) - token $token" \
+	[expr {$state(-keepalive)?"keepalive":""}]
+
+    # Initialisation of a new socket.
+    ##Log socket opened, now fconfigure - token $token
+    fconfigure $sock -translation {auto crlf} -buffersize $state(-blocksize)
+    ##Log socket opened, DONE fconfigure - token $token
+
+    # Connect does its own fconfigure.
+    fileevent $sock writable [list http::Connect $token {*}$tmpConnArgs]
+    #Log ---- $sock << conn to $token for HTTP request (e)
+}
+
+# Data access functions:
+# Data - the URL data
+# Status - the transaction status: ok, reset, eof, timeout, error
+# Code - the HTTP transaction code, e.g., 200
+# Size - the size of the URL data
+
+proc http::data {token} {
+    variable $token
+    upvar 0 $token state
+    return $state(body)
+}
+proc http::status {token} {
+    if {![info exists $token]} {
+	return "error"
+    }
+    variable $token
+    upvar 0 $token state
+    return $state(status)
+}
+proc http::code {token} {
+    variable $token
+    upvar 0 $token state
+    return $state(http)
+}
+proc http::ncode {token} {
+    variable $token
+    upvar 0 $token state
+    if {[regexp {[0-9]{3}} $state(http) numeric_code]} {
+	return $numeric_code
+    } else {
+	return $state(http)
+    }
+}
+proc http::size {token} {
+    variable $token
+    upvar 0 $token state
+    return $state(currentsize)
+}
+proc http::meta {token} {
+    variable $token
+    upvar 0 $token state
+    return $state(meta)
+}
+proc http::error {token} {
+    variable $token
+    upvar 0 $token state
+    if {[info exists state(error)]} {
+	return $state(error)
+    }
+    return ""
+}
+
+# http::cleanup
+#
+#	Garbage collect the state associated with a transaction
+#
+# Arguments
+#	token	The token returned from http::geturl
+#
+# Side Effects
+#	unsets the state array
+
+proc http::cleanup {token} {
+    variable $token
+    upvar 0 $token state
+    if {[info commands ${token}EventCoroutine] ne {}} {
+	rename ${token}EventCoroutine {}
+    }
+    if {[info exists state(after)]} {
+	after cancel $state(after)
+	unset state(after)
+    }
+    if {[info exists state]} {
+	unset state
+    }
+}
+
+# http::Connect
+#
+#	This callback is made when an asyncronous connection completes.
+#
+# Arguments
+#	token	The token returned from http::geturl
+#
+# Side Effects
+#	Sets the status of the connection, which unblocks
+# 	the waiting geturl call
+
+proc http::Connect {token proto phost srvurl} {
+    variable $token
+    upvar 0 $token state
+    set tk [namespace tail $token]
+    set err "due to unexpected EOF"
+    if {
+	[eof $state(sock)] ||
+	[set err [fconfigure $state(sock) -error]] ne ""
+    } {
+	Log "WARNING - if testing, pay special attention to this\
+		case (GJ) which is seldom executed - token $token"
+	if {[info exists state(reusing)] && $state(reusing)} {
+	    # The socket was closed at the server end, and closed at
+	    # this end by http::CheckEof.
+	    if {[TestForReplay $token write $err b]} {
+		return
+	    }
+
+	    # else:
+	    # This is NOT a persistent socket that has been closed since its
+	    # last use.
+	    # If any other requests are in flight or pipelined/queued, they will
+	    # be discarded.
+	}
+	Finish $token "connect failed $err"
+    } else {
+	set state(state) connecting
+	fileevent $state(sock) writable {}
+	::http::Connected $token $proto $phost $srvurl
+    }
+}
+
+# http::Write
+#
+#	Write POST query data to the socket
+#
+# Arguments
+#	token	The token for the connection
+#
+# Side Effects
+#	Write the socket and handle callbacks.
+
+proc http::Write {token} {
+    variable http
+    variable socketMapping
+    variable socketRdState
+    variable socketWrState
+    variable socketRdQueue
+    variable socketWrQueue
+    variable socketClosing
+    variable socketPlayCmd
+
+    variable $token
+    upvar 0 $token state
+    set tk [namespace tail $token]
+    set sock $state(sock)
+
+    # Output a block.  Tcl will buffer this if the socket blocks
+    set done 0
+    if {[catch {
+	# Catch I/O errors on dead sockets
+
+	if {[info exists state(-query)]} {
+	    # Chop up large query strings so queryprogress callback can give
+	    # smooth feedback.
+	    if {    $state(queryoffset) + $state(-queryblocksize)
+		 >= $state(querylength)
+	    } {
+		# This will be the last puts for the request-body.
+		if {    (![catch {fileevent $sock readable} binding])
+		     && ($binding eq [list http::CheckEof $sock])
+		} {
+		    # Remove the "fileevent readable" binding of an idle
+		    # persistent socket to http::CheckEof.  We can no longer
+		    # treat bytes received as junk. The server might still time
+		    # out and half-close the socket if it has not yet received
+		    # the first "puts".
+		    fileevent $sock readable {}
+		}
+	    }
+	    puts -nonewline $sock \
+		[string range $state(-query) $state(queryoffset) \
+		     [expr {$state(queryoffset) + $state(-queryblocksize) - 1}]]
+	    incr state(queryoffset) $state(-queryblocksize)
+	    if {$state(queryoffset) >= $state(querylength)} {
+		set state(queryoffset) $state(querylength)
+		set done 1
+	    }
+	} else {
+	    # Copy blocks from the query channel
+
+	    set outStr [read $state(-querychannel) $state(-queryblocksize)]
+	    if {[eof $state(-querychannel)]} {
+		# This will be the last puts for the request-body.
+		if {    (![catch {fileevent $sock readable} binding])
+		     && ($binding eq [list http::CheckEof $sock])
+		} {
+		    # Remove the "fileevent readable" binding of an idle
+		    # persistent socket to http::CheckEof.  We can no longer
+		    # treat bytes received as junk. The server might still time
+		    # out and half-close the socket if it has not yet received
+		    # the first "puts".
+		    fileevent $sock readable {}
+		}
+	    }
+	    puts -nonewline $sock $outStr
+	    incr state(queryoffset) [string length $outStr]
+	    if {[eof $state(-querychannel)]} {
+		set done 1
+	    }
+	}
+    } err]} {
+	# Do not call Finish here, but instead let the read half of the socket
+	# process whatever server reply there is to get.
+
+	set state(posterror) $err
+	set done 1
+    }
+
+    if {$done} {
+	catch {flush $sock}
+	fileevent $sock writable {}
+	Log ^C$tk end sending request - token $token
+	# End of writing (POST method).  The request has been sent.
+
+	DoneRequest $token
+    }
+
+    # Callback to the client after we've completely handled everything.
+
+    if {[string length $state(-queryprogress)]} {
+	eval $state(-queryprogress) \
+	    [list $token $state(querylength) $state(queryoffset)]
+    }
+}
+
+# http::Event
+#
+#	Handle input on the socket. This command is the core of
+#	the coroutine commands ${token}EventCoroutine that are
+#	bound to "fileevent $sock readable" and process input.
+#
+# Arguments
+#	sock	The socket receiving input.
+#	token	The token returned from http::geturl
+#
+# Side Effects
+#	Read the socket and handle callbacks.
+
+proc http::Event {sock token} {
+    variable http
+    variable socketMapping
+    variable socketRdState
+    variable socketWrState
+    variable socketRdQueue
+    variable socketWrQueue
+    variable socketClosing
+    variable socketPlayCmd
+
+    variable $token
+    upvar 0 $token state
+    set tk [namespace tail $token]
+    while 1 {
+	yield
+	##Log Event call - token $token
+
+	if {![info exists state]} {
+	    Log "Event $sock with invalid token '$token' - remote close?"
+	    if {![eof $sock]} {
+		if {[set d [read $sock]] ne ""} {
+		    Log "WARNING: additional data left on closed socket\
+			    - token $token"
+		}
+	    }
+	    Log ^X$tk end of response (token error) - token $token
+	    CloseSocket $sock
+	    return
+	}
+	if {$state(state) eq "connecting"} {
+	    ##Log - connecting - token $token
+	    if {    $state(reusing)
+		 && $state(-pipeline)
+		 && ($state(-timeout) > 0)
+		 && (![info exists state(after)])
+	    } {
+		set state(after) [after $state(-timeout) \
+			[list http::reset $token timeout]]
+	    }
+
+	    if {[catch {gets $sock state(http)} nsl]} {
+		Log "WARNING - if testing, pay special attention to this\
+			case (GK) which is seldom executed - token $token"
+		if {[info exists state(reusing)] && $state(reusing)} {
+		    # The socket was closed at the server end, and closed at
+		    # this end by http::CheckEof.
+
+		    if {[TestForReplay $token read $nsl c]} {
+			return
+		    }
+
+		    # else:
+		    # This is NOT a persistent socket that has been closed since
+		    # its last use.
+		    # If any other requests are in flight or pipelined/queued,
+		    # they will be discarded.
+		} else {
+		    Log ^X$tk end of response (error) - token $token
+		    Finish $token $nsl
+		    return
+		}
+	    } elseif {$nsl >= 0} {
+		##Log - connecting 1 - token $token
+		set state(state) "header"
+	    } elseif {    [eof $sock]
+		       && [info exists state(reusing)]
+		       && $state(reusing)
+	    } {
+		# The socket was closed at the server end, and we didn't notice.
+		# This is the first read - where the closure is usually first
+		# detected.
+
+		if {[TestForReplay $token read {} d]} {
+		    return
+		}
+
+		# else:
+		# This is NOT a persistent socket that has been closed since its
+		# last use.
+		# If any other requests are in flight or pipelined/queued, they
+		# will be discarded.
+	    }
+	} elseif {$state(state) eq "header"} {
+	    if {[catch {gets $sock line} nhl]} {
+		##Log header failed - token $token
+		Log ^X$tk end of response (error) - token $token
+		Finish $token $nhl
+		return
+	    } elseif {$nhl == 0} {
+		##Log header done - token $token
+		Log ^E$tk end of response headers - token $token
+		# We have now read all headers
+		# We ignore HTTP/1.1 100 Continue returns. RFC2616 sec 8.2.3
+		if {    ($state(http) == "")
+		     || ([regexp {^\S+\s(\d+)} $state(http) {} x] && $x == 100)
+		} {
+		    set state(state) "connecting"
+		    continue
+		    # This was a "return" in the pre-coroutine code.
+		}
+
+		if {    ([info exists state(connection)])
+		     && ([info exists socketMapping($state(socketinfo))])
+		     && ($state(connection) eq "keep-alive")
+		     && ($state(-keepalive))
+		     && (!$state(reusing))
+		     && ($state(-pipeline))
+		} {
+		    # Response headers received for first request on a
+		    # persistent socket.  Now ready for pipelined writes (if
+		    # any).
+		    # Previous value is $token. It cannot be "pending".
+		    set socketWrState($state(socketinfo)) Wready
+		    http::NextPipelinedWrite $token
+		}
+
+		# Once a "close" has been signaled, the client MUST NOT send any
+		# more requests on that connection.
+		#
+		# If either the client or the server sends the "close" token in
+		# the Connection header, that request becomes the last one for
+		# the connection.
+
+		if {    ([info exists state(connection)])
+		     && ([info exists socketMapping($state(socketinfo))])
+		     && ($state(connection) eq "close")
+		     && ($state(-keepalive))
+		} {
+		    # The server warns that it will close the socket after this
+		    # response.
+		    ##Log WARNING - socket will close after response for $token
+		    # Prepare data for a call to ReplayIfClose.
+		    if {    ($socketRdQueue($state(socketinfo)) ne {})
+			 || ($socketWrQueue($state(socketinfo)) ne {})
+			 || ($socketWrState($state(socketinfo)) ni
+						[list Wready peNding $token])
+		    } {
+			set InFlightW $socketWrState($state(socketinfo))
+			if {$InFlightW in [list Wready peNding $token]} {
+			    set InFlightW Wready
+			} else {
+			    set msg "token ${InFlightW} is InFlightW"
+			    ##Log $msg - token $token
+			}
+
+			set socketPlayCmd($state(socketinfo)) \
+				[list ReplayIfClose $InFlightW \
+				$socketRdQueue($state(socketinfo)) \
+				$socketWrQueue($state(socketinfo))]
+
+			# - All tokens are preserved for re-use by ReplayCore.
+			# - Queues are preserved in case of Finish with error,
+			#   but are not used for anything else because
+			#   socketClosing(*) is set below.
+			# - Cancel the state(after) timeout events.
+			foreach tokenVal $socketRdQueue($state(socketinfo)) {
+			    if {[info exists ${tokenVal}(after)]} {
+				after cancel [set ${tokenVal}(after)]
+				unset ${tokenVal}(after)
+			    }
+			}
+
+		    } else {
+			set socketPlayCmd($state(socketinfo)) \
+				{ReplayIfClose Wready {} {}}
+		    }
+
+		    # Do not allow further connections on this socket.
+		    set socketClosing($state(socketinfo)) 1
+		}
+
+		set state(state) body
+
+		# If doing a HEAD, then we won't get any body
+		if {$state(-validate)} {
+		    Log ^F$tk end of response for HEAD request - token $token
+		    set state(state) complete
+		    Eot $token
+		    return
+		}
+
+		# - For non-chunked transfer we may have no body - in this case
+		#   we may get no further file event if the connection doesn't
+		#   close and no more data is sent. We can tell and must finish
+		#   up now - not later - the alternative would be to wait until
+		#   the server times out.
+		# - In this case, the server has NOT told the client it will
+		#   close the connection, AND it has NOT indicated the resource
+		#   length EITHER by setting the Content-Length (totalsize) OR
+		#   by using chunked Transfer-Encoding.
+		# - Do not worry here about the case (Connection: close) because
+		#   the server should close the connection.
+		# - IF (NOT Connection: close) AND (NOT chunked encoding) AND
+		#      (totalsize == 0).
+
+		if {    (!(    [info exists state(connection)]
+			    && ($state(connection) eq "close")
+			  )
+			)
+		     && (![info exists state(transfer)])
+		     && ($state(totalsize) == 0)
+		} {
+		    set msg {body size is 0 and no events likely - complete}
+		    Log "$msg - token $token"
+		    set msg {(length unknown, set to 0)}
+		    Log ^F$tk end of response body {*}$msg - token $token
+		    set state(state) complete
+		    Eot $token
+		    return
+		}
+
+		# We have to use binary translation to count bytes properly.
+		lassign [fconfigure $sock -translation] trRead trWrite
+		fconfigure $sock -translation [list binary $trWrite]
+
+		if {
+		    $state(-binary) || [IsBinaryContentType $state(type)]
+		} {
+		    # Turn off conversions for non-text data.
+		    set state(binary) 1
+		}
+		if {[info exists state(-channel)]} {
+		    if {$state(binary) || [llength [ContentEncoding $token]]} {
+			fconfigure $state(-channel) -translation binary
+		    }
+		    if {![info exists state(-handler)]} {
+			# Initiate a sequence of background fcopies.
+			fileevent $sock readable {}
+			rename ${token}EventCoroutine {}
+			CopyStart $sock $token
+			return
+		    }
+		}
+	    } elseif {$nhl > 0} {
+		# Process header lines.
+		##Log header - token $token - $line
+		if {[regexp -nocase {^([^:]+):(.+)$} $line x key value]} {
+		    switch -- [string tolower $key] {
+			content-type {
+			    set state(type) [string trim [string tolower $value]]
+			    # Grab the optional charset information.
+			    if {[regexp -nocase \
+				    {charset\s*=\s*\"((?:[^""]|\\\")*)\"} \
+				    $state(type) -> cs]} {
+				set state(charset) [string map {{\"} \"} $cs]
+			    } else {
+				regexp -nocase {charset\s*=\s*(\S+?);?} \
+					$state(type) -> state(charset)
+			    }
+			}
+			content-length {
+			    set state(totalsize) [string trim $value]
+			}
+			content-encoding {
+			    set state(coding) [string trim $value]
+			}
+			transfer-encoding {
+			    set state(transfer) \
+				    [string trim [string tolower $value]]
+			}
+			proxy-connection -
+			connection {
+			    set state(connection) \
+				    [string trim [string tolower $value]]
+			}
+		    }
+		    lappend state(meta) $key [string trim $value]
+		}
+	    }
+	} else {
+	    # Now reading body
+	    ##Log body - token $token
+	    if {[catch {
+		if {[info exists state(-handler)]} {
+		    set n [eval $state(-handler) [list $sock $token]]
+		    ##Log handler $n - token $token
+		    # N.B. the protocol has been set to 1.0 because the -handler
+		    # logic is not expected to handle chunked encoding.
+		    # FIXME Allow -handler with 1.1 on dechunked stacked chan.
+		    if {$state(totalsize) == 0} {
+			# We know the transfer is complete only when the server
+			# closes the connection - i.e. eof is not an error.
+			set state(state) complete
+		    }
+		    if {![string is integer -strict $n]} {
+			if 1 {
+			    # Do not tolerate bad -handler - fail with error
+			    # status.
+			    set msg {the -handler command for http::geturl must\
+				    return an integer (the number of bytes\
+				    read)}
+			    Log ^X$tk end of response (handler error) -\
+				    token $token
+			    Eot $token $msg
+			} else {
+			    # Tolerate the bad -handler, and continue.  The
+			    # penalty:
+			    # (a) Because the handler returns nonsense, we know
+			    #     the transfer is complete only when the server
+			    #     closes the connection - i.e. eof is not an
+			    #     error.
+			    # (b) http::size will not be accurate.
+			    # (c) The transaction is already downgraded to 1.0
+			    #     to avoid chunked transfer encoding.  It MUST
+			    #     also be forced to "Connection: close" or the
+			    #     HTTP/1.0 equivalent; or it MUST fail (as
+			    #     above) if the server sends
+			    #     "Connection: keep-alive" or the HTTP/1.0
+			    #     equivalent.
+			    set n 0
+			    set state(state) complete
+			}
+		    }
+		} elseif {[info exists state(transfer_final)]} {
+		    # This code forgives EOF in place of the final CRLF.
+		    set line [getTextLine $sock]
+		    set n [string length $line]
+		    set state(state) complete
+		    if {$n > 0} {
+			# - HTTP trailers (late response headers) are permitted
+			#   by Chunked Transfer-Encoding, and can be safely
+			#   ignored.
+			# - Do not count these bytes in the total received for
+			#   the response body.
+			Log "trailer of $n bytes after final chunk -\
+				token $token"
+			append state(transfer_final) $line
+			set n 0
+		    } else {
+			Log ^F$tk end of response body (chunked) - token $token
+			Log "final chunk part - token $token"
+			Eot $token
+		    }
+		} elseif {    [info exists state(transfer)]
+			   && ($state(transfer) eq "chunked")
+		} {
+		    ##Log chunked - token $token
+		    set size 0
+		    set hexLenChunk [getTextLine $sock]
+		    #set ntl [string length $hexLenChunk]
+		    if {[string trim $hexLenChunk] ne ""} {
+			scan $hexLenChunk %x size
+			if {$size != 0} {
+			    ##Log chunk-measure $size - token $token
+			    set chunk [BlockingRead $sock $size]
+			    set n [string length $chunk]
+			    if {$n >= 0} {
+				append state(body) $chunk
+				incr state(log_size) [string length $chunk]
+				##Log chunk $n cumul $state(log_size) -\
+					token $token
+			    }
+			    if {$size != [string length $chunk]} {
+				Log "WARNING: mis-sized chunk:\
+				    was [string length $chunk], should be\
+				    $size - token $token"
+				set n 0
+				set state(connection) close
+				Log ^X$tk end of response (chunk error) \
+					- token $token
+				set msg {error in chunked encoding - fetch\
+					terminated}
+				Eot $token $msg
+			    }
+			    # CRLF that follows chunk.
+			    # If eof, this is handled at the end of this proc.
+			    getTextLine $sock
+			} else {
+			    set n 0
+			    set state(transfer_final) {}
+			}
+		    } else {
+			# Line expected to hold chunk length is empty, or eof.
+			##Log bad-chunk-measure - token $token
+			set n 0
+			set state(connection) close
+			Log ^X$tk end of response (chunk error) - token $token
+			Eot $token {error in chunked encoding -\
+				fetch terminated}
+		    }
+		} else {
+		    ##Log unchunked - token $token
+		    if {$state(totalsize) == 0} {
+			# We know the transfer is complete only when the server
+			# closes the connection.
+			set state(state) complete
+			set reqSize $state(-blocksize)
+		    } else {
+			# Ask for the whole of the unserved response-body.
+			# This works around a problem with a tls::socket - for
+			# https in keep-alive mode, and a request for
+			# $state(-blocksize) bytes, the last part of the
+			# resource does not get read until the server times out.
+			set reqSize [expr {  $state(totalsize)
+					   - $state(currentsize)}]
+
+			# The workaround fails if reqSize is
+			# capped at $state(-blocksize).
+			# set reqSize [expr {min($reqSize, $state(-blocksize))}]
+		    }
+		    set c $state(currentsize)
+		    set t $state(totalsize)
+		    ##Log non-chunk currentsize $c of totalsize $t -\
+			    token $token
+		    set block [read $sock $reqSize]
+		    set n [string length $block]
+		    if {$n >= 0} {
+			append state(body) $block
+			##Log non-chunk [string length $state(body)] -\
+				token $token
+		    }
+		}
+		# This calculation uses n from the -handler, chunked, or
+		# unchunked case as appropriate.
+		if {[info exists state]} {
+		    if {$n >= 0} {
+			incr state(currentsize) $n
+			set c $state(currentsize)
+			set t $state(totalsize)
+			##Log another $n currentsize $c totalsize $t -\
+				token $token
+		    }
+		    # If Content-Length - check for end of data.
+		    if {
+			   ($state(totalsize) > 0)
+			&& ($state(currentsize) >= $state(totalsize))
+		    } {
+			Log ^F$tk end of response body (unchunked) -\
+				token $token
+			set state(state) complete
+			Eot $token
+		    }
+		}
+	    } err]} {
+		Log ^X$tk end of response (error ${err}) - token $token
+		Finish $token $err
+		return
+	    } else {
+		if {[info exists state(-progress)]} {
+		    eval $state(-progress) \
+			[list $token $state(totalsize) $state(currentsize)]
+		}
+	    }
+	}
+
+	# catch as an Eot above may have closed the socket already
+	# $state(state) may be connecting, header, body, or complete
+	if {![set cc [catch {eof $sock} eof]] && $eof} {
+	    ##Log eof - token $token
+	    if {[info exists $token]} {
+		set state(connection) close
+		if {$state(state) eq "complete"} {
+		    # This includes all cases in which the transaction
+		    # can be completed by eof.
+		    # The value "complete" is set only in http::Event, and it is
+		    # used only in the test above.
+		    Log ^F$tk end of response body (unchunked, eof) -\
+			    token $token
+		    Eot $token
+		} else {
+		    # Premature eof.
+		    Log ^X$tk end of response (unexpected eof) - token $token
+		    Eot $token eof
+		}
+	    } else {
+		# open connection closed on a token that has been cleaned up.
+		Log ^X$tk end of response (token error) - token $token
+		CloseSocket $sock
+	    }
+	} elseif {$cc} {
+	    return
+	}
+    }
+}
+
+# http::TestForReplay
+#
+#	Command called if eof is discovered when a socket is first used for a
+#	new transaction.  Typically this occurs if a persistent socket is used
+#	after a period of idleness and the server has half-closed the socket.
+#
+# token  - the connection token returned by http::geturl
+# doing  - "read" or "write"
+# err    - error message, if any
+# caller - code to identify the caller - used only in logging
+#
+# Return Value: boolean, true iff the command calls http::ReplayIfDead.
+
+proc http::TestForReplay {token doing err caller} {
+    variable http
+    variable $token
+    upvar 0 $token state
+    set tk [namespace tail $token]
+    if {$doing eq "read"} {
+	set code Q
+	set action response
+	set ing reading
+    } else {
+	set code P
+	set action request
+	set ing writing
+    }
+
+    if {$err eq {}} {
+	set err "detect eof when $ing (server timed out?)"
+    }
+
+    if {$state(method) eq "POST" && !$http(-repost)} {
+	# No Replay.
+	# The present transaction will end when Finish is called.
+	# That call to Finish will abort any other transactions
+	# currently in the write queue.
+	# For calls from http::Event this occurs when execution
+	# reaches the code block at the end of that proc.
+	set msg {no retry for POST with http::config -repost 0}
+	Log reusing socket failed "($caller)" - $msg - token $token
+	Log error - $err - token $token
+	Log ^X$tk end of $action (error) - token $token
+	return 0
+    } else {
+	# Replay.
+	set msg {try a new socket}
+	Log reusing socket failed "($caller)" - $msg - token $token
+	Log error - $err - token $token
+	Log ^$code$tk Any unfinished (incl this one) failed - token $token
+	ReplayIfDead $token $doing
+	return 1
+    }
+}
+
+# http::IsBinaryContentType --
+#
+#	Determine if the content-type means that we should definitely transfer
+#	the data as binary. [Bug 838e99a76d]
+#
+# Arguments
+#	type	The content-type of the data.
+#
+# Results:
+#	Boolean, true if we definitely should be binary.
+
+proc http::IsBinaryContentType {type} {
+    lassign [split [string tolower $type] "/;"] major minor
+    if {$major eq "text"} {
+	return false
+    }
+    # There's a bunch of XML-as-application-format things about. See RFC 3023
+    # and so on.
+    if {$major eq "application"} {
+	set minor [string trimright $minor]
+	if {$minor in {"json" "xml" "xml-external-parsed-entity" "xml-dtd"}} {
+	    return false
+	}
+    }
+    # Not just application/foobar+xml but also image/svg+xml, so let us not
+    # restrict things for now...
+    if {[string match "*+xml" $minor]} {
+	return false
+    }
+    return true
+}
+
+# http::getTextLine --
+#
+#	Get one line with the stream in crlf mode.
+#	Used if Transfer-Encoding is chunked.
+#	Empty line is not distinguished from eof.  The caller must
+#	be able to handle this.
+#
+# Arguments
+#	sock	The socket receiving input.
+#
+# Results:
+#	The line of text, without trailing newline
+
+proc http::getTextLine {sock} {
+    set tr [fconfigure $sock -translation]
+    lassign $tr trRead trWrite
+    fconfigure $sock -translation [list crlf $trWrite]
+    set r [BlockingGets $sock]
+    fconfigure $sock -translation $tr
+    return $r
+}
+
+# http::BlockingRead
+#
+#	Replacement for a blocking read.
+#	The caller must be a coroutine.
+
+proc http::BlockingRead {sock size} {
+    if {$size < 1} {
+	return
+    }
+    set result {}
+    while 1 {
+	set need [expr {$size - [string length $result]}]
+	set block [read $sock $need]
+	set eof [eof $sock]
+	append result $block
+	if {[string length $result] >= $size || $eof} {
+	    return $result
+	} else {
+	    yield
+	}
+    }
+}
+
+# http::BlockingGets
+#
+#	Replacement for a blocking gets.
+#	The caller must be a coroutine.
+#	Empty line is not distinguished from eof.  The caller must
+#	be able to handle this.
+
+proc http::BlockingGets {sock} {
+    while 1 {
+	set count [gets $sock line]
+	set eof [eof $sock]
+	if {$count > -1 || $eof} {
+	    return $line
+	} else {
+	    yield
+	}
+    }
+}
+
+# http::CopyStart
+#
+#	Error handling wrapper around fcopy
+#
+# Arguments
+#	sock	The socket to copy from
+#	token	The token returned from http::geturl
+#
+# Side Effects
+#	This closes the connection upon error
+
+proc http::CopyStart {sock token {initial 1}} {
+    upvar #0 $token state
+    if {[info exists state(transfer)] && $state(transfer) eq "chunked"} {
+	foreach coding [ContentEncoding $token] {
+	    lappend state(zlib) [zlib stream $coding]
+	}
+	make-transformation-chunked $sock [namespace code [list CopyChunk $token]]
+    } else {
+	if {$initial} {
+	    foreach coding [ContentEncoding $token] {
+		zlib push $coding $sock
+	    }
+	}
+	if {[catch {
+	    # FIXME Keep-Alive on https tls::socket with unchunked transfer
+	    # hangs until the server times out. A workaround is possible, as for
+	    # the case without -channel, but it does not use the neat "fcopy"
+	    # solution.
+	    fcopy $sock $state(-channel) -size $state(-blocksize) -command \
+		[list http::CopyDone $token]
+	} err]} {
+	    Finish $token $err
+	}
+    }
+}
+
+proc http::CopyChunk {token chunk} {
+    upvar 0 $token state
+    if {[set count [string length $chunk]]} {
+	incr state(currentsize) $count
+	if {[info exists state(zlib)]} {
+	    foreach stream $state(zlib) {
+		set chunk [$stream add $chunk]
+	    }
+	}
+	puts -nonewline $state(-channel) $chunk
+	if {[info exists state(-progress)]} {
+	    eval [linsert $state(-progress) end \
+		      $token $state(totalsize) $state(currentsize)]
+	}
+    } else {
+	Log "CopyChunk Finish - token $token"
+	if {[info exists state(zlib)]} {
+	    set excess ""
+	    foreach stream $state(zlib) {
+		catch {set excess [$stream add -finalize $excess]}
+	    }
+	    puts -nonewline $state(-channel) $excess
+	    foreach stream $state(zlib) { $stream close }
+	    unset state(zlib)
+	}
+	Eot $token ;# FIX ME: pipelining.
+    }
+}
+
+# http::CopyDone
+#
+#	fcopy completion callback
+#
+# Arguments
+#	token	The token returned from http::geturl
+#	count	The amount transfered
+#
+# Side Effects
+#	Invokes callbacks
+
+proc http::CopyDone {token count {error {}}} {
+    variable $token
+    upvar 0 $token state
+    set sock $state(sock)
+    incr state(currentsize) $count
+    if {[info exists state(-progress)]} {
+	eval $state(-progress) \
+	    [list $token $state(totalsize) $state(currentsize)]
+    }
+    # At this point the token may have been reset.
+    if {[string length $error]} {
+	Finish $token $error
+    } elseif {[catch {eof $sock} iseof] || $iseof} {
+	Eot $token
+    } else {
+	CopyStart $sock $token 0
+    }
+}
+
+# http::Eot
+#
+#	Called when either:
+#	a. An eof condition is detected on the socket.
+#	b. The client decides that the response is complete.
+#	c. The client detects an inconsistency and aborts the transaction.
+#
+#	Does:
+#	1. Set state(status)
+#	2. Reverse any Content-Encoding
+#	3. Convert charset encoding and line ends if necessary
+#	4. Call http::Finish
+#
+# Arguments
+#	token	The token returned from http::geturl
+#	force	(previously) optional, has no effect
+#	reason	- "eof" means premature EOF (not EOF as the natural end of
+#		  the response)
+#		- "" means completion of response, with or without EOF
+#		- anything else describes an error confition other than
+#		  premature EOF.
+#
+# Side Effects
+#	Clean up the socket
+
+proc http::Eot {token {reason {}}} {
+    variable $token
+    upvar 0 $token state
+    if {$reason eq "eof"} {
+	# Premature eof.
+	set state(status) eof
+	set reason {}
+    } elseif {$reason ne ""} {
+	# Abort the transaction.
+	set state(status) $reason
+    } else {
+	# The response is complete.
+	set state(status) ok
+    }
+
+    if {[string length $state(body)] > 0} {
+	if {[catch {
+	    foreach coding [ContentEncoding $token] {
+		set state(body) [zlib $coding $state(body)]
+	    }
+	} err]} {
+	    Log "error doing decompression for token $token: $err"
+	    Finish $token $err
+	    return
+	}
+
+	if {!$state(binary)} {
+	    # If we are getting text, set the incoming channel's encoding
+	    # correctly.  iso8859-1 is the RFC default, but this could be any
+	    # IANA charset.  However, we only know how to convert what we have
+	    # encodings for.
+
+	    set enc [CharsetToEncoding $state(charset)]
+	    if {$enc ne "binary"} {
+		set state(body) [encoding convertfrom $enc $state(body)]
+	    }
+
+	    # Translate text line endings.
+	    set state(body) [string map {\r\n \n \r \n} $state(body)]
+	}
+    }
+    Finish $token $reason
+}
+
+# http::wait --
+#
+#	See documentation for details.
+#
+# Arguments:
+#	token	Connection token.
+#
+# Results:
+#	The status after the wait.
+
+proc http::wait {token} {
+    variable $token
+    upvar 0 $token state
+
+    if {![info exists state(status)] || $state(status) eq ""} {
+	# We must wait on the original variable name, not the upvar alias
+	vwait ${token}(status)
+    }
+
+    return [status $token]
+}
+
+# http::formatQuery --
+#
+#	See documentation for details.  Call http::formatQuery with an even
+#	number of arguments, where the first is a name, the second is a value,
+#	the third is another name, and so on.
+#
+# Arguments:
+#	args	A list of name-value pairs.
+#
+# Results:
+#	TODO
+
+proc http::formatQuery {args} {
+    if {[llength $args] % 2} {
+        return \
+            -code error \
+            -errorcode [list HTTP BADARGCNT $args] \
+            {Incorrect number of arguments, must be an even number.}
+    }
+    set result ""
+    set sep ""
+    foreach i $args {
+	append result $sep [mapReply $i]
+	if {$sep eq "="} {
+	    set sep &
+	} else {
+	    set sep =
+	}
+    }
+    return $result
+}
+
+# http::mapReply --
+#
+#	Do x-www-urlencoded character mapping
+#
+# Arguments:
+#	string	The string the needs to be encoded
+#
+# Results:
+#       The encoded string
+
+proc http::mapReply {string} {
+    variable http
+    variable formMap
+
+    # The spec says: "non-alphanumeric characters are replaced by '%HH'". Use
+    # a pre-computed map and [string map] to do the conversion (much faster
+    # than [regsub]/[subst]). [Bug 1020491]
+
+    if {$http(-urlencoding) ne ""} {
+	set string [encoding convertto $http(-urlencoding) $string]
+	return [string map $formMap $string]
+    }
+    set converted [string map $formMap $string]
+    if {[string match "*\[\u0100-\uffff\]*" $converted]} {
+	regexp "\[\u0100-\uffff\]" $converted badChar
+	# Return this error message for maximum compatibility... :^/
+	return -code error \
+	    "can't read \"formMap($badChar)\": no such element in array"
+    }
+    return $converted
+}
+interp alias {} http::quoteString {} http::mapReply
+
+# http::ProxyRequired --
+#	Default proxy filter.
+#
+# Arguments:
+#	host	The destination host
+#
+# Results:
+#       The current proxy settings
+
+proc http::ProxyRequired {host} {
+    variable http
+    if {[info exists http(-proxyhost)] && [string length $http(-proxyhost)]} {
+	if {
+	    ![info exists http(-proxyport)] ||
+	    ![string length $http(-proxyport)]
+	} {
+	    set http(-proxyport) 8080
+	}
+	return [list $http(-proxyhost) $http(-proxyport)]
+    }
+}
+
+# http::CharsetToEncoding --
+#
+#	Tries to map a given IANA charset to a tcl encoding.  If no encoding
+#	can be found, returns binary.
+#
+
+proc http::CharsetToEncoding {charset} {
+    variable encodings
+
+    set charset [string tolower $charset]
+    if {[regexp {iso-?8859-([0-9]+)} $charset -> num]} {
+	set encoding "iso8859-$num"
+    } elseif {[regexp {iso-?2022-(jp|kr)} $charset -> ext]} {
+	set encoding "iso2022-$ext"
+    } elseif {[regexp {shift[-_]?js} $charset]} {
+	set encoding "shiftjis"
+    } elseif {[regexp {(?:windows|cp)-?([0-9]+)} $charset -> num]} {
+	set encoding "cp$num"
+    } elseif {$charset eq "us-ascii"} {
+	set encoding "ascii"
+    } elseif {[regexp {(?:iso-?)?lat(?:in)?-?([0-9]+)} $charset -> num]} {
+	switch -- $num {
+	    5 {set encoding "iso8859-9"}
+	    1 - 2 - 3 {
+		set encoding "iso8859-$num"
+	    }
+	}
+    } else {
+	# other charset, like euc-xx, utf-8,...  may directly map to encoding
+	set encoding $charset
+    }
+    set idx [lsearch -exact $encodings $encoding]
+    if {$idx >= 0} {
+	return $encoding
+    } else {
+	return "binary"
+    }
+}
+
+# Return the list of content-encoding transformations we need to do in order.
+proc http::ContentEncoding {token} {
+    upvar 0 $token state
+    set r {}
+    if {[info exists state(coding)]} {
+	foreach coding [split $state(coding) ,] {
+	    switch -exact -- $coding {
+		deflate { lappend r inflate }
+		gzip - x-gzip { lappend r gunzip }
+		compress - x-compress { lappend r decompress }
+		identity {}
+		default {
+		    return -code error "unsupported content-encoding \"$coding\""
+		}
+	    }
+	}
+    }
+    return $r
+}
+
+proc http::ReceiveChunked {chan command} {
+    set data ""
+    set size -1
+    yield
+    while {1} {
+	chan configure $chan -translation {crlf binary}
+	while {[gets $chan line] < 1} { yield }
+	chan configure $chan -translation {binary binary}
+	if {[scan $line %x size] != 1} {
+	    return -code error "invalid size: \"$line\""
+	}
+	set chunk ""
+	while {$size && ![chan eof $chan]} {
+	    set part [chan read $chan $size]
+	    incr size -[string length $part]
+	    append chunk $part
+	}
+	if {[catch {
+	    uplevel #0 [linsert $command end $chunk]
+	}]} {
+	    http::Log "Error in callback: $::errorInfo"
+	}
+	if {[string length $chunk] == 0} {
+	    # channel might have been closed in the callback
+	    catch {chan event $chan readable {}}
+	    return
+	}
+    }
+}
+
+proc http::make-transformation-chunked {chan command} {
+    coroutine [namespace current]::dechunk$chan ::http::ReceiveChunked $chan $command
+    chan event $chan readable [namespace current]::dechunk$chan
+}
+
+# Local variables:
+# indent-tabs-mode: t
+# End:

Added: trunk/Master/tlpkg/tltcl/lib/tcl8/8.6/tdbc/sqlite3-1.1.1.tm
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tcl8/8.6/tdbc/sqlite3-1.1.1.tm	                        (rev 0)
+++ trunk/Master/tlpkg/tltcl/lib/tcl8/8.6/tdbc/sqlite3-1.1.1.tm	2020-03-17 20:46:21 UTC (rev 54375)
@@ -0,0 +1,715 @@
+# tdbcsqlite3.tcl --
+#
+#    SQLite3 database driver for TDBC
+#
+# Copyright (c) 2008 by Kevin B. Kenny.
+# See the file "license.terms" for information on usage and redistribution
+# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+#
+# RCS: @(#) $Id: tdbcodbc.tcl,v 1.47 2008/02/27 02:08:27 kennykb Exp $
+#
+#------------------------------------------------------------------------------
+
+package require tdbc
+package require sqlite3
+
+package provide tdbc::sqlite3 1.1.1
+
+namespace eval tdbc::sqlite3 {
+    namespace export connection
+}
+
+#------------------------------------------------------------------------------
+#
+# tdbc::sqlite3::connection --
+#
+#	Class representing a SQLite3 database connection
+#
+#------------------------------------------------------------------------------
+
+::oo::class create ::tdbc::sqlite3::connection {
+
+    superclass ::tdbc::connection
+
+    variable timeout
+
+    # The constructor accepts a database name and opens the database.
+
+    constructor {databaseName args} {
+	set timeout 0
+	if {[llength $args] % 2 != 0} {
+	    set cmd [lrange [info level 0] 0 end-[llength $args]]
+	    return -code error \
+		-errorcode {TDBC GENERAL_ERROR HY000 SQLITE3 WRONGNUMARGS} \
+		"wrong # args, should be \"$cmd ?-option value?...\""
+	}
+	next
+	sqlite3 [namespace current]::db $databaseName
+	if {[llength $args] > 0} {
+	    my configure {*}$args
+	}
+	db nullvalue \ufffd
+    }
+
+    # The 'statementCreate' method forwards to the constructor of the
+    # statement class
+
+    forward statementCreate ::tdbc::sqlite3::statement create
+
+    # The 'configure' method queries and sets options to the database
+
+    method configure args {
+	if {[llength $args] == 0} {
+
+	    # Query all configuration options
+
+	    set result {-encoding utf-8}
+	    lappend result -isolation
+	    if {[db onecolumn {PRAGMA read_uncommitted}]} {
+		lappend result readuncommitted
+	    } else {
+		lappend result serializable
+	    }
+	    lappend result -readonly 0
+	    lappend result -timeout $timeout
+	    return $result
+
+	} elseif {[llength $args] == 1} {
+
+	    # Query a single option
+
+	    set option [lindex $args 0]
+	    switch -exact -- $option {
+		-e - -en - -enc - -enco - -encod - -encodi - -encodin -
+		-encoding {
+		    return utf-8
+		}
+		-i - -is - -iso - -isol - -isola - -isolat - -isolati -
+		-isolatio - -isolation {
+		    if {[db onecolumn {PRAGMA read_uncommitted}]} {
+			return readuncommitted
+		    } else {
+			return serializable
+		    }
+		}
+		-r - -re - -rea - -read - -reado - -readon - -readonl -
+		-readonly {
+		    return 0
+		}
+		-t - -ti - -tim - -time - -timeo - -timeou - -timeout {
+		    return $timeout
+		}
+		default {
+		    return -code error \
+			-errorcode [list TDBC GENERAL_ERROR HY000 SQLITE3 \
+					BADOPTION $option] \
+			"bad option \"$option\": must be\
+                         -encoding, -isolation, -readonly or -timeout"
+
+		}
+	    }
+
+	} elseif {[llength $args] % 2 != 0} {
+
+	    # Syntax error
+
+	    set cmd [lrange [info level 0] 0 end-[llength $args]]
+	    return -code error \
+		-errorcode [list TDBC GENERAL_ERROR HY000 \
+				SQLITE3 WRONGNUMARGS] \
+		"wrong # args, should be \" $cmd ?-option value?...\""
+	}
+
+	# Set one or more options
+
+	foreach {option value} $args {
+	    switch -exact -- $option {
+		-e - -en - -enc - -enco - -encod - -encodi - -encodin -
+		-encoding {
+		    if {$value ne {utf-8}} {
+			return -code error \
+			    -errorcode [list TDBC FEATURE_NOT_SUPPORTED 0A000 \
+					    SQLITE3 ENCODING] \
+			    "-encoding not supported. SQLite3 is always \
+                             Unicode."
+		    }
+		}
+		-i - -is - -iso - -isol - -isola - -isolat - -isolati -
+		-isolatio - -isolation {
+		    switch -exact -- $value {
+			readu - readun - readunc - readunco - readuncom -
+			readuncomm - readuncommi - readuncommit -
+			readuncommitt - readuncommitte - readuncommitted {
+			    db eval {PRAGMA read_uncommitted = 1}
+			}
+			readc - readco - readcom - readcomm - readcommi -
+			readcommit - readcommitt - readcommitte -
+			readcommitted -
+			rep - repe - repea - repeat - repeata - repeatab -
+			repeatabl - repeatable - repeatabler - repeatablere -
+			repeatablerea - repeatablread -
+			s - se - ser - seri - seria - serial - seriali -
+			serializ - serializa - serializab - serializabl -
+			serializable -
+			reado - readon - readonl - readonly {
+			    db eval {PRAGMA read_uncommitted = 0}
+			}
+			default {
+			    return -code error \
+				-errorcode [list TDBC GENERAL_ERROR HY000 \
+						SQLITE3 BADISOLATION $value] \
+				"bad isolation level \"$value\":\
+                                should be readuncommitted, readcommitted,\
+                                repeatableread, serializable, or readonly"
+			}
+		    }
+		}
+		-r - -re - -rea - -read - -reado - -readon - -readonl -
+		-readonly {
+		    if {$value} {
+			return -code error \
+			    -errorcode [list TDBC FEATURE_NOT_SUPPORTED 0A000 \
+					    SQLITE3 READONLY] \
+			    "SQLite3's Tcl API does not support read-only\
+                             access"
+		    }
+		}
+		-t - -ti - -tim - -time - -timeo - -timeou - -timeout {
+		    if {![string is integer $value]} {
+			return -code error \
+			    -errorcode [list TDBC DATA_EXCEPTION 22018 \
+					    SQLITE3 $value] \
+			    "expected integer but got \"$value\""
+		    }
+		    db timeout $value
+		    set timeout $value
+		}
+		default {
+		    return -code error \
+			-errorcode [list TDBC GENERAL_ERROR HY000 \
+					SQLITE3 BADOPTION $value] \
+			"bad option \"$option\": must be\
+                         -encoding, -isolation, -readonly or -timeout"
+
+		}
+	    }
+	}
+	return
+    }
+
+    # The 'tables' method introspects on the tables in the database.
+
+    method tables {{pattern %}} {
+	set retval {}
+	my foreach row {
+	    SELECT * from sqlite_master
+	    WHERE type IN ('table', 'view')
+	    AND name LIKE :pattern
+	} {
+	    dict set row name [string tolower [dict get $row name]]
+	    dict set retval [dict get $row name] $row
+	}
+	return $retval
+    }
+
+    # The 'columns' method introspects on columns of a table.
+
+    method columns {table {pattern %}} {
+	regsub -all ' $table '' table
+	set retval {}
+	set pattern [string map [list \
+				     * {[*]} \
+				     ? {[?]} \
+				     \[ \\\[ \
+				     \] \\\[ \
+				     _ ? \
+				     % *] [string tolower $pattern]]
+	my foreach origrow "PRAGMA table_info('$table')" {
+	    set row {}
+	    dict for {key value} $origrow {
+		dict set row [string tolower $key] $value
+	    }
+	    dict set row name [string tolower [dict get $row name]]
+	    if {![string match $pattern [dict get $row name]]} {
+		continue
+	    }
+	    switch -regexp -matchvar info [dict get $row type] {
+		{^(.+)\(\s*([[:digit:]]+)\s*,\s*([[:digit:]]+)\s*\)\s*$} {
+		    dict set row type [string tolower [lindex $info 1]]
+		    dict set row precision [lindex $info 2]
+		    dict set row scale [lindex $info 3]
+		}
+		{^(.+)\(\s*([[:digit:]]+)\s*\)\s*$} {
+		    dict set row type [string tolower [lindex $info 1]]
+		    dict set row precision [lindex $info 2]
+		    dict set row scale 0
+		}
+		default {
+		    dict set row type [string tolower [dict get $row type]]
+		    dict set row precision 0
+		    dict set row scale 0
+		}
+	    }
+	    dict set row nullable [expr {![dict get $row notnull]}]
+	    dict set retval [dict get $row name] $row
+	}
+	return $retval
+    }
+
+    # The 'primarykeys' method enumerates the primary keys on a table.
+
+    method primarykeys {table} {
+	set result {}
+	my foreach row "PRAGMA table_info($table)" {
+	    if {[dict get $row pk]} {
+		lappend result [dict create ordinalPosition \
+				    [expr {[dict get $row cid]+1}] \
+				    columnName \
+				    [dict get $row name]]
+	    }
+	}
+	return $result
+    }
+
+    # The 'foreignkeys' method enumerates the foreign keys that are
+    # declared in a table or that refer to a given table.
+
+    method foreignkeys {args} {
+
+	variable ::tdbc::generalError
+
+	# Check arguments
+
+	set argdict {}
+	if {[llength $args] % 2 != 0} {
+	    set errorcode $generalError
+	    lappend errorcode wrongNumArgs
+	    return -code error -errorcode $errorcode \
+		"wrong # args: should be [lrange [info level 0] 0 1]\
+                 ?-option value?..."
+	}
+	foreach {key value} $args {
+	    if {$key ni {-primary -foreign}} {
+		set errorcode $generalError
+		lappend errorcode badOption
+		return -code error -errorcode $errorcode \
+		    "bad option \"$key\", must be -primary or -foreign"
+	    }
+	    set key [string range $key 1 end]
+	    if {[dict exists $argdict $key]} {
+		set errorcode $generalError
+		lappend errorcode dupOption
+		return -code error -errorcode $errorcode \
+		    "duplicate option \"$key\" supplied"
+	    }
+	    dict set argdict $key $value
+	}
+
+	# If we know the table with the foreign key, search just its
+	# foreign keys. Otherwise, iterate over all the tables in the
+	# database.
+
+	if {[dict exists $argdict foreign]} {
+	    return [my ForeignKeysForTable [dict get $argdict foreign] \
+			$argdict]
+	} else {
+	    set result {}
+	    foreach foreignTable [dict keys [my tables]] {
+		lappend result {*}[my ForeignKeysForTable \
+				       $foreignTable $argdict]
+	    }
+	    return $result
+	}
+
+    }
+
+    # The private ForeignKeysForTable method enumerates the foreign keys
+    # in a specific table.
+    #
+    # Parameters:
+    #
+    #	foreignTable - Name of the table containing foreign keys.
+    #   argdict - Dictionary that may or may not contain a key,
+    #             'primary', whose value is the name of a table that
+    #             must hold the primary key corresponding to the foreign
+    #             key. If the 'primary' key is absent, all tables are
+    #             candidates.
+    # Results:
+    #
+    # 	Returns the list of foreign keys that meed the specified
+    # 	conditions, as a list of dictionaries, each containing the
+    # 	keys, foreignConstraintName, foreignTable, foreignColumn,
+    # 	primaryTable, primaryColumn, and ordinalPosition.  Note that the
+    #   foreign constraint name is constructed arbitrarily, since SQLite3
+    #   does not report this information.
+
+    method ForeignKeysForTable {foreignTable argdict} {
+
+	set result {}
+	set n 0
+
+	# Go through the foreign keys in the given table, looking for
+	# ones that refer to the primary table (if one is given), or
+	# for any primary keys if none is given.
+	my foreach row "PRAGMA foreign_key_list($foreignTable)" {
+	    if {(![dict exists $argdict primary])
+		|| ([string tolower [dict get $row table]]
+		    eq [dict get $argdict primary])} {
+
+		# Construct a dictionary for each key, translating
+		# SQLite names to TDBC ones and converting sequence
+		# numbers to 1-based indexing.
+
+		set rrow [dict create foreignTable $foreignTable \
+			      foreignConstraintName \
+			      ?$foreignTable?[dict get $row id]]
+		if {[dict exists $row seq]} {
+		    dict set rrow ordinalPosition \
+			[expr {1 + [dict get $row seq]}]
+		}
+		foreach {to from} {
+		    foreignColumn from
+		    primaryTable table
+		    primaryColumn to
+		    deleteAction on_delete
+		    updateAction on_update
+		} {
+		    if {[dict exists $row $from]} {
+			dict set rrow $to [dict get $row $from]
+		    }
+		}
+
+		# Add the newly-constucted dictionary to the result list
+
+		lappend result $rrow
+	    }
+	}
+
+	return $result
+    }
+
+    # The 'preparecall' method prepares a call to a stored procedure.
+    # SQLite3 does not have stored procedures, since it's an in-process
+    # server.
+
+    method preparecall {call} {
+	return -code error \
+	    -errorcode [list TDBC FEATURE_NOT_SUPPORTED 0A000 \
+			    SQLITE3 PREPARECALL] \
+	    {SQLite3 does not support stored procedures}
+    }
+
+    # The 'begintransaction' method launches a database transaction
+
+    method begintransaction {} {
+	db eval {BEGIN TRANSACTION}
+    }
+
+    # The 'commit' method commits a database transaction
+
+    method commit {} {
+	db eval {COMMIT}
+    }
+
+    # The 'rollback' method abandons a database transaction
+
+    method rollback {} {
+	db eval {ROLLBACK}
+    }
+
+    # The 'transaction' method executes a script as a single transaction.
+    # We override the 'transaction' method of the base class, since SQLite3
+    # has a faster implementation of the same thing. (The base class's generic
+    # method should also work.)
+    # (Don't overload the base class method, because 'break', 'continue'
+    # and 'return' in the transaction body don't work!)
+
+    #method transaction {script} {
+    #	uplevel 1 [list {*}[namespace code db] transaction $script]
+    #}
+
+    method prepare {sqlCode} {
+	set result [next $sqlCode]
+	return $result
+    }
+
+    method getDBhandle {} {
+	return [namespace which db]
+    }
+}
+
+#------------------------------------------------------------------------------
+#
+# tdbc::sqlite3::statement --
+#
+#	Class representing a statement to execute against a SQLite3 database
+#
+#------------------------------------------------------------------------------
+
+::oo::class create ::tdbc::sqlite3::statement {
+
+    superclass ::tdbc::statement
+
+    variable Params db sql
+
+    # The constructor accepts the handle to the connection and the SQL
+    # code for the statement to prepare.  All that it does is to parse the
+    # statement and store it.  The parse is used to support the
+    # 'params' and 'paramtype' methods.
+
+    constructor {connection sqlcode} {
+	next
+	set Params {}
+	set db [$connection getDBhandle]
+	set sql $sqlcode
+	foreach token [::tdbc::tokenize $sqlcode] {
+	    if {[string index $token 0] in {$ : @}} {
+		dict set Params [string range $token 1 end] \
+		    {type Tcl_Obj precision 0 scale 0 nullable 1 direction in}
+	    }
+	}
+    }
+
+    # The 'resultSetCreate' method relays to the result set constructor
+
+    forward resultSetCreate ::tdbc::sqlite3::resultset create
+
+    # The 'params' method returns descriptions of the parameters accepted
+    # by the statement
+
+    method params {} {
+	return $Params
+    }
+
+    # The 'paramtype' method need do nothing; Sqlite3 uses manifest typing.
+
+    method paramtype args {;}
+
+    method getDBhandle {} {
+	return $db
+    }
+
+    method getSql {} {
+	return $sql
+    }
+
+}
+
+#-------------------------------------------------------------------------------
+#
+# tdbc::sqlite3::resultset --
+#
+#	Class that represents a SQLlite result set in Tcl
+#
+#-------------------------------------------------------------------------------
+
+::oo::class create ::tdbc::sqlite3::resultset {
+
+    superclass ::tdbc::resultset
+
+    # The variables of this class all have peculiar names. The reason is
+    # that the RunQuery method needs to execute with an activation record
+    # that has no local variables whose names could conflict with names
+    # in the SQL query. We start the variable names with hyphens because
+    # they can't be bind variables.
+
+    variable -set {*}{
+	-columns -db -needcolumns -resultArray
+	-results -sql -Cursor -RowCount -END
+    }
+
+    constructor {statement args} {
+	next
+	set -db [$statement getDBhandle]
+	set -sql [$statement getSql]
+	set -columns {}
+	set -results {}
+	${-db} trace [namespace code {my RecordStatement}]
+	if {[llength $args] == 0} {
+
+	    # Variable substitutions are evaluated in caller's context
+
+	    uplevel 1 [list ${-db} eval ${-sql} \
+			   [namespace which -variable -resultArray] \
+			   [namespace code {my RecordResult}]]
+
+	} elseif {[llength $args] == 1} {
+
+	    # Variable substitutions are in the dictionary at [lindex $args 0].
+
+	    set -paramDict [lindex $args 0]
+
+	    # At this point, the activation record must contain no variables
+	    # that might be bound within the query.  All variables at this point
+	    # begin with hyphens so that they are syntactically incorrect
+	    # as bound variables in SQL.
+
+	    unset args
+	    unset statement
+
+	    dict with -paramDict {
+		${-db} eval ${-sql} -resultArray {
+		    my RecordResult
+		}
+	    }
+
+	} else {
+
+	    ${-db} trace {}
+
+	    # Too many args
+
+	    return -code error \
+		-errorcode [list TDBC GENERAL_ERROR HY000 \
+				SQLITE3 WRONGNUMARGS] \
+		"wrong # args: should be\
+                 [lrange [info level 0] 0 1] statement ?dictionary?"
+
+	}
+	${-db} trace {}
+	set -Cursor 0
+	if {${-Cursor} < [llength ${-results}]
+	    && [lindex ${-results} ${-Cursor}] eq {statement}} {
+	    incr -Cursor 2
+	}
+	if {${-Cursor} < [llength ${-results}]
+	    && [lindex ${-results} ${-Cursor}] eq {columns}} {
+	    incr -Cursor
+	    set -columns [lindex ${-results} ${-Cursor}]
+	    incr -Cursor
+	}
+	set -RowCount [${-db} changes]
+    }
+
+    # Record the start of a SQL statement
+
+    method RecordStatement {stmt} {
+	set -needcolumns 1
+	lappend -results statement {}
+    }
+
+    # Record one row of results from a query by appending it as a dictionary
+    # to the 'results' list.  As a side effect, set 'columns' to a list
+    # comprising the names of the columns of the result.
+
+    method RecordResult {} {
+	set columns ${-resultArray(*)}
+	if {[info exists -needcolumns]} {
+	    lappend -results columns $columns
+	    unset -needcolumns
+	}
+	set dict {}
+	foreach key $columns {
+	    if {[set -resultArray($key)] ne "\ufffd"} {
+		dict set dict $key [set -resultArray($key)]
+	    }
+	}
+	lappend -results row $dict
+    }
+
+    # Advance to the next result set
+
+    method nextresults {} {
+	set have 0
+	while {${-Cursor} < [llength ${-results}]} {
+	    if {[lindex ${-results} ${-Cursor}] eq {statement}} {
+		set have 1
+		incr -Cursor 2
+		break
+	    }
+	    incr -Cursor 2
+	}
+	if {!$have} {
+	    set -END {}
+	}
+	if {${-Cursor} >= [llength ${-results}]} {
+	    set -columns {}
+	} elseif {[lindex ${-results} ${-Cursor}] eq {columns}} {
+	    incr -Cursor
+	    set -columns [lindex ${-results} ${-Cursor}]
+	    incr -Cursor
+	} else {
+	    set -columns {}
+	}
+	return $have
+    }
+
+    method getDBhandle {} {
+	return ${-db}
+    }
+
+    # Return a list of the columns
+
+    method columns {} {
+	if {[info exists -END]} {
+	    return -code error \
+		-errorcode {TDBC GENERAL_ERROR HY010 SQLITE3 FUNCTIONSEQ} \
+		"Function sequence error: result set is exhausted."
+	}
+	return ${-columns}
+    }
+
+    # Return the next row of the result set as a list
+
+    method nextlist var {
+
+	upvar 1 $var row
+
+	if {[info exists -END]} {
+	    return -code error \
+		-errorcode {TDBC GENERAL_ERROR HY010 SQLITE3 FUNCTIONSEQ} \
+		"Function sequence error: result set is exhausted."
+	}
+	if {${-Cursor} >= [llength ${-results}]
+	    || [lindex ${-results} ${-Cursor}] ne {row}} {
+	    return 0
+	} else {
+	    set row {}
+	    incr -Cursor
+	    set d [lindex ${-results} ${-Cursor}]
+	    incr -Cursor
+	    foreach key ${-columns} {
+		if {[dict exists $d $key]} {
+		    lappend row [dict get $d $key]
+		} else {
+		    lappend row {}
+		}
+	    }
+	}
+	return 1
+    }
+
+    # Return the next row of the result set as a dict
+
+    method nextdict var {
+
+	upvar 1 $var row
+
+	if {[info exists -END]} {
+	    return -code error \
+		-errorcode {TDBC GENERAL_ERROR HY010 SQLITE3 FUNCTIONSEQ} \
+		"Function sequence error: result set is exhausted."
+	}
+	if {${-Cursor} >= [llength ${-results}]
+	    || [lindex ${-results} ${-Cursor}] ne {row}} {
+	    return 0
+	} else {
+	    incr -Cursor
+	    set row [lindex ${-results} ${-Cursor}]
+	    incr -Cursor
+	}
+	return 1
+    }
+
+    # Return the number of rows affected by a statement
+
+    method rowcount {} {
+	if {[info exists -END]} {
+	    return -code error \
+		-errorcode {TDBC GENERAL_ERROR HY010 SQLITE3 FUNCTIONSEQ} \
+		"Function sequence error: result set is exhausted."
+	}
+	return ${-RowCount}
+    }
+
+}

Added: trunk/Master/tlpkg/tltcl/lib/tcl8.6/auto.tcl
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tcl8.6/auto.tcl	                        (rev 0)
+++ trunk/Master/tlpkg/tltcl/lib/tcl8.6/auto.tcl	2020-03-17 20:46:21 UTC (rev 54375)
@@ -0,0 +1,646 @@
+# auto.tcl --
+#
+# utility procs formerly in init.tcl dealing with auto execution of commands
+# and can be auto loaded themselves.
+#
+# Copyright (c) 1991-1993 The Regents of the University of California.
+# Copyright (c) 1994-1998 Sun Microsystems, Inc.
+#
+# See the file "license.terms" for information on usage and redistribution of
+# this file, and for a DISCLAIMER OF ALL WARRANTIES.
+#
+
+# auto_reset --
+#
+# Destroy all cached information for auto-loading and auto-execution, so that
+# the information gets recomputed the next time it's needed.  Also delete any
+# commands that are listed in the auto-load index.
+#
+# Arguments:
+# None.
+
+proc auto_reset {} {
+    global auto_execs auto_index auto_path
+    if {[array exists auto_index]} {
+	foreach cmdName [array names auto_index] {
+	    set fqcn [namespace which $cmdName]
+	    if {$fqcn eq ""} {
+		continue
+	    }
+	    rename $fqcn {}
+	}
+    }
+    unset -nocomplain auto_execs auto_index ::tcl::auto_oldpath
+    if {[catch {llength $auto_path}]} {
+	set auto_path [list [info library]]
+    } elseif {[info library] ni $auto_path} {
+	lappend auto_path [info library]
+    }
+}
+
+# tcl_findLibrary --
+#
+#	This is a utility for extensions that searches for a library directory
+#	using a canonical searching algorithm. A side effect is to source the
+#	initialization script and set a global library variable.
+#
+# Arguments:
+# 	basename	Prefix of the directory name, (e.g., "tk")
+#	version		Version number of the package, (e.g., "8.0")
+#	patch		Patchlevel of the package, (e.g., "8.0.3")
+#	initScript	Initialization script to source (e.g., tk.tcl)
+#	enVarName	environment variable to honor (e.g., TK_LIBRARY)
+#	varName		Global variable to set when done (e.g., tk_library)
+
+proc tcl_findLibrary {basename version patch initScript enVarName varName} {
+    upvar #0 $varName the_library
+    global auto_path env tcl_platform
+
+    set dirs {}
+    set errors {}
+
+    # The C application may have hardwired a path, which we honor
+
+    if {[info exists the_library] && $the_library ne ""} {
+	lappend dirs $the_library
+    } else {
+	# Do the canonical search
+
+	# 1. From an environment variable, if it exists.  Placing this first
+	#    gives the end-user ultimate control to work-around any bugs, or
+	#    to customize.
+
+        if {[info exists env($enVarName)]} {
+            lappend dirs $env($enVarName)
+        }
+
+	# 2. In the package script directory registered within the
+	#    configuration of the package itself.
+
+	catch {
+	    lappend dirs [::${basename}::pkgconfig get scriptdir,runtime]
+	}
+
+	# 3. Relative to auto_path directories.  This checks relative to the
+	# Tcl library as well as allowing loading of libraries added to the
+	# auto_path that is not relative to the core library or binary paths.
+	foreach d $auto_path {
+	    lappend dirs [file join $d $basename$version]
+	    if {$tcl_platform(platform) eq "unix"
+		    && $tcl_platform(os) eq "Darwin"} {
+		# 4. On MacOSX, check the Resources/Scripts subdir too
+		lappend dirs [file join $d $basename$version Resources Scripts]
+	    }
+	}
+
+	# 3. Various locations relative to the executable
+	# ../lib/foo1.0		(From bin directory in install hierarchy)
+	# ../../lib/foo1.0	(From bin/arch directory in install hierarchy)
+	# ../library		(From unix directory in build hierarchy)
+	#
+	# Remaining locations are out of date (when relevant, they ought to be
+	# covered by the $::auto_path seach above) and disabled.
+	#
+	# ../../library		(From unix/arch directory in build hierarchy)
+	# ../../foo1.0.1/library
+	#		(From unix directory in parallel build hierarchy)
+	# ../../../foo1.0.1/library
+	#		(From unix/arch directory in parallel build hierarchy)
+
+        set parentDir [file dirname [file dirname [info nameofexecutable]]]
+        set grandParentDir [file dirname $parentDir]
+        lappend dirs [file join $parentDir lib $basename$version]
+        lappend dirs [file join $grandParentDir lib $basename$version]
+        lappend dirs [file join $parentDir library]
+	if {0} {
+	    lappend dirs [file join $grandParentDir library]
+	    lappend dirs [file join $grandParentDir $basename$patch library]
+	    lappend dirs [file join [file dirname $grandParentDir] \
+			      $basename$patch library]
+	}
+    }
+    # uniquify $dirs in order
+    array set seen {}
+    foreach i $dirs {
+	# Make sure $i is unique under normalization. Avoid repeated [source].
+	if {[interp issafe]} {
+	    # Safe interps have no [file normalize].
+	    set norm $i
+	} else {
+	    set norm [file normalize $i]
+	}
+	if {[info exists seen($norm)]} {
+	    continue
+	}
+	set seen($norm) {}
+
+        set the_library $i
+        set file [file join $i $initScript]
+
+	# source everything when in a safe interpreter because we have a
+	# source command, but no file exists command
+
+        if {[interp issafe] || [file exists $file]} {
+            if {![catch {uplevel #0 [list source $file]} msg opts]} {
+                return
+            }
+	    append errors "$file: $msg\n"
+	    append errors [dict get $opts -errorinfo]\n
+        }
+    }
+    unset -nocomplain the_library
+    set msg "Can't find a usable $initScript in the following directories: \n"
+    append msg "    $dirs\n\n"
+    append msg "$errors\n\n"
+    append msg "This probably means that $basename wasn't installed properly.\n"
+    error $msg
+}
+
+
+# ----------------------------------------------------------------------
+# auto_mkindex
+# ----------------------------------------------------------------------
+# The following procedures are used to generate the tclIndex file from Tcl
+# source files.  They use a special safe interpreter to parse Tcl source
+# files, writing out index entries as "proc" commands are encountered.  This
+# implementation won't work in a safe interpreter, since a safe interpreter
+# can't create the special parser and mess with its commands.
+
+if {[interp issafe]} {
+    return	;# Stop sourcing the file here
+}
+
+# auto_mkindex --
+# Regenerate a tclIndex file from Tcl source files.  Takes as argument the
+# name of the directory in which the tclIndex file is to be placed, followed
+# by any number of glob patterns to use in that directory to locate all of the
+# relevant files.
+#
+# Arguments:
+# dir -		Name of the directory in which to create an index.
+
+# args -	Any number of additional arguments giving the names of files
+#		within dir.  If no additional are given auto_mkindex will look
+#		for *.tcl.
+
+proc auto_mkindex {dir args} {
+    if {[interp issafe]} {
+        error "can't generate index within safe interpreter"
+    }
+
+    set oldDir [pwd]
+    cd $dir
+
+    append index "# Tcl autoload index file, version 2.0\n"
+    append index "# This file is generated by the \"auto_mkindex\" command\n"
+    append index "# and sourced to set up indexing information for one or\n"
+    append index "# more commands.  Typically each line is a command that\n"
+    append index "# sets an element in the auto_index array, where the\n"
+    append index "# element name is the name of a command and the value is\n"
+    append index "# a script that loads the command.\n\n"
+    if {![llength $args]} {
+	set args *.tcl
+    }
+
+    auto_mkindex_parser::init
+    foreach file [lsort [glob -- {*}$args]] {
+	try {
+	    append index [auto_mkindex_parser::mkindex $file]
+	} on error {msg opts} {
+	    cd $oldDir
+	    return -options $opts $msg
+	}
+    }
+    auto_mkindex_parser::cleanup
+
+    set fid [open "tclIndex" w]
+    puts -nonewline $fid $index
+    close $fid
+    cd $oldDir
+}
+
+# Original version of auto_mkindex that just searches the source code for
+# "proc" at the beginning of the line.
+
+proc auto_mkindex_old {dir args} {
+    set oldDir [pwd]
+    cd $dir
+    set dir [pwd]
+    append index "# Tcl autoload index file, version 2.0\n"
+    append index "# This file is generated by the \"auto_mkindex\" command\n"
+    append index "# and sourced to set up indexing information for one or\n"
+    append index "# more commands.  Typically each line is a command that\n"
+    append index "# sets an element in the auto_index array, where the\n"
+    append index "# element name is the name of a command and the value is\n"
+    append index "# a script that loads the command.\n\n"
+    if {![llength $args]} {
+	set args *.tcl
+    }
+    foreach file [lsort [glob -- {*}$args]] {
+	set f ""
+	set error [catch {
+	    set f [open $file]
+	    while {[gets $f line] >= 0} {
+		if {[regexp {^proc[ 	]+([^ 	]*)} $line match procName]} {
+		    set procName [lindex [auto_qualify $procName "::"] 0]
+		    append index "set [list auto_index($procName)]"
+		    append index " \[list source \[file join \$dir [list $file]\]\]\n"
+		}
+	    }
+	    close $f
+	} msg opts]
+	if {$error} {
+	    catch {close $f}
+	    cd $oldDir
+	    return -options $opts $msg
+	}
+    }
+    set f ""
+    set error [catch {
+	set f [open tclIndex w]
+	puts -nonewline $f $index
+	close $f
+	cd $oldDir
+    } msg opts]
+    if {$error} {
+	catch {close $f}
+	cd $oldDir
+	error $msg $info $code
+	return -options $opts $msg
+    }
+}
+
+# Create a safe interpreter that can be used to parse Tcl source files
+# generate a tclIndex file for autoloading.  This interp contains commands for
+# things that need index entries.  Each time a command is executed, it writes
+# an entry out to the index file.
+
+namespace eval auto_mkindex_parser {
+    variable parser ""          ;# parser used to build index
+    variable index ""           ;# maintains index as it is built
+    variable scriptFile ""      ;# name of file being processed
+    variable contextStack ""    ;# stack of namespace scopes
+    variable imports ""         ;# keeps track of all imported cmds
+    variable initCommands       ;# list of commands that create aliases
+    if {![info exists initCommands]} {
+	set initCommands [list]
+    }
+
+    proc init {} {
+	variable parser
+	variable initCommands
+
+	if {![interp issafe]} {
+	    set parser [interp create -safe]
+	    $parser hide info
+	    $parser hide rename
+	    $parser hide proc
+	    $parser hide namespace
+	    $parser hide eval
+	    $parser hide puts
+	    foreach ns [$parser invokehidden namespace children ::] {
+		# MUST NOT DELETE "::tcl" OR BAD THINGS HAPPEN!
+		if {$ns eq "::tcl"} continue
+		$parser invokehidden namespace delete $ns
+	    }
+	    foreach cmd [$parser invokehidden info commands ::*] {
+		$parser invokehidden rename $cmd {}
+	    }
+	    $parser invokehidden proc unknown {args} {}
+
+	    # We'll need access to the "namespace" command within the
+	    # interp.  Put it back, but move it out of the way.
+
+	    $parser expose namespace
+	    $parser invokehidden rename namespace _%@namespace
+	    $parser expose eval
+	    $parser invokehidden rename eval _%@eval
+
+	    # Install all the registered psuedo-command implementations
+
+	    foreach cmd $initCommands {
+		eval $cmd
+	    }
+	}
+    }
+    proc cleanup {} {
+	variable parser
+	interp delete $parser
+	unset parser
+    }
+}
+
+# auto_mkindex_parser::mkindex --
+#
+# Used by the "auto_mkindex" command to create a "tclIndex" file for the given
+# Tcl source file.  Executes the commands in the file, and handles things like
+# the "proc" command by adding an entry for the index file.  Returns a string
+# that represents the index file.
+#
+# Arguments:
+#	file	Name of Tcl source file to be indexed.
+
+proc auto_mkindex_parser::mkindex {file} {
+    variable parser
+    variable index
+    variable scriptFile
+    variable contextStack
+    variable imports
+
+    set scriptFile $file
+
+    set fid [open $file]
+    set contents [read $fid]
+    close $fid
+
+    # There is one problem with sourcing files into the safe interpreter:
+    # references like "$x" will fail since code is not really being executed
+    # and variables do not really exist.  To avoid this, we replace all $ with
+    # \0 (literally, the null char) later, when getting proc names we will
+    # have to reverse this replacement, in case there were any $ in the proc
+    # name.  This will cause a problem if somebody actually tries to have a \0
+    # in their proc name.  Too bad for them.
+    set contents [string map [list \$ \0] $contents]
+
+    set index ""
+    set contextStack ""
+    set imports ""
+
+    $parser eval $contents
+
+    foreach name $imports {
+        catch {$parser eval [list _%@namespace forget $name]}
+    }
+    return $index
+}
+
+# auto_mkindex_parser::hook command
+#
+# Registers a Tcl command to evaluate when initializing the slave interpreter
+# used by the mkindex parser.  The command is evaluated in the master
+# interpreter, and can use the variable auto_mkindex_parser::parser to get to
+# the slave
+
+proc auto_mkindex_parser::hook {cmd} {
+    variable initCommands
+
+    lappend initCommands $cmd
+}
+
+# auto_mkindex_parser::slavehook command
+#
+# Registers a Tcl command to evaluate when initializing the slave interpreter
+# used by the mkindex parser.  The command is evaluated in the slave
+# interpreter.
+
+proc auto_mkindex_parser::slavehook {cmd} {
+    variable initCommands
+
+    # The $parser variable is defined to be the name of the slave interpreter
+    # when this command is used later.
+
+    lappend initCommands "\$parser eval [list $cmd]"
+}
+
+# auto_mkindex_parser::command --
+#
+# Registers a new command with the "auto_mkindex_parser" interpreter that
+# parses Tcl files.  These commands are fake versions of things like the
+# "proc" command.  When you execute them, they simply write out an entry to a
+# "tclIndex" file for auto-loading.
+#
+# This procedure allows extensions to register their own commands with the
+# auto_mkindex facility.  For example, a package like [incr Tcl] might
+# register a "class" command so that class definitions could be added to a
+# "tclIndex" file for auto-loading.
+#
+# Arguments:
+#	name 	Name of command recognized in Tcl files.
+#	arglist	Argument list for command.
+#	body 	Implementation of command to handle indexing.
+
+proc auto_mkindex_parser::command {name arglist body} {
+    hook [list auto_mkindex_parser::commandInit $name $arglist $body]
+}
+
+# auto_mkindex_parser::commandInit --
+#
+# This does the actual work set up by auto_mkindex_parser::command. This is
+# called when the interpreter used by the parser is created.
+#
+# Arguments:
+#	name 	Name of command recognized in Tcl files.
+#	arglist	Argument list for command.
+#	body 	Implementation of command to handle indexing.
+
+proc auto_mkindex_parser::commandInit {name arglist body} {
+    variable parser
+
+    set ns [namespace qualifiers $name]
+    set tail [namespace tail $name]
+    if {$ns eq ""} {
+        set fakeName [namespace current]::_%@fake_$tail
+    } else {
+        set fakeName [namespace current]::[string map {:: _} _%@fake_$name]
+    }
+    proc $fakeName $arglist $body
+
+    # YUK!  Tcl won't let us alias fully qualified command names, so we can't
+    # handle names like "::itcl::class".  Instead, we have to build procs with
+    # the fully qualified names, and have the procs point to the aliases.
+
+    if {[string match *::* $name]} {
+        set exportCmd [list _%@namespace export [namespace tail $name]]
+        $parser eval [list _%@namespace eval $ns $exportCmd]
+
+	# The following proc definition does not work if you want to tolerate
+	# space or something else diabolical in the procedure name, (i.e.,
+	# space in $alias). The following does not work:
+	#   "_%@eval {$alias} \$args"
+	# because $alias gets concat'ed to $args.  The following does not work
+	# because $cmd is somehow undefined
+	#   "set cmd {$alias} \; _%@eval {\$cmd} \$args"
+	# A gold star to someone that can make test autoMkindex-3.3 work
+	# properly
+
+        set alias [namespace tail $fakeName]
+        $parser invokehidden proc $name {args} "_%@eval {$alias} \$args"
+        $parser alias $alias $fakeName
+    } else {
+        $parser alias $name $fakeName
+    }
+    return
+}
+
+# auto_mkindex_parser::fullname --
+#
+# Used by commands like "proc" within the auto_mkindex parser.  Returns the
+# qualified namespace name for the "name" argument.  If the "name" does not
+# start with "::", elements are added from the current namespace stack to
+# produce a qualified name.  Then, the name is examined to see whether or not
+# it should really be qualified.  If the name has more than the leading "::",
+# it is returned as a fully qualified name.  Otherwise, it is returned as a
+# simple name.  That way, the Tcl autoloader will recognize it properly.
+#
+# Arguments:
+# name -		Name that is being added to index.
+
+proc auto_mkindex_parser::fullname {name} {
+    variable contextStack
+
+    if {![string match ::* $name]} {
+        foreach ns $contextStack {
+            set name "${ns}::$name"
+            if {[string match ::* $name]} {
+                break
+            }
+        }
+    }
+
+    if {[namespace qualifiers $name] eq ""} {
+        set name [namespace tail $name]
+    } elseif {![string match ::* $name]} {
+        set name "::$name"
+    }
+
+    # Earlier, mkindex replaced all $'s with \0.  Now, we have to reverse that
+    # replacement.
+    return [string map [list \0 \$] $name]
+}
+
+# auto_mkindex_parser::indexEntry --
+#
+# Used by commands like "proc" within the auto_mkindex parser to add a
+# correctly-quoted entry to the index. This is shared code so it is done
+# *right*, in one place.
+#
+# Arguments:
+# name -		Name that is being added to index.
+
+proc auto_mkindex_parser::indexEntry {name} {
+    variable index
+    variable scriptFile
+
+    # We convert all metacharacters to their backslashed form, and pre-split
+    # the file name that we know about (which will be a proper list, and so
+    # correctly quoted).
+
+    set name [string range [list \}[fullname $name]] 2 end]
+    set filenameParts [file split $scriptFile]
+
+    append index [format \
+	    {set auto_index(%s) [list source [file join $dir %s]]%s} \
+	    $name $filenameParts \n]
+    return
+}
+
+if {[llength $::auto_mkindex_parser::initCommands]} {
+    return
+}
+
+# Register all of the procedures for the auto_mkindex parser that will build
+# the "tclIndex" file.
+
+# AUTO MKINDEX:  proc name arglist body
+# Adds an entry to the auto index list for the given procedure name.
+
+auto_mkindex_parser::command proc {name args} {
+    indexEntry $name
+}
+
+# Conditionally add support for Tcl byte code files.  There are some tricky
+# details here.  First, we need to get the tbcload library initialized in the
+# current interpreter.  We cannot load tbcload into the slave until we have
+# done so because it needs access to the tcl_patchLevel variable.  Second,
+# because the package index file may defer loading the library until we invoke
+# a command, we need to explicitly invoke auto_load to force it to be loaded.
+# This should be a noop if the package has already been loaded
+
+auto_mkindex_parser::hook {
+    try {
+	package require tbcload
+    } on error {} {
+	# OK, don't have it so do nothing
+    } on ok {} {
+	if {[namespace which -command tbcload::bcproc] eq ""} {
+	    auto_load tbcload::bcproc
+	}
+	load {} tbcload $auto_mkindex_parser::parser
+
+	# AUTO MKINDEX:  tbcload::bcproc name arglist body
+	# Adds an entry to the auto index list for the given pre-compiled
+	# procedure name.
+
+	auto_mkindex_parser::commandInit tbcload::bcproc {name args} {
+	    indexEntry $name
+	}
+    }
+}
+
+# AUTO MKINDEX:  namespace eval name command ?arg arg...?
+# Adds the namespace name onto the context stack and evaluates the associated
+# body of commands.
+#
+# AUTO MKINDEX:  namespace import ?-force? pattern ?pattern...?
+# Performs the "import" action in the parser interpreter.  This is important
+# for any commands contained in a namespace that affect the index.  For
+# example, a script may say "itcl::class ...", or it may import "itcl::*" and
+# then say "class ...".  This procedure does the import operation, but keeps
+# track of imported patterns so we can remove the imports later.
+
+auto_mkindex_parser::command namespace {op args} {
+    switch -- $op {
+        eval {
+            variable parser
+            variable contextStack
+
+            set name [lindex $args 0]
+            set args [lrange $args 1 end]
+
+            set contextStack [linsert $contextStack 0 $name]
+	    $parser eval [list _%@namespace eval $name] $args
+            set contextStack [lrange $contextStack 1 end]
+        }
+        import {
+            variable parser
+            variable imports
+            foreach pattern $args {
+                if {$pattern ne "-force"} {
+                    lappend imports $pattern
+                }
+            }
+            catch {$parser eval "_%@namespace import $args"}
+        }
+	ensemble {
+	    variable parser
+	    variable contextStack
+	    if {[lindex $args 0] eq "create"} {
+		set name ::[join [lreverse $contextStack] ::]
+		catch {
+		    set name [dict get [lrange $args 1 end] -command]
+		    if {![string match ::* $name]} {
+			set name ::[join [lreverse $contextStack] ::]$name
+		    }
+		    regsub -all ::+ $name :: name
+		}
+		# create artifical proc to force an entry in the tclIndex
+		$parser eval [list ::proc $name {} {}]
+	    }
+	}
+    }
+}
+
+# AUTO MKINDEX:  oo::class create name ?definition?
+# Adds an entry to the auto index list for the given class name.
+auto_mkindex_parser::command oo::class {op name {body ""}} {
+    if {$op eq "create"} {
+	indexEntry $name
+    }
+}
+auto_mkindex_parser::command class {op name {body ""}} {
+    if {$op eq "create"} {
+	indexEntry $name
+    }
+}
+
+return


Property changes on: trunk/Master/tlpkg/tltcl/lib/tcl8.6/auto.tcl
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/tlpkg/tltcl/lib/tcl8.6/clock.tcl
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tcl8.6/clock.tcl	                        (rev 0)
+++ trunk/Master/tlpkg/tltcl/lib/tcl8.6/clock.tcl	2020-03-17 20:46:21 UTC (rev 54375)
@@ -0,0 +1,4547 @@
+#----------------------------------------------------------------------
+#
+# clock.tcl --
+#
+#	This file implements the portions of the [clock] ensemble that are
+#	coded in Tcl.  Refer to the users' manual to see the description of
+#	the [clock] command and its subcommands.
+#
+#
+#----------------------------------------------------------------------
+#
+# Copyright (c) 2004,2005,2006,2007 by Kevin B. Kenny
+# See the file "license.terms" for information on usage and redistribution
+# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+#
+#----------------------------------------------------------------------
+
+# We must have message catalogs that support the root locale, and we need
+# access to the Registry on Windows systems.
+
+uplevel \#0 {
+    package require msgcat 1.6
+    if { $::tcl_platform(platform) eq {windows} } {
+	if { [catch { package require registry 1.1 }] } {
+	    namespace eval ::tcl::clock [list variable NoRegistry {}]
+	}
+    }
+}
+
+# Put the library directory into the namespace for the ensemble so that the
+# library code can find message catalogs and time zone definition files.
+
+namespace eval ::tcl::clock \
+    [list variable LibDir [file dirname [info script]]]
+
+#----------------------------------------------------------------------
+#
+# clock --
+#
+#	Manipulate times.
+#
+# The 'clock' command manipulates time.  Refer to the user documentation for
+# the available subcommands and what they do.
+#
+#----------------------------------------------------------------------
+
+namespace eval ::tcl::clock {
+
+    # Export the subcommands
+
+    namespace export format
+    namespace export clicks
+    namespace export microseconds
+    namespace export milliseconds
+    namespace export scan
+    namespace export seconds
+    namespace export add
+
+    # Import the message catalog commands that we use.
+
+    namespace import ::msgcat::mcload
+    namespace import ::msgcat::mclocale
+    namespace import ::msgcat::mc
+    namespace import ::msgcat::mcpackagelocale
+
+}
+
+#----------------------------------------------------------------------
+#
+# ::tcl::clock::Initialize --
+#
+#	Finish initializing the 'clock' subsystem
+#
+# Results:
+#	None.
+#
+# Side effects:
+#	Namespace variable in the 'clock' subsystem are initialized.
+#
+# The '::tcl::clock::Initialize' procedure initializes the namespace variables
+# and root locale message catalog for the 'clock' subsystem.  It is broken
+# into a procedure rather than simply evaluated as a script so that it will be
+# able to use local variables, avoiding the dangers of 'creative writing' as
+# in Bug 1185933.
+#
+#----------------------------------------------------------------------
+
+proc ::tcl::clock::Initialize {} {
+
+    rename ::tcl::clock::Initialize {}
+
+    variable LibDir
+
+    # Define the Greenwich time zone
+
+    proc InitTZData {} {
+	variable TZData
+	array unset TZData
+	set TZData(:Etc/GMT) {
+	    {-9223372036854775808 0 0 GMT}
+	}
+	set TZData(:GMT) $TZData(:Etc/GMT)
+	set TZData(:Etc/UTC) {
+	    {-9223372036854775808 0 0 UTC}
+	}
+	set TZData(:UTC) $TZData(:Etc/UTC)
+	set TZData(:localtime) {}
+    }
+    InitTZData
+
+    mcpackagelocale set {}
+    ::msgcat::mcpackageconfig set mcfolder [file join $LibDir msgs]
+    ::msgcat::mcpackageconfig set unknowncmd ""
+    ::msgcat::mcpackageconfig set changecmd ChangeCurrentLocale
+
+    # Define the message catalog for the root locale.
+
+    ::msgcat::mcmset {} {
+	AM {am}
+	BCE {B.C.E.}
+	CE {C.E.}
+	DATE_FORMAT {%m/%d/%Y}
+	DATE_TIME_FORMAT {%a %b %e %H:%M:%S %Y}
+	DAYS_OF_WEEK_ABBREV	{
+	    Sun Mon Tue Wed Thu Fri Sat
+	}
+	DAYS_OF_WEEK_FULL	{
+	    Sunday Monday Tuesday Wednesday Thursday Friday Saturday
+	}
+	GREGORIAN_CHANGE_DATE	2299161
+	LOCALE_DATE_FORMAT {%m/%d/%Y}
+	LOCALE_DATE_TIME_FORMAT {%a %b %e %H:%M:%S %Y}
+	LOCALE_ERAS {}
+	LOCALE_NUMERALS		{
+	    00 01 02 03 04 05 06 07 08 09
+	    10 11 12 13 14 15 16 17 18 19
+	    20 21 22 23 24 25 26 27 28 29
+	    30 31 32 33 34 35 36 37 38 39
+	    40 41 42 43 44 45 46 47 48 49
+	    50 51 52 53 54 55 56 57 58 59
+	    60 61 62 63 64 65 66 67 68 69
+	    70 71 72 73 74 75 76 77 78 79
+	    80 81 82 83 84 85 86 87 88 89
+	    90 91 92 93 94 95 96 97 98 99
+	}
+	LOCALE_TIME_FORMAT {%H:%M:%S}
+	LOCALE_YEAR_FORMAT {%EC%Ey}
+	MONTHS_ABBREV		{
+	    Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
+	}
+	MONTHS_FULL		{
+	    	January		February	March
+	    	April		May		June
+	    	July		August		September
+		October		November	December
+	}
+	PM {pm}
+	TIME_FORMAT {%H:%M:%S}
+	TIME_FORMAT_12 {%I:%M:%S %P}
+	TIME_FORMAT_24 {%H:%M}
+	TIME_FORMAT_24_SECS {%H:%M:%S}
+    }
+
+    # Define a few Gregorian change dates for other locales.  In most cases
+    # the change date follows a language, because a nation's colonies changed
+    # at the same time as the nation itself.  In many cases, different
+    # national boundaries existed; the dominating rule is to follow the
+    # nation's capital.
+
+    # Italy, Spain, Portugal, Poland
+
+    ::msgcat::mcset it GREGORIAN_CHANGE_DATE 2299161
+    ::msgcat::mcset es GREGORIAN_CHANGE_DATE 2299161
+    ::msgcat::mcset pt GREGORIAN_CHANGE_DATE 2299161
+    ::msgcat::mcset pl GREGORIAN_CHANGE_DATE 2299161
+
+    # France, Austria
+
+    ::msgcat::mcset fr GREGORIAN_CHANGE_DATE 2299227
+
+    # For Belgium, we follow Southern Netherlands; Liege Diocese changed
+    # several weeks later.
+
+    ::msgcat::mcset fr_BE GREGORIAN_CHANGE_DATE 2299238
+    ::msgcat::mcset nl_BE GREGORIAN_CHANGE_DATE 2299238
+
+    # Austria
+
+    ::msgcat::mcset de_AT GREGORIAN_CHANGE_DATE 2299527
+
+    # Hungary
+
+    ::msgcat::mcset hu GREGORIAN_CHANGE_DATE 2301004
+
+    # Germany, Norway, Denmark (Catholic Germany changed earlier)
+
+    ::msgcat::mcset de_DE GREGORIAN_CHANGE_DATE 2342032
+    ::msgcat::mcset nb GREGORIAN_CHANGE_DATE 2342032
+    ::msgcat::mcset nn GREGORIAN_CHANGE_DATE 2342032
+    ::msgcat::mcset no GREGORIAN_CHANGE_DATE 2342032
+    ::msgcat::mcset da GREGORIAN_CHANGE_DATE 2342032
+
+    # Holland (Brabant, Gelderland, Flanders, Friesland, etc. changed at
+    # various times)
+
+    ::msgcat::mcset nl GREGORIAN_CHANGE_DATE 2342165
+
+    # Protestant Switzerland (Catholic cantons changed earlier)
+
+    ::msgcat::mcset fr_CH GREGORIAN_CHANGE_DATE 2361342
+    ::msgcat::mcset it_CH GREGORIAN_CHANGE_DATE 2361342
+    ::msgcat::mcset de_CH GREGORIAN_CHANGE_DATE 2361342
+
+    # English speaking countries
+
+    ::msgcat::mcset en GREGORIAN_CHANGE_DATE 2361222
+
+    # Sweden (had several changes onto and off of the Gregorian calendar)
+
+    ::msgcat::mcset sv GREGORIAN_CHANGE_DATE 2361390
+
+    # Russia
+
+    ::msgcat::mcset ru GREGORIAN_CHANGE_DATE 2421639
+
+    # Romania (Transylvania changed earler - perhaps de_RO should show the
+    # earlier date?)
+
+    ::msgcat::mcset ro GREGORIAN_CHANGE_DATE 2422063
+
+    # Greece
+
+    ::msgcat::mcset el GREGORIAN_CHANGE_DATE 2423480
+
+    #------------------------------------------------------------------
+    #
+    #				CONSTANTS
+    #
+    #------------------------------------------------------------------
+
+    # Paths at which binary time zone data for the Olson libraries are known
+    # to reside on various operating systems
+
+    variable ZoneinfoPaths {}
+    foreach path {
+	/usr/share/zoneinfo
+	/usr/share/lib/zoneinfo
+	/usr/lib/zoneinfo
+	/usr/local/etc/zoneinfo
+    } {
+	if { [file isdirectory $path] } {
+	    lappend ZoneinfoPaths $path
+	}
+    }
+
+    # Define the directories for time zone data and message catalogs.
+
+    variable DataDir [file join $LibDir tzdata]
+
+    # Number of days in the months, in common years and leap years.
+
+    variable DaysInRomanMonthInCommonYear \
+	{ 31 28 31 30 31 30 31 31 30 31 30 31 }
+    variable DaysInRomanMonthInLeapYear \
+	{ 31 29 31 30 31 30 31 31 30 31 30 31 }
+    variable DaysInPriorMonthsInCommonYear [list 0]
+    variable DaysInPriorMonthsInLeapYear [list 0]
+    set i 0
+    foreach j $DaysInRomanMonthInCommonYear {
+	lappend DaysInPriorMonthsInCommonYear [incr i $j]
+    }
+    set i 0
+    foreach j $DaysInRomanMonthInLeapYear {
+	lappend DaysInPriorMonthsInLeapYear [incr i $j]
+    }
+
+    # Another epoch (Hi, Jeff!)
+
+    variable Roddenberry 1946
+
+    # Integer ranges
+
+    variable MINWIDE -9223372036854775808
+    variable MAXWIDE 9223372036854775807
+
+    # Day before Leap Day
+
+    variable FEB_28	       58
+
+    # Translation table to map Windows TZI onto cities, so that the Olson
+    # rules can apply.  In some cases the mapping is ambiguous, so it's wise
+    # to specify $::env(TCL_TZ) rather than simply depending on the system
+    # time zone.
+
+    # The keys are long lists of values obtained from the time zone
+    # information in the Registry.  In order, the list elements are:
+    # 	Bias StandardBias DaylightBias
+    #   StandardDate.wYear StandardDate.wMonth StandardDate.wDayOfWeek
+    #   StandardDate.wDay StandardDate.wHour StandardDate.wMinute
+    #   StandardDate.wSecond StandardDate.wMilliseconds
+    #   DaylightDate.wYear DaylightDate.wMonth DaylightDate.wDayOfWeek
+    #   DaylightDate.wDay DaylightDate.wHour DaylightDate.wMinute
+    #   DaylightDate.wSecond DaylightDate.wMilliseconds
+    # The values are the names of time zones where those rules apply.  There
+    # is considerable ambiguity in certain zones; an attempt has been made to
+    # make a reasonable guess, but this table needs to be taken with a grain
+    # of salt.
+
+    variable WinZoneInfo [dict create {*}{
+	{-43200 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0}  :Pacific/Kwajalein
+	{-39600 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0}	 :Pacific/Midway
+	{-36000 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0}  :Pacific/Honolulu
+        {-32400 0 3600 0 11 0 1 2 0 0 0 0 3 0 2 2 0 0 0} :America/Anchorage
+        {-28800 0 3600 0 11 0 1 2 0 0 0 0 3 0 2 2 0 0 0} :America/Los_Angeles
+        {-28800 0 3600 0 10 0 5 2 0 0 0 0 4 0 1 2 0 0 0} :America/Tijuana
+        {-25200 0 3600 0 11 0 1 2 0 0 0 0 3 0 2 2 0 0 0} :America/Denver
+        {-25200 0 3600 0 10 0 5 2 0 0 0 0 4 0 1 2 0 0 0} :America/Chihuahua
+	{-25200 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0}  :America/Phoenix
+	{-21600 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0}  :America/Regina
+	{-21600 0 3600 0 11 0 1 2 0 0 0 0 3 0 2 2 0 0 0} :America/Chicago
+        {-21600 0 3600 0 10 0 5 2 0 0 0 0 4 0 1 2 0 0 0} :America/Mexico_City
+	{-18000 0 3600 0 11 0 1 2 0 0 0 0 3 0 2 2 0 0 0} :America/New_York
+	{-18000 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0}  :America/Indianapolis
+	{-14400 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0}  :America/Caracas
+        {-14400 0 3600 0 3 6 2 23 59 59 999 0 10 6 2 23 59 59 999}
+							 :America/Santiago
+        {-14400 0 3600 0 2 0 5 2 0 0 0 0 11 0 1 2 0 0 0} :America/Manaus
+        {-14400 0 3600 0 11 0 1 2 0 0 0 0 3 0 2 2 0 0 0} :America/Halifax
+	{-12600 0 3600 0 10 0 5 2 0 0 0 0 4 0 1 2 0 0 0} :America/St_Johns
+	{-10800 0 3600 0 2 0 2 2 0 0 0 0 10 0 3 2 0 0 0} :America/Sao_Paulo
+	{-10800 0 3600 0 10 0 5 2 0 0 0 0 4 0 1 2 0 0 0} :America/Godthab
+	{-10800 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0}  :America/Buenos_Aires
+        {-10800 0 3600 0 2 0 5 2 0 0 0 0 11 0 1 2 0 0 0} :America/Bahia
+        {-10800 0 3600 0 3 0 2 2 0 0 0 0 10 0 1 2 0 0 0} :America/Montevideo
+	{-7200 0 3600 0 9 0 5 2 0 0 0 0 3 0 5 2 0 0 0}   :America/Noronha
+	{-3600 0 3600 0 10 0 5 3 0 0 0 0 3 0 5 2 0 0 0}  :Atlantic/Azores
+	{-3600 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0}   :Atlantic/Cape_Verde
+	{0 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0}       :UTC
+	{0 0 3600 0 10 0 5 2 0 0 0 0 3 0 5 1 0 0 0}      :Europe/London
+	{3600 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0}    :Africa/Kinshasa
+	{3600 0 3600 0 10 0 5 3 0 0 0 0 3 0 5 2 0 0 0}   :CET
+        {7200 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0}    :Africa/Harare
+        {7200 0 3600 0 9 4 5 23 59 59 0 0 4 4 5 23 59 59 0}
+			      				 :Africa/Cairo
+	{7200 0 3600 0 10 0 5 4 0 0 0 0 3 0 5 3 0 0 0}   :Europe/Helsinki
+        {7200 0 3600 0 9 0 3 2 0 0 0 0 3 5 5 2 0 0 0}    :Asia/Jerusalem
+	{7200 0 3600 0 9 0 5 1 0 0 0 0 3 0 5 0 0 0 0}    :Europe/Bucharest
+	{7200 0 3600 0 10 0 5 3 0 0 0 0 3 0 5 2 0 0 0}   :Europe/Athens
+        {7200 0 3600 0 9 5 5 1 0 0 0 0 3 4 5 0 0 0 0}    :Asia/Amman
+        {7200 0 3600 0 10 6 5 23 59 59 999 0 3 0 5 0 0 0 0}
+							 :Asia/Beirut
+        {7200 0 -3600 0 4 0 1 2 0 0 0 0 9 0 1 2 0 0 0}   :Africa/Windhoek
+	{10800 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0}   :Asia/Riyadh
+	{10800 0 3600 0 10 0 1 4 0 0 0 0 4 0 1 3 0 0 0}  :Asia/Baghdad
+	{10800 0 3600 0 10 0 5 3 0 0 0 0 3 0 5 2 0 0 0}  :Europe/Moscow
+	{12600 0 3600 0 9 2 4 2 0 0 0 0 3 0 1 2 0 0 0}   :Asia/Tehran
+        {14400 0 3600 0 10 0 5 5 0 0 0 0 3 0 5 4 0 0 0}  :Asia/Baku
+	{14400 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0}   :Asia/Muscat
+	{14400 0 3600 0 10 0 5 3 0 0 0 0 3 0 5 2 0 0 0}  :Asia/Tbilisi
+	{16200 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0}   :Asia/Kabul
+	{18000 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0}   :Asia/Karachi
+	{18000 0 3600 0 10 0 5 3 0 0 0 0 3 0 5 2 0 0 0}  :Asia/Yekaterinburg
+	{19800 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0}   :Asia/Calcutta
+	{20700 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0}   :Asia/Katmandu
+	{21600 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0}   :Asia/Dhaka
+	{21600 0 3600 0 10 0 5 3 0 0 0 0 3 0 5 2 0 0 0}  :Asia/Novosibirsk
+	{23400 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0}   :Asia/Rangoon
+	{25200 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0}   :Asia/Bangkok
+	{25200 0 3600 0 10 0 5 3 0 0 0 0 3 0 5 2 0 0 0}  :Asia/Krasnoyarsk
+	{28800 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0}   :Asia/Chongqing
+	{28800 0 3600 0 10 0 5 3 0 0 0 0 3 0 5 2 0 0 0}  :Asia/Irkutsk
+	{32400 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0}   :Asia/Tokyo
+	{32400 0 3600 0 10 0 5 3 0 0 0 0 3 0 5 2 0 0 0}  :Asia/Yakutsk
+	{34200 0 3600 0 3 0 5 3 0 0 0 0 10 0 5 2 0 0 0}  :Australia/Adelaide
+	{34200 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0}   :Australia/Darwin
+	{36000 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0}   :Australia/Brisbane
+	{36000 0 3600 0 10 0 5 3 0 0 0 0 3 0 5 2 0 0 0}  :Asia/Vladivostok
+	{36000 0 3600 0 3 0 5 3 0 0 0 0 10 0 1 2 0 0 0}  :Australia/Hobart
+	{36000 0 3600 0 3 0 5 3 0 0 0 0 10 0 5 2 0 0 0}  :Australia/Sydney
+	{39600 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0}   :Pacific/Noumea
+	{43200 0 3600 0 3 0 3 3 0 0 0 0 10 0 1 2 0 0 0}  :Pacific/Auckland
+	{43200 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0}   :Pacific/Fiji
+	{46800 0 3600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0}   :Pacific/Tongatapu
+    }]
+
+    # Groups of fields that specify the date, priorities, and code bursts that
+    # determine Julian Day Number given those groups.  The code in [clock
+    # scan] will choose the highest priority (lowest numbered) set of fields
+    # that determines the date.
+
+    variable DateParseActions {
+
+	{ seconds } 0 {}
+
+	{ julianDay } 1 {}
+
+	{ era century yearOfCentury month dayOfMonth } 2 {
+	    dict set date year [expr { 100 * [dict get $date century]
+				       + [dict get $date yearOfCentury] }]
+	    set date [GetJulianDayFromEraYearMonthDay $date[set date {}] \
+			  $changeover]
+	}
+	{ era century yearOfCentury dayOfYear } 2 {
+	    dict set date year [expr { 100 * [dict get $date century]
+				       + [dict get $date yearOfCentury] }]
+	    set date [GetJulianDayFromEraYearDay $date[set date {}] \
+			  $changeover]
+	}
+
+	{ century yearOfCentury month dayOfMonth } 3 {
+	    dict set date era CE
+	    dict set date year [expr { 100 * [dict get $date century]
+				       + [dict get $date yearOfCentury] }]
+	    set date [GetJulianDayFromEraYearMonthDay $date[set date {}] \
+			  $changeover]
+	}
+	{ century yearOfCentury dayOfYear } 3 {
+	    dict set date era CE
+	    dict set date year [expr { 100 * [dict get $date century]
+				       + [dict get $date yearOfCentury] }]
+	    set date [GetJulianDayFromEraYearDay $date[set date {}] \
+			  $changeover]
+	}
+	{ iso8601Century iso8601YearOfCentury iso8601Week dayOfWeek } 3 {
+	    dict set date era CE
+	    dict set date iso8601Year \
+		[expr { 100 * [dict get $date iso8601Century]
+			+ [dict get $date iso8601YearOfCentury] }]
+	    set date [GetJulianDayFromEraYearWeekDay $date[set date {}] \
+			 $changeover]
+	}
+
+	{ yearOfCentury month dayOfMonth } 4 {
+	    set date [InterpretTwoDigitYear $date[set date {}] $baseTime]
+	    dict set date era CE
+	    set date [GetJulianDayFromEraYearMonthDay $date[set date {}] \
+			  $changeover]
+	}
+	{ yearOfCentury dayOfYear } 4 {
+	    set date [InterpretTwoDigitYear $date[set date {}] $baseTime]
+	    dict set date era CE
+	    set date [GetJulianDayFromEraYearDay $date[set date {}] \
+			  $changeover]
+	}
+	{ iso8601YearOfCentury iso8601Week dayOfWeek } 4 {
+	    set date [InterpretTwoDigitYear \
+			  $date[set date {}] $baseTime \
+			  iso8601YearOfCentury iso8601Year]
+	    dict set date era CE
+	    set date [GetJulianDayFromEraYearWeekDay $date[set date {}] \
+			 $changeover]
+	}
+
+	{ month dayOfMonth } 5 {
+	    set date [AssignBaseYear $date[set date {}] \
+			  $baseTime $timeZone $changeover]
+	    set date [GetJulianDayFromEraYearMonthDay $date[set date {}] \
+			  $changeover]
+	}
+	{ dayOfYear } 5 {
+	    set date [AssignBaseYear $date[set date {}] \
+			  $baseTime $timeZone $changeover]
+	    set date [GetJulianDayFromEraYearDay $date[set date {}] \
+			 $changeover]
+	}
+	{ iso8601Week dayOfWeek } 5 {
+	    set date [AssignBaseIso8601Year $date[set date {}] \
+			  $baseTime $timeZone $changeover]
+	    set date [GetJulianDayFromEraYearWeekDay $date[set date {}] \
+			 $changeover]
+	}
+
+	{ dayOfMonth } 6 {
+	    set date [AssignBaseMonth $date[set date {}] \
+			  $baseTime $timeZone $changeover]
+	    set date [GetJulianDayFromEraYearMonthDay $date[set date {}] \
+			  $changeover]
+	}
+
+	{ dayOfWeek } 7 {
+	    set date [AssignBaseWeek $date[set date {}] \
+			  $baseTime $timeZone $changeover]
+	    set date [GetJulianDayFromEraYearWeekDay $date[set date {}] \
+			 $changeover]
+	}
+
+	{} 8 {
+	    set date [AssignBaseJulianDay $date[set date {}] \
+			  $baseTime $timeZone $changeover]
+	}
+    }
+
+    # Groups of fields that specify time of day, priorities, and code that
+    # processes them
+
+    variable TimeParseActions {
+
+	seconds 1 {}
+
+	{ hourAMPM minute second amPmIndicator } 2 {
+	    dict set date secondOfDay [InterpretHMSP $date]
+	}
+	{ hour minute second } 2 {
+	    dict set date secondOfDay [InterpretHMS $date]
+	}
+
+	{ hourAMPM minute amPmIndicator } 3 {
+	    dict set date second 0
+	    dict set date secondOfDay [InterpretHMSP $date]
+	}
+	{ hour minute } 3 {
+	    dict set date second 0
+	    dict set date secondOfDay [InterpretHMS $date]
+	}
+
+	{ hourAMPM amPmIndicator } 4 {
+	    dict set date minute 0
+	    dict set date second 0
+	    dict set date secondOfDay [InterpretHMSP $date]
+	}
+	{ hour } 4 {
+	    dict set date minute 0
+	    dict set date second 0
+	    dict set date secondOfDay [InterpretHMS $date]
+	}
+
+	{ } 5 {
+	    dict set date secondOfDay 0
+	}
+    }
+
+    # Legacy time zones, used primarily for parsing RFC822 dates.
+
+    variable LegacyTimeZone [dict create \
+	gmt	+0000 \
+	ut	+0000 \
+	utc	+0000 \
+	bst	+0100 \
+	wet	+0000 \
+	wat	-0100 \
+	at	-0200 \
+	nft	-0330 \
+	nst	-0330 \
+	ndt	-0230 \
+	ast	-0400 \
+	adt	-0300 \
+	est	-0500 \
+	edt	-0400 \
+	cst	-0600 \
+	cdt	-0500 \
+	mst	-0700 \
+	mdt	-0600 \
+	pst	-0800 \
+	pdt	-0700 \
+	yst	-0900 \
+	ydt	-0800 \
+	hst	-1000 \
+	hdt	-0900 \
+	cat	-1000 \
+	ahst	-1000 \
+	nt	-1100 \
+	idlw	-1200 \
+	cet	+0100 \
+	cest	+0200 \
+	met	+0100 \
+	mewt	+0100 \
+	mest	+0200 \
+	swt	+0100 \
+	sst	+0200 \
+	fwt	+0100 \
+	fst	+0200 \
+	eet	+0200 \
+	eest	+0300 \
+	bt	+0300 \
+	it	+0330 \
+	zp4	+0400 \
+	zp5	+0500 \
+	ist	+0530 \
+	zp6	+0600 \
+	wast	+0700 \
+	wadt	+0800 \
+	jt	+0730 \
+	cct	+0800 \
+	jst	+0900 \
+	kst     +0900 \
+	cast	+0930 \
+        jdt     +1000 \
+        kdt     +1000 \
+	cadt	+1030 \
+	east	+1000 \
+	eadt	+1030 \
+	gst	+1000 \
+	nzt	+1200 \
+	nzst	+1200 \
+	nzdt	+1300 \
+	idle	+1200 \
+	a	+0100 \
+	b	+0200 \
+	c	+0300 \
+	d	+0400 \
+	e	+0500 \
+	f	+0600 \
+	g	+0700 \
+	h	+0800 \
+	i	+0900 \
+	k	+1000 \
+	l	+1100 \
+	m	+1200 \
+	n	-0100 \
+	o	-0200 \
+	p	-0300 \
+	q	-0400 \
+	r	-0500 \
+	s	-0600 \
+	t	-0700 \
+	u	-0800 \
+	v	-0900 \
+	w	-1000 \
+	x	-1100 \
+	y	-1200 \
+	z	+0000 \
+    ]
+
+    # Caches
+
+    variable LocaleNumeralCache {};	# Dictionary whose keys are locale
+					# names and whose values are pairs
+					# comprising regexes matching numerals
+					# in the given locales and dictionaries
+					# mapping the numerals to their numeric
+					# values.
+    # variable CachedSystemTimeZone;    # If 'CachedSystemTimeZone' exists,
+					# it contains the value of the
+					# system time zone, as determined from
+					# the environment.
+    variable TimeZoneBad {};	        # Dictionary whose keys are time zone
+    					# names and whose values are 1 if
+					# the time zone is unknown and 0
+    					# if it is known.
+    variable TZData;			# Array whose keys are time zone names
+					# and whose values are lists of quads
+					# comprising start time, UTC offset,
+					# Daylight Saving Time indicator, and
+					# time zone abbreviation.
+    variable FormatProc;		# Array mapping format group
+					# and locale to the name of a procedure
+					# that renders the given format
+}
+::tcl::clock::Initialize
+
+#----------------------------------------------------------------------
+#
+# clock format --
+#
+#	Formats a count of seconds since the Posix Epoch as a time of day.
+#
+# The 'clock format' command formats times of day for output.  Refer to the
+# user documentation to see what it does.
+#
+#----------------------------------------------------------------------
+
+proc ::tcl::clock::format { args } {
+
+    variable FormatProc
+    variable TZData
+
+    lassign [ParseFormatArgs {*}$args] format locale timezone
+    set locale [string tolower $locale]
+    set clockval [lindex $args 0]
+
+    # Get the data for time changes in the given zone
+
+    if {$timezone eq ""} {
+	set timezone [GetSystemTimeZone]
+    }
+    if {![info exists TZData($timezone)]} {
+	if {[catch {SetupTimeZone $timezone} retval opts]} {
+	    dict unset opts -errorinfo
+	    return -options $opts $retval
+	}
+    }
+
+    # Build a procedure to format the result. Cache the built procedure's name
+    # in the 'FormatProc' array to avoid losing its internal representation,
+    # which contains the name resolution.
+
+    set procName formatproc'$format'$locale
+    set procName [namespace current]::[string map {: {\:} \\ {\\}} $procName]
+    if {[info exists FormatProc($procName)]} {
+	set procName $FormatProc($procName)
+    } else {
+	set FormatProc($procName) \
+	    [ParseClockFormatFormat $procName $format $locale]
+    }
+
+    return [$procName $clockval $timezone]
+
+}
+
+#----------------------------------------------------------------------
+#
+# ParseClockFormatFormat --
+#
+#	Builds and caches a procedure that formats a time value.
+#
+# Parameters:
+#	format -- Format string to use
+#	locale -- Locale in which the format string is to be interpreted
+#
+# Results:
+#	Returns the name of the newly-built procedure.
+#
+#----------------------------------------------------------------------
+
+proc ::tcl::clock::ParseClockFormatFormat {procName format locale} {
+
+    if {[namespace which $procName] ne {}} {
+	return $procName
+    }
+
+    # Map away the locale-dependent composite format groups
+
+    EnterLocale $locale
+
+    # Change locale if a fresh locale has been given on the command line.
+
+    try {
+	return [ParseClockFormatFormat2 $format $locale $procName]
+    } trap CLOCK {result opts} {
+	dict unset opts -errorinfo
+	return -options $opts $result
+    }
+}
+
+proc ::tcl::clock::ParseClockFormatFormat2 {format locale procName} {
+    set didLocaleEra 0
+    set didLocaleNumerals 0
+    set preFormatCode \
+	[string map [list @GREGORIAN_CHANGE_DATE@ \
+				       [mc GREGORIAN_CHANGE_DATE]] \
+	     {
+		 variable TZData
+		 set date [GetDateFields $clockval \
+			       $TZData($timezone) \
+			       @GREGORIAN_CHANGE_DATE@]
+	     }]
+    set formatString {}
+    set substituents {}
+    set state {}
+
+    set format [LocalizeFormat $locale $format]
+
+    foreach char [split $format {}] {
+	switch -exact -- $state {
+	    {} {
+		if { [string equal % $char] } {
+		    set state percent
+		} else {
+		    append formatString $char
+		}
+	    }
+	    percent {			# Character following a '%' character
+		set state {}
+		switch -exact -- $char {
+		    % {			# A literal character, '%'
+			append formatString %%
+		    }
+		    a {			# Day of week, abbreviated
+			append formatString %s
+			append substituents \
+			    [string map \
+				 [list @DAYS_OF_WEEK_ABBREV@ \
+				      [list [mc DAYS_OF_WEEK_ABBREV]]] \
+				 { [lindex @DAYS_OF_WEEK_ABBREV@ \
+					[expr {[dict get $date dayOfWeek] \
+						   % 7}]]}]
+		    }
+		    A {			# Day of week, spelt out.
+			append formatString %s
+			append substituents \
+			    [string map \
+				 [list @DAYS_OF_WEEK_FULL@ \
+				      [list [mc DAYS_OF_WEEK_FULL]]] \
+				 { [lindex @DAYS_OF_WEEK_FULL@ \
+					[expr {[dict get $date dayOfWeek] \
+						   % 7}]]}]
+		    }
+		    b - h {		# Name of month, abbreviated.
+			append formatString %s
+			append substituents \
+			    [string map \
+				 [list @MONTHS_ABBREV@ \
+				      [list [mc MONTHS_ABBREV]]] \
+				 { [lindex @MONTHS_ABBREV@ \
+					[expr {[dict get $date month]-1}]]}]
+		    }
+		    B {			# Name of month, spelt out
+			append formatString %s
+			append substituents \
+			    [string map \
+				 [list @MONTHS_FULL@ \
+				      [list [mc MONTHS_FULL]]] \
+				 { [lindex @MONTHS_FULL@ \
+					[expr {[dict get $date month]-1}]]}]
+		    }
+		    C {			# Century number
+			append formatString %02d
+			append substituents \
+			    { [expr {[dict get $date year] / 100}]}
+		    }
+		    d {			# Day of month, with leading zero
+			append formatString %02d
+			append substituents { [dict get $date dayOfMonth]}
+		    }
+		    e {			# Day of month, without leading zero
+			append formatString %2d
+			append substituents { [dict get $date dayOfMonth]}
+		    }
+		    E {			# Format group in a locale-dependent
+					# alternative era
+			set state percentE
+			if {!$didLocaleEra} {
+			    append preFormatCode \
+				[string map \
+				     [list @LOCALE_ERAS@ \
+					  [list [mc LOCALE_ERAS]]] \
+				     {
+					 set date [GetLocaleEra \
+						       $date[set date {}] \
+						       @LOCALE_ERAS@]}] \n
+			    set didLocaleEra 1
+			}
+			if {!$didLocaleNumerals} {
+			    append preFormatCode \
+				[list set localeNumerals \
+				     [mc LOCALE_NUMERALS]] \n
+			    set didLocaleNumerals 1
+			}
+		    }
+		    g {			# Two-digit year relative to ISO8601
+					# week number
+			append formatString %02d
+			append substituents \
+			    { [expr { [dict get $date iso8601Year] % 100 }]}
+		    }
+		    G {			# Four-digit year relative to ISO8601
+					# week number
+			append formatString %02d
+			append substituents { [dict get $date iso8601Year]}
+		    }
+		    H {			# Hour in the 24-hour day, leading zero
+			append formatString %02d
+			append substituents \
+			    { [expr { [dict get $date localSeconds] \
+					  / 3600 % 24}]}
+		    }
+		    I {			# Hour AM/PM, with leading zero
+			append formatString %02d
+			append substituents \
+			    { [expr { ( ( ( [dict get $date localSeconds] \
+					    % 86400 ) \
+					  + 86400 \
+					  - 3600 ) \
+					/ 3600 ) \
+				      % 12 + 1 }] }
+		    }
+		    j {			# Day of year (001-366)
+			append formatString %03d
+			append substituents { [dict get $date dayOfYear]}
+		    }
+		    J {			# Julian Day Number
+			append formatString %07ld
+			append substituents { [dict get $date julianDay]}
+		    }
+		    k {			# Hour (0-23), no leading zero
+			append formatString %2d
+			append substituents \
+			    { [expr { [dict get $date localSeconds]
+				      / 3600
+				      % 24 }]}
+		    }
+		    l {			# Hour (12-11), no leading zero
+			append formatString %2d
+			append substituents \
+			    { [expr { ( ( ( [dict get $date localSeconds]
+					   % 86400 )
+					 + 86400
+					 - 3600 )
+				       / 3600 )
+				     % 12 + 1 }]}
+		    }
+		    m {			# Month number, leading zero
+			append formatString %02d
+			append substituents { [dict get $date month]}
+		    }
+		    M {			# Minute of the hour, leading zero
+			append formatString %02d
+			append substituents \
+			    { [expr { [dict get $date localSeconds]
+				      / 60
+				      % 60 }]}
+		    }
+		    n {			# A literal newline
+			append formatString \n
+		    }
+		    N {			# Month number, no leading zero
+			append formatString %2d
+			append substituents { [dict get $date month]}
+		    }
+		    O {			# A format group in the locale's
+					# alternative numerals
+			set state percentO
+			if {!$didLocaleNumerals} {
+			    append preFormatCode \
+				[list set localeNumerals \
+				     [mc LOCALE_NUMERALS]] \n
+			    set didLocaleNumerals 1
+			}
+		    }
+		    p {			# Localized 'AM' or 'PM' indicator
+					# converted to uppercase
+			append formatString %s
+			append preFormatCode \
+			    [list set AM [string toupper [mc AM]]] \n \
+			    [list set PM [string toupper [mc PM]]] \n
+			append substituents \
+			    { [expr {(([dict get $date localSeconds]
+				       % 86400) < 43200) ?
+				     $AM : $PM}]}
+		    }
+		    P {			# Localized 'AM' or 'PM' indicator
+			append formatString %s
+			append preFormatCode \
+			    [list set am [mc AM]] \n \
+			    [list set pm [mc PM]] \n
+			append substituents \
+			    { [expr {(([dict get $date localSeconds]
+				       % 86400) < 43200) ?
+				     $am : $pm}]}
+
+		    }
+		    Q {			# Hi, Jeff!
+			append formatString %s
+			append substituents { [FormatStarDate $date]}
+		    }
+		    s {			# Seconds from the Posix Epoch
+			append formatString %s
+			append substituents { [dict get $date seconds]}
+		    }
+		    S {			# Second of the minute, with
+			# leading zero
+			append formatString %02d
+			append substituents \
+			    { [expr { [dict get $date localSeconds]
+				      % 60 }]}
+		    }
+		    t {			# A literal tab character
+			append formatString \t
+		    }
+		    u {			# Day of the week (1-Monday, 7-Sunday)
+			append formatString %1d
+			append substituents { [dict get $date dayOfWeek]}
+		    }
+		    U {			# Week of the year (00-53). The
+					# first Sunday of the year is the
+					# first day of week 01
+			append formatString %02d
+			append preFormatCode {
+			    set dow [dict get $date dayOfWeek]
+			    if { $dow == 7 } {
+				set dow 0
+			    }
+			    incr dow
+			    set UweekNumber \
+				[expr { ( [dict get $date dayOfYear]
+					  - $dow + 7 )
+					/ 7 }]
+			}
+			append substituents { $UweekNumber}
+		    }
+		    V {			# The ISO8601 week number
+			append formatString %02d
+			append substituents { [dict get $date iso8601Week]}
+		    }
+		    w {			# Day of the week (0-Sunday,
+					# 6-Saturday)
+			append formatString %1d
+			append substituents \
+			    { [expr { [dict get $date dayOfWeek] % 7 }]}
+		    }
+		    W {			# Week of the year (00-53). The first
+					# Monday of the year is the first day
+					# of week 01.
+			append preFormatCode {
+			    set WweekNumber \
+				[expr { ( [dict get $date dayOfYear]
+					  - [dict get $date dayOfWeek]
+					  + 7 )
+					/ 7 }]
+			}
+			append formatString %02d
+			append substituents { $WweekNumber}
+		    }
+		    y {			# The two-digit year of the century
+			append formatString %02d
+			append substituents \
+			    { [expr { [dict get $date year] % 100 }]}
+		    }
+		    Y {			# The four-digit year
+			append formatString %04d
+			append substituents { [dict get $date year]}
+		    }
+		    z {			# The time zone as hours and minutes
+					# east (+) or west (-) of Greenwich
+			append formatString %s
+			append substituents { [FormatNumericTimeZone \
+						   [dict get $date tzOffset]]}
+		    }
+		    Z {			# The name of the time zone
+			append formatString %s
+			append substituents { [dict get $date tzName]}
+		    }
+		    % {			# A literal percent character
+			append formatString %%
+		    }
+		    default {		# An unknown escape sequence
+			append formatString %% $char
+		    }
+		}
+	    }
+	    percentE {			# Character following %E
+		set state {}
+		switch -exact -- $char {
+		    E {
+			append formatString %s
+			append substituents { } \
+			    [string map \
+				 [list @BCE@ [list [mc BCE]] \
+				      @CE@ [list [mc CE]]] \
+				      {[dict get {BCE @BCE@ CE @CE@} \
+					    [dict get $date era]]}]
+		    }
+		    C {			# Locale-dependent era
+			append formatString %s
+			append substituents { [dict get $date localeEra]}
+		    }
+		    y {			# Locale-dependent year of the era
+			append preFormatCode {
+			    set y [dict get $date localeYear]
+			    if { $y >= 0 && $y < 100 } {
+				set Eyear [lindex $localeNumerals $y]
+			    } else {
+				set Eyear $y
+			    }
+			}
+			append formatString %s
+			append substituents { $Eyear}
+		    }
+		    default {		# Unknown %E format group
+			append formatString %%E $char
+		    }
+		}
+	    }
+	    percentO {			# Character following %O
+		set state {}
+		switch -exact -- $char {
+		    d - e {		# Day of the month in alternative
+			# numerals
+			append formatString %s
+			append substituents \
+			    { [lindex $localeNumerals \
+				   [dict get $date dayOfMonth]]}
+		    }
+		    H - k {		# Hour of the day in alternative
+					# numerals
+			append formatString %s
+			append substituents \
+			    { [lindex $localeNumerals \
+				   [expr { [dict get $date localSeconds]
+					   / 3600
+					   % 24 }]]}
+		    }
+		    I - l {		# Hour (12-11) AM/PM in alternative
+					# numerals
+			append formatString %s
+			append substituents \
+			    { [lindex $localeNumerals \
+				   [expr { ( ( ( [dict get $date localSeconds]
+						 % 86400 )
+					       + 86400
+					       - 3600 )
+					     / 3600 )
+					   % 12 + 1 }]]}
+		    }
+		    m {			# Month number in alternative numerals
+			append formatString %s
+			append substituents \
+			    { [lindex $localeNumerals [dict get $date month]]}
+		    }
+		    M {			# Minute of the hour in alternative
+					# numerals
+			append formatString %s
+			append substituents \
+			    { [lindex $localeNumerals \
+				   [expr { [dict get $date localSeconds]
+					   / 60
+					   % 60 }]]}
+		    }
+		    S {			# Second of the minute in alternative
+					# numerals
+			append formatString %s
+			append substituents \
+			    { [lindex $localeNumerals \
+				   [expr { [dict get $date localSeconds]
+					   % 60 }]]}
+		    }
+		    u {			# Day of the week (Monday=1,Sunday=7)
+					# in alternative numerals
+			append formatString %s
+			append substituents \
+			    { [lindex $localeNumerals \
+				   [dict get $date dayOfWeek]]}
+			}
+		    w {			# Day of the week (Sunday=0,Saturday=6)
+					# in alternative numerals
+			append formatString %s
+			append substituents \
+			    { [lindex $localeNumerals \
+				   [expr { [dict get $date dayOfWeek] % 7 }]]}
+		    }
+		    y {			# Year of the century in alternative
+					# numerals
+			append formatString %s
+			append substituents \
+			    { [lindex $localeNumerals \
+				   [expr { [dict get $date year] % 100 }]]}
+		    }
+		    default {	# Unknown format group
+			append formatString %%O $char
+		    }
+		}
+	    }
+	}
+    }
+
+    # Clean up any improperly terminated groups
+
+    switch -exact -- $state {
+	percent {
+	    append formatString %%
+	}
+	percentE {
+	    append retval %%E
+	}
+	percentO {
+	    append retval %%O
+	}
+    }
+
+    proc $procName {clockval timezone} "
+        $preFormatCode
+        return \[::format [list $formatString] $substituents\]
+    "
+
+    #    puts [list $procName [info args $procName] [info body $procName]]
+
+    return $procName
+}
+
+#----------------------------------------------------------------------
+#
+# clock scan --
+#
+#	Inputs a count of seconds since the Posix Epoch as a time of day.
+#
+# The 'clock format' command scans times of day on input.  Refer to the user
+# documentation to see what it does.
+#
+#----------------------------------------------------------------------
+
+proc ::tcl::clock::scan { args } {
+
+    set format {}
+
+    # Check the count of args
+
+    if { [llength $args] < 1 || [llength $args] % 2 != 1 } {
+	set cmdName "clock scan"
+	return -code error \
+	    -errorcode [list CLOCK wrongNumArgs] \
+	    "wrong \# args: should be\
+             \"$cmdName string\
+             ?-base seconds?\
+             ?-format string? ?-gmt boolean?\
+             ?-locale LOCALE? ?-timezone ZONE?\""
+    }
+
+    # Set defaults
+
+    set base [clock seconds]
+    set string [lindex $args 0]
+    set format {}
+    set gmt 0
+    set locale c
+    set timezone [GetSystemTimeZone]
+
+    # Pick up command line options.
+
+    foreach { flag value } [lreplace $args 0 0] {
+	set saw($flag) {}
+	switch -exact -- $flag {
+	    -b - -ba - -bas - -base {
+		set base $value
+	    }
+	    -f - -fo - -for - -form - -forma - -format {
+		set format $value
+	    }
+	    -g - -gm - -gmt {
+		set gmt $value
+	    }
+	    -l - -lo - -loc - -loca - -local - -locale {
+		set locale [string tolower $value]
+	    }
+	    -t - -ti - -tim - -time - -timez - -timezo - -timezon - -timezone {
+		set timezone $value
+	    }
+	    default {
+		return -code error \
+		    -errorcode [list CLOCK badOption $flag] \
+		    "bad option \"$flag\",\
+                     must be -base, -format, -gmt, -locale or -timezone"
+	    }
+	}
+    }
+
+    # Check options for validity
+
+    if { [info exists saw(-gmt)] && [info exists saw(-timezone)] } {
+	return -code error \
+	    -errorcode [list CLOCK gmtWithTimezone] \
+	    "cannot use -gmt and -timezone in same call"
+    }
+    if { [catch { expr { wide($base) } } result] } {
+	return -code error "expected integer but got \"$base\""
+    }
+    if { ![string is boolean -strict $gmt] } {
+	return -code error "expected boolean value but got \"$gmt\""
+    } elseif { $gmt } {
+	set timezone :GMT
+    }
+
+    if { ![info exists saw(-format)] } {
+	# Perhaps someday we'll localize the legacy code. Right now, it's not
+	# localized.
+	if { [info exists saw(-locale)] } {
+	    return -code error \
+		-errorcode [list CLOCK flagWithLegacyFormat] \
+		"legacy \[clock scan\] does not support -locale"
+
+	}
+	return [FreeScan $string $base $timezone $locale]
+    }
+
+    # Change locale if a fresh locale has been given on the command line.
+
+    EnterLocale $locale
+
+    try {
+	# Map away the locale-dependent composite format groups
+
+	set scanner [ParseClockScanFormat $format $locale]
+	return [$scanner $string $base $timezone]
+    } trap CLOCK {result opts} {
+	# Conceal location of generation of expected errors
+	dict unset opts -errorinfo
+	return -options $opts $result
+    }
+}
+
+#----------------------------------------------------------------------
+#
+# FreeScan --
+#
+#	Scans a time in free format
+#
+# Parameters:
+#	string - String containing the time to scan
+#	base - Base time, expressed in seconds from the Epoch
+#	timezone - Default time zone in which the time will be expressed
+#	locale - (Unused) Name of the locale where the time will be scanned.
+#
+# Results:
+#	Returns the date and time extracted from the string in seconds from
+#	the epoch
+#
+#----------------------------------------------------------------------
+
+proc ::tcl::clock::FreeScan { string base timezone locale } {
+
+    variable TZData
+
+    # Get the data for time changes in the given zone
+
+    try {
+	SetupTimeZone $timezone
+    } on error {retval opts} {
+	dict unset opts -errorinfo
+	return -options $opts $retval
+    }
+
+    # Extract year, month and day from the base time for the parser to use as
+    # defaults
+
+    set date [GetDateFields $base $TZData($timezone) 2361222]
+    dict set date secondOfDay [expr {
+	[dict get $date localSeconds] % 86400
+    }]
+
+    # Parse the date.  The parser will return a list comprising date, time,
+    # time zone, relative month/day/seconds, relative weekday, ordinal month.
+
+    try {
+	set scanned [Oldscan $string \
+		     [dict get $date year] \
+		     [dict get $date month] \
+		     [dict get $date dayOfMonth]]
+	lassign $scanned \
+	    parseDate parseTime parseZone parseRel \
+	    parseWeekday parseOrdinalMonth
+    } on error message {
+	return -code error \
+	    "unable to convert date-time string \"$string\": $message"
+    }
+
+    # If the caller supplied a date in the string, update the 'date' dict with
+    # the value. If the caller didn't specify a time with the date, default to
+    # midnight.
+
+    if { [llength $parseDate] > 0 } {
+	lassign $parseDate y m d
+	if { $y < 100 } {
+	    if { $y >= 39 } {
+		incr y 1900
+	    } else {
+		incr y 2000
+	    }
+	}
+	dict set date era CE
+	dict set date year $y
+	dict set date month $m
+	dict set date dayOfMonth $d
+	if { $parseTime eq {} } {
+	    set parseTime 0
+	}
+    }
+
+    # If the caller supplied a time zone in the string, it comes back as a
+    # two-element list; the first element is the number of minutes east of
+    # Greenwich, and the second is a Daylight Saving Time indicator (1 == yes,
+    # 0 == no, -1 == unknown). We make it into a time zone indicator of
+    # +-hhmm.
+
+    if { [llength $parseZone] > 0 } {
+	lassign $parseZone minEast dstFlag
+	set timezone [FormatNumericTimeZone \
+			  [expr { 60 * $minEast + 3600 * $dstFlag }]]
+	SetupTimeZone $timezone
+    }
+    dict set date tzName $timezone
+
+    # Assemble date, time, zone into seconds-from-epoch
+
+    set date [GetJulianDayFromEraYearMonthDay $date[set date {}] 2361222]
+    if { $parseTime ne {} } {
+	dict set date secondOfDay $parseTime
+    } elseif { [llength $parseWeekday] != 0
+	       || [llength $parseOrdinalMonth] != 0
+	       || ( [llength $parseRel] != 0
+		    && ( [lindex $parseRel 0] != 0
+			 || [lindex $parseRel 1] != 0 ) ) } {
+	dict set date secondOfDay 0
+    }
+
+    dict set date localSeconds [expr {
+	-210866803200
+	+ ( 86400 * wide([dict get $date julianDay]) )
+	+ [dict get $date secondOfDay]
+    }]
+    dict set date tzName $timezone
+    set date [ConvertLocalToUTC $date[set date {}] $TZData($timezone) 2361222]
+    set seconds [dict get $date seconds]
+
+    # Do relative times
+
+    if { [llength $parseRel] > 0 } {
+	lassign $parseRel relMonth relDay relSecond
+	set seconds [add $seconds \
+			 $relMonth months $relDay days $relSecond seconds \
+			 -timezone $timezone -locale $locale]
+    }
+
+    # Do relative weekday
+
+    if { [llength $parseWeekday] > 0 } {
+	lassign $parseWeekday dayOrdinal dayOfWeek
+	set date2 [GetDateFields $seconds $TZData($timezone) 2361222]
+	dict set date2 era CE
+	set jdwkday [WeekdayOnOrBefore $dayOfWeek [expr {
+	    [dict get $date2 julianDay] + 6
+	}]]
+	incr jdwkday [expr { 7 * $dayOrdinal }]
+	if { $dayOrdinal > 0 } {
+	    incr jdwkday -7
+	}
+	dict set date2 secondOfDay \
+	    [expr { [dict get $date2 localSeconds] % 86400 }]
+	dict set date2 julianDay $jdwkday
+	dict set date2 localSeconds [expr {
+	    -210866803200
+	    + ( 86400 * wide([dict get $date2 julianDay]) )
+	    + [dict get $date secondOfDay]
+	}]
+	dict set date2 tzName $timezone
+	set date2 [ConvertLocalToUTC $date2[set date2 {}] $TZData($timezone) \
+		       2361222]
+	set seconds [dict get $date2 seconds]
+
+    }
+
+    # Do relative month
+
+    if { [llength $parseOrdinalMonth] > 0 } {
+	lassign $parseOrdinalMonth monthOrdinal monthNumber
+	if { $monthOrdinal > 0 } {
+	    set monthDiff [expr { $monthNumber - [dict get $date month] }]
+	    if { $monthDiff <= 0 } {
+		incr monthDiff 12
+	    }
+	    incr monthOrdinal -1
+	} else {
+	    set monthDiff [expr { [dict get $date month] - $monthNumber }]
+	    if { $monthDiff >= 0 } {
+		incr monthDiff -12
+	    }
+	    incr monthOrdinal
+	}
+	set seconds [add $seconds $monthOrdinal years $monthDiff months \
+			 -timezone $timezone -locale $locale]
+    }
+
+    return $seconds
+}
+
+
+#----------------------------------------------------------------------
+#
+# ParseClockScanFormat --
+#
+#	Parses a format string given to [clock scan -format]
+#
+# Parameters:
+#	formatString - The format being parsed
+#	locale - The current locale
+#
+# Results:
+#	Constructs and returns a procedure that accepts the string being
+#	scanned, the base time, and the time zone.  The procedure will either
+#	return the scanned time or else throw an error that should be rethrown
+#	to the caller of [clock scan]
+#
+# Side effects:
+#	The given procedure is defined in the ::tcl::clock namespace.  Scan
+#	procedures are not deleted once installed.
+#
+# Why do we parse dates by defining a procedure to parse them?  The reason is
+# that by doing so, we have one convenient place to cache all the information:
+# the regular expressions that match the patterns (which will be compiled),
+# the code that assembles the date information, everything lands in one place.
+# In this way, when a given format is reused at run time, all the information
+# of how to apply it is available in a single place.
+#
+#----------------------------------------------------------------------
+
+proc ::tcl::clock::ParseClockScanFormat {formatString locale} {
+    # Check whether the format has been parsed previously, and return the
+    # existing recognizer if it has.
+
+    set procName scanproc'$formatString'$locale
+    set procName [namespace current]::[string map {: {\:} \\ {\\}} $procName]
+    if { [namespace which $procName] != {} } {
+	return $procName
+    }
+
+    variable DateParseActions
+    variable TimeParseActions
+
+    # Localize the %x, %X, etc. groups
+
+    set formatString [LocalizeFormat $locale $formatString]
+
+    # Condense whitespace
+
+    regsub -all {[[:space:]]+} $formatString { } formatString
+
+    # Walk through the groups of the format string.  In this loop, we
+    # accumulate:
+    #	- a regular expression that matches the string,
+    #   - the count of capturing brackets in the regexp
+    #   - a set of code that post-processes the fields captured by the regexp,
+    #   - a dictionary whose keys are the names of fields that are present
+    #     in the format string.
+
+    set re {^[[:space:]]*}
+    set captureCount 0
+    set postcode {}
+    set fieldSet [dict create]
+    set fieldCount 0
+    set postSep {}
+    set state {}
+
+    foreach c [split $formatString {}] {
+	switch -exact -- $state {
+	    {} {
+		if { $c eq "%" } {
+		    set state %
+		} elseif { $c eq " " } {
+		    append re {[[:space:]]+}
+		} else {
+		    if { ! [string is alnum $c] } {
+			append re "\\"
+		    }
+		    append re $c
+		}
+	    }
+	    % {
+		set state {}
+		switch -exact -- $c {
+		    % {
+			append re %
+		    }
+		    { } {
+			append re "\[\[:space:\]\]*"
+		    }
+		    a - A { 		# Day of week, in words
+			set l {}
+			foreach \
+			    i {7 1 2 3 4 5 6} \
+			    abr [mc DAYS_OF_WEEK_ABBREV] \
+			    full [mc DAYS_OF_WEEK_FULL] {
+				dict set l [string tolower $abr] $i
+				dict set l [string tolower $full] $i
+				incr i
+			    }
+			lassign [UniquePrefixRegexp $l] regex lookup
+			append re ( $regex )
+			dict set fieldSet dayOfWeek [incr fieldCount]
+			append postcode "dict set date dayOfWeek \[" \
+			    "dict get " [list $lookup] " " \
+			    \[ {string tolower $field} [incr captureCount] \] \
+			    "\]\n"
+		    }
+		    b - B - h {		# Name of month
+			set i 0
+			set l {}
+			foreach \
+			    abr [mc MONTHS_ABBREV] \
+			    full [mc MONTHS_FULL] {
+				incr i
+				dict set l [string tolower $abr] $i
+				dict set l [string tolower $full] $i
+			    }
+			lassign [UniquePrefixRegexp $l] regex lookup
+			append re ( $regex )
+			dict set fieldSet month [incr fieldCount]
+			append postcode "dict set date month \[" \
+			    "dict get " [list $lookup] \
+			    " " \[ {string tolower $field} \
+			    [incr captureCount] \] \
+			    "\]\n"
+		    }
+		    C {			# Gregorian century
+			append re \\s*(\\d\\d?)
+			dict set fieldSet century [incr fieldCount]
+			append postcode "dict set date century \[" \
+			    "::scan \$field" [incr captureCount] " %d" \
+			    "\]\n"
+		    }
+		    d - e {		# Day of month
+			append re \\s*(\\d\\d?)
+			dict set fieldSet dayOfMonth [incr fieldCount]
+			append postcode "dict set date dayOfMonth \[" \
+			    "::scan \$field" [incr captureCount] " %d" \
+			    "\]\n"
+		    }
+		    E {			# Prefix for locale-specific codes
+			set state %E
+		    }
+		    g {			# ISO8601 2-digit year
+			append re \\s*(\\d\\d)
+			dict set fieldSet iso8601YearOfCentury \
+			    [incr fieldCount]
+			append postcode \
+			    "dict set date iso8601YearOfCentury \[" \
+			    "::scan \$field" [incr captureCount] " %d" \
+			    "\]\n"
+		    }
+		    G {			# ISO8601 4-digit year
+			append re \\s*(\\d\\d)(\\d\\d)
+			dict set fieldSet iso8601Century [incr fieldCount]
+			dict set fieldSet iso8601YearOfCentury \
+			    [incr fieldCount]
+			append postcode \
+			    "dict set date iso8601Century \[" \
+			    "::scan \$field" [incr captureCount] " %d" \
+			    "\]\n" \
+			    "dict set date iso8601YearOfCentury \[" \
+			    "::scan \$field" [incr captureCount] " %d" \
+			    "\]\n"
+		    }
+		    H - k {		# Hour of day
+			append re \\s*(\\d\\d?)
+			dict set fieldSet hour [incr fieldCount]
+			append postcode "dict set date hour \[" \
+			    "::scan \$field" [incr captureCount] " %d" \
+			    "\]\n"
+		    }
+		    I - l {		# Hour, AM/PM
+			append re \\s*(\\d\\d?)
+			dict set fieldSet hourAMPM [incr fieldCount]
+			append postcode "dict set date hourAMPM \[" \
+			    "::scan \$field" [incr captureCount] " %d" \
+			    "\]\n"
+		    }
+		    j {			# Day of year
+			append re \\s*(\\d\\d?\\d?)
+			dict set fieldSet dayOfYear [incr fieldCount]
+			append postcode "dict set date dayOfYear \[" \
+			    "::scan \$field" [incr captureCount] " %d" \
+			    "\]\n"
+		    }
+		    J {			# Julian Day Number
+			append re \\s*(\\d+)
+			dict set fieldSet julianDay [incr fieldCount]
+			append postcode "dict set date julianDay \[" \
+			    "::scan \$field" [incr captureCount] " %ld" \
+			    "\]\n"
+		    }
+		    m - N {		# Month number
+			append re \\s*(\\d\\d?)
+			dict set fieldSet month [incr fieldCount]
+			append postcode "dict set date month \[" \
+			    "::scan \$field" [incr captureCount] " %d" \
+			    "\]\n"
+		    }
+		    M {			# Minute
+			append re \\s*(\\d\\d?)
+			dict set fieldSet minute [incr fieldCount]
+			append postcode "dict set date minute \[" \
+			    "::scan \$field" [incr captureCount] " %d" \
+			    "\]\n"
+		    }
+		    n {			# Literal newline
+			append re \\n
+		    }
+		    O {			# Prefix for locale numerics
+			set state %O
+		    }
+		    p - P { 		# AM/PM indicator
+			set l [list [string tolower [mc AM]] 0 \
+				   [string tolower [mc PM]] 1]
+			lassign [UniquePrefixRegexp $l] regex lookup
+			append re ( $regex )
+			dict set fieldSet amPmIndicator [incr fieldCount]
+			append postcode "dict set date amPmIndicator \[" \
+			    "dict get " [list $lookup] " \[string tolower " \
+			    "\$field" \
+			    [incr captureCount] \
+			    "\]\]\n"
+		    }
+		    Q {			# Hi, Jeff!
+			append re {Stardate\s+([-+]?\d+)(\d\d\d)[.](\d)}
+			incr captureCount
+			dict set fieldSet seconds [incr fieldCount]
+			append postcode {dict set date seconds } \[ \
+			    {ParseStarDate $field} [incr captureCount] \
+			    { $field} [incr captureCount] \
+			    { $field} [incr captureCount] \
+			    \] \n
+		    }
+		    s {			# Seconds from Posix Epoch
+			# This next case is insanely difficult, because it's
+			# problematic to determine whether the field is
+			# actually within the range of a wide integer.
+			append re {\s*([-+]?\d+)}
+			dict set fieldSet seconds [incr fieldCount]
+			append postcode {dict set date seconds } \[ \
+			    {ScanWide $field} [incr captureCount] \] \n
+		    }
+		    S {			# Second
+			append re \\s*(\\d\\d?)
+			dict set fieldSet second [incr fieldCount]
+			append postcode "dict set date second \[" \
+			    "::scan \$field" [incr captureCount] " %d" \
+			    "\]\n"
+		    }
+		    t {			# Literal tab character
+			append re \\t
+		    }
+		    u - w {		# Day number within week, 0 or 7 == Sun
+					# 1=Mon, 6=Sat
+			append re \\s*(\\d)
+			dict set fieldSet dayOfWeek [incr fieldCount]
+			append postcode {::scan $field} [incr captureCount] \
+			    { %d dow} \n \
+			    {
+				if { $dow == 0 } {
+				    set dow 7
+				} elseif { $dow > 7 } {
+				    return -code error \
+					-errorcode [list CLOCK badDayOfWeek] \
+					"day of week is greater than 7"
+				}
+				dict set date dayOfWeek $dow
+			    }
+		    }
+		    U {			# Week of year. The first Sunday of
+					# the year is the first day of week
+					# 01. No scan rule uses this group.
+			append re \\s*\\d\\d?
+		    }
+		    V {			# Week of ISO8601 year
+
+			append re \\s*(\\d\\d?)
+			dict set fieldSet iso8601Week [incr fieldCount]
+			append postcode "dict set date iso8601Week \[" \
+			    "::scan \$field" [incr captureCount] " %d" \
+			    "\]\n"
+		    }
+		    W {			# Week of the year (00-53). The first
+					# Monday of the year is the first day
+					# of week 01. No scan rule uses this
+					# group.
+			append re \\s*\\d\\d?
+		    }
+		    y {			# Two-digit Gregorian year
+			append re \\s*(\\d\\d?)
+			dict set fieldSet yearOfCentury [incr fieldCount]
+			append postcode "dict set date yearOfCentury \[" \
+			    "::scan \$field" [incr captureCount] " %d" \
+			    "\]\n"
+		    }
+		    Y {			# 4-digit Gregorian year
+			append re \\s*(\\d\\d)(\\d\\d)
+			dict set fieldSet century [incr fieldCount]
+			dict set fieldSet yearOfCentury [incr fieldCount]
+			append postcode \
+			    "dict set date century \[" \
+			    "::scan \$field" [incr captureCount] " %d" \
+			    "\]\n" \
+			    "dict set date yearOfCentury \[" \
+			    "::scan \$field" [incr captureCount] " %d" \
+			    "\]\n"
+		    }
+		    z - Z {			# Time zone name
+			append re {(?:([-+]\d\d(?::?\d\d(?::?\d\d)?)?)|([[:alnum:]]{1,4}))}
+			dict set fieldSet tzName [incr fieldCount]
+			append postcode \
+			    {if } \{ { $field} [incr captureCount] \
+			    { ne "" } \} { } \{ \n \
+			    {dict set date tzName $field} \
+			    $captureCount \n \
+			    \} { else } \{ \n \
+			    {dict set date tzName } \[ \
+			    {ConvertLegacyTimeZone $field} \
+			    [incr captureCount] \] \n \
+			    \} \n \
+		    }
+		    % {			# Literal percent character
+			append re %
+		    }
+		    default {
+			append re %
+			if { ! [string is alnum $c] } {
+			    append re \\
+			    }
+			append re $c
+		    }
+		}
+	    }
+	    %E {
+		switch -exact -- $c {
+		    C {			# Locale-dependent era
+			set d {}
+			foreach triple [mc LOCALE_ERAS] {
+			    lassign $triple t symbol year
+			    dict set d [string tolower $symbol] $year
+			}
+			lassign [UniquePrefixRegexp $d] regex lookup
+			append re (?: $regex )
+		    }
+		    E {
+			set l {}
+			dict set l [string tolower [mc BCE]] BCE
+			dict set l [string tolower [mc CE]] CE
+			dict set l b.c.e. BCE
+			dict set l c.e. CE
+			dict set l b.c. BCE
+			dict set l a.d. CE
+			lassign [UniquePrefixRegexp $l] regex lookup
+			append re ( $regex )
+			dict set fieldSet era [incr fieldCount]
+			append postcode "dict set date era \["\
+			    "dict get " [list $lookup] \
+			    { } \[ {string tolower $field} \
+			    [incr captureCount] \] \
+			    "\]\n"
+		    }
+		    y {			# Locale-dependent year of the era
+			lassign [LocaleNumeralMatcher $locale] regex lookup
+			append re $regex
+			incr captureCount
+		    }
+		    default {
+			append re %E
+			if { ! [string is alnum $c] } {
+			    append re \\
+			    }
+			append re $c
+		    }
+		}
+		set state {}
+	    }
+	    %O {
+		switch -exact -- $c {
+		    d - e {
+			lassign [LocaleNumeralMatcher $locale] regex lookup
+			append re $regex
+			dict set fieldSet dayOfMonth [incr fieldCount]
+			append postcode "dict set date dayOfMonth \[" \
+			    "dict get " [list $lookup] " \$field" \
+			    [incr captureCount] \
+			    "\]\n"
+		    }
+		    H - k {
+			lassign [LocaleNumeralMatcher $locale] regex lookup
+			append re $regex
+			dict set fieldSet hour [incr fieldCount]
+			append postcode "dict set date hour \[" \
+			    "dict get " [list $lookup] " \$field" \
+			    [incr captureCount] \
+			    "\]\n"
+		    }
+		    I - l {
+			lassign [LocaleNumeralMatcher $locale] regex lookup
+			append re $regex
+			dict set fieldSet hourAMPM [incr fieldCount]
+			append postcode "dict set date hourAMPM \[" \
+			    "dict get " [list $lookup] " \$field" \
+			    [incr captureCount] \
+			    "\]\n"
+		    }
+		    m {
+			lassign [LocaleNumeralMatcher $locale] regex lookup
+			append re $regex
+			dict set fieldSet month [incr fieldCount]
+			append postcode "dict set date month \[" \
+			    "dict get " [list $lookup] " \$field" \
+			    [incr captureCount] \
+			    "\]\n"
+		    }
+		    M {
+			lassign [LocaleNumeralMatcher $locale] regex lookup
+			append re $regex
+			dict set fieldSet minute [incr fieldCount]
+			append postcode "dict set date minute \[" \
+			    "dict get " [list $lookup] " \$field" \
+			    [incr captureCount] \
+			    "\]\n"
+		    }
+		    S {
+			lassign [LocaleNumeralMatcher $locale] regex lookup
+			append re $regex
+			dict set fieldSet second [incr fieldCount]
+			append postcode "dict set date second \[" \
+			    "dict get " [list $lookup] " \$field" \
+			    [incr captureCount] \
+			    "\]\n"
+		    }
+		    u - w {
+			lassign [LocaleNumeralMatcher $locale] regex lookup
+			append re $regex
+			dict set fieldSet dayOfWeek [incr fieldCount]
+			append postcode "set dow \[dict get " [list $lookup] \
+			    { $field} [incr captureCount] \] \n \
+			    {
+				if { $dow == 0 } {
+				    set dow 7
+				} elseif { $dow > 7 } {
+				    return -code error \
+					-errorcode [list CLOCK badDayOfWeek] \
+					"day of week is greater than 7"
+				}
+				dict set date dayOfWeek $dow
+			    }
+		    }
+		    y {
+			lassign [LocaleNumeralMatcher $locale] regex lookup
+			append re $regex
+			dict set fieldSet yearOfCentury [incr fieldCount]
+			append postcode {dict set date yearOfCentury } \[ \
+			    {dict get } [list $lookup] { $field} \
+			    [incr captureCount] \] \n
+		    }
+		    default {
+			append re %O
+			if { ! [string is alnum $c] } {
+			    append re \\
+			    }
+			append re $c
+		    }
+		}
+		set state {}
+	    }
+	}
+    }
+
+    # Clean up any unfinished format groups
+
+    append re $state \\s*\$
+
+    # Build the procedure
+
+    set procBody {}
+    append procBody "variable ::tcl::clock::TZData" \n
+    append procBody "if \{ !\[ regexp -nocase [list $re] \$string ->"
+    for { set i 1 } { $i <= $captureCount } { incr i } {
+	append procBody " " field $i
+    }
+    append procBody "\] \} \{" \n
+    append procBody {
+	return -code error -errorcode [list CLOCK badInputString] \
+	    {input string does not match supplied format}
+    }
+    append procBody \}\n
+    append procBody "set date \[dict create\]" \n
+    append procBody {dict set date tzName $timeZone} \n
+    append procBody $postcode
+    append procBody [list set changeover [mc GREGORIAN_CHANGE_DATE]] \n
+
+    # Set up the time zone before doing anything with a default base date
+    # that might need a timezone to interpret it.
+
+    if { ![dict exists $fieldSet seconds]
+	    && ![dict exists $fieldSet starDate] } {
+	if { [dict exists $fieldSet tzName] } {
+	    append procBody {
+		set timeZone [dict get $date tzName]
+	    }
+	}
+	append procBody {
+	    ::tcl::clock::SetupTimeZone $timeZone
+	}
+    }
+
+    # Add code that gets Julian Day Number from the fields.
+
+    append procBody [MakeParseCodeFromFields $fieldSet $DateParseActions]
+
+    # Get time of day
+
+    append procBody [MakeParseCodeFromFields $fieldSet $TimeParseActions]
+
+    # Assemble seconds from the Julian day and second of the day.
+    # Convert to local time unless epoch seconds or stardate are
+    # being processed - they're always absolute
+
+    if { ![dict exists $fieldSet seconds]
+         && ![dict exists $fieldSet starDate] } {
+	append procBody {
+	    if { [dict get $date julianDay] > 5373484 } {
+		return -code error -errorcode [list CLOCK dateTooLarge] \
+		    "requested date too large to represent"
+	    }
+	    dict set date localSeconds [expr {
+		-210866803200
+		+ ( 86400 * wide([dict get $date julianDay]) )
+		+ [dict get $date secondOfDay]
+	    }]
+	}
+
+	# Finally, convert the date to local time
+
+	append procBody {
+	    set date [::tcl::clock::ConvertLocalToUTC $date[set date {}] \
+			  $TZData($timeZone) $changeover]
+	}
+    }
+
+    # Return result
+
+    append procBody {return [dict get $date seconds]} \n
+
+    proc $procName { string baseTime timeZone } $procBody
+
+    # puts [list proc $procName [list string baseTime timeZone] $procBody]
+
+    return $procName
+}
+
+#----------------------------------------------------------------------
+#
+# LocaleNumeralMatcher --
+#
+#	Composes a regexp that captures the numerals in the given locale, and
+#	a dictionary to map them to conventional numerals.
+#
+# Parameters:
+#	locale - Name of the current locale
+#
+# Results:
+#	Returns a two-element list comprising the regexp and the dictionary.
+#
+# Side effects:
+#	Caches the result.
+#
+#----------------------------------------------------------------------
+
+proc ::tcl::clock::LocaleNumeralMatcher {l} {
+    variable LocaleNumeralCache
+
+    if { ![dict exists $LocaleNumeralCache $l] } {
+	set d {}
+	set i 0
+	set sep \(
+	foreach n [mc LOCALE_NUMERALS] {
+	    dict set d $n $i
+	    regsub -all {[^[:alnum:]]} $n \\\\& subex
+	    append re $sep $subex
+	    set sep |
+	    incr i
+	}
+	append re \)
+	dict set LocaleNumeralCache $l [list $re $d]
+    }
+    return [dict get $LocaleNumeralCache $l]
+}
+
+
+
+#----------------------------------------------------------------------
+#
+# UniquePrefixRegexp --
+#
+#	Composes a regexp that performs unique-prefix matching.  The RE
+#	matches one of a supplied set of strings, or any unique prefix
+#	thereof.
+#
+# Parameters:
+#	data - List of alternating match-strings and values.
+#	       Match-strings with distinct values are considered
+#	       distinct.
+#
+# Results:
+#	Returns a two-element list.  The first is a regexp that matches any
+#	unique prefix of any of the strings.  The second is a dictionary whose
+#	keys are match values from the regexp and whose values are the
+#	corresponding values from 'data'.
+#
+# Side effects:
+#	None.
+#
+#----------------------------------------------------------------------
+
+proc ::tcl::clock::UniquePrefixRegexp { data } {
+    # The 'successors' dictionary will contain, for each string that is a
+    # prefix of any key, all characters that may follow that prefix.  The
+    # 'prefixMapping' dictionary will have keys that are prefixes of keys and
+    # values that correspond to the keys.
+
+    set prefixMapping [dict create]
+    set successors [dict create {} {}]
+
+    # Walk the key-value pairs
+
+    foreach { key value } $data {
+	# Construct all prefixes of the key;
+
+	set prefix {}
+	foreach char [split $key {}] {
+	    set oldPrefix $prefix
+	    dict set successors $oldPrefix $char {}
+	    append prefix $char
+
+	    # Put the prefixes in the 'prefixMapping' and 'successors'
+	    # dictionaries
+
+	    dict lappend prefixMapping $prefix $value
+	    if { ![dict exists $successors $prefix] } {
+		dict set successors $prefix {}
+	    }
+	}
+    }
+
+    # Identify those prefixes that designate unique values, and those that are
+    # the full keys
+
+    set uniquePrefixMapping {}
+    dict for { key valueList } $prefixMapping {
+	if { [llength $valueList] == 1 } {
+	    dict set uniquePrefixMapping $key [lindex $valueList 0]
+	}
+    }
+    foreach { key value } $data {
+	dict set uniquePrefixMapping $key $value
+    }
+
+    # Construct the re.
+
+    return [list \
+		[MakeUniquePrefixRegexp $successors $uniquePrefixMapping {}] \
+		$uniquePrefixMapping]
+}
+
+#----------------------------------------------------------------------
+#
+# MakeUniquePrefixRegexp --
+#
+#	Service procedure for 'UniquePrefixRegexp' that constructs a regular
+#	expresison that matches the unique prefixes.
+#
+# Parameters:
+#	successors - Dictionary whose keys are all prefixes
+#		     of keys passed to 'UniquePrefixRegexp' and whose
+#		     values are dictionaries whose keys are the characters
+#		     that may follow those prefixes.
+#	uniquePrefixMapping - Dictionary whose keys are the unique
+#			      prefixes and whose values are not examined.
+#	prefixString - Current prefix being processed.
+#
+# Results:
+#	Returns a constructed regular expression that matches the set of
+#	unique prefixes beginning with the 'prefixString'.
+#
+# Side effects:
+#	None.
+#
+#----------------------------------------------------------------------
+
+proc ::tcl::clock::MakeUniquePrefixRegexp { successors
+					  uniquePrefixMapping
+					  prefixString } {
+
+    # Get the characters that may follow the current prefix string
+
+    set schars [lsort -ascii [dict keys [dict get $successors $prefixString]]]
+    if { [llength $schars] == 0 } {
+	return {}
+    }
+
+    # If there is more than one successor character, or if the current prefix
+    # is a unique prefix, surround the generated re with non-capturing
+    # parentheses.
+
+    set re {}
+    if {
+	[dict exists $uniquePrefixMapping $prefixString]
+	|| [llength $schars] > 1
+    } then {
+	append re "(?:"
+    }
+
+    # Generate a regexp that matches the successors.
+
+    set sep ""
+    foreach { c } $schars {
+	set nextPrefix $prefixString$c
+	regsub -all {[^[:alnum:]]} $c \\\\& rechar
+	append re $sep $rechar \
+	    [MakeUniquePrefixRegexp \
+		 $successors $uniquePrefixMapping $nextPrefix]
+	set sep |
+    }
+
+    # If the current prefix is a unique prefix, make all following text
+    # optional. Otherwise, if there is more than one successor character,
+    # close the non-capturing parentheses.
+
+    if { [dict exists $uniquePrefixMapping $prefixString] } {
+	append re ")?"
+    } elseif { [llength $schars] > 1 } {
+	append re ")"
+    }
+
+    return $re
+}
+
+#----------------------------------------------------------------------
+#
+# MakeParseCodeFromFields --
+#
+#	Composes Tcl code to extract the Julian Day Number from a dictionary
+#	containing date fields.
+#
+# Parameters:
+#	dateFields -- Dictionary whose keys are fields of the date,
+#	              and whose values are the rightmost positions
+#		      at which those fields appear.
+#	parseActions -- List of triples: field set, priority, and
+#			code to emit.  Smaller priorities are better, and
+#			the list must be in ascending order by priority
+#
+# Results:
+#	Returns a burst of code that extracts the day number from the given
+#	date.
+#
+# Side effects:
+#	None.
+#
+#----------------------------------------------------------------------
+
+proc ::tcl::clock::MakeParseCodeFromFields { dateFields parseActions } {
+
+    set currPrio 999
+    set currFieldPos [list]
+    set currCodeBurst {
+	error "in ::tcl::clock::MakeParseCodeFromFields: can't happen"
+    }
+
+    foreach { fieldSet prio parseAction } $parseActions {
+	# If we've found an answer that's better than any that follow, quit
+	# now.
+
+	if { $prio > $currPrio } {
+	    break
+	}
+
+	# Accumulate the field positions that are used in the current field
+	# grouping.
+
+	set fieldPos [list]
+	set ok true
+	foreach field $fieldSet {
+	    if { ! [dict exists $dateFields $field] } {
+		set ok 0
+		break
+	    }
+	    lappend fieldPos [dict get $dateFields $field]
+	}
+
+	# Quit if we don't have a complete set of fields
+	if { !$ok } {
+	    continue
+	}
+
+	# Determine whether the current answer is better than the last.
+
+	set fPos [lsort -integer -decreasing $fieldPos]
+
+	if { $prio ==  $currPrio } {
+	    foreach currPos $currFieldPos newPos $fPos {
+		if {
+		    ![string is integer $newPos]
+		    || ![string is integer $currPos]
+		    || $newPos > $currPos
+		} then {
+		    break
+		}
+		if { $newPos < $currPos } {
+		    set ok 0
+		    break
+		}
+	    }
+	}
+	if { !$ok } {
+	    continue
+	}
+
+	# Remember the best possibility for extracting date information
+
+	set currPrio $prio
+	set currFieldPos $fPos
+	set currCodeBurst $parseAction
+    }
+
+    return $currCodeBurst
+}
+
+#----------------------------------------------------------------------
+#
+# EnterLocale --
+#
+#	Switch [mclocale] to a given locale if necessary
+#
+# Parameters:
+#	locale -- Desired locale
+#
+# Results:
+#	Returns the locale that was previously current.
+#
+# Side effects:
+#	Does [mclocale].  If necessary, loades the designated locale's files.
+#
+#----------------------------------------------------------------------
+
+proc ::tcl::clock::EnterLocale { locale } {
+    if { $locale eq {system} } {
+	if { $::tcl_platform(platform) ne {windows} } {
+	    # On a non-windows platform, the 'system' locale is the same as
+	    # the 'current' locale
+
+	    set locale current
+	} else {
+	    # On a windows platform, the 'system' locale is adapted from the
+	    # 'current' locale by applying the date and time formats from the
+	    # Control Panel.  First, load the 'current' locale if it's not yet
+	    # loaded
+
+	    mcpackagelocale set [mclocale]
+
+	    # Make a new locale string for the system locale, and get the
+	    # Control Panel information
+
+	    set locale [mclocale]_windows
+	    if { ! [mcpackagelocale present $locale] } {
+		LoadWindowsDateTimeFormats $locale
+	    }
+	}
+    }
+    if { $locale eq {current}} {
+	set locale [mclocale]
+    }
+    # Eventually load the locale
+    mcpackagelocale set $locale
+}
+
+#----------------------------------------------------------------------
+#
+# LoadWindowsDateTimeFormats --
+#
+#	Load the date/time formats from the Control Panel in Windows and
+#	convert them so that they're usable by Tcl.
+#
+# Parameters:
+#	locale - Name of the locale in whose message catalog
+#	         the converted formats are to be stored.
+#
+# Results:
+#	None.
+#
+# Side effects:
+#	Updates the given message catalog with the locale strings.
+#
+# Presumes that on entry, [mclocale] is set to the current locale, so that
+# default strings can be obtained if the Registry query fails.
+#
+#----------------------------------------------------------------------
+
+proc ::tcl::clock::LoadWindowsDateTimeFormats { locale } {
+    # Bail out if we can't find the Registry
+
+    variable NoRegistry
+    if { [info exists NoRegistry] } return
+
+    if { ![catch {
+	registry get "HKEY_CURRENT_USER\\Control Panel\\International" \
+	    sShortDate
+    } string] } {
+	set quote {}
+	set datefmt {}
+	foreach { unquoted quoted } [split $string '] {
+	    append datefmt $quote [string map {
+		dddd %A
+		ddd  %a
+		dd   %d
+		d    %e
+		MMMM %B
+		MMM  %b
+		MM   %m
+		M    %N
+		yyyy %Y
+		yy   %y
+                y    %y
+                gg   {}
+	    } $unquoted]
+	    if { $quoted eq {} } {
+		set quote '
+	    } else {
+		set quote $quoted
+	    }
+	}
+	::msgcat::mcset $locale DATE_FORMAT $datefmt
+    }
+
+    if { ![catch {
+	registry get "HKEY_CURRENT_USER\\Control Panel\\International" \
+	    sLongDate
+    } string] } {
+	set quote {}
+	set ldatefmt {}
+	foreach { unquoted quoted } [split $string '] {
+	    append ldatefmt $quote [string map {
+		dddd %A
+		ddd  %a
+		dd   %d
+		d    %e
+		MMMM %B
+		MMM  %b
+		MM   %m
+		M    %N
+		yyyy %Y
+		yy   %y
+                y    %y
+                gg   {}
+	    } $unquoted]
+	    if { $quoted eq {} } {
+		set quote '
+	    } else {
+		set quote $quoted
+	    }
+	}
+	::msgcat::mcset $locale LOCALE_DATE_FORMAT $ldatefmt
+    }
+
+    if { ![catch {
+	registry get "HKEY_CURRENT_USER\\Control Panel\\International" \
+	    sTimeFormat
+    } string] } {
+	set quote {}
+	set timefmt {}
+	foreach { unquoted quoted } [split $string '] {
+	    append timefmt $quote [string map {
+		HH    %H
+		H     %k
+		hh    %I
+		h     %l
+		mm    %M
+		m     %M
+		ss    %S
+		s     %S
+		tt    %p
+		t     %p
+	    } $unquoted]
+	    if { $quoted eq {} } {
+		set quote '
+	    } else {
+		set quote $quoted
+	    }
+	}
+	::msgcat::mcset $locale TIME_FORMAT $timefmt
+    }
+
+    catch {
+	::msgcat::mcset $locale DATE_TIME_FORMAT "$datefmt $timefmt"
+    }
+    catch {
+	::msgcat::mcset $locale LOCALE_DATE_TIME_FORMAT "$ldatefmt $timefmt"
+    }
+
+    return
+
+}
+
+#----------------------------------------------------------------------
+#
+# LocalizeFormat --
+#
+#	Map away locale-dependent format groups in a clock format.
+#
+# Parameters:
+#	locale -- Current [mclocale] locale, supplied to avoid
+#		  an extra call
+#	format -- Format supplied to [clock scan] or [clock format]
+#
+# Results:
+#	Returns the string with locale-dependent composite format groups
+#	substituted out.
+#
+# Side effects:
+#	None.
+#
+#----------------------------------------------------------------------
+
+proc ::tcl::clock::LocalizeFormat { locale format } {
+
+    # message catalog key to cache this format
+    set key FORMAT_$format
+
+    if { [::msgcat::mcexists -exactlocale -exactnamespace $key] } {
+	return [mc $key]
+    }
+    # Handle locale-dependent format groups by mapping them out of the format
+    # string.  Note that the order of the [string map] operations is
+    # significant because later formats can refer to later ones; for example
+    # %c can refer to %X, which in turn can refer to %T.
+
+    set list {
+	%% %%
+	%D %m/%d/%Y
+	%+ {%a %b %e %H:%M:%S %Z %Y}
+    }
+    lappend list %EY [string map $list [mc LOCALE_YEAR_FORMAT]]
+    lappend list %T  [string map $list [mc TIME_FORMAT_24_SECS]]
+    lappend list %R  [string map $list [mc TIME_FORMAT_24]]
+    lappend list %r  [string map $list [mc TIME_FORMAT_12]]
+    lappend list %X  [string map $list [mc TIME_FORMAT]]
+    lappend list %EX [string map $list [mc LOCALE_TIME_FORMAT]]
+    lappend list %x  [string map $list [mc DATE_FORMAT]]
+    lappend list %Ex [string map $list [mc LOCALE_DATE_FORMAT]]
+    lappend list %c  [string map $list [mc DATE_TIME_FORMAT]]
+    lappend list %Ec [string map $list [mc LOCALE_DATE_TIME_FORMAT]]
+    set format [string map $list $format]
+
+    ::msgcat::mcset $locale $key $format
+    return $format
+}
+
+#----------------------------------------------------------------------
+#
+# FormatNumericTimeZone --
+#
+#	Formats a time zone as +hhmmss
+#
+# Parameters:
+#	z - Time zone in seconds east of Greenwich
+#
+# Results:
+#	Returns the time zone formatted in a numeric form
+#
+# Side effects:
+#	None.
+#
+#----------------------------------------------------------------------
+
+proc ::tcl::clock::FormatNumericTimeZone { z } {
+    if { $z < 0 } {
+	set z [expr { - $z }]
+	set retval -
+    } else {
+	set retval +
+    }
+    append retval [::format %02d [expr { $z / 3600 }]]
+    set z [expr { $z % 3600 }]
+    append retval [::format %02d [expr { $z / 60 }]]
+    set z [expr { $z % 60 }]
+    if { $z != 0 } {
+	append retval [::format %02d $z]
+    }
+    return $retval
+}
+
+#----------------------------------------------------------------------
+#
+# FormatStarDate --
+#
+#	Formats a date as a StarDate.
+#
+# Parameters:
+#	date - Dictionary containing 'year', 'dayOfYear', and
+#	       'localSeconds' fields.
+#
+# Results:
+#	Returns the given date formatted as a StarDate.
+#
+# Side effects:
+#	None.
+#
+# Jeff Hobbs put this in to support an atrocious pun about Tcl being
+# "Enterprise ready."  Now we're stuck with it.
+#
+#----------------------------------------------------------------------
+
+proc ::tcl::clock::FormatStarDate { date } {
+    variable Roddenberry
+
+    # Get day of year, zero based
+
+    set doy [expr { [dict get $date dayOfYear] - 1 }]
+
+    # Determine whether the year is a leap year
+
+    set lp [IsGregorianLeapYear $date]
+
+    # Convert day of year to a fractional year
+
+    if { $lp } {
+	set fractYear [expr { 1000 * $doy / 366 }]
+    } else {
+	set fractYear [expr { 1000 * $doy / 365 }]
+    }
+
+    # Put together the StarDate
+
+    return [::format "Stardate %02d%03d.%1d" \
+		[expr { [dict get $date year] - $Roddenberry }] \
+		$fractYear \
+		[expr { [dict get $date localSeconds] % 86400
+			/ ( 86400 / 10 ) }]]
+}
+
+#----------------------------------------------------------------------
+#
+# ParseStarDate --
+#
+#	Parses a StarDate
+#
+# Parameters:
+#	year - Year from the Roddenberry epoch
+#	fractYear - Fraction of a year specifiying the day of year.
+#	fractDay - Fraction of a day
+#
+# Results:
+#	Returns a count of seconds from the Posix epoch.
+#
+# Side effects:
+#	None.
+#
+# Jeff Hobbs put this in to support an atrocious pun about Tcl being
+# "Enterprise ready."  Now we're stuck with it.
+#
+#----------------------------------------------------------------------
+
+proc ::tcl::clock::ParseStarDate { year fractYear fractDay } {
+    variable Roddenberry
+
+    # Build a tentative date from year and fraction.
+
+    set date [dict create \
+		  gregorian 1 \
+		  era CE \
+		  year [expr { $year + $Roddenberry }] \
+		  dayOfYear [expr { $fractYear * 365 / 1000 + 1 }]]
+    set date [GetJulianDayFromGregorianEraYearDay $date[set date {}]]
+
+    # Determine whether the given year is a leap year
+
+    set lp [IsGregorianLeapYear $date]
+
+    # Reconvert the fractional year according to whether the given year is a
+    # leap year
+
+    if { $lp } {
+	dict set date dayOfYear \
+	    [expr { $fractYear * 366 / 1000 + 1 }]
+    } else {
+	dict set date dayOfYear \
+	    [expr { $fractYear * 365 / 1000 + 1 }]
+    }
+    dict unset date julianDay
+    dict unset date gregorian
+    set date [GetJulianDayFromGregorianEraYearDay $date[set date {}]]
+
+    return [expr {
+	86400 * [dict get $date julianDay]
+	- 210866803200
+	+ ( 86400 / 10 ) * $fractDay
+    }]
+}
+
+#----------------------------------------------------------------------
+#
+# ScanWide --
+#
+#	Scans a wide integer from an input
+#
+# Parameters:
+#	str - String containing a decimal wide integer
+#
+# Results:
+#	Returns the string as a pure wide integer.  Throws an error if the
+#	string is misformatted or out of range.
+#
+#----------------------------------------------------------------------
+
+proc ::tcl::clock::ScanWide { str } {
+    set count [::scan $str {%ld %c} result junk]
+    if { $count != 1 } {
+	return -code error -errorcode [list CLOCK notAnInteger $str] \
+	    "\"$str\" is not an integer"
+    }
+    if { [incr result 0] != $str } {
+	return -code error -errorcode [list CLOCK integervalueTooLarge] \
+	    "integer value too large to represent"
+    }
+    return $result
+}
+
+#----------------------------------------------------------------------
+#
+# InterpretTwoDigitYear --
+#
+#	Given a date that contains only the year of the century, determines
+#	the target value of a two-digit year.
+#
+# Parameters:
+#	date - Dictionary containing fields of the date.
+#	baseTime - Base time relative to which the date is expressed.
+#	twoDigitField - Name of the field that stores the two-digit year.
+#			Default is 'yearOfCentury'
+#	fourDigitField - Name of the field that will receive the four-digit
+#	                 year.  Default is 'year'
+#
+# Results:
+#	Returns the dictionary augmented with the four-digit year, stored in
+#	the given key.
+#
+# Side effects:
+#	None.
+#
+# The current rule for interpreting a two-digit year is that the year shall be
+# between 1937 and 2037, thus staying within the range of a 32-bit signed
+# value for time.  This rule may change to a sliding window in future
+# versions, so the 'baseTime' parameter (which is currently ignored) is
+# provided in the procedure signature.
+#
+#----------------------------------------------------------------------
+
+proc ::tcl::clock::InterpretTwoDigitYear { date baseTime
+					   { twoDigitField yearOfCentury }
+					   { fourDigitField year } } {
+    set yr [dict get $date $twoDigitField]
+    if { $yr <= 37 } {
+	dict set date $fourDigitField [expr { $yr + 2000 }]
+    } else {
+	dict set date $fourDigitField [expr { $yr + 1900 }]
+    }
+    return $date
+}
+
+#----------------------------------------------------------------------
+#
+# AssignBaseYear --
+#
+#	Places the number of the current year into a dictionary.
+#
+# Parameters:
+#	date - Dictionary value to update
+#	baseTime - Base time from which to extract the year, expressed
+#		   in seconds from the Posix epoch
+#	timezone - the time zone in which the date is being scanned
+#	changeover - the Julian Day on which the Gregorian calendar
+#		     was adopted in the target locale.
+#
+# Results:
+#	Returns the dictionary with the current year assigned.
+#
+# Side effects:
+#	None.
+#
+#----------------------------------------------------------------------
+
+proc ::tcl::clock::AssignBaseYear { date baseTime timezone changeover } {
+    variable TZData
+
+    # Find the Julian Day Number corresponding to the base time, and
+    # find the Gregorian year corresponding to that Julian Day.
+
+    set date2 [GetDateFields $baseTime $TZData($timezone) $changeover]
+
+    # Store the converted year
+
+    dict set date era [dict get $date2 era]
+    dict set date year [dict get $date2 year]
+
+    return $date
+}
+
+#----------------------------------------------------------------------
+#
+# AssignBaseIso8601Year --
+#
+#	Determines the base year in the ISO8601 fiscal calendar.
+#
+# Parameters:
+#	date - Dictionary containing the fields of the date that
+#	       is to be augmented with the base year.
+#	baseTime - Base time expressed in seconds from the Posix epoch.
+#	timeZone - Target time zone
+#	changeover - Julian Day of adoption of the Gregorian calendar in
+#		     the target locale.
+#
+# Results:
+#	Returns the given date with "iso8601Year" set to the
+#	base year.
+#
+# Side effects:
+#	None.
+#
+#----------------------------------------------------------------------
+
+proc ::tcl::clock::AssignBaseIso8601Year {date baseTime timeZone changeover} {
+    variable TZData
+
+    # Find the Julian Day Number corresponding to the base time
+
+    set date2 [GetDateFields $baseTime $TZData($timeZone) $changeover]
+
+    # Calculate the ISO8601 date and transfer the year
+
+    dict set date era CE
+    dict set date iso8601Year [dict get $date2 iso8601Year]
+    return $date
+}
+
+#----------------------------------------------------------------------
+#
+# AssignBaseMonth --
+#
+#	Places the number of the current year and month into a
+#	dictionary.
+#
+# Parameters:
+#	date - Dictionary value to update
+#	baseTime - Time from which the year and month are to be
+#	           obtained, expressed in seconds from the Posix epoch.
+#	timezone - Name of the desired time zone
+#	changeover - Julian Day on which the Gregorian calendar was adopted.
+#
+# Results:
+#	Returns the dictionary with the base year and month assigned.
+#
+# Side effects:
+#	None.
+#
+#----------------------------------------------------------------------
+
+proc ::tcl::clock::AssignBaseMonth {date baseTime timezone changeover} {
+    variable TZData
+
+    # Find the year and month corresponding to the base time
+
+    set date2 [GetDateFields $baseTime $TZData($timezone) $changeover]
+    dict set date era [dict get $date2 era]
+    dict set date year [dict get $date2 year]
+    dict set date month [dict get $date2 month]
+    return $date
+}
+
+#----------------------------------------------------------------------
+#
+# AssignBaseWeek --
+#
+#	Determines the base year and week in the ISO8601 fiscal calendar.
+#
+# Parameters:
+#	date - Dictionary containing the fields of the date that
+#	       is to be augmented with the base year and week.
+#	baseTime - Base time expressed in seconds from the Posix epoch.
+#	changeover - Julian Day on which the Gregorian calendar was adopted
+#		     in the target locale.
+#
+# Results:
+#	Returns the given date with "iso8601Year" set to the
+#	base year and "iso8601Week" to the week number.
+#
+# Side effects:
+#	None.
+#
+#----------------------------------------------------------------------
+
+proc ::tcl::clock::AssignBaseWeek {date baseTime timeZone changeover} {
+    variable TZData
+
+    # Find the Julian Day Number corresponding to the base time
+
+    set date2 [GetDateFields $baseTime $TZData($timeZone) $changeover]
+
+    # Calculate the ISO8601 date and transfer the year
+
+    dict set date era CE
+    dict set date iso8601Year [dict get $date2 iso8601Year]
+    dict set date iso8601Week [dict get $date2 iso8601Week]
+    return $date
+}
+
+#----------------------------------------------------------------------
+#
+# AssignBaseJulianDay --
+#
+#	Determines the base day for a time-of-day conversion.
+#
+# Parameters:
+#	date - Dictionary that is to get the base day
+#	baseTime - Base time expressed in seconds from the Posix epoch
+#	changeover - Julian day on which the Gregorian calendar was
+#		     adpoted in the target locale.
+#
+# Results:
+#	Returns the given dictionary augmented with a 'julianDay' field
+#	that contains the base day.
+#
+# Side effects:
+#	None.
+#
+#----------------------------------------------------------------------
+
+proc ::tcl::clock::AssignBaseJulianDay { date baseTime timeZone changeover } {
+    variable TZData
+
+    # Find the Julian Day Number corresponding to the base time
+
+    set date2 [GetDateFields $baseTime $TZData($timeZone) $changeover]
+    dict set date julianDay [dict get $date2 julianDay]
+
+    return $date
+}
+
+#----------------------------------------------------------------------
+#
+# InterpretHMSP --
+#
+#	Interprets a time in the form "hh:mm:ss am".
+#
+# Parameters:
+#	date -- Dictionary containing "hourAMPM", "minute", "second"
+#	        and "amPmIndicator" fields.
+#
+# Results:
+#	Returns the number of seconds from local midnight.
+#
+# Side effects:
+#	None.
+#
+#----------------------------------------------------------------------
+
+proc ::tcl::clock::InterpretHMSP { date } {
+    set hr [dict get $date hourAMPM]
+    if { $hr == 12 } {
+	set hr 0
+    }
+    if { [dict get $date amPmIndicator] } {
+	incr hr 12
+    }
+    dict set date hour $hr
+    return [InterpretHMS $date[set date {}]]
+}
+
+#----------------------------------------------------------------------
+#
+# InterpretHMS --
+#
+#	Interprets a 24-hour time "hh:mm:ss"
+#
+# Parameters:
+#	date -- Dictionary containing the "hour", "minute" and "second"
+#	        fields.
+#
+# Results:
+#	Returns the given dictionary augmented with a "secondOfDay"
+#	field containing the number of seconds from local midnight.
+#
+# Side effects:
+#	None.
+#
+#----------------------------------------------------------------------
+
+proc ::tcl::clock::InterpretHMS { date } {
+    return [expr {
+	( [dict get $date hour] * 60
+	  + [dict get $date minute] ) * 60
+	+ [dict get $date second]
+    }]
+}
+
+#----------------------------------------------------------------------
+#
+# GetSystemTimeZone --
+#
+#	Determines the system time zone, which is the default for the
+#	'clock' command if no other zone is supplied.
+#
+# Parameters:
+#	None.
+#
+# Results:
+#	Returns the system time zone.
+#
+# Side effects:
+#	Stores the sustem time zone in the 'CachedSystemTimeZone'
+#	variable, since determining it may be an expensive process.
+#
+#----------------------------------------------------------------------
+
+proc ::tcl::clock::GetSystemTimeZone {} {
+    variable CachedSystemTimeZone
+    variable TimeZoneBad
+
+    if {[set result [getenv TCL_TZ]] ne {}} {
+	set timezone $result
+    } elseif {[set result [getenv TZ]] ne {}} {
+	set timezone $result
+    }
+    if {![info exists timezone]} {
+        # Cache the time zone only if it was detected by one of the
+        # expensive methods.
+        if { [info exists CachedSystemTimeZone] } {
+            set timezone $CachedSystemTimeZone
+        } elseif { $::tcl_platform(platform) eq {windows} } {
+            set timezone [GuessWindowsTimeZone]
+        } elseif { [file exists /etc/localtime]
+                   && ![catch {ReadZoneinfoFile \
+                                   Tcl/Localtime /etc/localtime}] } {
+            set timezone :Tcl/Localtime
+        } else {
+            set timezone :localtime
+        }
+	set CachedSystemTimeZone $timezone
+    }
+    if { ![dict exists $TimeZoneBad $timezone] } {
+	dict set TimeZoneBad $timezone [catch {SetupTimeZone $timezone}]
+    }
+    if { [dict get $TimeZoneBad $timezone] } {
+	return :localtime
+    } else {
+	return $timezone
+    }
+}
+
+#----------------------------------------------------------------------
+#
+# ConvertLegacyTimeZone --
+#
+#	Given an alphanumeric time zone identifier and the system time zone,
+#	convert the alphanumeric identifier to an unambiguous time zone.
+#
+# Parameters:
+#	tzname - Name of the time zone to convert
+#
+# Results:
+#	Returns a time zone name corresponding to tzname, but in an
+#	unambiguous form, generally +hhmm.
+#
+# This procedure is implemented primarily to allow the parsing of RFC822
+# date/time strings.  Processing a time zone name on input is not recommended
+# practice, because there is considerable room for ambiguity; for instance, is
+# BST Brazilian Standard Time, or British Summer Time?
+#
+#----------------------------------------------------------------------
+
+proc ::tcl::clock::ConvertLegacyTimeZone { tzname } {
+    variable LegacyTimeZone
+
+    set tzname [string tolower $tzname]
+    if { ![dict exists $LegacyTimeZone $tzname] } {
+	return -code error -errorcode [list CLOCK badTZName $tzname] \
+	    "time zone \"$tzname\" not found"
+    }
+    return [dict get $LegacyTimeZone $tzname]
+}
+
+#----------------------------------------------------------------------
+#
+# SetupTimeZone --
+#
+#	Given the name or specification of a time zone, sets up its in-memory
+#	data.
+#
+# Parameters:
+#	tzname - Name of a time zone
+#
+# Results:
+#	Unless the time zone is ':localtime', sets the TZData array to contain
+#	the lookup table for local<->UTC conversion.  Returns an error if the
+#	time zone cannot be parsed.
+#
+#----------------------------------------------------------------------
+
+proc ::tcl::clock::SetupTimeZone { timezone } {
+    variable TZData
+
+    if {! [info exists TZData($timezone)] } {
+	variable MINWIDE
+	if { $timezone eq {:localtime} } {
+	    # Nothing to do, we'll convert using the localtime function
+
+	} elseif {
+	    [regexp {^([-+])(\d\d)(?::?(\d\d)(?::?(\d\d))?)?} $timezone \
+		    -> s hh mm ss]
+	} then {
+	    # Make a fixed offset
+
+	    ::scan $hh %d hh
+	    if { $mm eq {} } {
+		set mm 0
+	    } else {
+		::scan $mm %d mm
+	    }
+	    if { $ss eq {} } {
+		set ss 0
+	    } else {
+		::scan $ss %d ss
+	    }
+	    set offset [expr { ( $hh * 60 + $mm ) * 60 + $ss }]
+	    if { $s eq {-} } {
+		set offset [expr { - $offset }]
+	    }
+	    set TZData($timezone) [list [list $MINWIDE $offset -1 $timezone]]
+
+	} elseif { [string index $timezone 0] eq {:} } {
+	    # Convert using a time zone file
+
+	    if {
+		[catch {
+		    LoadTimeZoneFile [string range $timezone 1 end]
+		}] && [catch {
+		    LoadZoneinfoFile [string range $timezone 1 end]
+		}]
+	    } then {
+		return -code error \
+		    -errorcode [list CLOCK badTimeZone $timezone] \
+		    "time zone \"$timezone\" not found"
+	    }
+	} elseif { ![catch {ParsePosixTimeZone $timezone} tzfields] } {
+	    # This looks like a POSIX time zone - try to process it
+
+	    if { [catch {ProcessPosixTimeZone $tzfields} data opts] } {
+		if { [lindex [dict get $opts -errorcode] 0] eq {CLOCK} } {
+		    dict unset opts -errorinfo
+		}
+		return -options $opts $data
+	    } else {
+		set TZData($timezone) $data
+	    }
+
+	} else {
+	    # We couldn't parse this as a POSIX time zone.  Try again with a
+	    # time zone file - this time without a colon
+
+	    if { [catch { LoadTimeZoneFile $timezone }]
+		 && [catch { LoadZoneinfoFile $timezone } - opts] } {
+		dict unset opts -errorinfo
+		return -options $opts "time zone $timezone not found"
+	    }
+	    set TZData($timezone) $TZData(:$timezone)
+	}
+    }
+
+    return
+}
+
+#----------------------------------------------------------------------
+#
+# GuessWindowsTimeZone --
+#
+#	Determines the system time zone on windows.
+#
+# Parameters:
+#	None.
+#
+# Results:
+#	Returns a time zone specifier that corresponds to the system time zone
+#	information found in the Registry.
+#
+# Bugs:
+#	Fixed dates for DST change are unimplemented at present, because no
+#	time zone information supplied with Windows actually uses them!
+#
+# On a Windows system where neither $env(TCL_TZ) nor $env(TZ) is specified,
+# GuessWindowsTimeZone looks in the Registry for the system time zone
+# information.  It then attempts to find an entry in WinZoneInfo for a time
+# zone that uses the same rules.  If it finds one, it returns it; otherwise,
+# it constructs a Posix-style time zone string and returns that.
+#
+#----------------------------------------------------------------------
+
+proc ::tcl::clock::GuessWindowsTimeZone {} {
+    variable WinZoneInfo
+    variable NoRegistry
+    variable TimeZoneBad
+
+    if { [info exists NoRegistry] } {
+	return :localtime
+    }
+
+    # Dredge time zone information out of the registry
+
+    if { [catch {
+	set rpath HKEY_LOCAL_MACHINE\\System\\CurrentControlSet\\Control\\TimeZoneInformation
+	set data [list \
+		      [expr { -60
+			      * [registry get $rpath Bias] }] \
+		      [expr { -60
+				  * [registry get $rpath StandardBias] }] \
+		      [expr { -60 \
+				  * [registry get $rpath DaylightBias] }]]
+	set stdtzi [registry get $rpath StandardStart]
+	foreach ind {0 2 14 4 6 8 10 12} {
+	    binary scan $stdtzi @${ind}s val
+	    lappend data $val
+	}
+	set daytzi [registry get $rpath DaylightStart]
+	foreach ind {0 2 14 4 6 8 10 12} {
+	    binary scan $daytzi @${ind}s val
+	    lappend data $val
+	}
+    }] } {
+	# Missing values in the Registry - bail out
+
+	return :localtime
+    }
+
+    # Make up a Posix time zone specifier if we can't find one.  Check here
+    # that the tzdata file exists, in case we're running in an environment
+    # (e.g. starpack) where tzdata is incomplete.  (Bug 1237907)
+
+    if { [dict exists $WinZoneInfo $data] } {
+	set tzname [dict get $WinZoneInfo $data]
+	if { ! [dict exists $TimeZoneBad $tzname] } {
+	    dict set TimeZoneBad $tzname [catch {SetupTimeZone $tzname}]
+	}
+    } else {
+	set tzname {}
+    }
+    if { $tzname eq {} || [dict get $TimeZoneBad $tzname] } {
+	lassign $data \
+	    bias stdBias dstBias \
+	    stdYear stdMonth stdDayOfWeek stdDayOfMonth \
+	    stdHour stdMinute stdSecond stdMillisec \
+	    dstYear dstMonth dstDayOfWeek dstDayOfMonth \
+	    dstHour dstMinute dstSecond dstMillisec
+	set stdDelta [expr { $bias + $stdBias }]
+	set dstDelta [expr { $bias + $dstBias }]
+	if { $stdDelta <= 0 } {
+	    set stdSignum +
+	    set stdDelta [expr { - $stdDelta }]
+	    set dispStdSignum -
+	} else {
+	    set stdSignum -
+	    set dispStdSignum +
+	}
+	set hh [::format %02d [expr { $stdDelta / 3600 }]]
+	set mm [::format %02d [expr { ($stdDelta / 60 ) % 60 }]]
+	set ss [::format %02d [expr { $stdDelta % 60 }]]
+	set tzname {}
+	append tzname < $dispStdSignum $hh $mm > $stdSignum $hh : $mm : $ss
+	if { $stdMonth >= 0 } {
+	    if { $dstDelta <= 0 } {
+		set dstSignum +
+		set dstDelta [expr { - $dstDelta }]
+		set dispDstSignum -
+	    } else {
+		set dstSignum -
+		set dispDstSignum +
+	    }
+	    set hh [::format %02d [expr { $dstDelta / 3600 }]]
+	    set mm [::format %02d [expr { ($dstDelta / 60 ) % 60 }]]
+	    set ss [::format %02d [expr { $dstDelta % 60 }]]
+	    append tzname < $dispDstSignum $hh $mm > $dstSignum $hh : $mm : $ss
+	    if { $dstYear == 0 } {
+		append tzname ,M $dstMonth . $dstDayOfMonth . $dstDayOfWeek
+	    } else {
+		# I have not been able to find any locale on which Windows
+		# converts time zone on a fixed day of the year, hence don't
+		# know how to interpret the fields.  If someone can inform me,
+		# I'd be glad to code it up.  For right now, we bail out in
+		# such a case.
+		return :localtime
+	    }
+	    append tzname / [::format %02d $dstHour] \
+		: [::format %02d $dstMinute] \
+		: [::format %02d $dstSecond]
+	    if { $stdYear == 0 } {
+		append tzname ,M $stdMonth . $stdDayOfMonth . $stdDayOfWeek
+	    } else {
+		# I have not been able to find any locale on which Windows
+		# converts time zone on a fixed day of the year, hence don't
+		# know how to interpret the fields.  If someone can inform me,
+		# I'd be glad to code it up.  For right now, we bail out in
+		# such a case.
+		return :localtime
+	    }
+	    append tzname / [::format %02d $stdHour] \
+		: [::format %02d $stdMinute] \
+		: [::format %02d $stdSecond]
+	}
+	dict set WinZoneInfo $data $tzname
+    }
+
+    return [dict get $WinZoneInfo $data]
+}
+
+#----------------------------------------------------------------------
+#
+# LoadTimeZoneFile --
+#
+#	Load the data file that specifies the conversion between a
+#	given time zone and Greenwich.
+#
+# Parameters:
+#	fileName -- Name of the file to load
+#
+# Results:
+#	None.
+#
+# Side effects:
+#	TZData(:fileName) contains the time zone data
+#
+#----------------------------------------------------------------------
+
+proc ::tcl::clock::LoadTimeZoneFile { fileName } {
+    variable DataDir
+    variable TZData
+
+    if { [info exists TZData($fileName)] } {
+	return
+    }
+
+    # Since an unsafe interp uses the [clock] command in the master, this code
+    # is security sensitive.  Make sure that the path name cannot escape the
+    # given directory.
+
+    if { ![regexp {^[[.-.][:alpha:]_]+(?:/[[.-.][:alpha:]_]+)*$} $fileName] } {
+	return -code error \
+	    -errorcode [list CLOCK badTimeZone $:fileName] \
+	    "time zone \":$fileName\" not valid"
+    }
+    try {
+	source -encoding utf-8 [file join $DataDir $fileName]
+    } on error {} {
+	return -code error \
+	    -errorcode [list CLOCK badTimeZone :$fileName] \
+	    "time zone \":$fileName\" not found"
+    }
+    return
+}
+
+#----------------------------------------------------------------------
+#
+# LoadZoneinfoFile --
+#
+#	Loads a binary time zone information file in Olson format.
+#
+# Parameters:
+#	fileName - Relative path name of the file to load.
+#
+# Results:
+#	Returns an empty result normally; returns an error if no Olson file
+#	was found or the file was malformed in some way.
+#
+# Side effects:
+#	TZData(:fileName) contains the time zone data
+#
+#----------------------------------------------------------------------
+
+proc ::tcl::clock::LoadZoneinfoFile { fileName } {
+    variable ZoneinfoPaths
+
+    # Since an unsafe interp uses the [clock] command in the master, this code
+    # is security sensitive.  Make sure that the path name cannot escape the
+    # given directory.
+
+    if { ![regexp {^[[.-.][:alpha:]_]+(?:/[[.-.][:alpha:]_]+)*$} $fileName] } {
+	return -code error \
+	    -errorcode [list CLOCK badTimeZone $:fileName] \
+	    "time zone \":$fileName\" not valid"
+    }
+    foreach d $ZoneinfoPaths {
+	set fname [file join $d $fileName]
+	if { [file readable $fname] && [file isfile $fname] } {
+	    break
+	}
+	unset fname
+    }
+    ReadZoneinfoFile $fileName $fname
+}
+
+#----------------------------------------------------------------------
+#
+# ReadZoneinfoFile --
+#
+#	Loads a binary time zone information file in Olson format.
+#
+# Parameters:
+#	fileName - Name of the time zone (relative path name of the
+#		   file).
+#	fname - Absolute path name of the file.
+#
+# Results:
+#	Returns an empty result normally; returns an error if no Olson file
+#	was found or the file was malformed in some way.
+#
+# Side effects:
+#	TZData(:fileName) contains the time zone data
+#
+#----------------------------------------------------------------------
+
+proc ::tcl::clock::ReadZoneinfoFile {fileName fname} {
+    variable MINWIDE
+    variable TZData
+    if { ![file exists $fname] } {
+	return -code error "$fileName not found"
+    }
+
+    if { [file size $fname] > 262144 } {
+	return -code error "$fileName too big"
+    }
+
+    # Suck in all the data from the file
+
+    set f [open $fname r]
+    fconfigure $f -translation binary
+    set d [read $f]
+    close $f
+
+    # The file begins with a magic number, sixteen reserved bytes, and then
+    # six 4-byte integers giving counts of fileds in the file.
+
+    binary scan $d a4a1x15IIIIII \
+	magic version nIsGMT nIsStd nLeap nTime nType nChar
+    set seek 44
+    set ilen 4
+    set iformat I
+    if { $magic != {TZif} } {
+	return -code error "$fileName not a time zone information file"
+    }
+    if { $nType > 255 } {
+	return -code error "$fileName contains too many time types"
+    }
+    # Accept only Posix-style zoneinfo.  Sorry, 'leaps' bigots.
+    if { $nLeap != 0 } {
+	return -code error "$fileName contains leap seconds"
+    }
+
+    # In a version 2 file, we use the second part of the file, which contains
+    # 64-bit transition times.
+
+    if {$version eq "2"} {
+	set seek [expr {
+	    44
+	    + 5 * $nTime
+	    + 6 * $nType
+	    + 4 * $nLeap
+	    + $nIsStd
+	    + $nIsGMT
+	    + $nChar
+	}]
+	binary scan $d @${seek}a4a1x15IIIIII \
+	    magic version nIsGMT nIsStd nLeap nTime nType nChar
+	if {$magic ne {TZif}} {
+	    return -code error "seek address $seek miscomputed, magic = $magic"
+	}
+	set iformat W
+	set ilen 8
+	incr seek 44
+    }
+
+    # Next come ${nTime} transition times, followed by ${nTime} time type
+    # codes.  The type codes are unsigned 1-byte quantities.  We insert an
+    # arbitrary start time in front of the transitions.
+
+    binary scan $d @${seek}${iformat}${nTime}c${nTime} times tempCodes
+    incr seek [expr { ($ilen + 1) * $nTime }]
+    set times [linsert $times 0 $MINWIDE]
+    set codes {}
+    foreach c $tempCodes {
+	lappend codes [expr { $c & 0xff }]
+    }
+    set codes [linsert $codes 0 0]
+
+    # Next come ${nType} time type descriptions, each of which has an offset
+    # (seconds east of GMT), a DST indicator, and an index into the
+    # abbreviation text.
+
+    for { set i 0 } { $i < $nType } { incr i } {
+	binary scan $d @${seek}Icc gmtOff isDst abbrInd
+	lappend types [list $gmtOff $isDst $abbrInd]
+	incr seek 6
+    }
+
+    # Next come $nChar characters of time zone name abbreviations, which are
+    # null-terminated.
+    # We build them up into a dictionary indexed by character index, because
+    # that's what's in the indices above.
+
+    binary scan $d @${seek}a${nChar} abbrs
+    incr seek ${nChar}
+    set abbrList [split $abbrs \0]
+    set i 0
+    set abbrevs {}
+    foreach a $abbrList {
+	for {set j 0} {$j <= [string length $a]} {incr j} {
+	    dict set abbrevs $i [string range $a $j end]
+	    incr i
+	}
+    }
+
+    # Package up a list of tuples, each of which contains transition time,
+    # seconds east of Greenwich, DST flag and time zone abbreviation.
+
+    set r {}
+    set lastTime $MINWIDE
+    foreach t $times c $codes {
+	if { $t < $lastTime } {
+	    return -code error "$fileName has times out of order"
+	}
+	set lastTime $t
+	lassign [lindex $types $c] gmtoff isDst abbrInd
+	set abbrev [dict get $abbrevs $abbrInd]
+	lappend r [list $t $gmtoff $isDst $abbrev]
+    }
+
+    # In a version 2 file, there is also a POSIX-style time zone description
+    # at the very end of the file.  To get to it, skip over nLeap leap second
+    # values (8 bytes each),
+    # nIsStd standard/DST indicators and nIsGMT UTC/local indicators.
+
+    if {$version eq {2}} {
+	set seek [expr {$seek + 8 * $nLeap + $nIsStd + $nIsGMT + 1}]
+	set last [string first \n $d $seek]
+	set posix [string range $d $seek [expr {$last-1}]]
+	if {[llength $posix] > 0} {
+	    set posixFields [ParsePosixTimeZone $posix]
+	    foreach tuple [ProcessPosixTimeZone $posixFields] {
+		lassign $tuple t gmtoff isDst abbrev
+		if {$t > $lastTime} {
+		    lappend r $tuple
+		}
+	    }
+	}
+    }
+
+    set TZData(:$fileName) $r
+
+    return
+}
+
+#----------------------------------------------------------------------
+#
+# ParsePosixTimeZone --
+#
+#	Parses the TZ environment variable in Posix form
+#
+# Parameters:
+#	tz	Time zone specifier to be interpreted
+#
+# Results:
+#	Returns a dictionary whose values contain the various pieces of the
+#	time zone specification.
+#
+# Side effects:
+#	None.
+#
+# Errors:
+#	Throws an error if the syntax of the time zone is incorrect.
+#
+# The following keys are present in the dictionary:
+#	stdName - Name of the time zone when Daylight Saving Time
+#		  is not in effect.
+#	stdSignum - Sign (+, -, or empty) of the offset from Greenwich
+#		    to the given (non-DST) time zone.  + and the empty
+#		    string denote zones west of Greenwich, - denotes east
+#		    of Greenwich; this is contrary to the ISO convention
+#		    but follows Posix.
+#	stdHours - Hours part of the offset from Greenwich to the given
+#		   (non-DST) time zone.
+#	stdMinutes - Minutes part of the offset from Greenwich to the
+#		     given (non-DST) time zone. Empty denotes zero.
+#	stdSeconds - Seconds part of the offset from Greenwich to the
+#		     given (non-DST) time zone. Empty denotes zero.
+#	dstName - Name of the time zone when DST is in effect, or the
+#		  empty string if the time zone does not observe Daylight
+#		  Saving Time.
+#	dstSignum, dstHours, dstMinutes, dstSeconds -
+#		Fields corresponding to stdSignum, stdHours, stdMinutes,
+#		stdSeconds for the Daylight Saving Time version of the
+#		time zone.  If dstHours is empty, it is presumed to be 1.
+#	startDayOfYear - The ordinal number of the day of the year on which
+#			 Daylight Saving Time begins.  If this field is
+#			 empty, then DST begins on a given month-week-day,
+#			 as below.
+#	startJ - The letter J, or an empty string.  If a J is present in
+#		 this field, then startDayOfYear does not count February 29
+#		 even in leap years.
+#	startMonth - The number of the month in which Daylight Saving Time
+#		     begins, supplied if startDayOfYear is empty.  If both
+#		     startDayOfYear and startMonth are empty, then US rules
+#		     are presumed.
+#	startWeekOfMonth - The number of the week in the month in which
+#			   Daylight Saving Time begins, in the range 1-5.
+#			   5 denotes the last week of the month even in a
+#			   4-week month.
+#	startDayOfWeek - The number of the day of the week (Sunday=0,
+#			 Saturday=6) on which Daylight Saving Time begins.
+#	startHours - The hours part of the time of day at which Daylight
+#		     Saving Time begins. An empty string is presumed to be 2.
+#	startMinutes - The minutes part of the time of day at which DST begins.
+#		       An empty string is presumed zero.
+#	startSeconds - The seconds part of the time of day at which DST begins.
+#		       An empty string is presumed zero.
+#	endDayOfYear, endJ, endMonth, endWeekOfMonth, endDayOfWeek,
+#	endHours, endMinutes, endSeconds -
+#		Specify the end of DST in the same way that the start* fields
+#		specify the beginning of DST.
+#
+# This procedure serves only to break the time specifier into fields.  No
+# attempt is made to canonicalize the fields or supply default values.
+#
+#----------------------------------------------------------------------
+
+proc ::tcl::clock::ParsePosixTimeZone { tz } {
+    if {[regexp -expanded -nocase -- {
+	^
+	# 1 - Standard time zone name
+	([[:alpha:]]+ | <[-+[:alnum:]]+>)
+	# 2 - Standard time zone offset, signum
+	([-+]?)
+	# 3 - Standard time zone offset, hours
+	([[:digit:]]{1,2})
+	(?:
+	    # 4 - Standard time zone offset, minutes
+	    : ([[:digit:]]{1,2})
+	    (?:
+	        # 5 - Standard time zone offset, seconds
+		: ([[:digit:]]{1,2} )
+	    )?
+	)?
+	(?:
+	    # 6 - DST time zone name
+	    ([[:alpha:]]+ | <[-+[:alnum:]]+>)
+	    (?:
+	        (?:
+		    # 7 - DST time zone offset, signum
+		    ([-+]?)
+		    # 8 - DST time zone offset, hours
+		    ([[:digit:]]{1,2})
+		    (?:
+			# 9 - DST time zone offset, minutes
+			: ([[:digit:]]{1,2})
+			(?:
+		            # 10 - DST time zone offset, seconds
+			    : ([[:digit:]]{1,2})
+			)?
+		    )?
+		)?
+	        (?:
+		    ,
+		    (?:
+			# 11 - Optional J in n and Jn form 12 - Day of year
+		        ( J ? )	( [[:digit:]]+ )
+                        | M
+			# 13 - Month number 14 - Week of month 15 - Day of week
+			( [[:digit:]] + )
+			[.] ( [[:digit:]] + )
+			[.] ( [[:digit:]] + )
+		    )
+		    (?:
+			# 16 - Start time of DST - hours
+			/ ( [[:digit:]]{1,2} )
+		        (?:
+			    # 17 - Start time of DST - minutes
+			    : ( [[:digit:]]{1,2} )
+			    (?:
+				# 18 - Start time of DST - seconds
+				: ( [[:digit:]]{1,2} )
+			    )?
+			)?
+		    )?
+		    ,
+		    (?:
+			# 19 - Optional J in n and Jn form 20 - Day of year
+		        ( J ? )	( [[:digit:]]+ )
+                        | M
+			# 21 - Month number 22 - Week of month 23 - Day of week
+			( [[:digit:]] + )
+			[.] ( [[:digit:]] + )
+			[.] ( [[:digit:]] + )
+		    )
+		    (?:
+			# 24 - End time of DST - hours
+			/ ( [[:digit:]]{1,2} )
+		        (?:
+			    # 25 - End time of DST - minutes
+			    : ( [[:digit:]]{1,2} )
+			    (?:
+				# 26 - End time of DST - seconds
+				: ( [[:digit:]]{1,2} )
+			    )?
+			)?
+		    )?
+                )?
+	    )?
+        )?
+	$
+    } $tz -> x(stdName) x(stdSignum) x(stdHours) x(stdMinutes) x(stdSeconds) \
+	     x(dstName) x(dstSignum) x(dstHours) x(dstMinutes) x(dstSeconds) \
+	     x(startJ) x(startDayOfYear) \
+	     x(startMonth) x(startWeekOfMonth) x(startDayOfWeek) \
+	     x(startHours) x(startMinutes) x(startSeconds) \
+	     x(endJ) x(endDayOfYear) \
+	     x(endMonth) x(endWeekOfMonth) x(endDayOfWeek) \
+	     x(endHours) x(endMinutes) x(endSeconds)] } {
+	# it's a good timezone
+
+	return [array get x]
+    }
+
+    return -code error\
+	-errorcode [list CLOCK badTimeZone $tz] \
+	"unable to parse time zone specification \"$tz\""
+}
+
+#----------------------------------------------------------------------
+#
+# ProcessPosixTimeZone --
+#
+#	Handle a Posix time zone after it's been broken out into fields.
+#
+# Parameters:
+#	z - Dictionary returned from 'ParsePosixTimeZone'
+#
+# Results:
+#	Returns time zone information for the 'TZData' array.
+#
+# Side effects:
+#	None.
+#
+#----------------------------------------------------------------------
+
+proc ::tcl::clock::ProcessPosixTimeZone { z } {
+    variable MINWIDE
+    variable TZData
+
+    # Determine the standard time zone name and seconds east of Greenwich
+
+    set stdName [dict get $z stdName]
+    if { [string index $stdName 0] eq {<} } {
+	set stdName [string range $stdName 1 end-1]
+    }
+    if { [dict get $z stdSignum] eq {-} } {
+	set stdSignum +1
+    } else {
+	set stdSignum -1
+    }
+    set stdHours [lindex [::scan [dict get $z stdHours] %d] 0]
+    if { [dict get $z stdMinutes] ne {} } {
+	set stdMinutes [lindex [::scan [dict get $z stdMinutes] %d] 0]
+    } else {
+	set stdMinutes 0
+    }
+    if { [dict get $z stdSeconds] ne {} } {
+	set stdSeconds [lindex [::scan [dict get $z stdSeconds] %d] 0]
+    } else {
+	set stdSeconds 0
+    }
+    set stdOffset [expr {
+	(($stdHours * 60 + $stdMinutes) * 60 + $stdSeconds) * $stdSignum
+    }]
+    set data [list [list $MINWIDE $stdOffset 0 $stdName]]
+
+    # If there's no daylight zone, we're done
+
+    set dstName [dict get $z dstName]
+    if { $dstName eq {} } {
+	return $data
+    }
+    if { [string index $dstName 0] eq {<} } {
+	set dstName [string range $dstName 1 end-1]
+    }
+
+    # Determine the daylight name
+
+    if { [dict get $z dstSignum] eq {-} } {
+	set dstSignum +1
+    } else {
+	set dstSignum -1
+    }
+    if { [dict get $z dstHours] eq {} } {
+	set dstOffset [expr { 3600 + $stdOffset }]
+    } else {
+	set dstHours [lindex [::scan [dict get $z dstHours] %d] 0]
+	if { [dict get $z dstMinutes] ne {} } {
+	    set dstMinutes [lindex [::scan [dict get $z dstMinutes] %d] 0]
+	} else {
+	    set dstMinutes 0
+	}
+	if { [dict get $z dstSeconds] ne {} } {
+	    set dstSeconds [lindex [::scan [dict get $z dstSeconds] %d] 0]
+	} else {
+	    set dstSeconds 0
+	}
+	set dstOffset [expr {
+	    (($dstHours*60 + $dstMinutes) * 60 + $dstSeconds) * $dstSignum
+	}]
+    }
+
+    # Fill in defaults for European or US DST rules
+    # US start time is the second Sunday in March
+    # EU start time is the last Sunday in March
+    # US end time is the first Sunday in November.
+    # EU end time is the last Sunday in October
+
+    if {
+	[dict get $z startDayOfYear] eq {}
+	&& [dict get $z startMonth] eq {}
+    } then {
+	if {($stdSignum * $stdHours>=0) && ($stdSignum * $stdHours<=12)} {
+	    # EU
+	    dict set z startWeekOfMonth 5
+	    if {$stdHours>2} {
+		dict set z startHours 2
+	    } else {
+		dict set z startHours [expr {$stdHours+1}]
+	    }
+	} else {
+	    # US
+	    dict set z startWeekOfMonth 2
+	    dict set z startHours 2
+	}
+	dict set z startMonth 3
+	dict set z startDayOfWeek 0
+	dict set z startMinutes 0
+	dict set z startSeconds 0
+    }
+    if {
+	[dict get $z endDayOfYear] eq {}
+	&& [dict get $z endMonth] eq {}
+    } then {
+	if {($stdSignum * $stdHours>=0) && ($stdSignum * $stdHours<=12)} {
+	    # EU
+	    dict set z endMonth 10
+	    dict set z endWeekOfMonth 5
+	    if {$stdHours>2} {
+		dict set z endHours 3
+	    } else {
+		dict set z endHours [expr {$stdHours+2}]
+	    }
+	} else {
+	    # US
+	    dict set z endMonth 11
+	    dict set z endWeekOfMonth 1
+	    dict set z endHours 2
+	}
+	dict set z endDayOfWeek 0
+	dict set z endMinutes 0
+	dict set z endSeconds 0
+    }
+
+    # Put DST in effect in all years from 1916 to 2099.
+
+    for { set y 1916 } { $y < 2100 } { incr y } {
+	set startTime [DeterminePosixDSTTime $z start $y]
+	incr startTime [expr { - wide($stdOffset) }]
+	set endTime [DeterminePosixDSTTime $z end $y]
+	incr endTime [expr { - wide($dstOffset) }]
+	if { $startTime < $endTime } {
+	    lappend data \
+		[list $startTime $dstOffset 1 $dstName] \
+		[list $endTime $stdOffset 0 $stdName]
+	} else {
+	    lappend data \
+		[list $endTime $stdOffset 0 $stdName] \
+		[list $startTime $dstOffset 1 $dstName]
+	}
+    }
+
+    return $data
+}
+
+#----------------------------------------------------------------------
+#
+# DeterminePosixDSTTime --
+#
+#	Determines the time that Daylight Saving Time starts or ends from a
+#	Posix time zone specification.
+#
+# Parameters:
+#	z - Time zone data returned from ParsePosixTimeZone.
+#	    Missing fields are expected to be filled in with
+#	    default values.
+#	bound - The word 'start' or 'end'
+#	y - The year for which the transition time is to be determined.
+#
+# Results:
+#	Returns the transition time as a count of seconds from the epoch.  The
+#	time is relative to the wall clock, not UTC.
+#
+#----------------------------------------------------------------------
+
+proc ::tcl::clock::DeterminePosixDSTTime { z bound y } {
+
+    variable FEB_28
+
+    # Determine the start or end day of DST
+
+    set date [dict create era CE year $y]
+    set doy [dict get $z ${bound}DayOfYear]
+    if { $doy ne {} } {
+
+	# Time was specified as a day of the year
+
+	if { [dict get $z ${bound}J] ne {}
+	     && [IsGregorianLeapYear $y]
+	     && ( $doy > $FEB_28 ) } {
+	    incr doy
+	}
+	dict set date dayOfYear $doy
+	set date [GetJulianDayFromEraYearDay $date[set date {}] 2361222]
+    } else {
+	# Time was specified as a day of the week within a month
+
+	dict set date month [dict get $z ${bound}Month]
+	dict set date dayOfWeek [dict get $z ${bound}DayOfWeek]
+	set dowim [dict get $z ${bound}WeekOfMonth]
+	if { $dowim >= 5 } {
+	    set dowim -1
+	}
+	dict set date dayOfWeekInMonth $dowim
+	set date [GetJulianDayFromEraYearMonthWeekDay $date[set date {}] 2361222]
+
+    }
+
+    set jd [dict get $date julianDay]
+    set seconds [expr {
+	wide($jd) * wide(86400) - wide(210866803200)
+    }]
+
+    set h [dict get $z ${bound}Hours]
+    if { $h eq {} } {
+	set h 2
+    } else {
+	set h [lindex [::scan $h %d] 0]
+    }
+    set m [dict get $z ${bound}Minutes]
+    if { $m eq {} } {
+	set m 0
+    } else {
+	set m [lindex [::scan $m %d] 0]
+    }
+    set s [dict get $z ${bound}Seconds]
+    if { $s eq {} } {
+	set s 0
+    } else {
+	set s [lindex [::scan $s %d] 0]
+    }
+    set tod [expr { ( $h * 60 + $m ) * 60 + $s }]
+    return [expr { $seconds + $tod }]
+}
+
+#----------------------------------------------------------------------
+#
+# GetLocaleEra --
+#
+#	Given local time expressed in seconds from the Posix epoch,
+#	determine localized era and year within the era.
+#
+# Parameters:
+#	date - Dictionary that must contain the keys, 'localSeconds',
+#	       whose value is expressed as the appropriate local time;
+#	       and 'year', whose value is the Gregorian year.
+#	etable - Value of the LOCALE_ERAS key in the message catalogue
+#	         for the target locale.
+#
+# Results:
+#	Returns the dictionary, augmented with the keys, 'localeEra' and
+#	'localeYear'.
+#
+#----------------------------------------------------------------------
+
+proc ::tcl::clock::GetLocaleEra { date etable } {
+    set index [BSearch $etable [dict get $date localSeconds]]
+    if { $index < 0} {
+	dict set date localeEra \
+	    [::format %02d [expr { [dict get $date year] / 100 }]]
+	dict set date localeYear [expr {
+	    [dict get $date year] % 100
+	}]
+    } else {
+	dict set date localeEra [lindex $etable $index 1]
+	dict set date localeYear [expr {
+	    [dict get $date year] - [lindex $etable $index 2]
+	}]
+    }
+    return $date
+}
+
+#----------------------------------------------------------------------
+#
+# GetJulianDayFromEraYearDay --
+#
+#	Given a year, month and day on the Gregorian calendar, determines
+#	the Julian Day Number beginning at noon on that date.
+#
+# Parameters:
+#	date -- A dictionary in which the 'era', 'year', and
+#		'dayOfYear' slots are populated. The calendar in use
+#		is determined by the date itself relative to:
+#       changeover -- Julian day on which the Gregorian calendar was
+#		adopted in the current locale.
+#
+# Results:
+#	Returns the given dictionary augmented with a 'julianDay' key whose
+#	value is the desired Julian Day Number, and a 'gregorian' key that
+#	specifies whether the calendar is Gregorian (1) or Julian (0).
+#
+# Side effects:
+#	None.
+#
+# Bugs:
+#	This code needs to be moved to the C layer.
+#
+#----------------------------------------------------------------------
+
+proc ::tcl::clock::GetJulianDayFromEraYearDay {date changeover} {
+    # Get absolute year number from the civil year
+
+    switch -exact -- [dict get $date era] {
+	BCE {
+	    set year [expr { 1 - [dict get $date year] }]
+	}
+	CE {
+	    set year [dict get $date year]
+	}
+    }
+    set ym1 [expr { $year - 1 }]
+
+    # Try the Gregorian calendar first.
+
+    dict set date gregorian 1
+    set jd [expr {
+	1721425
+	+ [dict get $date dayOfYear]
+	+ ( 365 * $ym1 )
+	+ ( $ym1 / 4 )
+	- ( $ym1 / 100 )
+	+ ( $ym1 / 400 )
+    }]
+
+    # If the date is before the Gregorian change, use the Julian calendar.
+
+    if { $jd < $changeover } {
+	dict set date gregorian 0
+	set jd [expr {
+	    1721423
+	    + [dict get $date dayOfYear]
+	    + ( 365 * $ym1 )
+	    + ( $ym1 / 4 )
+	}]
+    }
+
+    dict set date julianDay $jd
+    return $date
+}
+
+#----------------------------------------------------------------------
+#
+# GetJulianDayFromEraYearMonthWeekDay --
+#
+#	Determines the Julian Day number corresponding to the nth given
+#	day-of-the-week in a given month.
+#
+# Parameters:
+#	date - Dictionary containing the keys, 'era', 'year', 'month'
+#	       'weekOfMonth', 'dayOfWeek', and 'dayOfWeekInMonth'.
+#	changeover - Julian Day of adoption of the Gregorian calendar
+#
+# Results:
+#	Returns the given dictionary, augmented with a 'julianDay' key.
+#
+# Side effects:
+#	None.
+#
+# Bugs:
+#	This code needs to be moved to the C layer.
+#
+#----------------------------------------------------------------------
+
+proc ::tcl::clock::GetJulianDayFromEraYearMonthWeekDay {date changeover} {
+    # Come up with a reference day; either the zeroeth day of the given month
+    # (dayOfWeekInMonth >= 0) or the seventh day of the following month
+    # (dayOfWeekInMonth < 0)
+
+    set date2 $date
+    set week [dict get $date dayOfWeekInMonth]
+    if { $week >= 0 } {
+	dict set date2 dayOfMonth 0
+    } else {
+	dict incr date2 month
+	dict set date2 dayOfMonth 7
+    }
+    set date2 [GetJulianDayFromEraYearMonthDay $date2[set date2 {}] \
+		   $changeover]
+    set wd0 [WeekdayOnOrBefore [dict get $date dayOfWeek] \
+		 [dict get $date2 julianDay]]
+    dict set date julianDay [expr { $wd0 + 7 * $week }]
+    return $date
+}
+
+#----------------------------------------------------------------------
+#
+# IsGregorianLeapYear --
+#
+#	Determines whether a given date represents a leap year in the
+#	Gregorian calendar.
+#
+# Parameters:
+#	date -- The date to test.  The fields, 'era', 'year' and 'gregorian'
+#	        must be set.
+#
+# Results:
+#	Returns 1 if the year is a leap year, 0 otherwise.
+#
+# Side effects:
+#	None.
+#
+#----------------------------------------------------------------------
+
+proc ::tcl::clock::IsGregorianLeapYear { date } {
+    switch -exact -- [dict get $date era] {
+	BCE {
+	    set year [expr { 1 - [dict get $date year]}]
+	}
+	CE {
+	    set year [dict get $date year]
+	}
+    }
+    if { $year % 4 != 0 } {
+	return 0
+    } elseif { ![dict get $date gregorian] } {
+	return 1
+    } elseif { $year % 400 == 0 } {
+	return 1
+    } elseif { $year % 100 == 0 } {
+	return 0
+    } else {
+	return 1
+    }
+}
+
+#----------------------------------------------------------------------
+#
+# WeekdayOnOrBefore --
+#
+#	Determine the nearest day of week (given by the 'weekday' parameter,
+#	Sunday==0) on or before a given Julian Day.
+#
+# Parameters:
+#	weekday -- Day of the week
+#	j -- Julian Day number
+#
+# Results:
+#	Returns the Julian Day Number of the desired date.
+#
+# Side effects:
+#	None.
+#
+#----------------------------------------------------------------------
+
+proc ::tcl::clock::WeekdayOnOrBefore { weekday j } {
+    set k [expr { ( $weekday + 6 )  % 7 }]
+    return [expr { $j - ( $j - $k ) % 7 }]
+}
+
+#----------------------------------------------------------------------
+#
+# BSearch --
+#
+#	Service procedure that does binary search in several places inside the
+#	'clock' command.
+#
+# Parameters:
+#	list - List of lists, sorted in ascending order by the
+#	       first elements
+#	key - Value to search for
+#
+# Results:
+#	Returns the index of the greatest element in $list that is less than
+#	or equal to $key.
+#
+# Side effects:
+#	None.
+#
+#----------------------------------------------------------------------
+
+proc ::tcl::clock::BSearch { list key } {
+    if {[llength $list] == 0} {
+	return -1
+    }
+    if { $key < [lindex $list 0 0] } {
+	return -1
+    }
+
+    set l 0
+    set u [expr { [llength $list] - 1 }]
+
+    while { $l < $u } {
+	# At this point, we know that
+	#   $k >= [lindex $list $l 0]
+	#   Either $u == [llength $list] or else $k < [lindex $list $u+1 0]
+	# We find the midpoint of the interval {l,u} rounded UP, compare
+	# against it, and set l or u to maintain the invariant.  Note that the
+	# interval shrinks at each step, guaranteeing convergence.
+
+	set m [expr { ( $l + $u + 1 ) / 2 }]
+	if { $key >= [lindex $list $m 0] } {
+	    set l $m
+	} else {
+	    set u [expr { $m - 1 }]
+	}
+    }
+
+    return $l
+}
+
+#----------------------------------------------------------------------
+#
+# clock add --
+#
+#	Adds an offset to a given time.
+#
+# Syntax:
+#	clock add clockval ?count unit?... ?-option value?
+#
+# Parameters:
+#	clockval -- Starting time value
+#	count -- Amount of a unit of time to add
+#	unit -- Unit of time to add, must be one of:
+#			years year months month weeks week
+#			days day hours hour minutes minute
+#			seconds second
+#
+# Options:
+#	-gmt BOOLEAN
+#		(Deprecated) Flag synonymous with '-timezone :GMT'
+#	-timezone ZONE
+#		Name of the time zone in which calculations are to be done.
+#	-locale NAME
+#		Name of the locale in which calculations are to be done.
+#		Used to determine the Gregorian change date.
+#
+# Results:
+#	Returns the given time adjusted by the given offset(s) in
+#	order.
+#
+# Notes:
+#	It is possible that adding a number of months or years will adjust the
+#	day of the month as well.  For instance, the time at one month after
+#	31 January is either 28 or 29 February, because February has fewer
+#	than 31 days.
+#
+#----------------------------------------------------------------------
+
+proc ::tcl::clock::add { clockval args } {
+    if { [llength $args] % 2 != 0 } {
+	set cmdName "clock add"
+	return -code error \
+	    -errorcode [list CLOCK wrongNumArgs] \
+	    "wrong \# args: should be\
+             \"$cmdName clockval ?number units?...\
+             ?-gmt boolean? ?-locale LOCALE? ?-timezone ZONE?\""
+    }
+    if { [catch { expr {wide($clockval)} } result] } {
+	return -code error $result
+    }
+
+    set offsets {}
+    set gmt 0
+    set locale c
+    set timezone [GetSystemTimeZone]
+
+    foreach { a b } $args {
+	if { [string is integer -strict $a] } {
+	    lappend offsets $a $b
+	} else {
+	    switch -exact -- $a {
+		-g - -gm - -gmt {
+		    set gmt $b
+		}
+		-l - -lo - -loc - -loca - -local - -locale {
+		    set locale [string tolower $b]
+		}
+		-t - -ti - -tim - -time - -timez - -timezo - -timezon -
+		-timezone {
+		    set timezone $b
+		}
+		default {
+		    throw [list CLOCK badOption $a] \
+			"bad option \"$a\",\
+                         must be -gmt, -locale or -timezone"
+		}
+	    }
+	}
+    }
+
+    # Check options for validity
+
+    if { [info exists saw(-gmt)] && [info exists saw(-timezone)] } {
+	return -code error \
+	    -errorcode [list CLOCK gmtWithTimezone] \
+	    "cannot use -gmt and -timezone in same call"
+    }
+    if { [catch { expr { wide($clockval) } } result] } {
+	return -code error "expected integer but got \"$clockval\""
+    }
+    if { ![string is boolean -strict $gmt] } {
+	return -code error "expected boolean value but got \"$gmt\""
+    } elseif { $gmt } {
+	set timezone :GMT
+    }
+
+    EnterLocale $locale
+
+    set changeover [mc GREGORIAN_CHANGE_DATE]
+
+    if {[catch {SetupTimeZone $timezone} retval opts]} {
+	dict unset opts -errorinfo
+	return -options $opts $retval
+    }
+
+    try {
+	foreach { quantity unit } $offsets {
+	    switch -exact -- $unit {
+		years - year {
+		    set clockval [AddMonths [expr { 12 * $quantity }] \
+			    $clockval $timezone $changeover]
+		}
+		months - month {
+		    set clockval [AddMonths $quantity $clockval $timezone \
+			    $changeover]
+		}
+
+		weeks - week {
+		    set clockval [AddDays [expr { 7 * $quantity }] \
+			    $clockval $timezone $changeover]
+		}
+		days - day {
+		    set clockval [AddDays $quantity $clockval $timezone \
+			    $changeover]
+		}
+
+		hours - hour {
+		    set clockval [expr { 3600 * $quantity + $clockval }]
+		}
+		minutes - minute {
+		    set clockval [expr { 60 * $quantity + $clockval }]
+		}
+		seconds - second {
+		    set clockval [expr { $quantity + $clockval }]
+		}
+
+		default {
+		    throw [list CLOCK badUnit $unit] \
+			"unknown unit \"$unit\", must be \
+                        years, months, weeks, days, hours, minutes or seconds"
+		}
+	    }
+	}
+	return $clockval
+    } trap CLOCK {result opts} {
+	# Conceal the innards of [clock] when it's an expected error
+	dict unset opts -errorinfo
+	return -options $opts $result
+    }
+}
+
+#----------------------------------------------------------------------
+#
+# AddMonths --
+#
+#	Add a given number of months to a given clock value in a given
+#	time zone.
+#
+# Parameters:
+#	months - Number of months to add (may be negative)
+#	clockval - Seconds since the epoch before the operation
+#	timezone - Time zone in which the operation is to be performed
+#
+# Results:
+#	Returns the new clock value as a number of seconds since
+#	the epoch.
+#
+# Side effects:
+#	None.
+#
+#----------------------------------------------------------------------
+
+proc ::tcl::clock::AddMonths { months clockval timezone changeover } {
+    variable DaysInRomanMonthInCommonYear
+    variable DaysInRomanMonthInLeapYear
+    variable TZData
+
+    # Convert the time to year, month, day, and fraction of day.
+
+    set date [GetDateFields $clockval $TZData($timezone) $changeover]
+    dict set date secondOfDay [expr {
+	[dict get $date localSeconds] % 86400
+    }]
+    dict set date tzName $timezone
+
+    # Add the requisite number of months
+
+    set m [dict get $date month]
+    incr m $months
+    incr m -1
+    set delta [expr { $m / 12 }]
+    set mm [expr { $m % 12 }]
+    dict set date month [expr { $mm + 1 }]
+    dict incr date year $delta
+
+    # If the date doesn't exist in the current month, repair it
+
+    if { [IsGregorianLeapYear $date] } {
+	set hath [lindex $DaysInRomanMonthInLeapYear $mm]
+    } else {
+	set hath [lindex $DaysInRomanMonthInCommonYear $mm]
+    }
+    if { [dict get $date dayOfMonth] > $hath } {
+	dict set date dayOfMonth $hath
+    }
+
+    # Reconvert to a number of seconds
+
+    set date [GetJulianDayFromEraYearMonthDay \
+		  $date[set date {}]\
+		  $changeover]
+    dict set date localSeconds [expr {
+	-210866803200
+	+ ( 86400 * wide([dict get $date julianDay]) )
+	+ [dict get $date secondOfDay]
+    }]
+    set date [ConvertLocalToUTC $date[set date {}] $TZData($timezone) \
+		 $changeover]
+
+    return [dict get $date seconds]
+
+}
+
+#----------------------------------------------------------------------
+#
+# AddDays --
+#
+#	Add a given number of days to a given clock value in a given time
+#	zone.
+#
+# Parameters:
+#	days - Number of days to add (may be negative)
+#	clockval - Seconds since the epoch before the operation
+#	timezone - Time zone in which the operation is to be performed
+#	changeover - Julian Day on which the Gregorian calendar was adopted
+#		     in the target locale.
+#
+# Results:
+#	Returns the new clock value as a number of seconds since the epoch.
+#
+# Side effects:
+#	None.
+#
+#----------------------------------------------------------------------
+
+proc ::tcl::clock::AddDays { days clockval timezone changeover } {
+    variable TZData
+
+    # Convert the time to Julian Day
+
+    set date [GetDateFields $clockval $TZData($timezone) $changeover]
+    dict set date secondOfDay [expr {
+	[dict get $date localSeconds] % 86400
+    }]
+    dict set date tzName $timezone
+
+    # Add the requisite number of days
+
+    dict incr date julianDay $days
+
+    # Reconvert to a number of seconds
+
+    dict set date localSeconds [expr {
+	-210866803200
+	+ ( 86400 * wide([dict get $date julianDay]) )
+	+ [dict get $date secondOfDay]
+    }]
+    set date [ConvertLocalToUTC $date[set date {}] $TZData($timezone) \
+		  $changeover]
+
+    return [dict get $date seconds]
+
+}
+
+#----------------------------------------------------------------------
+#
+# ChangeCurrentLocale --
+#
+#        The global locale was changed within msgcat.
+#        Clears the buffered parse functions of the current locale.
+#
+# Parameters:
+#        loclist (ignored)
+#
+# Results:
+#        None.
+#
+# Side effects:
+#        Buffered parse functions are cleared.
+#
+#----------------------------------------------------------------------
+
+proc ::tcl::clock::ChangeCurrentLocale {args} {
+    variable FormatProc
+    variable LocaleNumeralCache
+    variable CachedSystemTimeZone
+    variable TimeZoneBad
+
+    foreach p [info procs [namespace current]::scanproc'*'current] {
+        rename $p {}
+    }
+    foreach p [info procs [namespace current]::formatproc'*'current] {
+        rename $p {}
+    }
+
+    catch {array unset FormatProc *'current}
+    set LocaleNumeralCache {}
+}
+
+#----------------------------------------------------------------------
+#
+# ClearCaches --
+#
+#	Clears all caches to reclaim the memory used in [clock]
+#
+# Parameters:
+#	None.
+#
+# Results:
+#	None.
+#
+# Side effects:
+#	Caches are cleared.
+#
+#----------------------------------------------------------------------
+
+proc ::tcl::clock::ClearCaches {} {
+    variable FormatProc
+    variable LocaleNumeralCache
+    variable CachedSystemTimeZone
+    variable TimeZoneBad
+
+    foreach p [info procs [namespace current]::scanproc'*] {
+	rename $p {}
+    }
+    foreach p [info procs [namespace current]::formatproc'*] {
+	rename $p {}
+    }
+
+    catch {unset FormatProc}
+    set LocaleNumeralCache {}
+    catch {unset CachedSystemTimeZone}
+    set TimeZoneBad {}
+    InitTZData
+}


Property changes on: trunk/Master/tlpkg/tltcl/lib/tcl8.6/clock.tcl
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/ascii.enc
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/ascii.enc	                        (rev 0)
+++ trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/ascii.enc	2020-03-17 20:46:21 UTC (rev 54375)
@@ -0,0 +1,20 @@
+# Encoding file: ascii, single-byte
+S
+003F 0 1
+00
+0000000100020003000400050006000700080009000A000B000C000D000E000F
+0010001100120013001400150016001700180019001A001B001C001D001E001F
+0020002100220023002400250026002700280029002A002B002C002D002E002F
+0030003100320033003400350036003700380039003A003B003C003D003E003F
+0040004100420043004400450046004700480049004A004B004C004D004E004F
+0050005100520053005400550056005700580059005A005B005C005D005E005F
+0060006100620063006400650066006700680069006A006B006C006D006E006F
+0070007100720073007400750076007700780079007A007B007C007D007E0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000


Property changes on: trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/ascii.enc
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/big5.enc
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/big5.enc	                        (rev 0)
+++ trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/big5.enc	2020-03-17 20:46:21 UTC (rev 54375)
@@ -0,0 +1,1516 @@
+# Encoding file: big5, multi-byte
+M
+003F 0 89
+00
+0000000100020003000400050006000700080009000A000B000C000D000E000F
+0010001100120013001400150016001700180019001A001B001C001D001E001F
+0020002100220023002400250026002700280029002A002B002C002D002E002F
+0030003100320033003400350036003700380039003A003B003C003D003E003F
+0040004100420043004400450046004700480049004A004B004C004D004E004F
+0050005100520053005400550056005700580059005A005B005C005D005E005F
+0060006100620063006400650066006700680069006A006B006C006D006E006F
+0070007100720073007400750076007700780079007A007B007C007D007E007F
+0080008100820083008400850086008700880089008A008B008C008D008E008F
+0090009100920093009400950096009700980099009A009B009C009D009E009F
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+A1
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+3000FF0C30013002FF0E2022FF1BFF1AFF1FFF01FE3020262025FE50FF64FE52
+00B7FE54FE55FE56FE57FF5C2013FE312014FE33FFFDFE34FE4FFF08FF09FE35
+FE36FF5BFF5DFE37FE3830143015FE39FE3A30103011FE3BFE3C300A300BFE3D
+FE3E30083009FE3FFE40300C300DFE41FE42300E300FFE43FE44FE59FE5A0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000FE5BFE5CFE5DFE5E20182019201C201D301D301E20352032FF03FF06FF0A
+203B00A7300325CB25CF25B325B225CE2606260525C725C625A125A025BD25BC
+32A32105203EFFFDFF3FFFFDFE49FE4AFE4DFE4EFE4BFE4CFE5FFE60FE61FF0B
+FF0D00D700F700B1221AFF1CFF1EFF1D226622672260221E22522261FE62FE63
+FE64FE65FE66223C2229222A22A52220221F22BF33D233D1222B222E22352234
+26402642264126092191219321902192219621972199219822252223FFFD0000
+A2
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+FFFDFF0FFF3CFF0400A5301200A200A3FF05FF2021032109FE69FE6AFE6B33D5
+339C339D339E33CE33A1338E338F33C400B05159515B515E515D5161516355E7
+74E97CCE25812582258325842585258625872588258F258E258D258C258B258A
+2589253C2534252C2524251C2594250025022595250C251025142518256D0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000256E2570256F2550255E256A256125E225E325E525E4257125722573FF10
+FF11FF12FF13FF14FF15FF16FF17FF18FF192160216121622163216421652166
+216721682169302130223023302430253026302730283029FFFD5344FFFDFF21
+FF22FF23FF24FF25FF26FF27FF28FF29FF2AFF2BFF2CFF2DFF2EFF2FFF30FF31
+FF32FF33FF34FF35FF36FF37FF38FF39FF3AFF41FF42FF43FF44FF45FF46FF47
+FF48FF49FF4AFF4BFF4CFF4DFF4EFF4FFF50FF51FF52FF53FF54FF55FF560000
+A3
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+FF57FF58FF59FF5A039103920393039403950396039703980399039A039B039C
+039D039E039F03A003A103A303A403A503A603A703A803A903B103B203B303B4
+03B503B603B703B803B903BA03BB03BC03BD03BE03BF03C003C103C303C403C5
+03C603C703C803C931053106310731083109310A310B310C310D310E310F0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00003110311131123113311431153116311731183119311A311B311C311D311E
+311F312031213122312331243125312631273128312902D902C902CA02C702CB
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+A4
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+4E004E594E014E034E434E5D4E864E8C4EBA513F5165516B51E052005201529B
+53155341535C53C84E094E0B4E084E0A4E2B4E3851E14E454E484E5F4E5E4E8E
+4EA15140520352FA534353C953E3571F58EB5915592759735B505B515B535BF8
+5C0F5C225C385C715DDD5DE55DF15DF25DF35DFE5E725EFE5F0B5F13624D0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00004E114E104E0D4E2D4E304E394E4B5C394E884E914E954E924E944EA24EC1
+4EC04EC34EC64EC74ECD4ECA4ECB4EC4514351415167516D516E516C519751F6
+52065207520852FB52FE52FF53165339534853475345535E538453CB53CA53CD
+58EC5929592B592A592D5B545C115C245C3A5C6F5DF45E7B5EFF5F145F155FC3
+62086236624B624E652F6587659765A465B965E566F0670867286B206B626B79
+6BCB6BD46BDB6C0F6C34706B722A7236723B72477259725B72AC738B4E190000
+A5
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+4E164E154E144E184E3B4E4D4E4F4E4E4EE54ED84ED44ED54ED64ED74EE34EE4
+4ED94EDE514551445189518A51AC51F951FA51F8520A52A0529F530553065317
+531D4EDF534A534953615360536F536E53BB53EF53E453F353EC53EE53E953E8
+53FC53F853F553EB53E653EA53F253F153F053E553ED53FB56DB56DA59160000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000592E5931597459765B555B835C3C5DE85DE75DE65E025E035E735E7C5F01
+5F185F175FC5620A625362546252625165A565E6672E672C672A672B672D6B63
+6BCD6C116C106C386C416C406C3E72AF7384738974DC74E67518751F75287529
+7530753175327533758B767D76AE76BF76EE77DB77E277F3793A79BE7A747ACB
+4E1E4E1F4E524E534E694E994EA44EA64EA54EFF4F094F194F0A4F154F0D4F10
+4F114F0F4EF24EF64EFB4EF04EF34EFD4F014F0B514951475146514851680000
+A6
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+5171518D51B0521752115212520E521652A3530853215320537053715409540F
+540C540A54105401540B54045411540D54085403540E5406541256E056DE56DD
+573357305728572D572C572F57295919591A59375938598459785983597D5979
+598259815B575B585B875B885B855B895BFA5C165C795DDE5E065E765E740000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00005F0F5F1B5FD95FD6620E620C620D62106263625B6258653665E965E865EC
+65ED66F266F36709673D6734673167356B216B646B7B6C166C5D6C576C596C5F
+6C606C506C556C616C5B6C4D6C4E7070725F725D767E7AF97C737CF87F367F8A
+7FBD80018003800C80128033807F8089808B808C81E381EA81F381FC820C821B
+821F826E8272827E866B8840884C8863897F96214E324EA84F4D4F4F4F474F57
+4F5E4F344F5B4F554F304F504F514F3D4F3A4F384F434F544F3C4F464F630000
+A7
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+4F5C4F604F2F4F4E4F364F594F5D4F484F5A514C514B514D517551B651B75225
+52245229522A522852AB52A952AA52AC532353735375541D542D541E543E5426
+544E542754465443543354485442541B5429544A5439543B5438542E54355436
+5420543C54405431542B541F542C56EA56F056E456EB574A57515740574D0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00005747574E573E5750574F573B58EF593E599D599259A8599E59A359995996
+598D59A45993598A59A55B5D5B5C5B5A5B5B5B8C5B8B5B8F5C2C5C405C415C3F
+5C3E5C905C915C945C8C5DEB5E0C5E8F5E875E8A5EF75F045F1F5F645F625F77
+5F795FD85FCC5FD75FCD5FF15FEB5FF85FEA6212621162846297629662806276
+6289626D628A627C627E627962736292626F6298626E62956293629162866539
+653B653865F166F4675F674E674F67506751675C6756675E6749674667600000
+A8
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+675367576B656BCF6C426C5E6C996C816C886C896C856C9B6C6A6C7A6C906C70
+6C8C6C686C966C926C7D6C836C726C7E6C746C866C766C8D6C946C986C827076
+707C707D707872627261726072C472C27396752C752B75377538768276EF77E3
+79C179C079BF7A767CFB7F5580968093809D8098809B809A80B2826F82920000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000828B828D898B89D28A008C378C468C558C9D8D648D708DB38EAB8ECA8F9B
+8FB08FC28FC68FC58FC45DE1909190A290AA90A690A3914991C691CC9632962E
+9631962A962C4E264E564E734E8B4E9B4E9E4EAB4EAC4F6F4F9D4F8D4F734F7F
+4F6C4F9B4F8B4F864F834F704F754F884F694F7B4F964F7E4F8F4F914F7A5154
+51525155516951775176517851BD51FD523B52385237523A5230522E52365241
+52BE52BB5352535453535351536653775378537953D653D453D7547354750000
+A9
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+5496547854955480547B5477548454925486547C549054715476548C549A5462
+5468548B547D548E56FA57835777576A5769576157665764577C591C59495947
+59485944595459BE59BB59D459B959AE59D159C659D059CD59CB59D359CA59AF
+59B359D259C55B5F5B645B635B975B9A5B985B9C5B995B9B5C1A5C485C450000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00005C465CB75CA15CB85CA95CAB5CB15CB35E185E1A5E165E155E1B5E115E78
+5E9A5E975E9C5E955E965EF65F265F275F295F805F815F7F5F7C5FDD5FE05FFD
+5FF55FFF600F6014602F60356016602A6015602160276029602B601B62166215
+623F623E6240627F62C962CC62C462BF62C262B962D262DB62AB62D362D462CB
+62C862A862BD62BC62D062D962C762CD62B562DA62B162D862D662D762C662AC
+62CE653E65A765BC65FA66146613660C66066602660E6600660F6615660A0000
+AA
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+6607670D670B676D678B67956771679C677367776787679D6797676F6770677F
+6789677E67906775679A6793677C676A67726B236B666B676B7F6C136C1B6CE3
+6CE86CF36CB16CCC6CE56CB36CBD6CBE6CBC6CE26CAB6CD56CD36CB86CC46CB9
+6CC16CAE6CD76CC56CF16CBF6CBB6CE16CDB6CCA6CAC6CEF6CDC6CD66CE00000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00007095708E7092708A7099722C722D723872487267726972C072CE72D972D7
+72D073A973A8739F73AB73A5753D759D7599759A768476C276F276F477E577FD
+793E7940794179C979C87A7A7A797AFA7CFE7F547F8C7F8B800580BA80A580A2
+80B180A180AB80A980B480AA80AF81E581FE820D82B3829D829982AD82BD829F
+82B982B182AC82A582AF82B882A382B082BE82B7864E8671521D88688ECB8FCE
+8FD48FD190B590B890B190B691C791D195779580961C9640963F963B96440000
+AB
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+964296B996E89752975E4E9F4EAD4EAE4FE14FB54FAF4FBF4FE04FD14FCF4FDD
+4FC34FB64FD84FDF4FCA4FD74FAE4FD04FC44FC24FDA4FCE4FDE4FB751575192
+519151A0524E5243524A524D524C524B524752C752C952C352C1530D5357537B
+539A53DB54AC54C054A854CE54C954B854A654B354C754C254BD54AA54C10000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000054C454C854AF54AB54B154BB54A954A754BF56FF5782578B57A057A357A2
+57CE57AE579359555951594F594E595059DC59D859FF59E359E85A0359E559EA
+59DA59E65A0159FB5B695BA35BA65BA45BA25BA55C015C4E5C4F5C4D5C4B5CD9
+5CD25DF75E1D5E255E1F5E7D5EA05EA65EFA5F085F2D5F655F885F855F8A5F8B
+5F875F8C5F896012601D60206025600E6028604D60706068606260466043606C
+606B606A6064624162DC6316630962FC62ED630162EE62FD630762F162F70000
+AC
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+62EF62EC62FE62F463116302653F654565AB65BD65E26625662D66206627662F
+661F66286631662466F767FF67D367F167D467D067EC67B667AF67F567E967EF
+67C467D167B467DA67E567B867CF67DE67F367B067D967E267DD67D26B6A6B83
+6B866BB56BD26BD76C1F6CC96D0B6D326D2A6D416D256D0C6D316D1E6D170000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00006D3B6D3D6D3E6D366D1B6CF56D396D276D386D296D2E6D356D0E6D2B70AB
+70BA70B370AC70AF70AD70B870AE70A472307272726F727472E972E072E173B7
+73CA73BB73B273CD73C073B3751A752D754F754C754E754B75AB75A475A575A2
+75A3767876867687768876C876C676C376C5770176F976F87709770B76FE76FC
+770777DC78027814780C780D794679497948794779B979BA79D179D279CB7A7F
+7A817AFF7AFD7C7D7D027D057D007D097D077D047D067F387F8E7FBF80040000
+AD
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+8010800D8011803680D680E580DA80C380C480CC80E180DB80CE80DE80E480DD
+81F4822282E78303830582E382DB82E6830482E58302830982D282D782F18301
+82DC82D482D182DE82D382DF82EF830686508679867B867A884D886B898189D4
+8A088A028A038C9E8CA08D748D738DB48ECD8ECC8FF08FE68FE28FEA8FE50000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00008FED8FEB8FE48FE890CA90CE90C190C3914B914A91CD95829650964B964C
+964D9762976997CB97ED97F3980198A898DB98DF999699994E584EB3500C500D
+50234FEF502650254FF8502950165006503C501F501A501250114FFA50005014
+50284FF15021500B501950184FF34FEE502D502A4FFE502B5009517C51A451A5
+51A251CD51CC51C651CB5256525C5254525B525D532A537F539F539D53DF54E8
+55105501553754FC54E554F2550654FA551454E954ED54E1550954EE54EA0000
+AE
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+54E65527550754FD550F5703570457C257D457CB57C35809590F59575958595A
+5A115A185A1C5A1F5A1B5A1359EC5A205A235A295A255A0C5A095B6B5C585BB0
+5BB35BB65BB45BAE5BB55BB95BB85C045C515C555C505CED5CFD5CFB5CEA5CE8
+5CF05CF65D015CF45DEE5E2D5E2B5EAB5EAD5EA75F315F925F915F9060590000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00006063606560506055606D6069606F6084609F609A608D6094608C60856096
+624762F3630862FF634E633E632F635563426346634F6349633A6350633D632A
+632B6328634D634C65486549659965C165C566426649664F66436652664C6645
+664166F867146715671768216838684868466853683968426854682968B36817
+684C6851683D67F468506840683C6843682A68456813681868416B8A6B896BB7
+6C236C276C286C266C246CF06D6A6D956D886D876D666D786D776D596D930000
+AF
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+6D6C6D896D6E6D5A6D746D696D8C6D8A6D796D856D656D9470CA70D870E470D9
+70C870CF7239727972FC72F972FD72F872F7738673ED740973EE73E073EA73DE
+7554755D755C755A755975BE75C575C775B275B375BD75BC75B975C275B8768B
+76B076CA76CD76CE7729771F7720772877E9783078277838781D783478370000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00007825782D7820781F7832795579507960795F7956795E795D7957795A79E4
+79E379E779DF79E679E979D87A847A887AD97B067B117C897D217D177D0B7D0A
+7D207D227D147D107D157D1A7D1C7D0D7D197D1B7F3A7F5F7F947FC57FC18006
+8018801580198017803D803F80F1810280F0810580ED80F4810680F880F38108
+80FD810A80FC80EF81ED81EC82008210822A822B8228822C82BB832B83528354
+834A83388350834983358334834F833283398336831783408331832883430000
+B0
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+8654868A86AA869386A486A9868C86A3869C8870887788818882887D88798A18
+8A108A0E8A0C8A158A0A8A178A138A168A0F8A118C488C7A8C798CA18CA28D77
+8EAC8ED28ED48ECF8FB1900190068FF790008FFA8FF490038FFD90058FF89095
+90E190DD90E29152914D914C91D891DD91D791DC91D995839662966396610000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000965B965D96649658965E96BB98E299AC9AA89AD89B259B329B3C4E7E507A
+507D505C50475043504C505A504950655076504E5055507550745077504F500F
+506F506D515C519551F0526A526F52D252D952D852D55310530F5319533F5340
+533E53C366FC5546556A55665544555E55615543554A55315556554F5555552F
+55645538552E555C552C55635533554155575708570B570957DF5805580A5806
+57E057E457FA5802583557F757F9592059625A365A415A495A665A6A5A400000
+B1
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+5A3C5A625A5A5A465A4A5B705BC75BC55BC45BC25BBF5BC65C095C085C075C60
+5C5C5C5D5D075D065D0E5D1B5D165D225D115D295D145D195D245D275D175DE2
+5E385E365E335E375EB75EB85EB65EB55EBE5F355F375F575F6C5F695F6B5F97
+5F995F9E5F985FA15FA05F9C607F60A3608960A060A860CB60B460E660BD0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000060C560BB60B560DC60BC60D860D560C660DF60B860DA60C7621A621B6248
+63A063A76372639663A263A563776367639863AA637163A963896383639B636B
+63A863846388639963A163AC6392638F6380637B63696368637A655D65566551
+65596557555F654F655865556554659C659B65AC65CF65CB65CC65CE665D665A
+666466686666665E66F952D7671B688168AF68A2689368B5687F687668B168A7
+689768B0688368C468AD688668856894689D68A8689F68A168826B326BBA0000
+B2
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+6BEB6BEC6C2B6D8E6DBC6DF36DD96DB26DE16DCC6DE46DFB6DFA6E056DC76DCB
+6DAF6DD16DAE6DDE6DF96DB86DF76DF56DC56DD26E1A6DB56DDA6DEB6DD86DEA
+6DF16DEE6DE86DC66DC46DAA6DEC6DBF6DE670F97109710A70FD70EF723D727D
+7281731C731B73167313731973877405740A7403740673FE740D74E074F60000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000074F7751C75227565756675627570758F75D475D575B575CA75CD768E76D4
+76D276DB7737773E773C77367738773A786B7843784E79657968796D79FB7A92
+7A957B207B287B1B7B2C7B267B197B1E7B2E7C927C977C957D467D437D717D2E
+7D397D3C7D407D307D337D447D2F7D427D327D317F3D7F9E7F9A7FCC7FCE7FD2
+801C804A8046812F81168123812B81298130812482028235823782368239838E
+839E8398837883A2839683BD83AB8392838A8393838983A08377837B837C0000
+B3
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+838683A786555F6A86C786C086B686C486B586C686CB86B186AF86C98853889E
+888888AB88928896888D888B8993898F8A2A8A1D8A238A258A318A2D8A1F8A1B
+8A228C498C5A8CA98CAC8CAB8CA88CAA8CA78D678D668DBE8DBA8EDB8EDF9019
+900D901A90179023901F901D90109015901E9020900F90229016901B90140000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000090E890ED90FD915791CE91F591E691E391E791ED91E99589966A96759673
+96789670967496769677966C96C096EA96E97AE07ADF980298039B5A9CE59E75
+9E7F9EA59EBB50A2508D508550995091508050965098509A670051F152725274
+5275526952DE52DD52DB535A53A5557B558055A7557C558A559D55985582559C
+55AA55945587558B558355B355AE559F553E55B2559A55BB55AC55B1557E5589
+55AB5599570D582F582A58345824583058315821581D582058F958FA59600000
+B4
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+5A775A9A5A7F5A925A9B5AA75B735B715BD25BCC5BD35BD05C0A5C0B5C315D4C
+5D505D345D475DFD5E455E3D5E405E435E7E5ECA5EC15EC25EC45F3C5F6D5FA9
+5FAA5FA860D160E160B260B660E0611C612360FA611560F060FB60F4616860F1
+610E60F6610961006112621F624963A3638C63CF63C063E963C963C663CD0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000063D263E363D063E163D663ED63EE637663F463EA63DB645263DA63F9655E
+6566656265636591659065AF666E667066746676666F6691667A667E667766FE
+66FF671F671D68FA68D568E068D868D7690568DF68F568EE68E768F968D268F2
+68E368CB68CD690D6912690E68C968DA696E68FB6B3E6B3A6B3D6B986B966BBC
+6BEF6C2E6C2F6C2C6E2F6E386E546E216E326E676E4A6E206E256E236E1B6E5B
+6E586E246E566E6E6E2D6E266E6F6E346E4D6E3A6E2C6E436E1D6E3E6ECB0000
+B5
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+6E896E196E4E6E636E446E726E696E5F7119711A7126713071217136716E711C
+724C728472807336732573347329743A742A743374227425743574367434742F
+741B7426742875257526756B756A75E275DB75E375D975D875DE75E0767B767C
+7696769376B476DC774F77ED785D786C786F7A0D7A087A0B7A057A007A980000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00007A977A967AE57AE37B497B567B467B507B527B547B4D7B4B7B4F7B517C9F
+7CA57D5E7D507D687D557D2B7D6E7D727D617D667D627D707D7355847FD47FD5
+800B8052808581558154814B8151814E81398146813E814C815381748212821C
+83E9840383F8840D83E083C5840B83C183EF83F183F48457840A83F0840C83CC
+83FD83F283CA8438840E840483DC840783D483DF865B86DF86D986ED86D486DB
+86E486D086DE885788C188C288B1898389968A3B8A608A558A5E8A3C8A410000
+B6
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+8A548A5B8A508A468A348A3A8A368A568C618C828CAF8CBC8CB38CBD8CC18CBB
+8CC08CB48CB78CB68CBF8CB88D8A8D858D818DCE8DDD8DCB8DDA8DD18DCC8DDB
+8DC68EFB8EF88EFC8F9C902E90359031903890329036910290F5910990FE9163
+916591CF9214921592239209921E920D9210920792119594958F958B95910000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000095939592958E968A968E968B967D96859686968D9672968496C196C596C4
+96C696C796EF96F297CC98059806980898E798EA98EF98E998F298ED99AE99AD
+9EC39ECD9ED14E8250AD50B550B250B350C550BE50AC50B750BB50AF50C7527F
+5277527D52DF52E652E452E252E3532F55DF55E855D355E655CE55DC55C755D1
+55E355E455EF55DA55E155C555C655E555C957125713585E585158585857585A
+5854586B584C586D584A58625852584B59675AC15AC95ACC5ABE5ABD5ABC0000
+B7
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+5AB35AC25AB25D695D6F5E4C5E795EC95EC85F125F595FAC5FAE611A610F6148
+611F60F3611B60F961016108614E614C6144614D613E61346127610D61066137
+622162226413643E641E642A642D643D642C640F641C6414640D643664166417
+6406656C659F65B06697668966876688669666846698668D67036994696D0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000695A697769606954697569306982694A6968696B695E695369796986695D
+6963695B6B476B726BC06BBF6BD36BFD6EA26EAF6ED36EB66EC26E906E9D6EC7
+6EC56EA56E986EBC6EBA6EAB6ED16E966E9C6EC46ED46EAA6EA76EB4714E7159
+7169716471497167715C716C7166714C7165715E714671687156723A72527337
+7345733F733E746F745A7455745F745E7441743F7459745B745C757675787600
+75F0760175F275F175FA75FF75F475F376DE76DF775B776B7766775E77630000
+B8
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+7779776A776C775C77657768776277EE788E78B078977898788C7889787C7891
+7893787F797A797F7981842C79BD7A1C7A1A7A207A147A1F7A1E7A9F7AA07B77
+7BC07B607B6E7B677CB17CB37CB57D937D797D917D817D8F7D5B7F6E7F697F6A
+7F727FA97FA87FA480568058808680848171817081788165816E8173816B0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00008179817A81668205824784828477843D843184758466846B8449846C845B
+843C8435846184638469846D8446865E865C865F86F9871387088707870086FE
+86FB870287038706870A885988DF88D488D988DC88D888DD88E188CA88D588D2
+899C89E38A6B8A728A738A668A698A708A878A7C8A638AA08A718A858A6D8A62
+8A6E8A6C8A798A7B8A3E8A688C628C8A8C898CCA8CC78CC88CC48CB28CC38CC2
+8CC58DE18DDF8DE88DEF8DF38DFA8DEA8DE48DE68EB28F038F098EFE8F0A0000
+B9
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+8F9F8FB2904B904A905390429054903C905590509047904F904E904D9051903E
+904191129117916C916A916991C9923792579238923D9240923E925B924B9264
+925192349249924D92459239923F925A959896989694969596CD96CB96C996CA
+96F796FB96F996F6975697749776981098119813980A9812980C98FC98F40000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000098FD98FE99B399B199B49AE19CE99E829F0E9F139F2050E750EE50E550D6
+50ED50DA50D550CF50D150F150CE50E9516251F352835282533153AD55FE5600
+561B561755FD561456065609560D560E55F75616561F5608561055F657185716
+5875587E58835893588A58795885587D58FD592559225924596A59695AE15AE6
+5AE95AD75AD65AD85AE35B755BDE5BE75BE15BE55BE65BE85BE25BE45BDF5C0D
+5C625D845D875E5B5E635E555E575E545ED35ED65F0A5F465F705FB961470000
+BA
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+613F614B617761626163615F615A61586175622A64876458645464A46478645F
+647A645164676434646D647B657265A165D765D666A266A8669D699C69A86995
+69C169AE69D369CB699B69B769BB69AB69B469D069CD69AD69CC69A669C369A3
+6B496B4C6C336F336F146EFE6F136EF46F296F3E6F206F2C6F0F6F026F220000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00006EFF6EEF6F066F316F386F326F236F156F2B6F2F6F886F2A6EEC6F016EF2
+6ECC6EF771947199717D718A71847192723E729272967344735074647463746A
+7470746D750475917627760D760B7609761376E176E37784777D777F776178C1
+789F78A778B378A978A3798E798F798D7A2E7A317AAA7AA97AED7AEF7BA17B95
+7B8B7B757B977B9D7B947B8F7BB87B877B847CB97CBD7CBE7DBB7DB07D9C7DBD
+7DBE7DA07DCA7DB47DB27DB17DBA7DA27DBF7DB57DB87DAD7DD27DC77DAC0000
+BB
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+7F707FE07FE17FDF805E805A808781508180818F8188818A817F818281E781FA
+82078214821E824B84C984BF84C684C48499849E84B2849C84CB84B884C084D3
+849084BC84D184CA873F871C873B872287258734871887558737872988F38902
+88F488F988F888FD88E8891A88EF8AA68A8C8A9E8AA38A8D8AA18A938AA40000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00008AAA8AA58AA88A988A918A9A8AA78C6A8C8D8C8C8CD38CD18CD28D6B8D99
+8D958DFC8F148F128F158F138FA390609058905C90639059905E9062905D905B
+91199118911E917591789177917492789280928592989296927B9293929C92A8
+927C929195A195A895A995A395A595A49699969C969B96CC96D29700977C9785
+97F69817981898AF98B199039905990C990999C19AAF9AB09AE69B419B429CF4
+9CF69CF39EBC9F3B9F4A5104510050FB50F550F9510251085109510551DC0000
+BC
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+528752885289528D528A52F053B2562E563B56395632563F563456295653564E
+565756745636562F56305880589F589E58B3589C58AE58A958A6596D5B095AFB
+5B0B5AF55B0C5B085BEE5BEC5BE95BEB5C645C655D9D5D945E625E5F5E615EE2
+5EDA5EDF5EDD5EE35EE05F485F715FB75FB561766167616E615D615561820000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000617C6170616B617E61A7619061AB618E61AC619A61A4619461AE622E6469
+646F6479649E64B26488649064B064A56493649564A9649264AE64AD64AB649A
+64AC649964A264B365756577657866AE66AB66B466B16A236A1F69E86A016A1E
+6A1969FD6A216A136A0A69F36A026A0569ED6A116B506B4E6BA46BC56BC66F3F
+6F7C6F846F516F666F546F866F6D6F5B6F786F6E6F8E6F7A6F706F646F976F58
+6ED56F6F6F606F5F719F71AC71B171A87256729B734E73577469748B74830000
+BD
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+747E7480757F76207629761F7624762676217622769A76BA76E4778E7787778C
+7791778B78CB78C578BA78CA78BE78D578BC78D07A3F7A3C7A407A3D7A377A3B
+7AAF7AAE7BAD7BB17BC47BB47BC67BC77BC17BA07BCC7CCA7DE07DF47DEF7DFB
+7DD87DEC7DDD7DE87DE37DDA7DDE7DE97D9E7DD97DF27DF97F757F777FAF0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00007FE98026819B819C819D81A0819A81988517853D851A84EE852C852D8513
+851185238521851484EC852584FF850687828774877687608766877887688759
+8757874C8753885B885D89108907891289138915890A8ABC8AD28AC78AC48A95
+8ACB8AF88AB28AC98AC28ABF8AB08AD68ACD8AB68AB98ADB8C4C8C4E8C6C8CE0
+8CDE8CE68CE48CEC8CED8CE28CE38CDC8CEA8CE18D6D8D9F8DA38E2B8E108E1D
+8E228E0F8E298E1F8E218E1E8EBA8F1D8F1B8F1F8F298F268F2A8F1C8F1E0000
+BE
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+8F259069906E9068906D90779130912D9127913191879189918B918392C592BB
+92B792EA92AC92E492C192B392BC92D292C792F092B295AD95B1970497069707
+97099760978D978B978F9821982B981C98B3990A99139912991899DD99D099DF
+99DB99D199D599D299D99AB79AEE9AEF9B279B459B449B779B6F9D069D090000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00009D039EA99EBE9ECE58A89F5251125118511451105115518051AA51DD5291
+529352F35659566B5679566956645678566A566856655671566F566C56625676
+58C158BE58C758C5596E5B1D5B345B785BF05C0E5F4A61B2619161A9618A61CD
+61B661BE61CA61C8623064C564C164CB64BB64BC64DA64C464C764C264CD64BF
+64D264D464BE657466C666C966B966C466C766B86A3D6A386A3A6A596A6B6A58
+6A396A446A626A616A4B6A476A356A5F6A486B596B776C056FC26FB16FA10000
+BF
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+6FC36FA46FC16FA76FB36FC06FB96FB66FA66FA06FB471BE71C971D071D271C8
+71D571B971CE71D971DC71C371C47368749C74A37498749F749E74E2750C750D
+76347638763A76E776E577A0779E779F77A578E878DA78EC78E779A67A4D7A4E
+7A467A4C7A4B7ABA7BD97C117BC97BE47BDB7BE17BE97BE67CD57CD67E0A0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00007E117E087E1B7E237E1E7E1D7E097E107F797FB27FF07FF17FEE802881B3
+81A981A881FB820882588259854A855985488568856985438549856D856A855E
+8783879F879E87A2878D8861892A89328925892B892189AA89A68AE68AFA8AEB
+8AF18B008ADC8AE78AEE8AFE8B018B028AF78AED8AF38AF68AFC8C6B8C6D8C93
+8CF48E448E318E348E428E398E358F3B8F2F8F388F338FA88FA6907590749078
+9072907C907A913491929320933692F89333932F932292FC932B9304931A0000
+C0
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+9310932693219315932E931995BB96A796A896AA96D5970E97119716970D9713
+970F975B975C9766979898309838983B9837982D9839982499109928991E991B
+9921991A99ED99E299F19AB89ABC9AFB9AED9B289B919D159D239D269D289D12
+9D1B9ED89ED49F8D9F9C512A511F5121513252F5568E56805690568556870000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000568F58D558D358D158CE5B305B2A5B245B7A5C375C685DBC5DBA5DBD5DB8
+5E6B5F4C5FBD61C961C261C761E661CB6232623464CE64CA64D864E064F064E6
+64EC64F164E264ED6582658366D966D66A806A946A846AA26A9C6ADB6AA36A7E
+6A976A906AA06B5C6BAE6BDA6C086FD86FF16FDF6FE06FDB6FE46FEB6FEF6F80
+6FEC6FE16FE96FD56FEE6FF071E771DF71EE71E671E571ED71EC71F471E07235
+72467370737274A974B074A674A876467642764C76EA77B377AA77B077AC0000
+C1
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+77A777AD77EF78F778FA78F478EF790179A779AA7A577ABF7C077C0D7BFE7BF7
+7C0C7BE07CE07CDC7CDE7CE27CDF7CD97CDD7E2E7E3E7E467E377E327E437E2B
+7E3D7E317E457E417E347E397E487E357E3F7E2F7F447FF37FFC807180728070
+806F807381C681C381BA81C281C081BF81BD81C981BE81E88209827185AA0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00008584857E859C8591859485AF859B858785A8858A866787C087D187B387D2
+87C687AB87BB87BA87C887CB893B893689448938893D89AC8B0E8B178B198B1B
+8B0A8B208B1D8B048B108C418C3F8C738CFA8CFD8CFC8CF88CFB8DA88E498E4B
+8E488E4A8F448F3E8F428F458F3F907F907D9084908190829080913991A3919E
+919C934D938293289375934A9365934B9318937E936C935B9370935A935495CA
+95CB95CC95C895C696B196B896D6971C971E97A097D3984698B699359A010000
+C2
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+99FF9BAE9BAB9BAA9BAD9D3B9D3F9E8B9ECF9EDE9EDC9EDD9EDB9F3E9F4B53E2
+569556AE58D958D85B385F5D61E3623364F464F264FE650664FA64FB64F765B7
+66DC67266AB36AAC6AC36ABB6AB86AC26AAE6AAF6B5F6B786BAF7009700B6FFE
+70066FFA7011700F71FB71FC71FE71F87377737574A774BF7515765676580000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000765277BD77BF77BB77BC790E79AE7A617A627A607AC47AC57C2B7C277C2A
+7C1E7C237C217CE77E547E557E5E7E5A7E617E527E597F487FF97FFB80778076
+81CD81CF820A85CF85A985CD85D085C985B085BA85B985A687EF87EC87F287E0
+898689B289F48B288B398B2C8B2B8C508D058E598E638E668E648E5F8E558EC0
+8F498F4D90879083908891AB91AC91D09394938A939693A293B393AE93AC93B0
+9398939A939795D495D695D095D596E296DC96D996DB96DE972497A397A60000
+C3
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+97AD97F9984D984F984C984E985398BA993E993F993D992E99A59A0E9AC19B03
+9B069B4F9B4E9B4D9BCA9BC99BFD9BC89BC09D519D5D9D609EE09F159F2C5133
+56A558DE58DF58E25BF59F905EEC61F261F761F661F56500650F66E066DD6AE5
+6ADD6ADA6AD3701B701F7028701A701D701570187206720D725872A273780000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000737A74BD74CA74E375877586765F766177C7791979B17A6B7A697C3E7C3F
+7C387C3D7C377C407E6B7E6D7E797E697E6A7F857E737FB67FB97FB881D885E9
+85DD85EA85D585E485E585F787FB8805880D87F987FE8960895F8956895E8B41
+8B5C8B588B498B5A8B4E8B4F8B468B598D088D0A8E7C8E728E878E768E6C8E7A
+8E748F548F4E8FAD908A908B91B191AE93E193D193DF93C393C893DC93DD93D6
+93E293CD93D893E493D793E895DC96B496E3972A9727976197DC97FB985E0000
+C4
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+9858985B98BC994599499A169A199B0D9BE89BE79BD69BDB9D899D619D729D6A
+9D6C9E929E979E939EB452F856A856B756B656B456BC58E45B405B435B7D5BF6
+5DC961F861FA65186514651966E667276AEC703E703070327210737B74CF7662
+76657926792A792C792B7AC77AF67C4C7C437C4D7CEF7CF08FAE7E7D7E7C0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00007E827F4C800081DA826685FB85F9861185FA8606860B8607860A88148815
+896489BA89F88B708B6C8B668B6F8B5F8B6B8D0F8D0D8E898E818E858E8291B4
+91CB9418940393FD95E1973098C49952995199A89A2B9A309A379A359C139C0D
+9E799EB59EE89F2F9F5F9F639F615137513856C156C056C259145C6C5DCD61FC
+61FE651D651C659566E96AFB6B046AFA6BB2704C721B72A774D674D4766977D3
+7C507E8F7E8C7FBC8617862D861A882388228821881F896A896C89BD8B740000
+C5
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+8B778B7D8D138E8A8E8D8E8B8F5F8FAF91BA942E94339435943A94389432942B
+95E297389739973297FF9867986599579A459A439A409A3E9ACF9B549B519C2D
+9C259DAF9DB49DC29DB89E9D9EEF9F199F5C9F669F67513C513B56C856CA56C9
+5B7F5DD45DD25F4E61FF65246B0A6B6170517058738074E4758A766E766C0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000079B37C607C5F807E807D81DF8972896F89FC8B808D168D178E918E938F61
+9148944494519452973D973E97C397C1986B99559A559A4D9AD29B1A9C499C31
+9C3E9C3B9DD39DD79F349F6C9F6A9F9456CC5DD662006523652B652A66EC6B10
+74DA7ACA7C647C637C657E937E967E9481E28638863F88318B8A9090908F9463
+946094649768986F995C9A5A9A5B9A579AD39AD49AD19C549C579C569DE59E9F
+9EF456D158E9652C705E7671767277D77F507F888836883988628B938B920000
+C6
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+8B9682778D1B91C0946A97429748974497C698709A5F9B229B589C5F9DF99DFA
+9E7C9E7D9F079F779F725EF36B1670637C6C7C6E883B89C08EA191C194729470
+9871995E9AD69B239ECC706477DA8B9A947797C99A629A657E9C8B9C8EAA91C5
+947D947E947C9C779C789EF78C54947F9E1A72289A6A9B319E1B9E1E7C720000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000030FE309D309E3005304130423043304430453046304730483049304A304B
+304C304D304E304F3050305130523053305430553056305730583059305A305B
+305C305D305E305F3060306130623063306430653066306730683069306A306B
+306C306D306E306F3070307130723073307430753076307730783079307A307B
+307C307D307E307F3080308130823083308430853086308730883089308A308B
+308C308D308E308F309030913092309330A130A230A330A430A530A630A70000
+C7
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+30A830A930AA30AB30AC30AD30AE30AF30B030B130B230B330B430B530B630B7
+30B830B930BA30BB30BC30BD30BE30BF30C030C130C230C330C430C530C630C7
+30C830C930CA30CB30CC30CD30CE30CF30D030D130D230D330D430D530D630D7
+30D830D930DA30DB30DC30DD30DE30DF30E030E130E230E330E430E530E60000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000030E730E830E930EA30EB30EC30ED30EE30EF30F030F130F230F330F430F5
+30F60414041504010416041704180419041A041B041C04230424042504260427
+04280429042A042B042C042D042E042F04300431043204330434043504510436
+043704380439043A043B043C043D043E043F0440044104420443044404450446
+044704480449044A044B044C044D044E044F2460246124622463246424652466
+246724682469247424752476247724782479247A247B247C247D000000000000
+C9
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+4E424E5C51F5531A53824E074E0C4E474E8D56D7FA0C5C6E5F734E0F51874E0E
+4E2E4E934EC24EC94EC8519852FC536C53B957205903592C5C105DFF65E16BB3
+6BCC6C14723F4E314E3C4EE84EDC4EE94EE14EDD4EDA520C531C534C57225723
+5917592F5B815B845C125C3B5C745C735E045E805E825FC9620962506C150000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00006C366C436C3F6C3B72AE72B0738A79B8808A961E4F0E4F184F2C4EF54F14
+4EF14F004EF74F084F1D4F024F054F224F134F044EF44F1251B1521352095210
+52A65322531F534D538A540756E156DF572E572A5734593C5980597C5985597B
+597E5977597F5B565C155C255C7C5C7A5C7B5C7E5DDF5E755E845F025F1A5F74
+5FD55FD45FCF625C625E626462616266626262596260625A626565EF65EE673E
+67396738673B673A673F673C67336C186C466C526C5C6C4F6C4A6C546C4B0000
+CA
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+6C4C7071725E72B472B5738E752A767F7A757F518278827C8280827D827F864D
+897E909990979098909B909496229624962096234F564F3B4F624F494F534F64
+4F3E4F674F524F5F4F414F584F2D4F334F3F4F61518F51B9521C521E522152AD
+52AE530953635372538E538F54305437542A545454455419541C542554180000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000543D544F544154285424544756EE56E756E557415745574C5749574B5752
+5906594059A6599859A05997598E59A25990598F59A759A15B8E5B925C285C2A
+5C8D5C8F5C885C8B5C895C925C8A5C865C935C955DE05E0A5E0E5E8B5E895E8C
+5E885E8D5F055F1D5F785F765FD25FD15FD05FED5FE85FEE5FF35FE15FE45FE3
+5FFA5FEF5FF75FFB60005FF4623A6283628C628E628F629462876271627B627A
+6270628162886277627D62726274653765F065F465F365F265F5674567470000
+CB
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+67596755674C6748675D674D675A674B6BD06C196C1A6C786C676C6B6C846C8B
+6C8F6C716C6F6C696C9A6C6D6C876C956C9C6C666C736C656C7B6C8E7074707A
+726372BF72BD72C372C672C172BA72C573957397739373947392753A75397594
+75957681793D80348095809980908092809C8290828F8285828E829182930000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000828A828382848C788FC98FBF909F90A190A5909E90A790A096309628962F
+962D4E334F984F7C4F854F7D4F804F874F764F744F894F844F774F4C4F974F6A
+4F9A4F794F814F784F904F9C4F944F9E4F924F824F954F6B4F6E519E51BC51BE
+5235523252335246523152BC530A530B533C539253945487547F548154915482
+5488546B547A547E5465546C54745466548D546F546154605498546354675464
+56F756F9576F5772576D576B57715770577657805775577B5773577457620000
+CC
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+5768577D590C594559B559BA59CF59CE59B259CC59C159B659BC59C359D659B1
+59BD59C059C859B459C75B625B655B935B955C445C475CAE5CA45CA05CB55CAF
+5CA85CAC5C9F5CA35CAD5CA25CAA5CA75C9D5CA55CB65CB05CA65E175E145E19
+5F285F225F235F245F545F825F7E5F7D5FDE5FE5602D602660196032600B0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00006034600A60176033601A601E602C6022600D6010602E60136011600C6009
+601C6214623D62AD62B462D162BE62AA62B662CA62AE62B362AF62BB62A962B0
+62B8653D65A865BB660965FC66046612660865FB6603660B660D660565FD6611
+661066F6670A6785676C678E67926776677B6798678667846774678D678C677A
+679F679167996783677D67816778677967946B256B806B7E6BDE6C1D6C936CEC
+6CEB6CEE6CD96CB66CD46CAD6CE76CB76CD06CC26CBA6CC36CC66CED6CF20000
+CD
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+6CD26CDD6CB46C8A6C9D6C806CDE6CC06D306CCD6CC76CB06CF96CCF6CE96CD1
+709470987085709370867084709170967082709A7083726A72D672CB72D872C9
+72DC72D272D472DA72CC72D173A473A173AD73A673A273A073AC739D74DD74E8
+753F7540753E758C759876AF76F376F176F076F577F877FC77F977FB77FA0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000077F77942793F79C57A787A7B7AFB7C757CFD8035808F80AE80A380B880B5
+80AD822082A082C082AB829A8298829B82B582A782AE82BC829E82BA82B482A8
+82A182A982C282A482C382B682A28670866F866D866E8C568FD28FCB8FD38FCD
+8FD68FD58FD790B290B490AF90B390B09639963D963C963A96434FCD4FC54FD3
+4FB24FC94FCB4FC14FD44FDC4FD94FBB4FB34FDB4FC74FD64FBA4FC04FB94FEC
+5244524952C052C2533D537C539753965399539854BA54A154AD54A554CF0000
+CE
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+54C3830D54B754AE54D654B654C554C654A0547054BC54A254BE547254DE54B0
+57B5579E579F57A4578C5797579D579B57945798578F579957A5579A579558F4
+590D595359E159DE59EE5A0059F159DD59FA59FD59FC59F659E459F259F759DB
+59E959F359F559E059FE59F459ED5BA85C4C5CD05CD85CCC5CD75CCB5CDB0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00005CDE5CDA5CC95CC75CCA5CD65CD35CD45CCF5CC85CC65CCE5CDF5CF85DF9
+5E215E225E235E205E245EB05EA45EA25E9B5EA35EA55F075F2E5F565F866037
+603960546072605E6045605360476049605B604C60406042605F602460446058
+6066606E6242624362CF630D630B62F5630E630362EB62F9630F630C62F862F6
+63006313631462FA631562FB62F06541654365AA65BF6636662166326635661C
+662666226633662B663A661D66346639662E670F671067C167F267C867BA0000
+CF
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+67DC67BB67F867D867C067B767C567EB67E467DF67B567CD67B367F767F667EE
+67E367C267B967CE67E767F067B267FC67C667ED67CC67AE67E667DB67FA67C9
+67CA67C367EA67CB6B286B826B846BB66BD66BD86BE06C206C216D286D346D2D
+6D1F6D3C6D3F6D126D0A6CDA6D336D046D196D3A6D1A6D116D006D1D6D420000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00006D016D186D376D036D0F6D406D076D206D2C6D086D226D096D1070B7709F
+70BE70B170B070A170B470B570A972417249724A726C72707273726E72CA72E4
+72E872EB72DF72EA72E672E3738573CC73C273C873C573B973B673B573B473EB
+73BF73C773BE73C373C673B873CB74EC74EE752E7547754875A775AA767976C4
+7708770377047705770A76F776FB76FA77E777E878067811781278057810780F
+780E780978037813794A794C794B7945794479D579CD79CF79D679CE7A800000
+D0
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+7A7E7AD17B007B017C7A7C787C797C7F7C807C817D037D087D017F587F917F8D
+7FBE8007800E800F8014803780D880C780E080D180C880C280D080C580E380D9
+80DC80CA80D580C980CF80D780E680CD81FF8221829482D982FE82F9830782E8
+830082D5833A82EB82D682F482EC82E182F282F5830C82FB82F682F082EA0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000082E482E082FA82F382ED86778674867C86738841884E8867886A886989D3
+8A048A078D728FE38FE18FEE8FE090F190BD90BF90D590C590BE90C790CB90C8
+91D491D39654964F96519653964A964E501E50055007501350225030501B4FF5
+4FF450335037502C4FF64FF75017501C502050275035502F5031500E515A5194
+519351CA51C451C551C851CE5261525A5252525E525F5255526252CD530E539E
+552654E25517551254E754F354E4551A54FF5504550854EB5511550554F10000
+D1
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+550A54FB54F754F854E0550E5503550B5701570257CC583257D557D257BA57C6
+57BD57BC57B857B657BF57C757D057B957C1590E594A5A195A165A2D5A2E5A15
+5A0F5A175A0A5A1E5A335B6C5BA75BAD5BAC5C035C565C545CEC5CFF5CEE5CF1
+5CF75D005CF95E295E285EA85EAE5EAA5EAC5F335F305F67605D605A60670000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000604160A26088608060926081609D60836095609B60976087609C608E6219
+624662F263106356632C634463456336634363E46339634B634A633C63296341
+6334635863546359632D63476333635A63516338635763406348654A654665C6
+65C365C465C2664A665F6647665167126713681F681A684968326833683B684B
+684F68166831681C6835682B682D682F684E68446834681D6812681468266828
+682E684D683A682568206B2C6B2F6B2D6B316B346B6D80826B886BE66BE40000
+D2
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+6BE86BE36BE26BE76C256D7A6D636D646D766D0D6D616D926D586D626D6D6D6F
+6D916D8D6DEF6D7F6D866D5E6D676D606D976D706D7C6D5F6D826D986D2F6D68
+6D8B6D7E6D806D846D166D836D7B6D7D6D756D9070DC70D370D170DD70CB7F39
+70E270D770D270DE70E070D470CD70C570C670C770DA70CE70E1724272780000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000072777276730072FA72F472FE72F672F372FB730173D373D973E573D673BC
+73E773E373E973DC73D273DB73D473DD73DA73D773D873E874DE74DF74F474F5
+7521755B755F75B075C175BB75C475C075BF75B675BA768A76C9771D771B7710
+771377127723771177157719771A772277277823782C78227835782F7828782E
+782B782178297833782A78317954795B794F795C79537952795179EB79EC79E0
+79EE79ED79EA79DC79DE79DD7A867A897A857A8B7A8C7A8A7A877AD87B100000
+D3
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+7B047B137B057B0F7B087B0A7B0E7B097B127C847C917C8A7C8C7C887C8D7C85
+7D1E7D1D7D117D0E7D187D167D137D1F7D127D0F7D0C7F5C7F617F5E7F607F5D
+7F5B7F967F927FC37FC27FC08016803E803980FA80F280F980F5810180FB8100
+8201822F82258333832D83448319835183258356833F83418326831C83220000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00008342834E831B832A8308833C834D8316832483208337832F832983478345
+834C8353831E832C834B832783488653865286A286A88696868D8691869E8687
+86978686868B869A868586A5869986A186A786958698868E869D869086948843
+8844886D88758876887288808871887F886F8883887E8874887C8A128C478C57
+8C7B8CA48CA38D768D788DB58DB78DB68ED18ED38FFE8FF590028FFF8FFB9004
+8FFC8FF690D690E090D990DA90E390DF90E590D890DB90D790DC90E491500000
+D4
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+914E914F91D591E291DA965C965F96BC98E39ADF9B2F4E7F5070506A5061505E
+50605053504B505D50725048504D5041505B504A506250155045505F5069506B
+5063506450465040506E50735057505151D0526B526D526C526E52D652D3532D
+539C55755576553C554D55505534552A55515562553655355530555255450000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000550C55325565554E55395548552D553B5540554B570A570757FB581457E2
+57F657DC57F4580057ED57FD580857F8580B57F357CF580757EE57E357F257E5
+57EC57E1580E57FC581057E75801580C57F157E957F0580D5804595C5A605A58
+5A555A675A5E5A385A355A6D5A505A5F5A655A6C5A535A645A575A435A5D5A52
+5A445A5B5A485A8E5A3E5A4D5A395A4C5A705A695A475A515A565A425A5C5B72
+5B6E5BC15BC05C595D1E5D0B5D1D5D1A5D205D0C5D285D0D5D265D255D0F0000
+D5
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+5D305D125D235D1F5D2E5E3E5E345EB15EB45EB95EB25EB35F365F385F9B5F96
+5F9F608A6090608660BE60B060BA60D360D460CF60E460D960DD60C860B160DB
+60B760CA60BF60C360CD60C063326365638A6382637D63BD639E63AD639D6397
+63AB638E636F63876390636E63AF6375639C636D63AE637C63A4633B639F0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00006378638563816391638D6370655365CD66656661665B6659665C66626718
+687968876890689C686D686E68AE68AB6956686F68A368AC68A96875687468B2
+688F68776892687C686B687268AA68806871687E689B6896688B68A0688968A4
+6878687B6891688C688A687D6B366B336B376B386B916B8F6B8D6B8E6B8C6C2A
+6DC06DAB6DB46DB36E746DAC6DE96DE26DB76DF66DD46E006DC86DE06DDF6DD6
+6DBE6DE56DDC6DDD6DDB6DF46DCA6DBD6DED6DF06DBA6DD56DC26DCF6DC90000
+D6
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+6DD06DF26DD36DFD6DD76DCD6DE36DBB70FA710D70F7711770F4710C70F07104
+70F3711070FC70FF71067113710070F870F6710B7102710E727E727B727C727F
+731D7317730773117318730A730872FF730F731E738873F673F873F574047401
+73FD7407740073FA73FC73FF740C740B73F474087564756375CE75D275CF0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000075CB75CC75D175D0768F768976D37739772F772D7731773277347733773D
+7725773B7735784878527849784D784A784C782678457850796479677969796A
+7963796B796179BB79FA79F879F679F77A8F7A947A907B357B477B347B257B30
+7B227B247B337B187B2A7B1D7B317B2B7B2D7B2F7B327B387B1A7B237C947C98
+7C967CA37D357D3D7D387D367D3A7D457D2C7D297D417D477D3E7D3F7D4A7D3B
+7D287F637F957F9C7F9D7F9B7FCA7FCB7FCD7FD07FD17FC77FCF7FC9801F0000
+D7
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+801E801B804780438048811881258119811B812D811F812C811E812181158127
+811D8122821182388233823A823482328274839083A383A8838D837A837383A4
+8374838F8381839583998375839483A9837D8383838C839D839B83AA838B837E
+83A583AF8388839783B0837F83A6838783AE8376839A8659865686BF86B70000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000086C286C186C586BA86B086C886B986B386B886CC86B486BB86BC86C386BD
+86BE88528889889588A888A288AA889A889188A1889F889888A78899889B8897
+88A488AC888C8893888E898289D689D989D58A308A278A2C8A1E8C398C3B8C5C
+8C5D8C7D8CA58D7D8D7B8D798DBC8DC28DB98DBF8DC18ED88EDE8EDD8EDC8ED7
+8EE08EE19024900B9011901C900C902190EF90EA90F090F490F290F390D490EB
+90EC90E991569158915A9153915591EC91F491F191F391F891E491F991EA0000
+D8
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+91EB91F791E891EE957A95869588967C966D966B9671966F96BF976A980498E5
+9997509B50955094509E508B50A35083508C508E509D5068509C509250825087
+515F51D45312531153A453A7559155A855A555AD5577564555A255935588558F
+55B5558155A3559255A4557D558C55A6557F559555A1558E570C582958370000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00005819581E58275823582857F558485825581C581B5833583F5836582E5839
+5838582D582C583B59615AAF5A945A9F5A7A5AA25A9E5A785AA65A7C5AA55AAC
+5A955AAE5A375A845A8A5A975A835A8B5AA95A7B5A7D5A8C5A9C5A8F5A935A9D
+5BEA5BCD5BCB5BD45BD15BCA5BCE5C0C5C305D375D435D6B5D415D4B5D3F5D35
+5D515D4E5D555D335D3A5D525D3D5D315D595D425D395D495D385D3C5D325D36
+5D405D455E445E415F585FA65FA55FAB60C960B960CC60E260CE60C461140000
+D9
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+60F2610A6116610560F5611360F860FC60FE60C161036118611D611060FF6104
+610B624A639463B163B063CE63E563E863EF63C3649D63F363CA63E063F663D5
+63F263F5646163DF63BE63DD63DC63C463D863D363C263C763CC63CB63C863F0
+63D763D965326567656A6564655C65686565658C659D659E65AE65D065D20000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000667C666C667B668066716679666A66726701690C68D3690468DC692A68EC
+68EA68F1690F68D668F768EB68E468F66913691068F368E1690768CC69086970
+68B4691168EF68C6691468F868D068FD68FC68E8690B690A691768CE68C868DD
+68DE68E668F468D1690668D468E96915692568C76B396B3B6B3F6B3C6B946B97
+6B996B956BBD6BF06BF26BF36C306DFC6E466E476E1F6E496E886E3C6E3D6E45
+6E626E2B6E3F6E416E5D6E736E1C6E336E4B6E406E516E3B6E036E2E6E5E0000
+DA
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+6E686E5C6E616E316E286E606E716E6B6E396E226E306E536E656E276E786E64
+6E776E556E796E526E666E356E366E5A7120711E712F70FB712E713171237125
+71227132711F7128713A711B724B725A7288728972867285728B7312730B7330
+73227331733373277332732D732673237335730C742E742C7430742B74160000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000741A7421742D743174247423741D74297420743274FB752F756F756C75E7
+75DA75E175E675DD75DF75E475D77695769276DA774677477744774D7745774A
+774E774B774C77DE77EC786078647865785C786D7871786A786E787078697868
+785E786279747973797279707A027A0A7A037A0C7A047A997AE67AE47B4A7B3B
+7B447B487B4C7B4E7B407B587B457CA27C9E7CA87CA17D587D6F7D637D537D56
+7D677D6A7D4F7D6D7D5C7D6B7D527D547D697D517D5F7D4E7F3E7F3F7F650000
+DB
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+7F667FA27FA07FA17FD78051804F805080FE80D48143814A8152814F8147813D
+814D813A81E681EE81F781F881F98204823C823D823F8275833B83CF83F98423
+83C083E8841283E783E483FC83F6841083C683C883EB83E383BF840183DD83E5
+83D883FF83E183CB83CE83D683F583C98409840F83DE8411840683C283F30000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000083D583FA83C783D183EA841383C383EC83EE83C483FB83D783E2841B83DB
+83FE86D886E286E686D386E386DA86EA86DD86EB86DC86EC86E986D786E886D1
+88488856885588BA88D788B988B888C088BE88B688BC88B788BD88B2890188C9
+89958998899789DD89DA89DB8A4E8A4D8A398A598A408A578A588A448A458A52
+8A488A518A4A8A4C8A4F8C5F8C818C808CBA8CBE8CB08CB98CB58D848D808D89
+8DD88DD38DCD8DC78DD68DDC8DCF8DD58DD98DC88DD78DC58EEF8EF78EFA0000
+DC
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+8EF98EE68EEE8EE58EF58EE78EE88EF68EEB8EF18EEC8EF48EE9902D9034902F
+9106912C910490FF90FC910890F990FB9101910091079105910391619164915F
+916291609201920A92259203921A9226920F920C9200921291FF91FD92069204
+92279202921C92249219921792059216957B958D958C95909687967E96880000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000096899683968096C296C896C396F196F0976C9770976E980798A998EB9CE6
+9EF94E834E844EB650BD50BF50C650AE50C450CA50B450C850C250B050C150BA
+50B150CB50C950B650B851D7527A5278527B527C55C355DB55CC55D055CB55CA
+55DD55C055D455C455E955BF55D2558D55CF55D555E255D655C855F255CD55D9
+55C25714585358685864584F584D5849586F5855584E585D58595865585B583D
+5863587158FC5AC75AC45ACB5ABA5AB85AB15AB55AB05ABF5AC85ABB5AC60000
+DD
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+5AB75AC05ACA5AB45AB65ACD5AB95A905BD65BD85BD95C1F5C335D715D635D4A
+5D655D725D6C5D5E5D685D675D625DF05E4F5E4E5E4A5E4D5E4B5EC55ECC5EC6
+5ECB5EC75F405FAF5FAD60F76149614A612B614561366132612E6146612F614F
+612961406220916862236225622463C563F163EB641064126409642064240000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000064336443641F641564186439643764226423640C64266430642864416435
+642F640A641A644064256427640B63E7641B642E6421640E656F659265D36686
+668C66956690668B668A66996694667867206966695F6938694E69626971693F
+6945696A6939694269576959697A694869496935696C6933693D696568F06978
+693469696940696F69446976695869416974694C693B694B6937695C694F6951
+69326952692F697B693C6B466B456B436B426B486B416B9BFA0D6BFB6BFC0000
+DE
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+6BF96BF76BF86E9B6ED66EC86E8F6EC06E9F6E936E946EA06EB16EB96EC66ED2
+6EBD6EC16E9E6EC96EB76EB06ECD6EA66ECF6EB26EBE6EC36EDC6ED86E996E92
+6E8E6E8D6EA46EA16EBF6EB36ED06ECA6E976EAE6EA371477154715271637160
+7141715D716271727178716A7161714271587143714B7170715F715071530000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00007144714D715A724F728D728C72917290728E733C7342733B733A7340734A
+73497444744A744B7452745174577440744F7450744E74427446744D745474E1
+74FF74FE74FD751D75797577698375EF760F760375F775FE75FC75F975F87610
+75FB75F675ED75F575FD769976B576DD7755775F776077527756775A77697767
+77547759776D77E07887789A7894788F788478957885788678A1788378797899
+78807896787B797C7982797D79797A117A187A197A127A177A157A227A130000
+DF
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+7A1B7A107AA37AA27A9E7AEB7B667B647B6D7B747B697B727B657B737B717B70
+7B617B787B767B637CB27CB47CAF7D887D867D807D8D7D7F7D857D7A7D8E7D7B
+7D837D7C7D8C7D947D847D7D7D927F6D7F6B7F677F687F6C7FA67FA57FA77FDB
+7FDC8021816481608177815C8169815B816281726721815E81768167816F0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000081448161821D8249824482408242824584F1843F845684768479848F848D
+846584518440848684678430844D847D845A845984748473845D8507845E8437
+843A8434847A8443847884328445842983D9844B842F8442842D845F84708439
+844E844C8452846F84C5848E843B8447843684338468847E8444842B84608454
+846E8450870B870486F7870C86FA86D686F5874D86F8870E8709870186F6870D
+870588D688CB88CD88CE88DE88DB88DA88CC88D08985899B89DF89E589E40000
+E0
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+89E189E089E289DC89E68A768A868A7F8A618A3F8A778A828A848A758A838A81
+8A748A7A8C3C8C4B8C4A8C658C648C668C868C848C858CCC8D688D698D918D8C
+8D8E8D8F8D8D8D938D948D908D928DF08DE08DEC8DF18DEE8DD08DE98DE38DE2
+8DE78DF28DEB8DF48F068EFF8F018F008F058F078F088F028F0B9052903F0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000090449049903D9110910D910F911191169114910B910E916E916F92489252
+9230923A926692339265925E9283922E924A9246926D926C924F92609267926F
+92369261927092319254926392509272924E9253924C92569232959F959C959E
+959B969296939691969796CE96FA96FD96F896F59773977797789772980F980D
+980E98AC98F698F999AF99B299B099B59AAD9AAB9B5B9CEA9CED9CE79E809EFD
+50E650D450D750E850F350DB50EA50DD50E450D350EC50F050EF50E350E00000
+E1
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+51D85280528152E952EB533053AC56275615560C561255FC560F561C56015613
+560255FA561D560455FF55F95889587C5890589858865881587F5874588B587A
+58875891588E587658825888587B5894588F58FE596B5ADC5AEE5AE55AD55AEA
+5ADA5AED5AEB5AF35AE25AE05ADB5AEC5ADE5ADD5AD95AE85ADF5B775BE00000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00005BE35C635D825D805D7D5D865D7A5D815D775D8A5D895D885D7E5D7C5D8D
+5D795D7F5E585E595E535ED85ED15ED75ECE5EDC5ED55ED95ED25ED45F445F43
+5F6F5FB6612C61286141615E61716173615261536172616C618061746154617A
+615B6165613B616A6161615662296227622B642B644D645B645D647464766472
+6473647D6475646664A6644E6482645E645C644B645364606450647F643F646C
+646B645964656477657365A066A166A0669F67056704672269B169B669C90000
+E2
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+69A069CE699669B069AC69BC69916999698E69A7698D69A969BE69AF69BF69C4
+69BD69A469D469B969CA699A69CF69B3699369AA69A1699E69D96997699069C2
+69B569A569C66B4A6B4D6B4B6B9E6B9F6BA06BC36BC46BFE6ECE6EF56EF16F03
+6F256EF86F376EFB6F2E6F096F4E6F196F1A6F276F186F3B6F126EED6F0A0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00006F366F736EF96EEE6F2D6F406F306F3C6F356EEB6F076F0E6F436F056EFD
+6EF66F396F1C6EFC6F3A6F1F6F0D6F1E6F086F21718771907189718071857182
+718F717B718671817197724472537297729572937343734D7351734C74627473
+7471747574727467746E750075027503757D759076167608760C76157611760A
+761476B87781777C77857782776E7780776F777E778378B278AA78B478AD78A8
+787E78AB789E78A578A078AC78A278A47998798A798B79967995799479930000
+E3
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+79977988799279907A2B7A4A7A307A2F7A287A267AA87AAB7AAC7AEE7B887B9C
+7B8A7B917B907B967B8D7B8C7B9B7B8E7B857B9852847B997BA47B827CBB7CBF
+7CBC7CBA7DA77DB77DC27DA37DAA7DC17DC07DC57D9D7DCE7DC47DC67DCB7DCC
+7DAF7DB97D967DBC7D9F7DA67DAE7DA97DA17DC97F737FE27FE37FE57FDE0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00008024805D805C8189818681838187818D818C818B8215849784A484A1849F
+84BA84CE84C284AC84AE84AB84B984B484C184CD84AA849A84B184D0849D84A7
+84BB84A2849484C784CC849B84A984AF84A884D6849884B684CF84A084D784D4
+84D284DB84B084918661873387238728876B8740872E871E87218719871B8743
+872C8741873E874687208732872A872D873C8712873A87318735874287268727
+87388724871A8730871188F788E788F188F288FA88FE88EE88FC88F688FB0000
+E4
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+88F088EC88EB899D89A1899F899E89E989EB89E88AAB8A998A8B8A928A8F8A96
+8C3D8C688C698CD58CCF8CD78D968E098E028DFF8E0D8DFD8E0A8E038E078E06
+8E058DFE8E008E048F108F118F0E8F0D9123911C91209122911F911D911A9124
+9121911B917A91729179917392A592A49276929B927A92A0929492AA928D0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000092A6929A92AB92799297927F92A392EE928E9282929592A2927D928892A1
+928A9286928C929992A7927E928792A9929D928B922D969E96A196FF9758977D
+977A977E978397809782977B97849781977F97CE97CD981698AD98AE99029900
+9907999D999C99C399B999BB99BA99C299BD99C79AB19AE39AE79B3E9B3F9B60
+9B619B5F9CF19CF29CF59EA750FF5103513050F85106510750F650FE510B510C
+50FD510A528B528C52F152EF56485642564C56355641564A5649564656580000
+E5
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+565A56405633563D562C563E5638562A563A571A58AB589D58B158A058A358AF
+58AC58A558A158FF5AFF5AF45AFD5AF75AF65B035AF85B025AF95B015B075B05
+5B0F5C675D995D975D9F5D925DA25D935D955DA05D9C5DA15D9A5D9E5E695E5D
+5E605E5C7DF35EDB5EDE5EE15F495FB2618B6183617961B161B061A261890000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000619B619361AF61AD619F619261AA61A1618D616661B3622D646E64706496
+64A064856497649C648F648B648A648C64A3649F646864B164986576657A6579
+657B65B265B366B566B066A966B266B766AA66AF6A006A066A1769E569F86A15
+69F169E46A2069FF69EC69E26A1B6A1D69FE6A2769F269EE6A1469F769E76A40
+6A0869E669FB6A0D69FC69EB6A096A046A186A256A0F69F66A266A0769F46A16
+6B516BA56BA36BA26BA66C016C006BFF6C026F416F266F7E6F876FC66F920000
+E6
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+6F8D6F896F8C6F626F4F6F856F5A6F966F766F6C6F826F556F726F526F506F57
+6F946F936F5D6F006F616F6B6F7D6F676F906F536F8B6F696F7F6F956F636F77
+6F6A6F7B71B271AF719B71B071A0719A71A971B5719D71A5719E71A471A171AA
+719C71A771B37298729A73587352735E735F7360735D735B7361735A73590000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000736274877489748A74867481747D74857488747C747975087507757E7625
+761E7619761D761C7623761A7628761B769C769D769E769B778D778F77897788
+78CD78BB78CF78CC78D178CE78D478C878C378C478C9799A79A179A0799C79A2
+799B6B767A397AB27AB47AB37BB77BCB7BBE7BAC7BCE7BAF7BB97BCA7BB57CC5
+7CC87CCC7CCB7DF77DDB7DEA7DE77DD77DE17E037DFA7DE67DF67DF17DF07DEE
+7DDF7F767FAC7FB07FAD7FED7FEB7FEA7FEC7FE67FE88064806781A3819F0000
+E7
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+819E819581A2819981978216824F825382528250824E82518524853B850F8500
+8529850E8509850D851F850A8527851C84FB852B84FA8508850C84F4852A84F2
+851584F784EB84F384FC851284EA84E9851684FE8528851D852E850284FD851E
+84F68531852684E784E884F084EF84F9851885208530850B8519852F86620000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000875687638764877787E1877387588754875B87528761875A8751875E876D
+876A8750874E875F875D876F876C877A876E875C8765874F877B877587628767
+8769885A8905890C8914890B891789188919890689168911890E890989A289A4
+89A389ED89F089EC8ACF8AC68AB88AD38AD18AD48AD58ABB8AD78ABE8AC08AC5
+8AD88AC38ABA8ABD8AD98C3E8C4D8C8F8CE58CDF8CD98CE88CDA8CDD8CE78DA0
+8D9C8DA18D9B8E208E238E258E248E2E8E158E1B8E168E118E198E268E270000
+E8
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+8E148E128E188E138E1C8E178E1A8F2C8F248F188F1A8F208F238F168F179073
+9070906F9067906B912F912B9129912A91329126912E91859186918A91819182
+9184918092D092C392C492C092D992B692CF92F192DF92D892E992D792DD92CC
+92EF92C292E892CA92C892CE92E692CD92D592C992E092DE92E792D192D30000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000092B592E192C692B4957C95AC95AB95AE95B096A496A296D3970597089702
+975A978A978E978897D097CF981E981D9826982998289820981B982798B29908
+98FA9911991499169917991599DC99CD99CF99D399D499CE99C999D699D899CB
+99D799CC9AB39AEC9AEB9AF39AF29AF19B469B439B679B749B719B669B769B75
+9B709B689B649B6C9CFC9CFA9CFD9CFF9CF79D079D009CF99CFB9D089D059D04
+9E839ED39F0F9F10511C51135117511A511151DE533453E156705660566E0000
+E9
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+567356665663566D5672565E5677571C571B58C858BD58C958BF58BA58C258BC
+58C65B175B195B1B5B215B145B135B105B165B285B1A5B205B1E5BEF5DAC5DB1
+5DA95DA75DB55DB05DAE5DAA5DA85DB25DAD5DAF5DB45E675E685E665E6F5EE9
+5EE75EE65EE85EE55F4B5FBC619D61A8619661C561B461C661C161CC61BA0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000061BF61B8618C64D764D664D064CF64C964BD648964C364DB64F364D96533
+657F657C65A266C866BE66C066CA66CB66CF66BD66BB66BA66CC67236A346A66
+6A496A676A326A686A3E6A5D6A6D6A766A5B6A516A286A5A6A3B6A3F6A416A6A
+6A646A506A4F6A546A6F6A696A606A3C6A5E6A566A556A4D6A4E6A466B556B54
+6B566BA76BAA6BAB6BC86BC76C046C036C066FAD6FCB6FA36FC76FBC6FCE6FC8
+6F5E6FC46FBD6F9E6FCA6FA870046FA56FAE6FBA6FAC6FAA6FCF6FBF6FB80000
+EA
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+6FA26FC96FAB6FCD6FAF6FB26FB071C571C271BF71B871D671C071C171CB71D4
+71CA71C771CF71BD71D871BC71C671DA71DB729D729E736973667367736C7365
+736B736A747F749A74A074947492749574A1750B7580762F762D7631763D7633
+763C76357632763076BB76E6779A779D77A1779C779B77A277A3779577990000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000779778DD78E978E578EA78DE78E378DB78E178E278ED78DF78E079A47A44
+7A487A477AB67AB87AB57AB17AB77BDE7BE37BE77BDD7BD57BE57BDA7BE87BF9
+7BD47BEA7BE27BDC7BEB7BD87BDF7CD27CD47CD77CD07CD17E127E217E177E0C
+7E1F7E207E137E0E7E1C7E157E1A7E227E0B7E0F7E167E0D7E147E257E247F43
+7F7B7F7C7F7A7FB17FEF802A8029806C81B181A681AE81B981B581AB81B081AC
+81B481B281B781A781F282558256825785568545856B854D8553856185580000
+EB
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+854085468564854185628544855185478563853E855B8571854E856E85758555
+85678560858C8566855D85548565856C866386658664879B878F879787938792
+87888781879687988779878787A3878587908791879D87848794879C879A8789
+891E89268930892D892E89278931892289298923892F892C891F89F18AE00000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00008AE28AF28AF48AF58ADD8B148AE48ADF8AF08AC88ADE8AE18AE88AFF8AEF
+8AFB8C918C928C908CF58CEE8CF18CF08CF38D6C8D6E8DA58DA78E338E3E8E38
+8E408E458E368E3C8E3D8E418E308E3F8EBD8F368F2E8F358F328F398F378F34
+90769079907B908690FA913391359136919391909191918D918F9327931E9308
+931F9306930F937A9338933C931B9323931293019346932D930E930D92CB931D
+92FA9325931392F992F793349302932492FF932993399335932A9314930C0000
+EC
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+930B92FE9309930092FB931695BC95CD95BE95B995BA95B695BF95B595BD96A9
+96D4970B9712971097999797979497F097F89835982F98329924991F99279929
+999E99EE99EC99E599E499F099E399EA99E999E79AB99ABF9AB49ABB9AF69AFA
+9AF99AF79B339B809B859B879B7C9B7E9B7B9B829B939B929B909B7A9B950000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00009B7D9B889D259D179D209D1E9D149D299D1D9D189D229D109D199D1F9E88
+9E869E879EAE9EAD9ED59ED69EFA9F129F3D51265125512251245120512952F4
+5693568C568D568656845683567E5682567F568158D658D458CF58D25B2D5B25
+5B325B235B2C5B275B265B2F5B2E5B7B5BF15BF25DB75E6C5E6A5FBE5FBB61C3
+61B561BC61E761E061E561E461E861DE64EF64E964E364EB64E464E865816580
+65B665DA66D26A8D6A966A816AA56A896A9F6A9B6AA16A9E6A876A936A8E0000
+ED
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+6A956A836AA86AA46A916A7F6AA66A9A6A856A8C6A926B5B6BAD6C096FCC6FA9
+6FF46FD46FE36FDC6FED6FE76FE66FDE6FF26FDD6FE26FE871E171F171E871F2
+71E471F071E27373736E736F749774B274AB749074AA74AD74B174A574AF7510
+75117512750F7584764376487649764776A476E977B577AB77B277B777B60000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000077B477B177A877F078F378FD790278FB78FC78F2790578F978FE790479AB
+79A87A5C7A5B7A567A587A547A5A7ABE7AC07AC17C057C0F7BF27C007BFF7BFB
+7C0E7BF47C0B7BF37C027C097C037C017BF87BFD7C067BF07BF17C107C0A7CE8
+7E2D7E3C7E427E3398487E387E2A7E497E407E477E297E4C7E307E3B7E367E44
+7E3A7F457F7F7F7E7F7D7FF47FF2802C81BB81C481CC81CA81C581C781BC81E9
+825B825A825C85838580858F85A7859585A0858B85A3857B85A4859A859E0000
+EE
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+8577857C858985A1857A85788557858E85968586858D8599859D858185A28582
+858885858579857685988590859F866887BE87AA87AD87C587B087AC87B987B5
+87BC87AE87C987C387C287CC87B787AF87C487CA87B487B687BF87B887BD87DE
+87B289358933893C893E894189528937894289AD89AF89AE89F289F38B1E0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00008B188B168B118B058B0B8B228B0F8B128B158B078B0D8B088B068B1C8B13
+8B1A8C4F8C708C728C718C6F8C958C948CF98D6F8E4E8E4D8E538E508E4C8E47
+8F438F409085907E9138919A91A2919B9199919F91A1919D91A093A1938393AF
+936493569347937C9358935C93769349935093519360936D938F934C936A9379
+935793559352934F93719377937B9361935E936393679380934E935995C795C0
+95C995C395C595B796AE96B096AC9720971F9718971D9719979A97A1979C0000
+EF
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+979E979D97D597D497F198419844984A9849984598439925992B992C992A9933
+9932992F992D99319930999899A399A19A0299FA99F499F799F999F899F699FB
+99FD99FE99FC9A039ABE9AFE9AFD9B019AFC9B489B9A9BA89B9E9B9B9BA69BA1
+9BA59BA49B869BA29BA09BAF9D339D419D679D369D2E9D2F9D319D389D300000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00009D459D429D439D3E9D379D409D3D7FF59D2D9E8A9E899E8D9EB09EC89EDA
+9EFB9EFF9F249F239F229F549FA05131512D512E5698569C5697569A569D5699
+59705B3C5C695C6A5DC05E6D5E6E61D861DF61ED61EE61F161EA61F061EB61D6
+61E964FF650464FD64F86501650364FC659465DB66DA66DB66D86AC56AB96ABD
+6AE16AC66ABA6AB66AB76AC76AB46AAD6B5E6BC96C0B7007700C700D70017005
+7014700E6FFF70006FFB70266FFC6FF7700A720171FF71F9720371FD73760000
+F0
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+74B874C074B574C174BE74B674BB74C275147513765C76647659765076537657
+765A76A676BD76EC77C277BA78FF790C79137914790979107912791179AD79AC
+7A5F7C1C7C297C197C207C1F7C2D7C1D7C267C287C227C257C307E5C7E507E56
+7E637E587E627E5F7E517E607E577E537FB57FB37FF77FF8807581D181D20000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000081D0825F825E85B485C685C085C385C285B385B585BD85C785C485BF85CB
+85CE85C885C585B185B685D2862485B885B785BE866987E787E687E287DB87EB
+87EA87E587DF87F387E487D487DC87D387ED87D887E387A487D787D9880187F4
+87E887DD8953894B894F894C89468950895189498B2A8B278B238B338B308B35
+8B478B2F8B3C8B3E8B318B258B378B268B368B2E8B248B3B8B3D8B3A8C428C75
+8C998C988C978CFE8D048D028D008E5C8E628E608E578E568E5E8E658E670000
+F1
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+8E5B8E5A8E618E5D8E698E548F468F478F488F4B9128913A913B913E91A891A5
+91A791AF91AA93B5938C939293B7939B939D938993A7938E93AA939E93A69395
+93889399939F938D93B1939193B293A493A893B493A393A595D295D395D196B3
+96D796DA5DC296DF96D896DD97239722972597AC97AE97A897AB97A497AA0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000097A297A597D797D997D697D897FA98509851985298B89941993C993A9A0F
+9A0B9A099A0D9A049A119A0A9A059A079A069AC09ADC9B089B049B059B299B35
+9B4A9B4C9B4B9BC79BC69BC39BBF9BC19BB59BB89BD39BB69BC49BB99BBD9D5C
+9D539D4F9D4A9D5B9D4B9D599D569D4C9D579D529D549D5F9D589D5A9E8E9E8C
+9EDF9F019F009F169F259F2B9F2A9F299F289F4C9F5551345135529652F753B4
+56AB56AD56A656A756AA56AC58DA58DD58DB59125B3D5B3E5B3F5DC35E700000
+F2
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+5FBF61FB65076510650D6509650C650E658465DE65DD66DE6AE76AE06ACC6AD1
+6AD96ACB6ADF6ADC6AD06AEB6ACF6ACD6ADE6B606BB06C0C7019702770207016
+702B702170227023702970177024701C702A720C720A72077202720572A572A6
+72A472A372A174CB74C574B774C37516766077C977CA77C477F1791D791B0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00007921791C7917791E79B07A677A687C337C3C7C397C2C7C3B7CEC7CEA7E76
+7E757E787E707E777E6F7E7A7E727E747E687F4B7F4A7F837F867FB77FFD7FFE
+807881D781D582648261826385EB85F185ED85D985E185E885DA85D785EC85F2
+85F885D885DF85E385DC85D185F085E685EF85DE85E2880087FA880387F687F7
+8809880C880B880687FC880887FF880A88028962895A895B89578961895C8958
+895D8959898889B789B689F68B508B488B4A8B408B538B568B548B4B8B550000
+F3
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+8B518B428B528B578C438C778C768C9A8D068D078D098DAC8DAA8DAD8DAB8E6D
+8E788E738E6A8E6F8E7B8EC28F528F518F4F8F508F538FB49140913F91B091AD
+93DE93C793CF93C293DA93D093F993EC93CC93D993A993E693CA93D493EE93E3
+93D593C493CE93C093D293E7957D95DA95DB96E19729972B972C972897260000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000097B397B797B697DD97DE97DF985C9859985D985798BF98BD98BB98BE9948
+9947994399A699A79A1A9A159A259A1D9A249A1B9A229A209A279A239A1E9A1C
+9A149AC29B0B9B0A9B0E9B0C9B379BEA9BEB9BE09BDE9BE49BE69BE29BF09BD4
+9BD79BEC9BDC9BD99BE59BD59BE19BDA9D779D819D8A9D849D889D719D809D78
+9D869D8B9D8C9D7D9D6B9D749D759D709D699D859D739D7B9D829D6F9D799D7F
+9D879D689E949E919EC09EFC9F2D9F409F419F4D9F569F579F58533756B20000
+F4
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+56B556B358E35B455DC65DC75EEE5EEF5FC05FC161F9651765166515651365DF
+66E866E366E46AF36AF06AEA6AE86AF96AF16AEE6AEF703C7035702F70377034
+703170427038703F703A70397040703B703370417213721472A8737D737C74BA
+76AB76AA76BE76ED77CC77CE77CF77CD77F27925792379277928792479290000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000079B27A6E7A6C7A6D7AF77C497C487C4A7C477C457CEE7E7B7E7E7E817E80
+7FBA7FFF807981DB81D9820B82688269862285FF860185FE861B860085F68604
+86098605860C85FD8819881088118817881388168963896689B989F78B608B6A
+8B5D8B688B638B658B678B6D8DAE8E868E888E848F598F568F578F558F588F5A
+908D9143914191B791B591B291B3940B941393FB9420940F941493FE94159410
+94289419940D93F5940093F79407940E9416941293FA940993F8940A93FF0000
+F5
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+93FC940C93F69411940695DE95E095DF972E972F97B997BB97FD97FE98609862
+9863985F98C198C29950994E9959994C994B99539A329A349A319A2C9A2A9A36
+9A299A2E9A389A2D9AC79ACA9AC69B109B129B119C0B9C089BF79C059C129BF8
+9C409C079C0E9C069C179C149C099D9F9D999DA49D9D9D929D989D909D9B0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00009DA09D949D9C9DAA9D979DA19D9A9DA29DA89D9E9DA39DBF9DA99D969DA6
+9DA79E999E9B9E9A9EE59EE49EE79EE69F309F2E9F5B9F609F5E9F5D9F599F91
+513A51395298529756C356BD56BE5B485B475DCB5DCF5EF161FD651B6B026AFC
+6B036AF86B0070437044704A7048704970457046721D721A7219737E7517766A
+77D0792D7931792F7C547C537CF27E8A7E877E887E8B7E867E8D7F4D7FBB8030
+81DD8618862A8626861F8623861C86198627862E862186208629861E86250000
+F6
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+8829881D881B88208824881C882B884A896D8969896E896B89FA8B798B788B45
+8B7A8B7B8D108D148DAF8E8E8E8C8F5E8F5B8F5D91469144914591B9943F943B
+94369429943D943C94309439942A9437942C9440943195E595E495E39735973A
+97BF97E1986498C998C698C0995899569A399A3D9A469A449A429A419A3A0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00009A3F9ACD9B159B179B189B169B3A9B529C2B9C1D9C1C9C2C9C239C289C29
+9C249C219DB79DB69DBC9DC19DC79DCA9DCF9DBE9DC59DC39DBB9DB59DCE9DB9
+9DBA9DAC9DC89DB19DAD9DCC9DB39DCD9DB29E7A9E9C9EEB9EEE9EED9F1B9F18
+9F1A9F319F4E9F659F649F924EB956C656C556CB59715B4B5B4C5DD55DD15EF2
+65216520652665226B0B6B086B096C0D7055705670577052721E721F72A9737F
+74D874D574D974D7766D76AD793579B47A707A717C577C5C7C597C5B7C5A0000
+F7
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+7CF47CF17E917F4F7F8781DE826B863486358633862C86328636882C88288826
+882A8825897189BF89BE89FB8B7E8B848B828B868B858B7F8D158E958E948E9A
+8E928E908E968E978F608F629147944C9450944A944B944F9447944594489449
+9446973F97E3986A986998CB9954995B9A4E9A539A549A4C9A4F9A489A4A0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00009A499A529A509AD09B199B2B9B3B9B569B559C469C489C3F9C449C399C33
+9C419C3C9C379C349C329C3D9C369DDB9DD29DDE9DDA9DCB9DD09DDC9DD19DDF
+9DE99DD99DD89DD69DF59DD59DDD9EB69EF09F359F339F329F429F6B9F959FA2
+513D529958E858E759725B4D5DD8882F5F4F62016203620465296525659666EB
+6B116B126B0F6BCA705B705A7222738273817383767077D47C677C667E95826C
+863A86408639863C8631863B863E88308832882E883389768974897389FE0000
+F8
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+8B8C8B8E8B8B8B888C458D198E988F648F6391BC94629455945D9457945E97C4
+97C598009A569A599B1E9B1F9B209C529C589C509C4A9C4D9C4B9C559C599C4C
+9C4E9DFB9DF79DEF9DE39DEB9DF89DE49DF69DE19DEE9DE69DF29DF09DE29DEC
+9DF49DF39DE89DED9EC29ED09EF29EF39F069F1C9F389F379F369F439F4F0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00009F719F709F6E9F6F56D356CD5B4E5C6D652D66ED66EE6B13705F7061705D
+7060722374DB74E577D5793879B779B67C6A7E977F89826D8643883888378835
+884B8B948B958E9E8E9F8EA08E9D91BE91BD91C2946B9468946996E597469743
+974797C797E59A5E9AD59B599C639C679C669C629C5E9C609E029DFE9E079E03
+9E069E059E009E019E099DFF9DFD9E049EA09F1E9F469F749F759F7656D4652E
+65B86B186B196B176B1A7062722672AA77D877D979397C697C6B7CF67E9A0000
+F9
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+7E987E9B7E9981E081E18646864786488979897A897C897B89FF8B988B998EA5
+8EA48EA3946E946D946F9471947397499872995F9C689C6E9C6D9E0B9E0D9E10
+9E0F9E129E119EA19EF59F099F479F789F7B9F7A9F79571E70667C6F883C8DB2
+8EA691C394749478947694759A609C749C739C719C759E149E139EF69F0A0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00009FA4706870657CF7866A883E883D883F8B9E8C9C8EA98EC9974B98739874
+98CC996199AB9A649A669A679B249E159E179F4862076B1E7227864C8EA89482
+948094819A699A689B2E9E197229864B8B9F94839C799EB776759A6B9C7A9E1D
+7069706A9EA49F7E9F499F980000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000


Property changes on: trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/big5.enc
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp1250.enc
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp1250.enc	                        (rev 0)
+++ trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp1250.enc	2020-03-17 20:46:21 UTC (rev 54375)
@@ -0,0 +1,20 @@
+# Encoding file: cp1250, single-byte
+S
+003F 0 1
+00
+0000000100020003000400050006000700080009000A000B000C000D000E000F
+0010001100120013001400150016001700180019001A001B001C001D001E001F
+0020002100220023002400250026002700280029002A002B002C002D002E002F
+0030003100320033003400350036003700380039003A003B003C003D003E003F
+0040004100420043004400450046004700480049004A004B004C004D004E004F
+0050005100520053005400550056005700580059005A005B005C005D005E005F
+0060006100620063006400650066006700680069006A006B006C006D006E006F
+0070007100720073007400750076007700780079007A007B007C007D007E007F
+20AC0081201A0083201E2026202020210088203001602039015A0164017D0179
+009020182019201C201D202220132014009821220161203A015B0165017E017A
+00A002C702D8014100A4010400A600A700A800A9015E00AB00AC00AD00AE017B
+00B000B102DB014200B400B500B600B700B80105015F00BB013D02DD013E017C
+015400C100C2010200C40139010600C7010C00C9011800CB011A00CD00CE010E
+01100143014700D300D4015000D600D70158016E00DA017000DC00DD016200DF
+015500E100E2010300E4013A010700E7010D00E9011900EB011B00ED00EE010F
+01110144014800F300F4015100F600F70159016F00FA017100FC00FD016302D9


Property changes on: trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp1250.enc
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp1251.enc
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp1251.enc	                        (rev 0)
+++ trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp1251.enc	2020-03-17 20:46:21 UTC (rev 54375)
@@ -0,0 +1,20 @@
+# Encoding file: cp1251, single-byte
+S
+003F 0 1
+00
+0000000100020003000400050006000700080009000A000B000C000D000E000F
+0010001100120013001400150016001700180019001A001B001C001D001E001F
+0020002100220023002400250026002700280029002A002B002C002D002E002F
+0030003100320033003400350036003700380039003A003B003C003D003E003F
+0040004100420043004400450046004700480049004A004B004C004D004E004F
+0050005100520053005400550056005700580059005A005B005C005D005E005F
+0060006100620063006400650066006700680069006A006B006C006D006E006F
+0070007100720073007400750076007700780079007A007B007C007D007E007F
+04020403201A0453201E20262020202120AC203004092039040A040C040B040F
+045220182019201C201D202220132014009821220459203A045A045C045B045F
+00A0040E045E040800A4049000A600A7040100A9040400AB00AC00AD00AE0407
+00B000B104060456049100B500B600B704512116045400BB0458040504550457
+0410041104120413041404150416041704180419041A041B041C041D041E041F
+0420042104220423042404250426042704280429042A042B042C042D042E042F
+0430043104320433043404350436043704380439043A043B043C043D043E043F
+0440044104420443044404450446044704480449044A044B044C044D044E044F


Property changes on: trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp1251.enc
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp1252.enc
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp1252.enc	                        (rev 0)
+++ trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp1252.enc	2020-03-17 20:46:21 UTC (rev 54375)
@@ -0,0 +1,20 @@
+# Encoding file: cp1252, single-byte
+S
+003F 0 1
+00
+0000000100020003000400050006000700080009000A000B000C000D000E000F
+0010001100120013001400150016001700180019001A001B001C001D001E001F
+0020002100220023002400250026002700280029002A002B002C002D002E002F
+0030003100320033003400350036003700380039003A003B003C003D003E003F
+0040004100420043004400450046004700480049004A004B004C004D004E004F
+0050005100520053005400550056005700580059005A005B005C005D005E005F
+0060006100620063006400650066006700680069006A006B006C006D006E006F
+0070007100720073007400750076007700780079007A007B007C007D007E007F
+20AC0081201A0192201E20262020202102C62030016020390152008D017D008F
+009020182019201C201D20222013201402DC21220161203A0153009D017E0178
+00A000A100A200A300A400A500A600A700A800A900AA00AB00AC00AD00AE00AF
+00B000B100B200B300B400B500B600B700B800B900BA00BB00BC00BD00BE00BF
+00C000C100C200C300C400C500C600C700C800C900CA00CB00CC00CD00CE00CF
+00D000D100D200D300D400D500D600D700D800D900DA00DB00DC00DD00DE00DF
+00E000E100E200E300E400E500E600E700E800E900EA00EB00EC00ED00EE00EF
+00F000F100F200F300F400F500F600F700F800F900FA00FB00FC00FD00FE00FF


Property changes on: trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp1252.enc
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp1253.enc
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp1253.enc	                        (rev 0)
+++ trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp1253.enc	2020-03-17 20:46:21 UTC (rev 54375)
@@ -0,0 +1,20 @@
+# Encoding file: cp1253, single-byte
+S
+003F 0 1
+00
+0000000100020003000400050006000700080009000A000B000C000D000E000F
+0010001100120013001400150016001700180019001A001B001C001D001E001F
+0020002100220023002400250026002700280029002A002B002C002D002E002F
+0030003100320033003400350036003700380039003A003B003C003D003E003F
+0040004100420043004400450046004700480049004A004B004C004D004E004F
+0050005100520053005400550056005700580059005A005B005C005D005E005F
+0060006100620063006400650066006700680069006A006B006C006D006E006F
+0070007100720073007400750076007700780079007A007B007C007D007E007F
+20AC0081201A0192201E20262020202100882030008A2039008C008D008E008F
+009020182019201C201D20222013201400982122009A203A009C009D009E009F
+00A00385038600A300A400A500A600A700A800A9000000AB00AC00AD00AE2015
+00B000B100B200B3038400B500B600B703880389038A00BB038C00BD038E038F
+0390039103920393039403950396039703980399039A039B039C039D039E039F
+03A003A1000003A303A403A503A603A703A803A903AA03AB03AC03AD03AE03AF
+03B003B103B203B303B403B503B603B703B803B903BA03BB03BC03BD03BE03BF
+03C003C103C203C303C403C503C603C703C803C903CA03CB03CC03CD03CE0000


Property changes on: trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp1253.enc
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp1254.enc
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp1254.enc	                        (rev 0)
+++ trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp1254.enc	2020-03-17 20:46:21 UTC (rev 54375)
@@ -0,0 +1,20 @@
+# Encoding file: cp1254, single-byte
+S
+003F 0 1
+00
+0000000100020003000400050006000700080009000A000B000C000D000E000F
+0010001100120013001400150016001700180019001A001B001C001D001E001F
+0020002100220023002400250026002700280029002A002B002C002D002E002F
+0030003100320033003400350036003700380039003A003B003C003D003E003F
+0040004100420043004400450046004700480049004A004B004C004D004E004F
+0050005100520053005400550056005700580059005A005B005C005D005E005F
+0060006100620063006400650066006700680069006A006B006C006D006E006F
+0070007100720073007400750076007700780079007A007B007C007D007E007F
+20AC0081201A0192201E20262020202102C62030016020390152008D008E008F
+009020182019201C201D20222013201402DC21220161203A0153009D009E0178
+00A000A100A200A300A400A500A600A700A800A900AA00AB00AC00AD00AE00AF
+00B000B100B200B300B400B500B600B700B800B900BA00BB00BC00BD00BE00BF
+00C000C100C200C300C400C500C600C700C800C900CA00CB00CC00CD00CE00CF
+011E00D100D200D300D400D500D600D700D800D900DA00DB00DC0130015E00DF
+00E000E100E200E300E400E500E600E700E800E900EA00EB00EC00ED00EE00EF
+011F00F100F200F300F400F500F600F700F800F900FA00FB00FC0131015F00FF


Property changes on: trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp1254.enc
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp1255.enc
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp1255.enc	                        (rev 0)
+++ trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp1255.enc	2020-03-17 20:46:21 UTC (rev 54375)
@@ -0,0 +1,20 @@
+# Encoding file: cp1255, single-byte
+S
+003F 0 1
+00
+0000000100020003000400050006000700080009000A000B000C000D000E000F
+0010001100120013001400150016001700180019001A001B001C001D001E001F
+0020002100220023002400250026002700280029002A002B002C002D002E002F
+0030003100320033003400350036003700380039003A003B003C003D003E003F
+0040004100420043004400450046004700480049004A004B004C004D004E004F
+0050005100520053005400550056005700580059005A005B005C005D005E005F
+0060006100620063006400650066006700680069006A006B006C006D006E006F
+0070007100720073007400750076007700780079007A007B007C007D007E007F
+20AC0081201A0192201E20262020202102C62030008A2039008C008D008E008F
+009020182019201C201D20222013201402DC2122009A203A009C009D009E009F
+00A000A100A200A320AA00A500A600A700A800A900D700AB00AC00AD00AE00AF
+00B000B100B200B300B400B500B600B700B800B900F700BB00BC00BD00BE00BF
+05B005B105B205B305B405B505B605B705B805B9000005BB05BC05BD05BE05BF
+05C005C105C205C305F005F105F205F305F40000000000000000000000000000
+05D005D105D205D305D405D505D605D705D805D905DA05DB05DC05DD05DE05DF
+05E005E105E205E305E405E505E605E705E805E905EA00000000200E200F0000


Property changes on: trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp1255.enc
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp1256.enc
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp1256.enc	                        (rev 0)
+++ trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp1256.enc	2020-03-17 20:46:21 UTC (rev 54375)
@@ -0,0 +1,20 @@
+# Encoding file: cp1256, single-byte
+S
+003F 0 1
+00
+0000000100020003000400050006000700080009000A000B000C000D000E000F
+0010001100120013001400150016001700180019001A001B001C001D001E001F
+0020002100220023002400250026002700280029002A002B002C002D002E002F
+0030003100320033003400350036003700380039003A003B003C003D003E003F
+0040004100420043004400450046004700480049004A004B004C004D004E004F
+0050005100520053005400550056005700580059005A005B005C005D005E005F
+0060006100620063006400650066006700680069006A006B006C006D006E006F
+0070007100720073007400750076007700780079007A007B007C007D007E007F
+20AC067E201A0192201E20262020202102C62030067920390152068606980688
+06AF20182019201C201D20222013201406A921220691203A0153200C200D06BA
+00A0060C00A200A300A400A500A600A700A800A906BE00AB00AC00AD00AE00AF
+00B000B100B200B300B400B500B600B700B800B9061B00BB00BC00BD00BE061F
+06C1062106220623062406250626062706280629062A062B062C062D062E062F
+063006310632063306340635063600D7063706380639063A0640064106420643
+00E0064400E2064506460647064800E700E800E900EA00EB0649064A00EE00EF
+064B064C064D064E00F4064F065000F7065100F9065200FB00FC200E200F06D2


Property changes on: trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp1256.enc
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp1257.enc
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp1257.enc	                        (rev 0)
+++ trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp1257.enc	2020-03-17 20:46:21 UTC (rev 54375)
@@ -0,0 +1,20 @@
+# Encoding file: cp1257, single-byte
+S
+003F 0 1
+00
+0000000100020003000400050006000700080009000A000B000C000D000E000F
+0010001100120013001400150016001700180019001A001B001C001D001E001F
+0020002100220023002400250026002700280029002A002B002C002D002E002F
+0030003100320033003400350036003700380039003A003B003C003D003E003F
+0040004100420043004400450046004700480049004A004B004C004D004E004F
+0050005100520053005400550056005700580059005A005B005C005D005E005F
+0060006100620063006400650066006700680069006A006B006C006D006E006F
+0070007100720073007400750076007700780079007A007B007C007D007E007F
+20AC0081201A0083201E20262020202100882030008A2039008C00A802C700B8
+009020182019201C201D20222013201400982122009A203A009C00AF02DB009F
+00A0000000A200A300A4000000A600A700D800A9015600AB00AC00AD00AE00C6
+00B000B100B200B300B400B500B600B700F800B9015700BB00BC00BD00BE00E6
+0104012E0100010600C400C501180112010C00C90179011601220136012A013B
+01600143014500D3014C00D500D600D701720141015A016A00DC017B017D00DF
+0105012F0101010700E400E501190113010D00E9017A011701230137012B013C
+01610144014600F3014D00F500F600F701730142015B016B00FC017C017E02D9


Property changes on: trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp1257.enc
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp1258.enc
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp1258.enc	                        (rev 0)
+++ trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp1258.enc	2020-03-17 20:46:21 UTC (rev 54375)
@@ -0,0 +1,20 @@
+# Encoding file: cp1258, single-byte
+S
+003F 0 1
+00
+0000000100020003000400050006000700080009000A000B000C000D000E000F
+0010001100120013001400150016001700180019001A001B001C001D001E001F
+0020002100220023002400250026002700280029002A002B002C002D002E002F
+0030003100320033003400350036003700380039003A003B003C003D003E003F
+0040004100420043004400450046004700480049004A004B004C004D004E004F
+0050005100520053005400550056005700580059005A005B005C005D005E005F
+0060006100620063006400650066006700680069006A006B006C006D006E006F
+0070007100720073007400750076007700780079007A007B007C007D007E007F
+20AC0081201A0192201E20262020202102C62030008A20390152008D008E008F
+009020182019201C201D20222013201402DC2122009A203A0153009D009E0178
+00A000A100A200A300A400A500A600A700A800A900AA00AB00AC00AD00AE00AF
+00B000B100B200B300B400B500B600B700B800B900BA00BB00BC00BD00BE00BF
+00C000C100C2010200C400C500C600C700C800C900CA00CB030000CD00CE00CF
+011000D1030900D300D401A000D600D700D800D900DA00DB00DC01AF030300DF
+00E000E100E2010300E400E500E600E700E800E900EA00EB030100ED00EE00EF
+011100F1032300F300F401A100F600F700F800F900FA00FB00FC01B020AB00FF


Property changes on: trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp1258.enc
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp437.enc
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp437.enc	                        (rev 0)
+++ trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp437.enc	2020-03-17 20:46:21 UTC (rev 54375)
@@ -0,0 +1,20 @@
+# Encoding file: cp437, single-byte
+S
+003F 0 1
+00
+0000000100020003000400050006000700080009000A000B000C000D000E000F
+0010001100120013001400150016001700180019001A001B001C001D001E001F
+0020002100220023002400250026002700280029002A002B002C002D002E002F
+0030003100320033003400350036003700380039003A003B003C003D003E003F
+0040004100420043004400450046004700480049004A004B004C004D004E004F
+0050005100520053005400550056005700580059005A005B005C005D005E005F
+0060006100620063006400650066006700680069006A006B006C006D006E006F
+0070007100720073007400750076007700780079007A007B007C007D007E007F
+00C700FC00E900E200E400E000E500E700EA00EB00E800EF00EE00EC00C400C5
+00C900E600C600F400F600F200FB00F900FF00D600DC00A200A300A520A70192
+00E100ED00F300FA00F100D100AA00BA00BF231000AC00BD00BC00A100AB00BB
+259125922593250225242561256225562555256325512557255D255C255B2510
+25142534252C251C2500253C255E255F255A25542569256625602550256C2567
+2568256425652559255825522553256B256A2518250C25882584258C25902580
+03B100DF039303C003A303C300B503C403A6039803A903B4221E03C603B52229
+226100B1226522642320232100F7224800B0221900B7221A207F00B225A000A0


Property changes on: trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp437.enc
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp737.enc
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp737.enc	                        (rev 0)
+++ trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp737.enc	2020-03-17 20:46:21 UTC (rev 54375)
@@ -0,0 +1,20 @@
+# Encoding file: cp737, single-byte
+S
+003F 0 1
+00
+0000000100020003000400050006000700080009000A000B000C000D000E000F
+0010001100120013001400150016001700180019001A001B001C001D001E001F
+0020002100220023002400250026002700280029002A002B002C002D002E002F
+0030003100320033003400350036003700380039003A003B003C003D003E003F
+0040004100420043004400450046004700480049004A004B004C004D004E004F
+0050005100520053005400550056005700580059005A005B005C005D005E005F
+0060006100620063006400650066006700680069006A006B006C006D006E006F
+0070007100720073007400750076007700780079007A007B007C007D007E007F
+039103920393039403950396039703980399039A039B039C039D039E039F03A0
+03A103A303A403A503A603A703A803A903B103B203B303B403B503B603B703B8
+03B903BA03BB03BC03BD03BE03BF03C003C103C303C203C403C503C603C703C8
+259125922593250225242561256225562555256325512557255D255C255B2510
+25142534252C251C2500253C255E255F255A25542569256625602550256C2567
+2568256425652559255825522553256B256A2518250C25882584258C25902580
+03C903AC03AD03AE03CA03AF03CC03CD03CB03CE038603880389038A038C038E
+038F00B12265226403AA03AB00F7224800B0221900B7221A207F00B225A000A0


Property changes on: trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp737.enc
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp775.enc
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp775.enc	                        (rev 0)
+++ trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp775.enc	2020-03-17 20:46:21 UTC (rev 54375)
@@ -0,0 +1,20 @@
+# Encoding file: cp775, single-byte
+S
+003F 0 1
+00
+0000000100020003000400050006000700080009000A000B000C000D000E000F
+0010001100120013001400150016001700180019001A001B001C001D001E001F
+0020002100220023002400250026002700280029002A002B002C002D002E002F
+0030003100320033003400350036003700380039003A003B003C003D003E003F
+0040004100420043004400450046004700480049004A004B004C004D004E004F
+0050005100520053005400550056005700580059005A005B005C005D005E005F
+0060006100620063006400650066006700680069006A006B006C006D006E006F
+0070007100720073007400750076007700780079007A007B007C007D007E007F
+010600FC00E9010100E4012300E501070142011301560157012B017900C400C5
+00C900E600C6014D00F6012200A2015A015B00D600DC00F800A300D800D700A4
+0100012A00F3017B017C017A201D00A600A900AE00AC00BD00BC014100AB00BB
+259125922593250225240104010C01180116256325512557255D012E01602510
+25142534252C251C2500253C0172016A255A25542569256625602550256C017D
+0105010D01190117012F01610173016B017E2518250C25882584258C25902580
+00D300DF014C014300F500D500B5014401360137013B013C0146011201452019
+00AD00B1201C00BE00B600A700F7201E00B0221900B700B900B300B225A000A0


Property changes on: trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp775.enc
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp850.enc
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp850.enc	                        (rev 0)
+++ trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp850.enc	2020-03-17 20:46:21 UTC (rev 54375)
@@ -0,0 +1,20 @@
+# Encoding file: cp850, single-byte
+S
+003F 0 1
+00
+0000000100020003000400050006000700080009000A000B000C000D000E000F
+0010001100120013001400150016001700180019001A001B001C001D001E001F
+0020002100220023002400250026002700280029002A002B002C002D002E002F
+0030003100320033003400350036003700380039003A003B003C003D003E003F
+0040004100420043004400450046004700480049004A004B004C004D004E004F
+0050005100520053005400550056005700580059005A005B005C005D005E005F
+0060006100620063006400650066006700680069006A006B006C006D006E006F
+0070007100720073007400750076007700780079007A007B007C007D007E007F
+00C700FC00E900E200E400E000E500E700EA00EB00E800EF00EE00EC00C400C5
+00C900E600C600F400F600F200FB00F900FF00D600DC00F800A300D800D70192
+00E100ED00F300FA00F100D100AA00BA00BF00AE00AC00BD00BC00A100AB00BB
+2591259225932502252400C100C200C000A9256325512557255D00A200A52510
+25142534252C251C2500253C00E300C3255A25542569256625602550256C00A4
+00F000D000CA00CB00C8013100CD00CE00CF2518250C2588258400A600CC2580
+00D300DF00D400D200F500D500B500FE00DE00DA00DB00D900FD00DD00AF00B4
+00AD00B1201700BE00B600A700F700B800B000A800B700B900B300B225A000A0


Property changes on: trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp850.enc
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp852.enc
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp852.enc	                        (rev 0)
+++ trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp852.enc	2020-03-17 20:46:21 UTC (rev 54375)
@@ -0,0 +1,20 @@
+# Encoding file: cp852, single-byte
+S
+003F 0 1
+00
+0000000100020003000400050006000700080009000A000B000C000D000E000F
+0010001100120013001400150016001700180019001A001B001C001D001E001F
+0020002100220023002400250026002700280029002A002B002C002D002E002F
+0030003100320033003400350036003700380039003A003B003C003D003E003F
+0040004100420043004400450046004700480049004A004B004C004D004E004F
+0050005100520053005400550056005700580059005A005B005C005D005E005F
+0060006100620063006400650066006700680069006A006B006C006D006E006F
+0070007100720073007400750076007700780079007A007B007C007D007E007F
+00C700FC00E900E200E4016F010700E7014200EB0150015100EE017900C40106
+00C90139013A00F400F6013D013E015A015B00D600DC01640165014100D7010D
+00E100ED00F300FA01040105017D017E0118011900AC017A010C015F00AB00BB
+2591259225932502252400C100C2011A015E256325512557255D017B017C2510
+25142534252C251C2500253C01020103255A25542569256625602550256C00A4
+01110110010E00CB010F014700CD00CE011B2518250C258825840162016E2580
+00D300DF00D401430144014801600161015400DA0155017000FD00DD016300B4
+00AD02DD02DB02C702D800A700F700B800B000A802D901710158015925A000A0


Property changes on: trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp852.enc
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp855.enc
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp855.enc	                        (rev 0)
+++ trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp855.enc	2020-03-17 20:46:21 UTC (rev 54375)
@@ -0,0 +1,20 @@
+# Encoding file: cp855, single-byte
+S
+003F 0 1
+00
+0000000100020003000400050006000700080009000A000B000C000D000E000F
+0010001100120013001400150016001700180019001A001B001C001D001E001F
+0020002100220023002400250026002700280029002A002B002C002D002E002F
+0030003100320033003400350036003700380039003A003B003C003D003E003F
+0040004100420043004400450046004700480049004A004B004C004D004E004F
+0050005100520053005400550056005700580059005A005B005C005D005E005F
+0060006100620063006400650066006700680069006A006B006C006D006E006F
+0070007100720073007400750076007700780079007A007B007C007D007E007F
+0452040204530403045104010454040404550405045604060457040704580408
+04590409045A040A045B040B045C040C045E040E045F040F044E042E044A042A
+0430041004310411044604260434041404350415044404240433041300AB00BB
+259125922593250225240445042504380418256325512557255D043904192510
+25142534252C251C2500253C043A041A255A25542569256625602550256C00A4
+043B041B043C041C043D041D043E041E043F2518250C25882584041F044F2580
+042F044004200441042104420422044304230436041604320412044C042C2116
+00AD044B042B0437041704480428044D042D044904290447042700A725A000A0


Property changes on: trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp855.enc
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp857.enc
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp857.enc	                        (rev 0)
+++ trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp857.enc	2020-03-17 20:46:21 UTC (rev 54375)
@@ -0,0 +1,20 @@
+# Encoding file: cp857, single-byte
+S
+003F 0 1
+00
+0000000100020003000400050006000700080009000A000B000C000D000E000F
+0010001100120013001400150016001700180019001A001B001C001D001E001F
+0020002100220023002400250026002700280029002A002B002C002D002E002F
+0030003100320033003400350036003700380039003A003B003C003D003E003F
+0040004100420043004400450046004700480049004A004B004C004D004E004F
+0050005100520053005400550056005700580059005A005B005C005D005E005F
+0060006100620063006400650066006700680069006A006B006C006D006E006F
+0070007100720073007400750076007700780079007A007B007C007D007E007F
+00C700FC00E900E200E400E000E500E700EA00EB00E800EF00EE013100C400C5
+00C900E600C600F400F600F200FB00F9013000D600DC00F800A300D8015E015F
+00E100ED00F300FA00F100D1011E011F00BF00AE00AC00BD00BC00A100AB00BB
+2591259225932502252400C100C200C000A9256325512557255D00A200A52510
+25142534252C251C2500253C00E300C3255A25542569256625602550256C00A4
+00BA00AA00CA00CB00C8000000CD00CE00CF2518250C2588258400A600CC2580
+00D300DF00D400D200F500D500B5000000D700DA00DB00D900EC00FF00AF00B4
+00AD00B1000000BE00B600A700F700B800B000A800B700B900B300B225A000A0


Property changes on: trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp857.enc
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp860.enc
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp860.enc	                        (rev 0)
+++ trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp860.enc	2020-03-17 20:46:21 UTC (rev 54375)
@@ -0,0 +1,20 @@
+# Encoding file: cp860, single-byte
+S
+003F 0 1
+00
+0000000100020003000400050006000700080009000A000B000C000D000E000F
+0010001100120013001400150016001700180019001A001B001C001D001E001F
+0020002100220023002400250026002700280029002A002B002C002D002E002F
+0030003100320033003400350036003700380039003A003B003C003D003E003F
+0040004100420043004400450046004700480049004A004B004C004D004E004F
+0050005100520053005400550056005700580059005A005B005C005D005E005F
+0060006100620063006400650066006700680069006A006B006C006D006E006F
+0070007100720073007400750076007700780079007A007B007C007D007E007F
+00C700FC00E900E200E300E000C100E700EA00CA00E800CD00D400EC00C300C2
+00C900C000C800F400F500F200DA00F900CC00D500DC00A200A300D920A700D3
+00E100ED00F300FA00F100D100AA00BA00BF00D200AC00BD00BC00A100AB00BB
+259125922593250225242561256225562555256325512557255D255C255B2510
+25142534252C251C2500253C255E255F255A25542569256625602550256C2567
+2568256425652559255825522553256B256A2518250C25882584258C25902580
+03B100DF039303C003A303C300B503C403A6039803A903B4221E03C603B52229
+226100B1226522642320232100F7224800B0221900B7221A207F00B225A000A0


Property changes on: trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp860.enc
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp861.enc
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp861.enc	                        (rev 0)
+++ trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp861.enc	2020-03-17 20:46:21 UTC (rev 54375)
@@ -0,0 +1,20 @@
+# Encoding file: cp861, single-byte
+S
+003F 0 1
+00
+0000000100020003000400050006000700080009000A000B000C000D000E000F
+0010001100120013001400150016001700180019001A001B001C001D001E001F
+0020002100220023002400250026002700280029002A002B002C002D002E002F
+0030003100320033003400350036003700380039003A003B003C003D003E003F
+0040004100420043004400450046004700480049004A004B004C004D004E004F
+0050005100520053005400550056005700580059005A005B005C005D005E005F
+0060006100620063006400650066006700680069006A006B006C006D006E006F
+0070007100720073007400750076007700780079007A007B007C007D007E007F
+00C700FC00E900E200E400E000E500E700EA00EB00E800D000F000DE00C400C5
+00C900E600C600F400F600FE00FB00DD00FD00D600DC00F800A300D820A70192
+00E100ED00F300FA00C100CD00D300DA00BF231000AC00BD00BC00A100AB00BB
+259125922593250225242561256225562555256325512557255D255C255B2510
+25142534252C251C2500253C255E255F255A25542569256625602550256C2567
+2568256425652559255825522553256B256A2518250C25882584258C25902580
+03B100DF039303C003A303C300B503C403A6039803A903B4221E03C603B52229
+226100B1226522642320232100F7224800B0221900B7221A207F00B225A000A0


Property changes on: trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp861.enc
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp862.enc
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp862.enc	                        (rev 0)
+++ trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp862.enc	2020-03-17 20:46:21 UTC (rev 54375)
@@ -0,0 +1,20 @@
+# Encoding file: cp862, single-byte
+S
+003F 0 1
+00
+0000000100020003000400050006000700080009000A000B000C000D000E000F
+0010001100120013001400150016001700180019001A001B001C001D001E001F
+0020002100220023002400250026002700280029002A002B002C002D002E002F
+0030003100320033003400350036003700380039003A003B003C003D003E003F
+0040004100420043004400450046004700480049004A004B004C004D004E004F
+0050005100520053005400550056005700580059005A005B005C005D005E005F
+0060006100620063006400650066006700680069006A006B006C006D006E006F
+0070007100720073007400750076007700780079007A007B007C007D007E007F
+05D005D105D205D305D405D505D605D705D805D905DA05DB05DC05DD05DE05DF
+05E005E105E205E305E405E505E605E705E805E905EA00A200A300A520A70192
+00E100ED00F300FA00F100D100AA00BA00BF231000AC00BD00BC00A100AB00BB
+259125922593250225242561256225562555256325512557255D255C255B2510
+25142534252C251C2500253C255E255F255A25542569256625602550256C2567
+2568256425652559255825522553256B256A2518250C25882584258C25902580
+03B100DF039303C003A303C300B503C403A6039803A903B4221E03C603B52229
+226100B1226522642320232100F7224800B0221900B7221A207F00B225A000A0


Property changes on: trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp862.enc
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp863.enc
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp863.enc	                        (rev 0)
+++ trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp863.enc	2020-03-17 20:46:21 UTC (rev 54375)
@@ -0,0 +1,20 @@
+# Encoding file: cp863, single-byte
+S
+003F 0 1
+00
+0000000100020003000400050006000700080009000A000B000C000D000E000F
+0010001100120013001400150016001700180019001A001B001C001D001E001F
+0020002100220023002400250026002700280029002A002B002C002D002E002F
+0030003100320033003400350036003700380039003A003B003C003D003E003F
+0040004100420043004400450046004700480049004A004B004C004D004E004F
+0050005100520053005400550056005700580059005A005B005C005D005E005F
+0060006100620063006400650066006700680069006A006B006C006D006E006F
+0070007100720073007400750076007700780079007A007B007C007D007E007F
+00C700FC00E900E200C200E000B600E700EA00EB00E800EF00EE201700C000A7
+00C900C800CA00F400CB00CF00FB00F900A400D400DC00A200A300D900DB0192
+00A600B400F300FA00A800B800B300AF00CE231000AC00BD00BC00BE00AB00BB
+259125922593250225242561256225562555256325512557255D255C255B2510
+25142534252C251C2500253C255E255F255A25542569256625602550256C2567
+2568256425652559255825522553256B256A2518250C25882584258C25902580
+03B100DF039303C003A303C300B503C403A6039803A903B4221E03C603B52229
+226100B1226522642320232100F7224800B0221900B7221A207F00B225A000A0


Property changes on: trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp863.enc
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp864.enc
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp864.enc	                        (rev 0)
+++ trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp864.enc	2020-03-17 20:46:21 UTC (rev 54375)
@@ -0,0 +1,20 @@
+# Encoding file: cp864, single-byte
+S
+003F 0 1
+00
+0000000100020003000400050006000700080009000A000B000C000D000E000F
+0010001100120013001400150016001700180019001A001B001C001D001E001F
+00200021002200230024066A0026002700280029002A002B002C002D002E002F
+0030003100320033003400350036003700380039003A003B003C003D003E003F
+0040004100420043004400450046004700480049004A004B004C004D004E004F
+0050005100520053005400550056005700580059005A005B005C005D005E005F
+0060006100620063006400650066006700680069006A006B006C006D006E006F
+0070007100720073007400750076007700780079007A007B007C007D007E007F
+00B000B72219221A259225002502253C2524252C251C25342510250C25142518
+03B2221E03C600B100BD00BC224800AB00BBFEF7FEF8009B009CFEFBFEFC009F
+00A000ADFE8200A300A4FE8400000000FE8EFE8FFE95FE99060CFE9DFEA1FEA5
+0660066106620663066406650666066706680669FED1061BFEB1FEB5FEB9061F
+00A2FE80FE81FE83FE85FECAFE8BFE8DFE91FE93FE97FE9BFE9FFEA3FEA7FEA9
+FEABFEADFEAFFEB3FEB7FEBBFEBFFEC1FEC5FECBFECF00A600AC00F700D7FEC9
+0640FED3FED7FEDBFEDFFEE3FEE7FEEBFEEDFEEFFEF3FEBDFECCFECEFECDFEE1
+FE7D0651FEE5FEE9FEECFEF0FEF2FED0FED5FEF5FEF6FEDDFED9FEF125A00000


Property changes on: trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp864.enc
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp865.enc
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp865.enc	                        (rev 0)
+++ trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp865.enc	2020-03-17 20:46:21 UTC (rev 54375)
@@ -0,0 +1,20 @@
+# Encoding file: cp865, single-byte
+S
+003F 0 1
+00
+0000000100020003000400050006000700080009000A000B000C000D000E000F
+0010001100120013001400150016001700180019001A001B001C001D001E001F
+0020002100220023002400250026002700280029002A002B002C002D002E002F
+0030003100320033003400350036003700380039003A003B003C003D003E003F
+0040004100420043004400450046004700480049004A004B004C004D004E004F
+0050005100520053005400550056005700580059005A005B005C005D005E005F
+0060006100620063006400650066006700680069006A006B006C006D006E006F
+0070007100720073007400750076007700780079007A007B007C007D007E007F
+00C700FC00E900E200E400E000E500E700EA00EB00E800EF00EE00EC00C400C5
+00C900E600C600F400F600F200FB00F900FF00D600DC00F800A300D820A70192
+00E100ED00F300FA00F100D100AA00BA00BF231000AC00BD00BC00A100AB00A4
+259125922593250225242561256225562555256325512557255D255C255B2510
+25142534252C251C2500253C255E255F255A25542569256625602550256C2567
+2568256425652559255825522553256B256A2518250C25882584258C25902580
+03B100DF039303C003A303C300B503C403A6039803A903B4221E03C603B52229
+226100B1226522642320232100F7224800B0221900B7221A207F00B225A000A0


Property changes on: trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp865.enc
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp866.enc
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp866.enc	                        (rev 0)
+++ trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp866.enc	2020-03-17 20:46:21 UTC (rev 54375)
@@ -0,0 +1,20 @@
+# Encoding file: cp866, single-byte
+S
+003F 0 1
+00
+0000000100020003000400050006000700080009000A000B000C000D000E000F
+0010001100120013001400150016001700180019001A001B001C001D001E001F
+0020002100220023002400250026002700280029002A002B002C002D002E002F
+0030003100320033003400350036003700380039003A003B003C003D003E003F
+0040004100420043004400450046004700480049004A004B004C004D004E004F
+0050005100520053005400550056005700580059005A005B005C005D005E005F
+0060006100620063006400650066006700680069006A006B006C006D006E006F
+0070007100720073007400750076007700780079007A007B007C007D007E007F
+0410041104120413041404150416041704180419041A041B041C041D041E041F
+0420042104220423042404250426042704280429042A042B042C042D042E042F
+0430043104320433043404350436043704380439043A043B043C043D043E043F
+259125922593250225242561256225562555256325512557255D255C255B2510
+25142534252C251C2500253C255E255F255A25542569256625602550256C2567
+2568256425652559255825522553256B256A2518250C25882584258C25902580
+0440044104420443044404450446044704480449044A044B044C044D044E044F
+040104510404045404070457040E045E00B0221900B7221A211600A425A000A0


Property changes on: trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp866.enc
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp869.enc
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp869.enc	                        (rev 0)
+++ trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp869.enc	2020-03-17 20:46:21 UTC (rev 54375)
@@ -0,0 +1,20 @@
+# Encoding file: cp869, single-byte
+S
+003F 0 1
+00
+0000000100020003000400050006000700080009000A000B000C000D000E000F
+0010001100120013001400150016001700180019001A001B001C001D001E001F
+0020002100220023002400250026002700280029002A002B002C002D002E002F
+0030003100320033003400350036003700380039003A003B003C003D003E003F
+0040004100420043004400450046004700480049004A004B004C004D004E004F
+0050005100520053005400550056005700580059005A005B005C005D005E005F
+0060006100620063006400650066006700680069006A006B006C006D006E006F
+0070007100720073007400750076007700780079007A007B007C007D007E007F
+0080008100820083008400850386008700B700AC00A620182019038820150389
+038A03AA038C00930094038E03AB00A9038F00B200B303AC00A303AD03AE03AF
+03CA039003CC03CD039103920393039403950396039700BD0398039900AB00BB
+25912592259325022524039A039B039C039D256325512557255D039E039F2510
+25142534252C251C2500253C03A003A1255A25542569256625602550256C03A3
+03A403A503A603A703A803A903B103B203B32518250C2588258403B403B52580
+03B603B703B803B903BA03BB03BC03BD03BE03BF03C003C103C303C203C40384
+00AD00B103C503C603C700A703C8038500B000A803C903CB03B003CE25A000A0


Property changes on: trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp869.enc
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp874.enc
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp874.enc	                        (rev 0)
+++ trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp874.enc	2020-03-17 20:46:21 UTC (rev 54375)
@@ -0,0 +1,20 @@
+# Encoding file: cp874, single-byte
+S
+003F 0 1
+00
+0000000100020003000400050006000700080009000A000B000C000D000E000F
+0010001100120013001400150016001700180019001A001B001C001D001E001F
+0020002100220023002400250026002700280029002A002B002C002D002E002F
+0030003100320033003400350036003700380039003A003B003C003D003E003F
+0040004100420043004400450046004700480049004A004B004C004D004E004F
+0050005100520053005400550056005700580059005A005B005C005D005E005F
+0060006100620063006400650066006700680069006A006B006C006D006E006F
+0070007100720073007400750076007700780079007A007B007C007D007E007F
+20AC008100820083008420260086008700880089008A008B008C008D008E008F
+009020182019201C201D20222013201400980099009A009B009C009D009E009F
+00A00E010E020E030E040E050E060E070E080E090E0A0E0B0E0C0E0D0E0E0E0F
+0E100E110E120E130E140E150E160E170E180E190E1A0E1B0E1C0E1D0E1E0E1F
+0E200E210E220E230E240E250E260E270E280E290E2A0E2B0E2C0E2D0E2E0E2F
+0E300E310E320E330E340E350E360E370E380E390E3A00000000000000000E3F
+0E400E410E420E430E440E450E460E470E480E490E4A0E4B0E4C0E4D0E4E0E4F
+0E500E510E520E530E540E550E560E570E580E590E5A0E5B0000000000000000


Property changes on: trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp874.enc
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp932.enc
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp932.enc	                        (rev 0)
+++ trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp932.enc	2020-03-17 20:46:21 UTC (rev 54375)
@@ -0,0 +1,801 @@
+# Encoding file: cp932, multi-byte
+M
+003F 0 46
+00
+0000000100020003000400050006000700080009000A000B000C000D000E000F
+0010001100120013001400150016001700180019001A001B001C001D001E001F
+0020002100220023002400250026002700280029002A002B002C002D002E002F
+0030003100320033003400350036003700380039003A003B003C003D003E003F
+0040004100420043004400450046004700480049004A004B004C004D004E004F
+0050005100520053005400550056005700580059005A005B005C005D005E005F
+0060006100620063006400650066006700680069006A006B006C006D006E006F
+0070007100720073007400750076007700780079007A007B007C007D007E007F
+0080000000000000000000850086000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000FF61FF62FF63FF64FF65FF66FF67FF68FF69FF6AFF6BFF6CFF6DFF6EFF6F
+FF70FF71FF72FF73FF74FF75FF76FF77FF78FF79FF7AFF7BFF7CFF7DFF7EFF7F
+FF80FF81FF82FF83FF84FF85FF86FF87FF88FF89FF8AFF8BFF8CFF8DFF8EFF8F
+FF90FF91FF92FF93FF94FF95FF96FF97FF98FF99FF9AFF9BFF9CFF9DFF9EFF9F
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+81
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+300030013002FF0CFF0E30FBFF1AFF1BFF1FFF01309B309C00B4FF4000A8FF3E
+FFE3FF3F30FD30FE309D309E30034EDD30053006300730FC20152010FF0FFF3C
+FF5E2225FF5C2026202520182019201C201DFF08FF0930143015FF3BFF3DFF5B
+FF5D30083009300A300B300C300D300E300F30103011FF0BFF0D00B100D70000
+00F7FF1D2260FF1CFF1E22662267221E22342642264000B0203220332103FFE5
+FF04FFE0FFE1FF05FF03FF06FF0AFF2000A72606260525CB25CF25CE25C725C6
+25A125A025B325B225BD25BC203B301221922190219121933013000000000000
+000000000000000000000000000000002208220B2286228722822283222A2229
+0000000000000000000000000000000022272228FFE221D221D4220022030000
+0000000000000000000000000000000000000000222022A52312220222072261
+2252226A226B221A223D221D2235222B222C0000000000000000000000000000
+212B2030266F266D266A2020202100B6000000000000000025EF000000000000
+82
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000FF10
+FF11FF12FF13FF14FF15FF16FF17FF18FF190000000000000000000000000000
+FF21FF22FF23FF24FF25FF26FF27FF28FF29FF2AFF2BFF2CFF2DFF2EFF2FFF30
+FF31FF32FF33FF34FF35FF36FF37FF38FF39FF3A000000000000000000000000
+0000FF41FF42FF43FF44FF45FF46FF47FF48FF49FF4AFF4BFF4CFF4DFF4EFF4F
+FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5A00000000000000003041
+30423043304430453046304730483049304A304B304C304D304E304F30503051
+30523053305430553056305730583059305A305B305C305D305E305F30603061
+30623063306430653066306730683069306A306B306C306D306E306F30703071
+30723073307430753076307730783079307A307B307C307D307E307F30803081
+30823083308430853086308730883089308A308B308C308D308E308F30903091
+3092309300000000000000000000000000000000000000000000000000000000
+83
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+30A130A230A330A430A530A630A730A830A930AA30AB30AC30AD30AE30AF30B0
+30B130B230B330B430B530B630B730B830B930BA30BB30BC30BD30BE30BF30C0
+30C130C230C330C430C530C630C730C830C930CA30CB30CC30CD30CE30CF30D0
+30D130D230D330D430D530D630D730D830D930DA30DB30DC30DD30DE30DF0000
+30E030E130E230E330E430E530E630E730E830E930EA30EB30EC30ED30EE30EF
+30F030F130F230F330F430F530F6000000000000000000000000000000000391
+03920393039403950396039703980399039A039B039C039D039E039F03A003A1
+03A303A403A503A603A703A803A90000000000000000000000000000000003B1
+03B203B303B403B503B603B703B803B903BA03BB03BC03BD03BE03BF03C003C1
+03C303C403C503C603C703C803C9000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+84
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+04100411041204130414041504010416041704180419041A041B041C041D041E
+041F0420042104220423042404250426042704280429042A042B042C042D042E
+042F000000000000000000000000000000000000000000000000000000000000
+04300431043204330434043504510436043704380439043A043B043C043D0000
+043E043F0440044104420443044404450446044704480449044A044B044C044D
+044E044F00000000000000000000000000000000000000000000000000002500
+2502250C251025182514251C252C25242534253C25012503250F2513251B2517
+25232533252B253B254B2520252F25282537253F251D25302525253825420000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+87
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+2460246124622463246424652466246724682469246A246B246C246D246E246F
+2470247124722473216021612162216321642165216621672168216900003349
+33143322334D331833273303333633513357330D33263323332B334A333B339C
+339D339E338E338F33C433A100000000000000000000000000000000337B0000
+301D301F211633CD212132A432A532A632A732A8323132323239337E337D337C
+22522261222B222E2211221A22A52220221F22BF22352229222A000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+88
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000004E9C
+55165A03963F54C0611B632859F690228475831C7A5060AA63E16E2565ED8466
+82A69BF56893572765A162715B9B59D0867B98F47D627DBE9B8E62167C9F88B7
+5B895EB563096697684895C7978D674F4EE54F0A4F4D4F9D504956F2593759D4
+5A015C0960DF610F61706613690570BA754F757079FB7DAD7DEF80C3840E8863
+8B029055907A533B4E954EA557DF80B290C178EF4E0058F16EA290387A328328
+828B9C2F5141537054BD54E156E059FB5F1598F26DEB80E4852D000000000000
+89
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+9662967096A097FB540B53F35B8770CF7FBD8FC296E8536F9D5C7ABA4E117893
+81FC6E26561855046B1D851A9C3B59E553A96D6674DC958F56424E91904B96F2
+834F990C53E155B65B305F71662066F368046C386CF36D29745B76C87A4E9834
+82F1885B8A6092ED6DB275AB76CA99C560A68B018D8A95B2698E53AD51860000
+5712583059445BB45EF6602863A963F46CBF6F14708E7114715971D5733F7E01
+827682D185979060925B9D1B586965BC6C5A752551F9592E59655F805FDC62BC
+65FA6A2A6B276BB4738B7FC189569D2C9D0E9EC45CA16C96837B51045C4B61B6
+81C6687672614E594FFA537860696E297A4F97F34E0B53164EEE4F554F3D4FA1
+4F7352A053EF5609590F5AC15BB65BE179D16687679C67B66B4C6CB3706B73C2
+798D79BE7A3C7B8782B182DB8304837783EF83D387668AB256298CA88FE6904E
+971E868A4FC45CE862117259753B81E582BD86FE8CC096C5991399D54ECB4F1A
+89E356DE584A58CA5EFB5FEB602A6094606261D0621262D06539000000000000
+8A
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+9B41666668B06D777070754C76867D7582A587F9958B968E8C9D51F152BE5916
+54B35BB35D16616869826DAF788D84CB88578A7293A79AB86D6C99A886D957A3
+67FF86CE920E5283568754045ED362E164B9683C68386BBB737278BA7A6B899A
+89D28D6B8F0390ED95A3969497695B665CB3697D984D984E639B7B206A2B0000
+6A7F68B69C0D6F5F5272559D607062EC6D3B6E076ED1845B89108F444E149C39
+53F6691B6A3A9784682A515C7AC384B291DC938C565B9D286822830584317CA5
+520882C574E64E7E4F8351A05BD2520A52D852E75DFB559A582A59E65B8C5B98
+5BDB5E725E7960A3611F616361BE63DB656267D1685368FA6B3E6B536C576F22
+6F976F4574B0751876E3770B7AFF7BA17C217DE97F367FF0809D8266839E89B3
+8ACC8CAB908494519593959195A2966597D3992882184E38542B5CB85DCC73A9
+764C773C5CA97FEB8D0B96C19811985498584F014F0E5371559C566857FA5947
+5B095BC45C905E0C5E7E5FCC63EE673A65D765E2671F68CB68C4000000000000
+8B
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+6A5F5E306BC56C176C7D757F79485B637A007D005FBD898F8A188CB48D778ECC
+8F1D98E29A0E9B3C4E80507D510059935B9C622F628064EC6B3A72A075917947
+7FA987FB8ABC8B7063AC83CA97A05409540355AB68546A588A70782767759ECD
+53745BA2811A865090064E184E454EC74F1153CA54385BAE5F13602565510000
+673D6C426C726CE3707874037A767AAE7B087D1A7CFE7D6665E7725B53BB5C45
+5DE862D262E063196E20865A8A318DDD92F86F0179A69B5A4EA84EAB4EAC4F9B
+4FA050D151477AF6517151F653545321537F53EB55AC58835CE15F375F4A602F
+6050606D631F65596A4B6CC172C272ED77EF80F881058208854E90F793E197FF
+99579A5A4EF051DD5C2D6681696D5C4066F26975738968507C8150C552E45747
+5DFE932665A46B236B3D7434798179BD7B4B7DCA82B983CC887F895F8B398FD1
+91D1541F92804E5D503653E5533A72D7739677E982E68EAF99C699C899D25177
+611A865E55B07A7A50765BD3904796854E326ADB91E75C515C48000000000000
+8C
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+63987A9F6C9397748F617AAA718A96887C8268177E706851936C52F2541B85AB
+8A137FA48ECD90E15366888879414FC250BE521151445553572D73EA578B5951
+5F625F8460756176616761A963B2643A656C666F68426E1375667A3D7CFB7D4C
+7D997E4B7F6B830E834A86CD8A088A638B668EFD981A9D8F82B88FCE9BE80000
+5287621F64836FC09699684150916B206C7A6F547A747D5088408A2367084EF6
+503950265065517C5238526355A7570F58055ACC5EFA61B261F862F36372691C
+6A29727D72AC732E7814786F7D79770C80A9898B8B198CE28ED290639375967A
+98559A139E785143539F53B35E7B5F266E1B6E90738473FE7D4382378A008AFA
+96504E4E500B53E4547C56FA59D15B645DF15EAB5F276238654567AF6E5672D0
+7CCA88B480A180E183F0864E8A878DE8923796C798679F134E944E924F0D5348
+5449543E5A2F5F8C5FA1609F68A76A8E745A78818A9E8AA48B7791904E5E9BC9
+4EA44F7C4FAF501950165149516C529F52B952FE539A53E35411000000000000
+8D
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+540E5589575157A2597D5B545B5D5B8F5DE55DE75DF75E785E835E9A5EB75F18
+6052614C629762D863A7653B6602664366F4676D6821689769CB6C5F6D2A6D69
+6E2F6E9D75327687786C7A3F7CE07D057D187D5E7DB18015800380AF80B18154
+818F822A8352884C88618B1B8CA28CFC90CA91759271783F92FC95A4964D0000
+980599999AD89D3B525B52AB53F7540858D562F76FE08C6A8F5F9EB9514B523B
+544A56FD7A4091779D609ED273446F09817075115FFD60DA9AA872DB8FBC6B64
+98034ECA56F0576458BE5A5A606861C7660F6606683968B16DF775D57D3A826E
+9B424E9B4F5053C955065D6F5DE65DEE67FB6C99747378028A50939688DF5750
+5EA7632B50B550AC518D670054C9585E59BB5BB05F69624D63A1683D6B736E08
+707D91C7728078157826796D658E7D3083DC88C18F09969B5264572867507F6A
+8CA151B45742962A583A698A80B454B25D0E57FC78959DFA4F5C524A548B643E
+6628671467F57A847B567D22932F685C9BAD7B395319518A5237000000000000
+8E
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+5BDF62F664AE64E6672D6BBA85A996D176909BD6634C93069BAB76BF66524E09
+509853C25C7160E864926563685F71E673CA75237B977E8286958B838CDB9178
+991065AC66AB6B8B4ED54ED44F3A4F7F523A53F853F255E356DB58EB59CB59C9
+59FF5B505C4D5E025E2B5FD7601D6307652F5B5C65AF65BD65E8679D6B620000
+6B7B6C0F7345794979C17CF87D197D2B80A2810281F389968A5E8A698A668A8C
+8AEE8CC78CDC96CC98FC6B6F4E8B4F3C4F8D51505B575BFA6148630166426B21
+6ECB6CBB723E74BD75D478C1793A800C803381EA84948F9E6C509E7F5F0F8B58
+9D2B7AFA8EF85B8D96EB4E0353F157F759315AC95BA460896E7F6F0675BE8CEA
+5B9F85007BE0507267F4829D5C61854A7E1E820E51995C0463688D66659C716E
+793E7D1780058B1D8ECA906E86C790AA501F52FA5C3A6753707C7235914C91C8
+932B82E55BC25F3160F94E3B53D65B88624B67316B8A72E973E07A2E816B8DA3
+91529996511253D7546A5BFF63886A397DAC970056DA53CE5468000000000000
+8F
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+5B975C315DDE4FEE610162FE6D3279C079CB7D427E4D7FD281ED821F84908846
+89728B908E748F2F9031914B916C96C6919C4EC04F4F514553415F93620E67D4
+6C416E0B73637E2691CD928353D459195BBF6DD1795D7E2E7C9B587E719F51FA
+88538FF04FCA5CFB662577AC7AE3821C99FF51C65FAA65EC696F6B896DF30000
+6E966F6476FE7D145DE190759187980651E6521D6240669166D96E1A5EB67DD2
+7F7266F885AF85F78AF852A953D959735E8F5F90605592E4966450B7511F52DD
+5320534753EC54E8554655315617596859BE5A3C5BB55C065C0F5C115C1A5E84
+5E8A5EE05F70627F628462DB638C63776607660C662D6676677E68A26A1F6A35
+6CBC6D886E096E58713C7126716775C77701785D7901796579F07AE07B117CA7
+7D39809683D6848B8549885D88F38A1F8A3C8A548A738C618CDE91A49266937E
+9418969C97984E0A4E084E1E4E575197527057CE583458CC5B225E3860C564FE
+676167566D4472B675737A6384B88B7291B89320563157F498FE000000000000
+90
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+62ED690D6B9671ED7E548077827289E698DF87558FB15C3B4F384FE14FB55507
+5A205BDD5BE95FC3614E632F65B0664B68EE699B6D786DF1753375B9771F795E
+79E67D3381E382AF85AA89AA8A3A8EAB8F9B903291DD97074EBA4EC152035875
+58EC5C0B751A5C3D814E8A0A8FC59663976D7B258ACF9808916256F353A80000
+9017543957825E2563A86C34708A77617C8B7FE088709042915493109318968F
+745E9AC45D075D69657067A28DA896DB636E6749691983C5981796C088FE6F84
+647A5BF84E16702C755D662F51C4523652E259D35F8160276210653F6574661F
+667468F268166B636E057272751F76DB7CBE805658F088FD897F8AA08A938ACB
+901D91929752975965897A0E810696BB5E2D60DC621A65A56614679077F37A4D
+7C4D7E3E810A8CAC8D648DE18E5F78A9520762D963A5644262988A2D7A837BC0
+8AAC96EA7D76820C87494ED95148534353605BA35C025C165DDD6226624764B0
+681368346CC96D456D1767D36F5C714E717D65CB7A7F7BAD7DDA000000000000
+91
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+7E4A7FA8817A821B823985A68A6E8CCE8DF59078907792AD929195839BAE524D
+55846F387136516879857E5581B37CCE564C58515CA863AA66FE66FD695A72D9
+758F758E790E795679DF7C977D207D4486078A34963B90619F2050E7527553CC
+53E2500955AA58EE594F723D5B8B5C64531D60E360F3635C6383633F63BB0000
+64CD65E966F95DE369CD69FD6F1571E54E8975E976F87A937CDF7DCF7D9C8061
+83498358846C84BC85FB88C58D709001906D9397971C9A1250CF5897618E81D3
+85358D0890204FC3507452475373606F6349675F6E2C8DB3901F4FD75C5E8CCA
+65CF7D9A53528896517663C35B585B6B5C0A640D6751905C4ED6591A592A6C70
+8A51553E581559A560F0625367C182356955964099C49A284F5358065BFE8010
+5CB15E2F5F856020614B623466FF6CF06EDE80CE817F82D4888B8CB89000902E
+968A9EDB9BDB4EE353F059277B2C918D984C9DF96EDD7027535355445B856258
+629E62D36CA26FEF74228A1794386FC18AFE833851E786F853EA000000000000
+92
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+53E94F4690548FB0596A81315DFD7AEA8FBF68DA8C3772F89C486A3D8AB04E39
+53585606576662C563A265E66B4E6DE16E5B70AD77ED7AEF7BAA7DBB803D80C6
+86CB8A95935B56E358C75F3E65AD66966A806BB575378AC7502477E557305F1B
+6065667A6C6075F47A1A7F6E81F48718904599B37BC9755C7AF97B5184C40000
+901079E97A9283365AE177404E2D4EF25B995FE062BD663C67F16CE8866B8877
+8A3B914E92F399D06A177026732A82E784578CAF4E01514651CB558B5BF55E16
+5E335E815F145F355F6B5FB461F2631166A2671D6F6E7252753A773A80748139
+817887768ABF8ADC8D858DF3929A957798029CE552C5635776F467156C8873CD
+8CC393AE96736D25589C690E69CC8FFD939A75DB901A585A680263B469FB4F43
+6F2C67D88FBB85267DB49354693F6F70576A58F75B2C7D2C722A540A91E39DB4
+4EAD4F4E505C507552438C9E544858245B9A5E1D5E955EAD5EF75F1F608C62B5
+633A63D068AF6C407887798E7A0B7DE082478A028AE68E449013000000000000
+93
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+90B8912D91D89F0E6CE5645864E265756EF476847B1B906993D16EBA54F25FB9
+64A48F4D8FED92445178586B59295C555E976DFB7E8F751C8CBC8EE2985B70B9
+4F1D6BBF6FB1753096FB514E54105835585759AC5C605F926597675C6E21767B
+83DF8CED901490FD934D7825783A52AA5EA6571F597460125012515A51AC0000
+51CD520055105854585859575B955CF65D8B60BC6295642D6771684368BC68DF
+76D76DD86E6F6D9B706F71C85F5375D879777B497B547B527CD67D7152308463
+856985E48A0E8B048C468E0F9003900F94199676982D9A3095D850CD52D5540C
+58025C0E61A7649E6D1E77B37AE580F48404905392855CE09D07533F5F975FB3
+6D9C7279776379BF7BE46BD272EC8AAD68036A6151F87A8169345C4A9CF682EB
+5BC59149701E56785C6F60C765666C8C8C5A90419813545166C7920D594890A3
+51854E4D51EA85998B0E7058637A934B696299B47E047577535769608EDF96E3
+6C5D4E8C5C3C5F108FE953028CD1808986795EFF65E54E735165000000000000
+94
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+59825C3F97EE4EFB598A5FCD8A8D6FE179B079625BE78471732B71B15E745FF5
+637B649A71C37C984E435EFC4E4B57DC56A260A96FC37D0D80FD813381BF8FB2
+899786A45DF4628A64AD898767776CE26D3E743678345A467F7582AD99AC4FF3
+5EC362DD63926557676F76C3724C80CC80BA8F29914D500D57F95A9268850000
+6973716472FD8CB758F28CE0966A9019877F79E477E784294F2F5265535A62CD
+67CF6CCA767D7B947C95823685848FEB66DD6F2072067E1B83AB99C19EA651FD
+7BB178727BB880877B486AE85E61808C75517560516B92626E8C767A91979AEA
+4F107F70629C7B4F95A59CE9567A585986E496BC4F345224534A53CD53DB5E06
+642C6591677F6C3E6C4E724872AF73ED75547E41822C85E98CA97BC491C67169
+981298EF633D6669756A76E478D0854386EE532A5351542659835E875F7C60B2
+6249627962AB65906BD46CCC75B276AE789179D87DCB7F7780A588AB8AB98CBB
+907F975E98DB6A0B7C3850995C3E5FAE67876BD8743577097F8E000000000000
+95
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+9F3B67CA7A175339758B9AED5F66819D83F180985F3C5FC575627B46903C6867
+59EB5A9B7D10767E8B2C4FF55F6A6A196C376F0274E2796888688A558C795EDF
+63CF75C579D282D7932892F2849C86ED9C2D54C15F6C658C6D5C70158CA78CD3
+983B654F74F64E0D4ED857E0592B5A665BCC51A85E035E9C6016627665770000
+65A7666E6D6E72367B268150819A82998B5C8CA08CE68D74961C96444FAE64AB
+6B66821E8461856A90E85C01695398A8847A85574F0F526F5FA95E45670D798F
+8179890789866DF55F1762556CB84ECF72699B925206543B567458B361A4626E
+711A596E7C897CDE7D1B96F06587805E4E194F75517558405E635E735F0A67C4
+4E26853D9589965B7C73980150FB58C1765678A7522577A585117B86504F5909
+72477BC77DE88FBA8FD4904D4FBF52C95A295F0197AD4FDD821792EA57036355
+6B69752B88DC8F147A4252DF58936155620A66AE6BCD7C3F83E950234FF85305
+5446583159495B9D5CF05CEF5D295E9662B16367653E65B9670B000000000000
+96
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+6CD56CE170F978327E2B80DE82B3840C84EC870289128A2A8C4A90A692D298FD
+9CF39D6C4E4F4EA1508D5256574A59A85E3D5FD85FD9623F66B4671B67D068D2
+51927D2180AA81A88B008C8C8CBF927E96325420982C531750D5535C58A864B2
+6734726777667A4691E652C36CA16B8658005E4C5954672C7FFB51E176C60000
+646978E89B549EBB57CB59B96627679A6BCE54E969D95E55819C67959BAA67FE
+9C52685D4EA64FE353C862B9672B6CAB8FC44FAD7E6D9EBF4E0761626E806F2B
+85135473672A9B455DF37B955CAC5BC6871C6E4A84D17A14810859997C8D6C11
+772052D959227121725F77DB97279D61690B5A7F5A1851A5540D547D660E76DF
+8FF792989CF459EA725D6EC5514D68C97DBF7DEC97629EBA64786A2183025984
+5B5F6BDB731B76F27DB280178499513267289ED976EE676252FF99055C24623B
+7C7E8CB0554F60B67D0B958053014E5F51B6591C723A803691CE5F2577E25384
+5F797D0485AC8A338E8D975667F385AE9453610961086CB97652000000000000
+97
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+8AED8F38552F4F51512A52C753CB5BA55E7D60A0618263D6670967DA6E676D8C
+733673377531795088D58A98904A909190F596C4878D59154E884F594E0E8A89
+8F3F981050AD5E7C59965BB95EB863DA63FA64C166DC694A69D86D0B6EB67194
+75287AAF7F8A8000844984C989818B218E0A9065967D990A617E62916B320000
+6C836D747FCC7FFC6DC07F8587BA88F8676583B1983C96F76D1B7D61843D916A
+4E7153755D506B046FEB85CD862D89A75229540F5C65674E68A87406748375E2
+88CF88E191CC96E296785F8B73877ACB844E63A0756552896D416E9C74097559
+786B7C9296867ADC9F8D4FB6616E65C5865C4E864EAE50DA4E2151CC5BEE6599
+68816DBC731F764277AD7A1C7CE7826F8AD2907C91CF96759818529B7DD1502B
+539867976DCB71D0743381E88F2A96A39C579E9F746058416D997D2F985E4EE4
+4F364F8B51B752B15DBA601C73B2793C82D3923496B796F6970A9E979F6266A6
+6B74521752A370C888C25EC9604B61906F2371497C3E7DF4806F000000000000
+98
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+84EE9023932C54429B6F6AD370898CC28DEF973252B45A415ECA5F046717697C
+69946D6A6F0F726272FC7BED8001807E874B90CE516D9E937984808B93328AD6
+502D548C8A716B6A8CC4810760D167A09DF24E994E989C108A6B85C185686900
+6E7E789781550000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000005F0C
+4E104E154E2A4E314E364E3C4E3F4E424E564E584E824E858C6B4E8A82125F0D
+4E8E4E9E4E9F4EA04EA24EB04EB34EB64ECE4ECD4EC44EC64EC24ED74EDE4EED
+4EDF4EF74F094F5A4F304F5B4F5D4F574F474F764F884F8F4F984F7B4F694F70
+4F914F6F4F864F9651184FD44FDF4FCE4FD84FDB4FD14FDA4FD04FE44FE5501A
+50285014502A502550054F1C4FF650215029502C4FFE4FEF5011500650435047
+6703505550505048505A5056506C50785080509A508550B450B2000000000000
+99
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+50C950CA50B350C250D650DE50E550ED50E350EE50F950F55109510151025116
+51155114511A5121513A5137513C513B513F51405152514C515451627AF85169
+516A516E5180518256D8518C5189518F519151935195519651A451A651A251A9
+51AA51AB51B351B151B251B051B551BD51C551C951DB51E0865551E951ED0000
+51F051F551FE5204520B5214520E5227522A522E52335239524F5244524B524C
+525E5254526A527452695273527F527D528D529452925271528852918FA88FA7
+52AC52AD52BC52B552C152CD52D752DE52E352E698ED52E052F352F552F852F9
+530653087538530D5310530F5315531A5323532F533153335338534053465345
+4E175349534D51D6535E5369536E5918537B53775382539653A053A653A553AE
+53B053B653C37C1296D953DF66FC71EE53EE53E853ED53FA5401543D5440542C
+542D543C542E54365429541D544E548F5475548E545F5471547754705492547B
+5480547654845490548654C754A254B854A554AC54C454C854A8000000000000
+9A
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+54AB54C254A454BE54BC54D854E554E6550F551454FD54EE54ED54FA54E25539
+55405563554C552E555C55455556555755385533555D5599558054AF558A559F
+557B557E5598559E55AE557C558355A9558755A855DA55C555DF55C455DC55E4
+55D4561455F7561655FE55FD561B55F9564E565071DF56345636563256380000
+566B5664562F566C566A56865680568A56A05694568F56A556AE56B656B456C2
+56BC56C156C356C056C856CE56D156D356D756EE56F9570056FF570457095708
+570B570D57135718571655C7571C572657375738574E573B5740574F576957C0
+57885761577F5789579357A057B357A457AA57B057C357C657D457D257D3580A
+57D657E3580B5819581D587258215862584B58706BC05852583D5879588558B9
+589F58AB58BA58DE58BB58B858AE58C558D358D158D758D958D858E558DC58E4
+58DF58EF58FA58F958FB58FC58FD5902590A5910591B68A65925592C592D5932
+5938593E7AD259555950594E595A5958596259605967596C5969000000000000
+9B
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+59785981599D4F5E4FAB59A359B259C659E859DC598D59D959DA5A255A1F5A11
+5A1C5A095A1A5A405A6C5A495A355A365A625A6A5A9A5ABC5ABE5ACB5AC25ABD
+5AE35AD75AE65AE95AD65AFA5AFB5B0C5B0B5B165B325AD05B2A5B365B3E5B43
+5B455B405B515B555B5A5B5B5B655B695B705B735B755B7865885B7A5B800000
+5B835BA65BB85BC35BC75BC95BD45BD05BE45BE65BE25BDE5BE55BEB5BF05BF6
+5BF35C055C075C085C0D5C135C205C225C285C385C395C415C465C4E5C535C50
+5C4F5B715C6C5C6E4E625C765C795C8C5C915C94599B5CAB5CBB5CB65CBC5CB7
+5CC55CBE5CC75CD95CE95CFD5CFA5CED5D8C5CEA5D0B5D155D175D5C5D1F5D1B
+5D115D145D225D1A5D195D185D4C5D525D4E5D4B5D6C5D735D765D875D845D82
+5DA25D9D5DAC5DAE5DBD5D905DB75DBC5DC95DCD5DD35DD25DD65DDB5DEB5DF2
+5DF55E0B5E1A5E195E115E1B5E365E375E445E435E405E4E5E575E545E5F5E62
+5E645E475E755E765E7A9EBC5E7F5EA05EC15EC25EC85ED05ECF000000000000
+9C
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+5ED65EE35EDD5EDA5EDB5EE25EE15EE85EE95EEC5EF15EF35EF05EF45EF85EFE
+5F035F095F5D5F5C5F0B5F115F165F295F2D5F385F415F485F4C5F4E5F2F5F51
+5F565F575F595F615F6D5F735F775F835F825F7F5F8A5F885F915F875F9E5F99
+5F985FA05FA85FAD5FBC5FD65FFB5FE45FF85FF15FDD60B35FFF602160600000
+601960106029600E6031601B6015602B6026600F603A605A6041606A6077605F
+604A6046604D6063604360646042606C606B60596081608D60E76083609A6084
+609B60966097609260A7608B60E160B860E060D360B45FF060BD60C660B560D8
+614D6115610660F660F7610060F460FA6103612160FB60F1610D610E6147613E
+61286127614A613F613C612C6134613D614261446173617761586159615A616B
+6174616F61656171615F615D6153617561996196618761AC6194619A618A6191
+61AB61AE61CC61CA61C961F761C861C361C661BA61CB7F7961CD61E661E361F6
+61FA61F461FF61FD61FC61FE620062086209620D620C6214621B000000000000
+9D
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+621E6221622A622E6230623262336241624E625E6263625B62606268627C6282
+6289627E62926293629662D46283629462D762D162BB62CF62FF62C664D462C8
+62DC62CC62CA62C262C7629B62C9630C62EE62F163276302630862EF62F56350
+633E634D641C634F6396638E638063AB637663A3638F6389639F63B5636B0000
+636963BE63E963C063C663E363C963D263F663C4641664346406641364266436
+651D64176428640F6467646F6476644E652A6495649364A564A9648864BC64DA
+64D264C564C764BB64D864C264F164E7820964E064E162AC64E364EF652C64F6
+64F464F264FA650064FD6518651C650565246523652B65346535653765366538
+754B654865566555654D6558655E655D65726578658265838B8A659B659F65AB
+65B765C365C665C165C465CC65D265DB65D965E065E165F16772660A660365FB
+6773663566366634661C664F664466496641665E665D666466676668665F6662
+667066836688668E668966846698669D66C166B966C966BE66BC000000000000
+9E
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+66C466B866D666DA66E0663F66E666E966F066F566F7670F6716671E67266727
+9738672E673F67366741673867376746675E67606759676367646789677067A9
+677C676A678C678B67A667A1678567B767EF67B467EC67B367E967B867E467DE
+67DD67E267EE67B967CE67C667E76A9C681E684668296840684D6832684E0000
+68B3682B685968636877687F689F688F68AD6894689D689B68836AAE68B96874
+68B568A068BA690F688D687E690168CA690868D86922692668E1690C68CD68D4
+68E768D569366912690468D768E3692568F968E068EF6928692A691A69236921
+68C669796977695C6978696B6954697E696E69396974693D695969306961695E
+695D6981696A69B269AE69D069BF69C169D369BE69CE5BE869CA69DD69BB69C3
+69A76A2E699169A0699C699569B469DE69E86A026A1B69FF6B0A69F969F269E7
+6A0569B16A1E69ED6A1469EB6A0A6A126AC16A236A136A446A0C6A726A366A78
+6A476A626A596A666A486A386A226A906A8D6AA06A846AA26AA3000000000000
+9F
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+6A9786176ABB6AC36AC26AB86AB36AAC6ADE6AD16ADF6AAA6ADA6AEA6AFB6B05
+86166AFA6B126B169B316B1F6B386B3776DC6B3998EE6B476B436B496B506B59
+6B546B5B6B5F6B616B786B796B7F6B806B846B836B8D6B986B956B9E6BA46BAA
+6BAB6BAF6BB26BB16BB36BB76BBC6BC66BCB6BD36BDF6BEC6BEB6BF36BEF0000
+9EBE6C086C136C146C1B6C246C236C5E6C556C626C6A6C826C8D6C9A6C816C9B
+6C7E6C686C736C926C906CC46CF16CD36CBD6CD76CC56CDD6CAE6CB16CBE6CBA
+6CDB6CEF6CD96CEA6D1F884D6D366D2B6D3D6D386D196D356D336D126D0C6D63
+6D936D646D5A6D796D596D8E6D956FE46D856DF96E156E0A6DB56DC76DE66DB8
+6DC66DEC6DDE6DCC6DE86DD26DC56DFA6DD96DE46DD56DEA6DEE6E2D6E6E6E2E
+6E196E726E5F6E3E6E236E6B6E2B6E766E4D6E1F6E436E3A6E4E6E246EFF6E1D
+6E386E826EAA6E986EC96EB76ED36EBD6EAF6EC46EB26ED46ED56E8F6EA56EC2
+6E9F6F416F11704C6EEC6EF86EFE6F3F6EF26F316EEF6F326ECC000000000000
+E0
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+6F3E6F136EF76F866F7A6F786F816F806F6F6F5B6FF36F6D6F826F7C6F586F8E
+6F916FC26F666FB36FA36FA16FA46FB96FC66FAA6FDF6FD56FEC6FD46FD86FF1
+6FEE6FDB7009700B6FFA70117001700F6FFE701B701A6F74701D7018701F7030
+703E7032705170637099709270AF70F170AC70B870B370AE70DF70CB70DD0000
+70D9710970FD711C711971657155718871667162714C7156716C718F71FB7184
+719571A871AC71D771B971BE71D271C971D471CE71E071EC71E771F571FC71F9
+71FF720D7210721B7228722D722C72307232723B723C723F72407246724B7258
+7274727E7282728172877292729672A272A772B972B272C372C672C472CE72D2
+72E272E072E172F972F7500F7317730A731C7316731D7334732F73297325733E
+734E734F9ED87357736A7368737073787375737B737A73C873B373CE73BB73C0
+73E573EE73DE74A27405746F742573F87432743A7455743F745F74597441745C
+746974707463746A7476747E748B749E74A774CA74CF74D473F1000000000000
+E1
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+74E074E374E774E974EE74F274F074F174F874F7750475037505750C750E750D
+75157513751E7526752C753C7544754D754A7549755B7546755A756975647567
+756B756D75787576758675877574758A758975827594759A759D75A575A375C2
+75B375C375B575BD75B875BC75B175CD75CA75D275D975E375DE75FE75FF0000
+75FC760175F075FA75F275F3760B760D7609761F762776207621762276247634
+7630763B764776487646765C76587661766276687669766A7667766C76707672
+76767678767C768076837688768B768E769676937699769A76B076B476B876B9
+76BA76C276CD76D676D276DE76E176E576E776EA862F76FB7708770777047729
+7724771E77257726771B773777387747775A7768776B775B7765777F777E7779
+778E778B779177A0779E77B077B677B977BF77BC77BD77BB77C777CD77D777DA
+77DC77E377EE77FC780C781279267820792A7845788E78747886787C789A788C
+78A378B578AA78AF78D178C678CB78D478BE78BC78C578CA78EC000000000000
+E2
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+78E778DA78FD78F47907791279117919792C792B794079607957795F795A7955
+7953797A797F798A799D79A79F4B79AA79AE79B379B979BA79C979D579E779EC
+79E179E37A087A0D7A187A197A207A1F79807A317A3B7A3E7A377A437A577A49
+7A617A627A699F9D7A707A797A7D7A887A977A957A987A967AA97AC87AB00000
+7AB67AC57AC47ABF90837AC77ACA7ACD7ACF7AD57AD37AD97ADA7ADD7AE17AE2
+7AE67AED7AF07B027B0F7B0A7B067B337B187B197B1E7B357B287B367B507B7A
+7B047B4D7B0B7B4C7B457B757B657B747B677B707B717B6C7B6E7B9D7B987B9F
+7B8D7B9C7B9A7B8B7B927B8F7B5D7B997BCB7BC17BCC7BCF7BB47BC67BDD7BE9
+7C117C147BE67BE57C607C007C077C137BF37BF77C177C0D7BF67C237C277C2A
+7C1F7C377C2B7C3D7C4C7C437C547C4F7C407C507C587C5F7C647C567C657C6C
+7C757C837C907CA47CAD7CA27CAB7CA17CA87CB37CB27CB17CAE7CB97CBD7CC0
+7CC57CC27CD87CD27CDC7CE29B3B7CEF7CF27CF47CF67CFA7D06000000000000
+E3
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+7D027D1C7D157D0A7D457D4B7D2E7D327D3F7D357D467D737D567D4E7D727D68
+7D6E7D4F7D637D937D897D5B7D8F7D7D7D9B7DBA7DAE7DA37DB57DC77DBD7DAB
+7E3D7DA27DAF7DDC7DB87D9F7DB07DD87DDD7DE47DDE7DFB7DF27DE17E057E0A
+7E237E217E127E317E1F7E097E0B7E227E467E667E3B7E357E397E437E370000
+7E327E3A7E677E5D7E567E5E7E597E5A7E797E6A7E697E7C7E7B7E837DD57E7D
+8FAE7E7F7E887E897E8C7E927E907E937E947E967E8E7E9B7E9C7F387F3A7F45
+7F4C7F4D7F4E7F507F517F557F547F587F5F7F607F687F697F677F787F827F86
+7F837F887F877F8C7F947F9E7F9D7F9A7FA37FAF7FB27FB97FAE7FB67FB88B71
+7FC57FC67FCA7FD57FD47FE17FE67FE97FF37FF998DC80068004800B80128018
+8019801C80218028803F803B804A804680528058805A805F8062806880738072
+807080768079807D807F808480868085809B8093809A80AD519080AC80DB80E5
+80D980DD80C480DA80D6810980EF80F1811B81298123812F814B000000000000
+E4
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+968B8146813E8153815180FC8171816E81658166817481838188818A81808182
+81A0819581A481A3815F819381A981B081B581BE81B881BD81C081C281BA81C9
+81CD81D181D981D881C881DA81DF81E081E781FA81FB81FE8201820282058207
+820A820D821082168229822B82388233824082598258825D825A825F82640000
+82628268826A826B822E827182778278827E828D829282AB829F82BB82AC82E1
+82E382DF82D282F482F382FA8393830382FB82F982DE830682DC830982D98335
+83348316833283318340833983508345832F832B831783188385839A83AA839F
+83A283968323838E8387838A837C83B58373837583A0838983A883F4841383EB
+83CE83FD840383D8840B83C183F7840783E083F2840D8422842083BD84388506
+83FB846D842A843C855A84848477846B84AD846E848284698446842C846F8479
+843584CA846284B984BF849F84D984CD84BB84DA84D084C184C684D684A18521
+84FF84F485178518852C851F8515851484FC8540856385588548000000000000
+E5
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+85418602854B8555858085A485888591858A85A8856D8594859B85EA8587859C
+8577857E859085C985BA85CF85B985D085D585DD85E585DC85F9860A8613860B
+85FE85FA86068622861A8630863F864D4E558654865F86678671869386A386A9
+86AA868B868C86B686AF86C486C686B086C9882386AB86D486DE86E986EC0000
+86DF86DB86EF8712870687088700870386FB87118709870D86F9870A8734873F
+8737873B87258729871A8760875F8778874C874E877487578768876E87598753
+8763876A880587A2879F878287AF87CB87BD87C087D096D687AB87C487B387C7
+87C687BB87EF87F287E0880F880D87FE87F687F7880E87D28811881688158822
+88218831883688398827883B8844884288528859885E8862886B8881887E889E
+8875887D88B5887288828897889288AE889988A2888D88A488B088BF88B188C3
+88C488D488D888D988DD88F9890288FC88F488E888F28904890C890A89138943
+891E8925892A892B89418944893B89368938894C891D8960895E000000000000
+E6
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+89668964896D896A896F89748977897E89838988898A8993899889A189A989A6
+89AC89AF89B289BA89BD89BF89C089DA89DC89DD89E789F489F88A038A168A10
+8A0C8A1B8A1D8A258A368A418A5B8A528A468A488A7C8A6D8A6C8A628A858A82
+8A848AA88AA18A918AA58AA68A9A8AA38AC48ACD8AC28ADA8AEB8AF38AE70000
+8AE48AF18B148AE08AE28AF78ADE8ADB8B0C8B078B1A8AE18B168B108B178B20
+8B3397AB8B268B2B8B3E8B288B418B4C8B4F8B4E8B498B568B5B8B5A8B6B8B5F
+8B6C8B6F8B748B7D8B808B8C8B8E8B928B938B968B998B9A8C3A8C418C3F8C48
+8C4C8C4E8C508C558C628C6C8C788C7A8C828C898C858C8A8C8D8C8E8C948C7C
+8C98621D8CAD8CAA8CBD8CB28CB38CAE8CB68CC88CC18CE48CE38CDA8CFD8CFA
+8CFB8D048D058D0A8D078D0F8D0D8D109F4E8D138CCD8D148D168D678D6D8D71
+8D738D818D998DC28DBE8DBA8DCF8DDA8DD68DCC8DDB8DCB8DEA8DEB8DDF8DE3
+8DFC8E088E098DFF8E1D8E1E8E108E1F8E428E358E308E348E4A000000000000
+E7
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+8E478E498E4C8E508E488E598E648E608E2A8E638E558E768E728E7C8E818E87
+8E858E848E8B8E8A8E938E918E948E998EAA8EA18EAC8EB08EC68EB18EBE8EC5
+8EC88ECB8EDB8EE38EFC8EFB8EEB8EFE8F0A8F058F158F128F198F138F1C8F1F
+8F1B8F0C8F268F338F3B8F398F458F428F3E8F4C8F498F468F4E8F578F5C0000
+8F628F638F648F9C8F9F8FA38FAD8FAF8FB78FDA8FE58FE28FEA8FEF90878FF4
+90058FF98FFA901190159021900D901E9016900B90279036903590398FF8904F
+905090519052900E9049903E90569058905E9068906F907696A890729082907D
+90819080908A9089908F90A890AF90B190B590E290E4624890DB910291129119
+91329130914A9156915891639165916991739172918B9189918291A291AB91AF
+91AA91B591B491BA91C091C191C991CB91D091D691DF91E191DB91FC91F591F6
+921E91FF9214922C92159211925E925792459249926492489295923F924B9250
+929C92969293929B925A92CF92B992B792E9930F92FA9344932E000000000000
+E8
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+93199322931A9323933A9335933B935C9360937C936E935693B093AC93AD9394
+93B993D693D793E893E593D893C393DD93D093C893E4941A9414941394039407
+94109436942B94359421943A944194529444945B94609462945E946A92299470
+94759477947D945A947C947E9481947F95829587958A95949596959895990000
+95A095A895A795AD95BC95BB95B995BE95CA6FF695C395CD95CC95D595D495D6
+95DC95E195E595E296219628962E962F9642964C964F964B9677965C965E965D
+965F96669672966C968D96989695969796AA96A796B196B296B096B496B696B8
+96B996CE96CB96C996CD894D96DC970D96D596F99704970697089713970E9711
+970F971697199724972A97309739973D973E97449746974897429749975C9760
+97649766976852D2976B977197799785977C9781977A9786978B978F9790979C
+97A897A697A397B397B497C397C697C897CB97DC97ED9F4F97F27ADF97F697F5
+980F980C9838982498219837983D9846984F984B986B986F9870000000000000
+E9
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+98719874987398AA98AF98B198B698C498C398C698E998EB9903990999129914
+99189921991D991E99249920992C992E993D993E9942994999459950994B9951
+9952994C99559997999899A599AD99AE99BC99DF99DB99DD99D899D199ED99EE
+99F199F299FB99F89A019A0F9A0599E29A199A2B9A379A459A429A409A430000
+9A3E9A559A4D9A5B9A579A5F9A629A659A649A699A6B9A6A9AAD9AB09ABC9AC0
+9ACF9AD19AD39AD49ADE9ADF9AE29AE39AE69AEF9AEB9AEE9AF49AF19AF79AFB
+9B069B189B1A9B1F9B229B239B259B279B289B299B2A9B2E9B2F9B329B449B43
+9B4F9B4D9B4E9B519B589B749B939B839B919B969B979B9F9BA09BA89BB49BC0
+9BCA9BB99BC69BCF9BD19BD29BE39BE29BE49BD49BE19C3A9BF29BF19BF09C15
+9C149C099C139C0C9C069C089C129C0A9C049C2E9C1B9C259C249C219C309C47
+9C329C469C3E9C5A9C609C679C769C789CE79CEC9CF09D099D089CEB9D039D06
+9D2A9D269DAF9D239D1F9D449D159D129D419D3F9D3E9D469D48000000000000
+EA
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+9D5D9D5E9D649D519D509D599D729D899D879DAB9D6F9D7A9D9A9DA49DA99DB2
+9DC49DC19DBB9DB89DBA9DC69DCF9DC29DD99DD39DF89DE69DED9DEF9DFD9E1A
+9E1B9E1E9E759E799E7D9E819E889E8B9E8C9E929E959E919E9D9EA59EA99EB8
+9EAA9EAD97619ECC9ECE9ECF9ED09ED49EDC9EDE9EDD9EE09EE59EE89EEF0000
+9EF49EF69EF79EF99EFB9EFC9EFD9F079F0876B79F159F219F2C9F3E9F4A9F52
+9F549F639F5F9F609F619F669F679F6C9F6A9F779F729F769F959F9C9FA0582F
+69C79059746451DC719900000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+ED
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+7E8A891C9348928884DC4FC970BB663168C892F966FB5F454E284EE14EFC4F00
+4F034F394F564F924F8A4F9A4F944FCD504050224FFF501E5046507050425094
+50F450D8514A5164519D51BE51EC5215529C52A652C052DB5300530753245372
+539353B253DDFA0E549C548A54A954FF55865759576557AC57C857C7FA0F0000
+FA10589E58B2590B5953595B595D596359A459BA5B565BC0752F5BD85BEC5C1E
+5CA65CBA5CF55D275D53FA115D425D6D5DB85DB95DD05F215F345F675FB75FDE
+605D6085608A60DE60D5612060F26111613761306198621362A663F56460649D
+64CE654E66006615663B6609662E661E6624666566576659FA126673669966A0
+66B266BF66FA670EF929676667BB685267C06801684468CFFA136968FA146998
+69E26A306A6B6A466A736A7E6AE26AE46BD66C3F6C5C6C866C6F6CDA6D046D87
+6D6F6D966DAC6DCF6DF86DF26DFC6E396E5C6E276E3C6EBF6F886FB56FF57005
+70077028708570AB710F7104715C71467147FA1571C171FE72B1000000000000
+EE
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+72BE7324FA16737773BD73C973D673E373D2740773F57426742A7429742E7462
+7489749F7501756F7682769C769E769B76A6FA17774652AF7821784E7864787A
+7930FA18FA19FA1A7994FA1B799B7AD17AE7FA1C7AEB7B9EFA1D7D487D5C7DB7
+7DA07DD67E527F477FA1FA1E83018362837F83C783F6844884B4855385590000
+856BFA1F85B0FA20FA21880788F58A128A378A798AA78ABE8ADFFA228AF68B53
+8B7F8CF08CF48D128D76FA238ECFFA24FA25906790DEFA269115912791DA91D7
+91DE91ED91EE91E491E592069210920A923A9240923C924E9259925192399267
+92A79277927892E792D792D992D0FA2792D592E092D39325932192FBFA28931E
+92FF931D93029370935793A493C693DE93F89431944594489592F9DCFA29969D
+96AF9733973B9743974D974F9751975598579865FA2AFA2B9927FA2C999E9A4E
+9AD99ADC9B759B729B8F9BB19BBB9C009D709D6BFA2D9E199ED1000000002170
+217121722173217421752176217721782179FFE2FFE4FF07FF02000000000000
+FA
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+2170217121722173217421752176217721782179216021612162216321642165
+2166216721682169FFE2FFE4FF07FF0232312116212122357E8A891C93489288
+84DC4FC970BB663168C892F966FB5F454E284EE14EFC4F004F034F394F564F92
+4F8A4F9A4F944FCD504050224FFF501E504650705042509450F450D8514A0000
+5164519D51BE51EC5215529C52A652C052DB5300530753245372539353B253DD
+FA0E549C548A54A954FF55865759576557AC57C857C7FA0FFA10589E58B2590B
+5953595B595D596359A459BA5B565BC0752F5BD85BEC5C1E5CA65CBA5CF55D27
+5D53FA115D425D6D5DB85DB95DD05F215F345F675FB75FDE605D6085608A60DE
+60D5612060F26111613761306198621362A663F56460649D64CE654E66006615
+663B6609662E661E6624666566576659FA126673669966A066B266BF66FA670E
+F929676667BB685267C06801684468CFFA136968FA14699869E26A306A6B6A46
+6A736A7E6AE26AE46BD66C3F6C5C6C866C6F6CDA6D046D876D6F000000000000
+FB
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+6D966DAC6DCF6DF86DF26DFC6E396E5C6E276E3C6EBF6F886FB56FF570057007
+7028708570AB710F7104715C71467147FA1571C171FE72B172BE7324FA167377
+73BD73C973D673E373D2740773F57426742A7429742E74627489749F7501756F
+7682769C769E769B76A6FA17774652AF7821784E7864787A7930FA18FA190000
+FA1A7994FA1B799B7AD17AE7FA1C7AEB7B9EFA1D7D487D5C7DB77DA07DD67E52
+7F477FA1FA1E83018362837F83C783F6844884B485538559856BFA1F85B0FA20
+FA21880788F58A128A378A798AA78ABE8ADFFA228AF68B538B7F8CF08CF48D12
+8D76FA238ECFFA24FA25906790DEFA269115912791DA91D791DE91ED91EE91E4
+91E592069210920A923A9240923C924E925992519239926792A79277927892E7
+92D792D992D0FA2792D592E092D39325932192FBFA28931E92FF931D93029370
+935793A493C693DE93F89431944594489592F9DCFA29969D96AF9733973B9743
+974D974F9751975598579865FA2AFA2B9927FA2C999E9A4E9AD9000000000000
+FC
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+9ADC9B759B729B8F9BB19BBB9C009D709D6BFA2D9E199ED10000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+R
+8160 301C FF5E
+8161 2016 2225
+817C 2212 FF0D
+8191 00A2 FFE0
+8192 00A3 FFE1
+81CA 00AC FFE2
+81BE 222a
+81BF 2229
+81DA 2220
+81DB 22a5
+81DF 2261
+81E0 2252
+81E3 221a
+81E6 2235
+81E7 222b


Property changes on: trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp932.enc
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp936.enc
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp936.enc	                        (rev 0)
+++ trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp936.enc	2020-03-17 20:46:21 UTC (rev 54375)
@@ -0,0 +1,2162 @@
+# Encoding file: cp936, multi-byte
+M
+003F 0 127
+00
+0000000100020003000400050006000700080009000A000B000C000D000E000F
+0010001100120013001400150016001700180019001A001B001C001D001E001F
+0020002100220023002400250026002700280029002A002B002C002D002E002F
+0030003100320033003400350036003700380039003A003B003C003D003E003F
+0040004100420043004400450046004700480049004A004B004C004D004E004F
+0050005100520053005400550056005700580059005A005B005C005D005E005F
+0060006100620063006400650066006700680069006A006B006C006D006E006F
+0070007100720073007400750076007700780079007A007B007C007D007E007F
+20AC000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+81
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+4E024E044E054E064E0F4E124E174E1F4E204E214E234E264E294E2E4E2F4E31
+4E334E354E374E3C4E404E414E424E444E464E4A4E514E554E574E5A4E5B4E62
+4E634E644E654E674E684E6A4E6B4E6C4E6D4E6E4E6F4E724E744E754E764E77
+4E784E794E7A4E7B4E7C4E7D4E7F4E804E814E824E834E844E854E874E8A0000
+4E904E964E974E994E9C4E9D4E9E4EA34EAA4EAF4EB04EB14EB44EB64EB74EB8
+4EB94EBC4EBD4EBE4EC84ECC4ECF4ED04ED24EDA4EDB4EDC4EE04EE24EE64EE7
+4EE94EED4EEE4EEF4EF14EF44EF84EF94EFA4EFC4EFE4F004F024F034F044F05
+4F064F074F084F0B4F0C4F124F134F144F154F164F1C4F1D4F214F234F284F29
+4F2C4F2D4F2E4F314F334F354F374F394F3B4F3E4F3F4F404F414F424F444F45
+4F474F484F494F4A4F4B4F4C4F524F544F564F614F624F664F684F6A4F6B4F6D
+4F6E4F714F724F754F774F784F794F7A4F7D4F804F814F824F854F864F874F8A
+4F8C4F8E4F904F924F934F954F964F984F994F9A4F9C4F9E4F9F4FA14FA20000
+82
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+4FA44FAB4FAD4FB04FB14FB24FB34FB44FB64FB74FB84FB94FBA4FBB4FBC4FBD
+4FBE4FC04FC14FC24FC64FC74FC84FC94FCB4FCC4FCD4FD24FD34FD44FD54FD6
+4FD94FDB4FE04FE24FE44FE54FE74FEB4FEC4FF04FF24FF44FF54FF64FF74FF9
+4FFB4FFC4FFD4FFF5000500150025003500450055006500750085009500A0000
+500B500E501050115013501550165017501B501D501E50205022502350245027
+502B502F5030503150325033503450355036503750385039503B503D503F5040
+504150425044504550465049504A504B504D5050505150525053505450565057
+50585059505B505D505E505F506050615062506350645066506750685069506A
+506B506D506E506F50705071507250735074507550785079507A507C507D5081
+508250835084508650875089508A508B508C508E508F50905091509250935094
+50955096509750985099509A509B509C509D509E509F50A050A150A250A450A6
+50AA50AB50AD50AE50AF50B050B150B350B450B550B650B750B850B950BC0000
+83
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+50BD50BE50BF50C050C150C250C350C450C550C650C750C850C950CA50CB50CC
+50CD50CE50D050D150D250D350D450D550D750D850D950DB50DC50DD50DE50DF
+50E050E150E250E350E450E550E850E950EA50EB50EF50F050F150F250F450F6
+50F750F850F950FA50FC50FD50FE50FF51005101510251035104510551080000
+5109510A510C510D510E510F511051115113511451155116511751185119511A
+511B511C511D511E511F512051225123512451255126512751285129512A512B
+512C512D512E512F5130513151325133513451355136513751385139513A513B
+513C513D513E51425147514A514C514E514F515051525153515751585159515B
+515D515E515F5160516151635164516651675169516A516F5172517A517E517F
+5183518451865187518A518B518E518F51905191519351945198519A519D519E
+519F51A151A351A651A751A851A951AA51AD51AE51B451B851B951BA51BE51BF
+51C151C251C351C551C851CA51CD51CE51D051D251D351D451D551D651D70000
+84
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+51D851D951DA51DC51DE51DF51E251E351E551E651E751E851E951EA51EC51EE
+51F151F251F451F751FE520452055209520B520C520F5210521352145215521C
+521E521F522152225223522552265227522A522C522F5231523252345235523C
+523E524452455246524752485249524B524E524F525252535255525752580000
+5259525A525B525D525F526052625263526452665268526B526C526D526E5270
+52715273527452755276527752785279527A527B527C527E5280528352845285
+528652875289528A528B528C528D528E528F5291529252945295529652975298
+5299529A529C52A452A552A652A752AE52AF52B052B452B552B652B752B852B9
+52BA52BB52BC52BD52C052C152C252C452C552C652C852CA52CC52CD52CE52CF
+52D152D352D452D552D752D952DA52DB52DC52DD52DE52E052E152E252E352E5
+52E652E752E852E952EA52EB52EC52ED52EE52EF52F152F252F352F452F552F6
+52F752F852FB52FC52FD530153025303530453075309530A530B530C530E0000
+85
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+53115312531353145318531B531C531E531F532253245325532753285329532B
+532C532D532F533053315332533353345335533653375338533C533D53405342
+53445346534B534C534D5350535453585359535B535D53655368536A536C536D
+537253765379537B537C537D537E53805381538353875388538A538E538F0000
+53905391539253935394539653975399539B539C539E53A053A153A453A753AA
+53AB53AC53AD53AF53B053B153B253B353B453B553B753B853B953BA53BC53BD
+53BE53C053C353C453C553C653C753CE53CF53D053D253D353D553DA53DC53DD
+53DE53E153E253E753F453FA53FE53FF5400540254055407540B541454185419
+541A541C542254245425542A5430543354365437543A543D543F544154425444
+544554475449544C544D544E544F5451545A545D545E545F5460546154635465
+54675469546A546B546C546D546E546F547054745479547A547E547F54815483
+5485548754885489548A548D5491549354975498549C549E549F54A054A10000
+86
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+54A254A554AE54B054B254B554B654B754B954BA54BC54BE54C354C554CA54CB
+54D654D854DB54E054E154E254E354E454EB54EC54EF54F054F154F454F554F6
+54F754F854F954FB54FE550055025503550455055508550A550B550C550D550E
+5512551355155516551755185519551A551C551D551E551F5521552555260000
+55285529552B552D553255345535553655385539553A553B553D554055425545
+55475548554B554C554D554E554F5551555255535554555755585559555A555B
+555D555E555F55605562556355685569556B556F557055715572557355745579
+557A557D557F55855586558C558D558E559055925593559555965597559A559B
+559E55A055A155A255A355A455A555A655A855A955AA55AB55AC55AD55AE55AF
+55B055B255B455B655B855BA55BC55BF55C055C155C255C355C655C755C855CA
+55CB55CE55CF55D055D555D755D855D955DA55DB55DE55E055E255E755E955ED
+55EE55F055F155F455F655F855F955FA55FB55FC55FF56025603560456050000
+87
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+56065607560A560B560D561056115612561356145615561656175619561A561C
+561D5620562156225625562656285629562A562B562E562F5630563356355637
+5638563A563C563D563E5640564156425643564456455646564756485649564A
+564B564F565056515652565356555656565A565B565D565E565F566056610000
+5663566556665667566D566E566F56705672567356745675567756785679567A
+567D567E567F56805681568256835684568756885689568A568B568C568D5690
+56915692569456955696569756985699569A569B569C569D569E569F56A056A1
+56A256A456A556A656A756A856A956AA56AB56AC56AD56AE56B056B156B256B3
+56B456B556B656B856B956BA56BB56BD56BE56BF56C056C156C256C356C456C5
+56C656C756C856C956CB56CC56CD56CE56CF56D056D156D256D356D556D656D8
+56D956DC56E356E556E656E756E856E956EA56EC56EE56EF56F256F356F656F7
+56F856FB56FC57005701570257055707570B570C570D570E570F571057110000
+88
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+57125713571457155716571757185719571A571B571D571E5720572157225724
+572557265727572B5731573257345735573657375738573C573D573F57415743
+57445745574657485749574B5752575357545755575657585759576257635765
+5767576C576E5770577157725774577557785779577A577D577E577F57800000
+5781578757885789578A578D578E578F57905791579457955796579757985799
+579A579C579D579E579F57A557A857AA57AC57AF57B057B157B357B557B657B7
+57B957BA57BB57BC57BD57BE57BF57C057C157C457C557C657C757C857C957CA
+57CC57CD57D057D157D357D657D757DB57DC57DE57E157E257E357E557E657E7
+57E857E957EA57EB57EC57EE57F057F157F257F357F557F657F757FB57FC57FE
+57FF580158035804580558085809580A580C580E580F58105812581358145816
+58175818581A581B581C581D581F5822582358255826582758285829582B582C
+582D582E582F58315832583358345836583758385839583A583B583C583D0000
+89
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+583E583F584058415842584358455846584758485849584A584B584E584F5850
+585258535855585658575859585A585B585C585D585F58605861586258635864
+5866586758685869586A586D586E586F58705871587258735874587558765877
+58785879587A587B587C587D587F58825884588658875888588A588B588C0000
+588D588E588F5890589158945895589658975898589B589C589D58A058A158A2
+58A358A458A558A658A758AA58AB58AC58AD58AE58AF58B058B158B258B358B4
+58B558B658B758B858B958BA58BB58BD58BE58BF58C058C258C358C458C658C7
+58C858C958CA58CB58CC58CD58CE58CF58D058D258D358D458D658D758D858D9
+58DA58DB58DC58DD58DE58DF58E058E158E258E358E558E658E758E858E958EA
+58ED58EF58F158F258F458F558F758F858FA58FB58FC58FD58FE58FF59005901
+59035905590659085909590A590B590C590E591059115912591359175918591B
+591D591E592059215922592359265928592C59305932593359355936593B0000
+8A
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+593D593E593F5940594359455946594A594C594D5950595259535959595B595C
+595D595E595F5961596359645966596759685969596A596B596C596D596E596F
+59705971597259755977597A597B597C597E597F598059855989598B598C598E
+598F59905991599459955998599A599B599C599D599F59A059A159A259A60000
+59A759AC59AD59B059B159B359B459B559B659B759B859BA59BC59BD59BF59C0
+59C159C259C359C459C559C759C859C959CC59CD59CE59CF59D559D659D959DB
+59DE59DF59E059E159E259E459E659E759E959EA59EB59ED59EE59EF59F059F1
+59F259F359F459F559F659F759F859FA59FC59FD59FE5A005A025A0A5A0B5A0D
+5A0E5A0F5A105A125A145A155A165A175A195A1A5A1B5A1D5A1E5A215A225A24
+5A265A275A285A2A5A2B5A2C5A2D5A2E5A2F5A305A335A355A375A385A395A3A
+5A3B5A3D5A3E5A3F5A415A425A435A445A455A475A485A4B5A4C5A4D5A4E5A4F
+5A505A515A525A535A545A565A575A585A595A5B5A5C5A5D5A5E5A5F5A600000
+8B
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+5A615A635A645A655A665A685A695A6B5A6C5A6D5A6E5A6F5A705A715A725A73
+5A785A795A7B5A7C5A7D5A7E5A805A815A825A835A845A855A865A875A885A89
+5A8A5A8B5A8C5A8D5A8E5A8F5A905A915A935A945A955A965A975A985A995A9C
+5A9D5A9E5A9F5AA05AA15AA25AA35AA45AA55AA65AA75AA85AA95AAB5AAC0000
+5AAD5AAE5AAF5AB05AB15AB45AB65AB75AB95ABA5ABB5ABC5ABD5ABF5AC05AC3
+5AC45AC55AC65AC75AC85ACA5ACB5ACD5ACE5ACF5AD05AD15AD35AD55AD75AD9
+5ADA5ADB5ADD5ADE5ADF5AE25AE45AE55AE75AE85AEA5AEC5AED5AEE5AEF5AF0
+5AF25AF35AF45AF55AF65AF75AF85AF95AFA5AFB5AFC5AFD5AFE5AFF5B005B01
+5B025B035B045B055B065B075B085B0A5B0B5B0C5B0D5B0E5B0F5B105B115B12
+5B135B145B155B185B195B1A5B1B5B1C5B1D5B1E5B1F5B205B215B225B235B24
+5B255B265B275B285B295B2A5B2B5B2C5B2D5B2E5B2F5B305B315B335B355B36
+5B385B395B3A5B3B5B3C5B3D5B3E5B3F5B415B425B435B445B455B465B470000
+8C
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+5B485B495B4A5B4B5B4C5B4D5B4E5B4F5B525B565B5E5B605B615B675B685B6B
+5B6D5B6E5B6F5B725B745B765B775B785B795B7B5B7C5B7E5B7F5B825B865B8A
+5B8D5B8E5B905B915B925B945B965B9F5BA75BA85BA95BAC5BAD5BAE5BAF5BB1
+5BB25BB75BBA5BBB5BBC5BC05BC15BC35BC85BC95BCA5BCB5BCD5BCE5BCF0000
+5BD15BD45BD55BD65BD75BD85BD95BDA5BDB5BDC5BE05BE25BE35BE65BE75BE9
+5BEA5BEB5BEC5BED5BEF5BF15BF25BF35BF45BF55BF65BF75BFD5BFE5C005C02
+5C035C055C075C085C0B5C0C5C0D5C0E5C105C125C135C175C195C1B5C1E5C1F
+5C205C215C235C265C285C295C2A5C2B5C2D5C2E5C2F5C305C325C335C355C36
+5C375C435C445C465C475C4C5C4D5C525C535C545C565C575C585C5A5C5B5C5C
+5C5D5C5F5C625C645C675C685C695C6A5C6B5C6C5C6D5C705C725C735C745C75
+5C765C775C785C7B5C7C5C7D5C7E5C805C835C845C855C865C875C895C8A5C8B
+5C8E5C8F5C925C935C955C9D5C9E5C9F5CA05CA15CA45CA55CA65CA75CA80000
+8D
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+5CAA5CAE5CAF5CB05CB25CB45CB65CB95CBA5CBB5CBC5CBE5CC05CC25CC35CC5
+5CC65CC75CC85CC95CCA5CCC5CCD5CCE5CCF5CD05CD15CD35CD45CD55CD65CD7
+5CD85CDA5CDB5CDC5CDD5CDE5CDF5CE05CE25CE35CE75CE95CEB5CEC5CEE5CEF
+5CF15CF25CF35CF45CF55CF65CF75CF85CF95CFA5CFC5CFD5CFE5CFF5D000000
+5D015D045D055D085D095D0A5D0B5D0C5D0D5D0F5D105D115D125D135D155D17
+5D185D195D1A5D1C5D1D5D1F5D205D215D225D235D255D285D2A5D2B5D2C5D2F
+5D305D315D325D335D355D365D375D385D395D3A5D3B5D3C5D3F5D405D415D42
+5D435D445D455D465D485D495D4D5D4E5D4F5D505D515D525D535D545D555D56
+5D575D595D5A5D5C5D5E5D5F5D605D615D625D635D645D655D665D675D685D6A
+5D6D5D6E5D705D715D725D735D755D765D775D785D795D7A5D7B5D7C5D7D5D7E
+5D7F5D805D815D835D845D855D865D875D885D895D8A5D8B5D8C5D8D5D8E5D8F
+5D905D915D925D935D945D955D965D975D985D9A5D9B5D9C5D9E5D9F5DA00000
+8E
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+5DA15DA25DA35DA45DA55DA65DA75DA85DA95DAA5DAB5DAC5DAD5DAE5DAF5DB0
+5DB15DB25DB35DB45DB55DB65DB85DB95DBA5DBB5DBC5DBD5DBE5DBF5DC05DC1
+5DC25DC35DC45DC65DC75DC85DC95DCA5DCB5DCC5DCE5DCF5DD05DD15DD25DD3
+5DD45DD55DD65DD75DD85DD95DDA5DDC5DDF5DE05DE35DE45DEA5DEC5DED0000
+5DF05DF55DF65DF85DF95DFA5DFB5DFC5DFF5E005E045E075E095E0A5E0B5E0D
+5E0E5E125E135E175E1E5E1F5E205E215E225E235E245E255E285E295E2A5E2B
+5E2C5E2F5E305E325E335E345E355E365E395E3A5E3E5E3F5E405E415E435E46
+5E475E485E495E4A5E4B5E4D5E4E5E4F5E505E515E525E535E565E575E585E59
+5E5A5E5C5E5D5E5F5E605E635E645E655E665E675E685E695E6A5E6B5E6C5E6D
+5E6E5E6F5E705E715E755E775E795E7E5E815E825E835E855E885E895E8C5E8D
+5E8E5E925E985E9B5E9D5EA15EA25EA35EA45EA85EA95EAA5EAB5EAC5EAE5EAF
+5EB05EB15EB25EB45EBA5EBB5EBC5EBD5EBF5EC05EC15EC25EC35EC45EC50000
+8F
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+5EC65EC75EC85ECB5ECC5ECD5ECE5ECF5ED05ED45ED55ED75ED85ED95EDA5EDC
+5EDD5EDE5EDF5EE05EE15EE25EE35EE45EE55EE65EE75EE95EEB5EEC5EED5EEE
+5EEF5EF05EF15EF25EF35EF55EF85EF95EFB5EFC5EFD5F055F065F075F095F0C
+5F0D5F0E5F105F125F145F165F195F1A5F1C5F1D5F1E5F215F225F235F240000
+5F285F2B5F2C5F2E5F305F325F335F345F355F365F375F385F3B5F3D5F3E5F3F
+5F415F425F435F445F455F465F475F485F495F4A5F4B5F4C5F4D5F4E5F4F5F51
+5F545F595F5A5F5B5F5C5F5E5F5F5F605F635F655F675F685F6B5F6E5F6F5F72
+5F745F755F765F785F7A5F7D5F7E5F7F5F835F865F8D5F8E5F8F5F915F935F94
+5F965F9A5F9B5F9D5F9E5F9F5FA05FA25FA35FA45FA55FA65FA75FA95FAB5FAC
+5FAF5FB05FB15FB25FB35FB45FB65FB85FB95FBA5FBB5FBE5FBF5FC05FC15FC2
+5FC75FC85FCA5FCB5FCE5FD35FD45FD55FDA5FDB5FDC5FDE5FDF5FE25FE35FE5
+5FE65FE85FE95FEC5FEF5FF05FF25FF35FF45FF65FF75FF95FFA5FFC60070000
+90
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+60086009600B600C60106011601360176018601A601E601F602260236024602C
+602D602E603060316032603360346036603760386039603A603D603E60406044
+60456046604760486049604A604C604E604F605160536054605660576058605B
+605C605E605F6060606160656066606E60716072607460756077607E60800000
+608160826085608660876088608A608B608E608F609060916093609560976098
+6099609C609E60A160A260A460A560A760A960AA60AE60B060B360B560B660B7
+60B960BA60BD60BE60BF60C060C160C260C360C460C760C860C960CC60CD60CE
+60CF60D060D260D360D460D660D760D960DB60DE60E160E260E360E460E560EA
+60F160F260F560F760F860FB60FC60FD60FE60FF61026103610461056107610A
+610B610C611061116112611361146116611761186119611B611C611D611E6121
+6122612561286129612A612C612D612E612F6130613161326133613461356136
+613761386139613A613B613C613D613E61406141614261436144614561460000
+91
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+61476149614B614D614F61506152615361546156615761586159615A615B615C
+615E615F6160616161636164616561666169616A616B616C616D616E616F6171
+617261736174617661786179617A617B617C617D617E617F6180618161826183
+618461856186618761886189618A618C618D618F619061916192619361950000
+6196619761986199619A619B619C619E619F61A061A161A261A361A461A561A6
+61AA61AB61AD61AE61AF61B061B161B261B361B461B561B661B861B961BA61BB
+61BC61BD61BF61C061C161C361C461C561C661C761C961CC61CD61CE61CF61D0
+61D361D561D661D761D861D961DA61DB61DC61DD61DE61DF61E061E161E261E3
+61E461E561E761E861E961EA61EB61EC61ED61EE61EF61F061F161F261F361F4
+61F661F761F861F961FA61FB61FC61FD61FE6200620162026203620462056207
+6209621362146219621C621D621E622062236226622762286229622B622D622F
+6230623162326235623662386239623A623B623C6242624462456246624A0000
+92
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+624F62506255625662576259625A625C625D625E625F62606261626262646265
+6268627162726274627562776278627A627B627D628162826283628562866287
+6288628B628C628D628E628F629062946299629C629D629E62A362A662A762A9
+62AA62AD62AE62AF62B062B262B362B462B662B762B862BA62BE62C062C10000
+62C362CB62CF62D162D562DD62DE62E062E162E462EA62EB62F062F262F562F8
+62F962FA62FB63006303630463056306630A630B630C630D630F631063126313
+63146315631763186319631C632663276329632C632D632E6330633163336334
+6335633663376338633B633C633E633F63406341634463476348634A63516352
+635363546356635763586359635A635B635C635D63606364636563666368636A
+636B636C636F6370637263736374637563786379637C637D637E637F63816383
+638463856386638B638D639163936394639563976399639A639B639C639D639E
+639F63A163A463A663AB63AF63B163B263B563B663B963BB63BD63BF63C00000
+93
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+63C163C263C363C563C763C863CA63CB63CC63D163D363D463D563D763D863D9
+63DA63DB63DC63DD63DF63E263E463E563E663E763E863EB63EC63EE63EF63F0
+63F163F363F563F763F963FA63FB63FC63FE640364046406640764086409640A
+640D640E6411641264156416641764186419641A641D641F6422642364240000
+6425642764286429642B642E642F643064316432643364356436643764386439
+643B643C643E6440644264436449644B644C644D644E644F6450645164536455
+645664576459645A645B645C645D645F64606461646264636464646564666468
+646A646B646C646E646F64706471647264736474647564766477647B647C647D
+647E647F648064816483648664886489648A648B648C648D648E648F64906493
+649464976498649A649B649C649D649F64A064A164A264A364A564A664A764A8
+64AA64AB64AF64B164B264B364B464B664B964BB64BD64BE64BF64C164C364C4
+64C664C764C864C964CA64CB64CC64CF64D164D364D464D564D664D964DA0000
+94
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+64DB64DC64DD64DF64E064E164E364E564E764E864E964EA64EB64EC64ED64EE
+64EF64F064F164F264F364F464F564F664F764F864F964FA64FB64FC64FD64FE
+64FF65016502650365046505650665076508650A650B650C650D650E650F6510
+6511651365146515651665176519651A651B651C651D651E651F652065210000
+6522652365246526652765286529652A652C652D65306531653265336537653A
+653C653D6540654165426543654465466547654A654B654D654E655065526553
+655465576558655A655C655F6560656165646565656765686569656A656D656E
+656F657165736575657665786579657A657B657C657D657E657F658065816582
+658365846585658665886589658A658D658E658F65926594659565966598659A
+659D659E65A065A265A365A665A865AA65AC65AE65B165B265B365B465B565B6
+65B765B865BA65BB65BE65BF65C065C265C765C865C965CA65CD65D065D165D3
+65D465D565D865D965DA65DB65DC65DD65DE65DF65E165E365E465EA65EB0000
+95
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+65F265F365F465F565F865F965FB65FC65FD65FE65FF66016604660566076608
+6609660B660D661066116612661666176618661A661B661C661E662166226623
+662466266629662A662B662C662E663066326633663766386639663A663B663D
+663F66406642664466456646664766486649664A664D664E6650665166580000
+6659665B665C665D665E666066626663666566676669666A666B666C666D6671
+66726673667566786679667B667C667D667F6680668166836685668666886689
+668A668B668D668E668F6690669266936694669566986699669A669B669C669E
+669F66A066A166A266A366A466A566A666A966AA66AB66AC66AD66AF66B066B1
+66B266B366B566B666B766B866BA66BB66BC66BD66BF66C066C166C266C366C4
+66C566C666C766C866C966CA66CB66CC66CD66CE66CF66D066D166D266D366D4
+66D566D666D766D866DA66DE66DF66E066E166E266E366E466E566E766E866EA
+66EB66EC66ED66EE66EF66F166F566F666F866FA66FB66FD6701670267030000
+96
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+6704670567066707670C670E670F671167126713671667186719671A671C671E
+67206721672267236724672567276729672E6730673267336736673767386739
+673B673C673E673F6741674467456747674A674B674D67526754675567576758
+6759675A675B675D67626763676467666767676B676C676E6771677467760000
+67786779677A677B677D678067826783678567866788678A678C678D678E678F
+679167926793679467966799679B679F67A067A167A467A667A967AC67AE67B1
+67B267B467B967BA67BB67BC67BD67BE67BF67C067C267C567C667C767C867C9
+67CA67CB67CC67CD67CE67D567D667D767DB67DF67E167E367E467E667E767E8
+67EA67EB67ED67EE67F267F567F667F767F867F967FA67FB67FC67FE68016802
+680368046806680D681068126814681568186819681A681B681C681E681F6820
+6822682368246825682668276828682B682C682D682E682F6830683168346835
+6836683A683B683F6847684B684D684F68526856685768586859685A685B0000
+97
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+685C685D685E685F686A686C686D686E686F6870687168726873687568786879
+687A687B687C687D687E687F688068826884688768886889688A688B688C688D
+688E68906891689268946895689668986899689A689B689C689D689E689F68A0
+68A168A368A468A568A968AA68AB68AC68AE68B168B268B468B668B768B80000
+68B968BA68BB68BC68BD68BE68BF68C168C368C468C568C668C768C868CA68CC
+68CE68CF68D068D168D368D468D668D768D968DB68DC68DD68DE68DF68E168E2
+68E468E568E668E768E868E968EA68EB68EC68ED68EF68F268F368F468F668F7
+68F868FB68FD68FE68FF69006902690369046906690769086909690A690C690F
+69116913691469156916691769186919691A691B691C691D691E692169226923
+69256926692769286929692A692B692C692E692F693169326933693569366937
+6938693A693B693C693E694069416943694469456946694769486949694A694B
+694C694D694E694F69506951695269536955695669586959695B695C695F0000
+98
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+6961696269646965696769686969696A696C696D696F69706972697369746975
+6976697A697B697D697E697F698169836985698A698B698C698E698F69906991
+69926993699669976999699A699D699E699F69A069A169A269A369A469A569A6
+69A969AA69AC69AE69AF69B069B269B369B569B669B869B969BA69BC69BD0000
+69BE69BF69C069C269C369C469C569C669C769C869C969CB69CD69CF69D169D2
+69D369D569D669D769D869D969DA69DC69DD69DE69E169E269E369E469E569E6
+69E769E869E969EA69EB69EC69EE69EF69F069F169F369F469F569F669F769F8
+69F969FA69FB69FC69FE6A006A016A026A036A046A056A066A076A086A096A0B
+6A0C6A0D6A0E6A0F6A106A116A126A136A146A156A166A196A1A6A1B6A1C6A1D
+6A1E6A206A226A236A246A256A266A276A296A2B6A2C6A2D6A2E6A306A326A33
+6A346A366A376A386A396A3A6A3B6A3C6A3F6A406A416A426A436A456A466A48
+6A496A4A6A4B6A4C6A4D6A4E6A4F6A516A526A536A546A556A566A576A5A0000
+99
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+6A5C6A5D6A5E6A5F6A606A626A636A646A666A676A686A696A6A6A6B6A6C6A6D
+6A6E6A6F6A706A726A736A746A756A766A776A786A7A6A7B6A7D6A7E6A7F6A81
+6A826A836A856A866A876A886A896A8A6A8B6A8C6A8D6A8F6A926A936A946A95
+6A966A986A996A9A6A9B6A9C6A9D6A9E6A9F6AA16AA26AA36AA46AA56AA60000
+6AA76AA86AAA6AAD6AAE6AAF6AB06AB16AB26AB36AB46AB56AB66AB76AB86AB9
+6ABA6ABB6ABC6ABD6ABE6ABF6AC06AC16AC26AC36AC46AC56AC66AC76AC86AC9
+6ACA6ACB6ACC6ACD6ACE6ACF6AD06AD16AD26AD36AD46AD56AD66AD76AD86AD9
+6ADA6ADB6ADC6ADD6ADE6ADF6AE06AE16AE26AE36AE46AE56AE66AE76AE86AE9
+6AEA6AEB6AEC6AED6AEE6AEF6AF06AF16AF26AF36AF46AF56AF66AF76AF86AF9
+6AFA6AFB6AFC6AFD6AFE6AFF6B006B016B026B036B046B056B066B076B086B09
+6B0A6B0B6B0C6B0D6B0E6B0F6B106B116B126B136B146B156B166B176B186B19
+6B1A6B1B6B1C6B1D6B1E6B1F6B256B266B286B296B2A6B2B6B2C6B2D6B2E0000
+9A
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+6B2F6B306B316B336B346B356B366B386B3B6B3C6B3D6B3F6B406B416B426B44
+6B456B486B4A6B4B6B4D6B4E6B4F6B506B516B526B536B546B556B566B576B58
+6B5A6B5B6B5C6B5D6B5E6B5F6B606B616B686B696B6B6B6C6B6D6B6E6B6F6B70
+6B716B726B736B746B756B766B776B786B7A6B7D6B7E6B7F6B806B856B880000
+6B8C6B8E6B8F6B906B916B946B956B976B986B996B9C6B9D6B9E6B9F6BA06BA2
+6BA36BA46BA56BA66BA76BA86BA96BAB6BAC6BAD6BAE6BAF6BB06BB16BB26BB6
+6BB86BB96BBA6BBB6BBC6BBD6BBE6BC06BC36BC46BC66BC76BC86BC96BCA6BCC
+6BCE6BD06BD16BD86BDA6BDC6BDD6BDE6BDF6BE06BE26BE36BE46BE56BE66BE7
+6BE86BE96BEC6BED6BEE6BF06BF16BF26BF46BF66BF76BF86BFA6BFB6BFC6BFE
+6BFF6C006C016C026C036C046C086C096C0A6C0B6C0C6C0E6C126C176C1C6C1D
+6C1E6C206C236C256C2B6C2C6C2D6C316C336C366C376C396C3A6C3B6C3C6C3E
+6C3F6C436C446C456C486C4B6C4C6C4D6C4E6C4F6C516C526C536C566C580000
+9B
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+6C596C5A6C626C636C656C666C676C6B6C6C6C6D6C6E6C6F6C716C736C756C77
+6C786C7A6C7B6C7C6C7F6C806C846C876C8A6C8B6C8D6C8E6C916C926C956C96
+6C976C986C9A6C9C6C9D6C9E6CA06CA26CA86CAC6CAF6CB06CB46CB56CB66CB7
+6CBA6CC06CC16CC26CC36CC66CC76CC86CCB6CCD6CCE6CCF6CD16CD26CD80000
+6CD96CDA6CDC6CDD6CDF6CE46CE66CE76CE96CEC6CED6CF26CF46CF96CFF6D00
+6D026D036D056D066D086D096D0A6D0D6D0F6D106D116D136D146D156D166D18
+6D1C6D1D6D1F6D206D216D226D236D246D266D286D296D2C6D2D6D2F6D306D34
+6D366D376D386D3A6D3F6D406D426D446D496D4C6D506D556D566D576D586D5B
+6D5D6D5F6D616D626D646D656D676D686D6B6D6C6D6D6D706D716D726D736D75
+6D766D796D7A6D7B6D7D6D7E6D7F6D806D816D836D846D866D876D8A6D8B6D8D
+6D8F6D906D926D966D976D986D996D9A6D9C6DA26DA56DAC6DAD6DB06DB16DB3
+6DB46DB66DB76DB96DBA6DBB6DBC6DBD6DBE6DC16DC26DC36DC86DC96DCA0000
+9C
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+6DCD6DCE6DCF6DD06DD26DD36DD46DD56DD76DDA6DDB6DDC6DDF6DE26DE36DE5
+6DE76DE86DE96DEA6DED6DEF6DF06DF26DF46DF56DF66DF86DFA6DFD6DFE6DFF
+6E006E016E026E036E046E066E076E086E096E0B6E0F6E126E136E156E186E19
+6E1B6E1C6E1E6E1F6E226E266E276E286E2A6E2C6E2E6E306E316E336E350000
+6E366E376E396E3B6E3C6E3D6E3E6E3F6E406E416E426E456E466E476E486E49
+6E4A6E4B6E4C6E4F6E506E516E526E556E576E596E5A6E5C6E5D6E5E6E606E61
+6E626E636E646E656E666E676E686E696E6A6E6C6E6D6E6F6E706E716E726E73
+6E746E756E766E776E786E796E7A6E7B6E7C6E7D6E806E816E826E846E876E88
+6E8A6E8B6E8C6E8D6E8E6E916E926E936E946E956E966E976E996E9A6E9B6E9D
+6E9E6EA06EA16EA36EA46EA66EA86EA96EAB6EAC6EAD6EAE6EB06EB36EB56EB8
+6EB96EBC6EBE6EBF6EC06EC36EC46EC56EC66EC86EC96ECA6ECC6ECD6ECE6ED0
+6ED26ED66ED86ED96EDB6EDC6EDD6EE36EE76EEA6EEB6EEC6EED6EEE6EEF0000
+9D
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+6EF06EF16EF26EF36EF56EF66EF76EF86EFA6EFB6EFC6EFD6EFE6EFF6F006F01
+6F036F046F056F076F086F0A6F0B6F0C6F0D6F0E6F106F116F126F166F176F18
+6F196F1A6F1B6F1C6F1D6F1E6F1F6F216F226F236F256F266F276F286F2C6F2E
+6F306F326F346F356F376F386F396F3A6F3B6F3C6F3D6F3F6F406F416F420000
+6F436F446F456F486F496F4A6F4C6F4E6F4F6F506F516F526F536F546F556F56
+6F576F596F5A6F5B6F5D6F5F6F606F616F636F646F656F676F686F696F6A6F6B
+6F6C6F6F6F706F716F736F756F766F776F796F7B6F7D6F7E6F7F6F806F816F82
+6F836F856F866F876F8A6F8B6F8F6F906F916F926F936F946F956F966F976F98
+6F996F9A6F9B6F9D6F9E6F9F6FA06FA26FA36FA46FA56FA66FA86FA96FAA6FAB
+6FAC6FAD6FAE6FAF6FB06FB16FB26FB46FB56FB76FB86FBA6FBB6FBC6FBD6FBE
+6FBF6FC16FC36FC46FC56FC66FC76FC86FCA6FCB6FCC6FCD6FCE6FCF6FD06FD3
+6FD46FD56FD66FD76FD86FD96FDA6FDB6FDC6FDD6FDF6FE26FE36FE46FE50000
+9E
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+6FE66FE76FE86FE96FEA6FEB6FEC6FED6FF06FF16FF26FF36FF46FF56FF66FF7
+6FF86FF96FFA6FFB6FFC6FFD6FFE6FFF70007001700270037004700570067007
+70087009700A700B700C700D700E700F70107012701370147015701670177018
+7019701C701D701E701F702070217022702470257026702770287029702A0000
+702B702C702D702E702F70307031703270337034703670377038703A703B703C
+703D703E703F7040704170427043704470457046704770487049704A704B704D
+704E7050705170527053705470557056705770587059705A705B705C705D705F
+7060706170627063706470657066706770687069706A706E7071707270737074
+70777079707A707B707D7081708270837084708670877088708B708C708D708F
+70907091709370977098709A709B709E709F70A070A170A270A370A470A570A6
+70A770A870A970AA70B070B270B470B570B670BA70BE70BF70C470C570C670C7
+70C970CB70CC70CD70CE70CF70D070D170D270D370D470D570D670D770DA0000
+9F
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+70DC70DD70DE70E070E170E270E370E570EA70EE70F070F170F270F370F470F5
+70F670F870FA70FB70FC70FE70FF710071017102710371047105710671077108
+710B710C710D710E710F7111711271147117711B711C711D711E711F71207121
+7122712371247125712771287129712A712B712C712D712E7132713371340000
+7135713771387139713A713B713C713D713E713F714071417142714371447146
+714771487149714B714D714F7150715171527153715471557156715771587159
+715A715B715D715F716071617162716371657169716A716B716C716D716F7170
+717171747175717671777179717B717C717E717F718071817182718371857186
+718771887189718B718C718D718E7190719171927193719571967197719A719B
+719C719D719E71A171A271A371A471A571A671A771A971AA71AB71AD71AE71AF
+71B071B171B271B471B671B771B871BA71BB71BC71BD71BE71BF71C071C171C2
+71C471C571C671C771C871C971CA71CB71CC71CD71CF71D071D171D271D30000
+A0
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+71D671D771D871D971DA71DB71DC71DD71DE71DF71E171E271E371E471E671E8
+71E971EA71EB71EC71ED71EF71F071F171F271F371F471F571F671F771F871FA
+71FB71FC71FD71FE71FF720072017202720372047205720772087209720A720B
+720C720D720E720F7210721172127213721472157216721772187219721A0000
+721B721C721E721F722072217222722372247225722672277229722B722D722E
+722F723272337234723A723C723E72407241724272437244724572467249724A
+724B724E724F7250725172537254725572577258725A725C725E726072637264
+72657268726A726B726C726D7270727172737274727672777278727B727C727D
+7282728372857286728772887289728C728E7290729172937294729572967297
+72987299729A729B729C729D729E72A072A172A272A372A472A572A672A772A8
+72A972AA72AB72AE72B172B272B372B572BA72BB72BC72BD72BE72BF72C072C5
+72C672C772C972CA72CB72CC72CF72D172D372D472D572D672D872DA72DB0000
+A1
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000030003001300200B702C902C700A8300330052014FF5E2016202620182019
+201C201D3014301530083009300A300B300C300D300E300F3016301730103011
+00B100D700F72236222722282211220F222A222922082237221A22A522252220
+23122299222B222E2261224C2248223D221D2260226E226F22642265221E2235
+22342642264000B0203220332103FF0400A4FFE0FFE1203000A7211626062605
+25CB25CF25CE25C725C625A125A025B325B2203B219221902191219330130000
+A2
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000217021712172217321742175217621772178217900000000000000000000
+000024882489248A248B248C248D248E248F2490249124922493249424952496
+249724982499249A249B247424752476247724782479247A247B247C247D247E
+247F248024812482248324842485248624872460246124622463246424652466
+2467246824690000000032203221322232233224322532263227322832290000
+00002160216121622163216421652166216721682169216A216B000000000000
+A3
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000FF01FF02FF03FFE5FF05FF06FF07FF08FF09FF0AFF0BFF0CFF0DFF0EFF0F
+FF10FF11FF12FF13FF14FF15FF16FF17FF18FF19FF1AFF1BFF1CFF1DFF1EFF1F
+FF20FF21FF22FF23FF24FF25FF26FF27FF28FF29FF2AFF2BFF2CFF2DFF2EFF2F
+FF30FF31FF32FF33FF34FF35FF36FF37FF38FF39FF3AFF3BFF3CFF3DFF3EFF3F
+FF40FF41FF42FF43FF44FF45FF46FF47FF48FF49FF4AFF4BFF4CFF4DFF4EFF4F
+FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
+A4
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000304130423043304430453046304730483049304A304B304C304D304E304F
+3050305130523053305430553056305730583059305A305B305C305D305E305F
+3060306130623063306430653066306730683069306A306B306C306D306E306F
+3070307130723073307430753076307730783079307A307B307C307D307E307F
+3080308130823083308430853086308730883089308A308B308C308D308E308F
+3090309130923093000000000000000000000000000000000000000000000000
+A5
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000030A130A230A330A430A530A630A730A830A930AA30AB30AC30AD30AE30AF
+30B030B130B230B330B430B530B630B730B830B930BA30BB30BC30BD30BE30BF
+30C030C130C230C330C430C530C630C730C830C930CA30CB30CC30CD30CE30CF
+30D030D130D230D330D430D530D630D730D830D930DA30DB30DC30DD30DE30DF
+30E030E130E230E330E430E530E630E730E830E930EA30EB30EC30ED30EE30EF
+30F030F130F230F330F430F530F6000000000000000000000000000000000000
+A6
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000039103920393039403950396039703980399039A039B039C039D039E039F
+03A003A103A303A403A503A603A703A803A90000000000000000000000000000
+000003B103B203B303B403B503B603B703B803B903BA03BB03BC03BD03BE03BF
+03C003C103C303C403C503C603C703C803C90000000000000000000000000000
+FE35FE36FE39FE3AFE3FFE40FE3DFE3EFE41FE42FE43FE4400000000FE3BFE3C
+FE37FE38FE310000FE33FE340000000000000000000000000000000000000000
+A7
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000004100411041204130414041504010416041704180419041A041B041C041D
+041E041F0420042104220423042404250426042704280429042A042B042C042D
+042E042F00000000000000000000000000000000000000000000000000000000
+000004300431043204330434043504510436043704380439043A043B043C043D
+043E043F0440044104420443044404450446044704480449044A044B044C044D
+044E044F00000000000000000000000000000000000000000000000000000000
+A8
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+02CA02CB02D920132015202520352105210921962197219821992215221F2223
+22522266226722BF2550255125522553255425552556255725582559255A255B
+255C255D255E255F2560256125622563256425652566256725682569256A256B
+256C256D256E256F257025712572257325812582258325842585258625870000
+25882589258A258B258C258D258E258F25932594259525BC25BD25E225E325E4
+25E5260922953012301D301E0000000000000000000000000000000000000000
+0000010100E101CE00E0011300E9011B00E8012B00ED01D000EC014D00F301D2
+00F2016B00FA01D400F901D601D801DA01DC00FC00EA02510000014401480000
+0261000000000000000031053106310731083109310A310B310C310D310E310F
+3110311131123113311431153116311731183119311A311B311C311D311E311F
+3120312131223123312431253126312731283129000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+A9
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+30213022302330243025302630273028302932A3338E338F339C339D339E33A1
+33C433CE33D133D233D5FE30FFE2FFE400002121323100002010000000000000
+30FC309B309C30FD30FE3006309D309EFE49FE4AFE4BFE4CFE4DFE4EFE4FFE50
+FE51FE52FE54FE55FE56FE57FE59FE5AFE5BFE5CFE5DFE5EFE5FFE60FE610000
+FE62FE63FE64FE65FE66FE68FE69FE6AFE6B0000000000000000000000000000
+0000000000000000000000003007000000000000000000000000000000000000
+00000000000000002500250125022503250425052506250725082509250A250B
+250C250D250E250F2510251125122513251425152516251725182519251A251B
+251C251D251E251F2520252125222523252425252526252725282529252A252B
+252C252D252E252F2530253125322533253425352536253725382539253A253B
+253C253D253E253F2540254125422543254425452546254725482549254A254B
+0000000000000000000000000000000000000000000000000000000000000000
+AA
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+72DC72DD72DF72E272E372E472E572E672E772EA72EB72F572F672F972FD72FE
+72FF73007302730473057306730773087309730B730C730D730F731073117312
+731473187319731A731F732073237324732673277328732D732F733073327333
+73357336733A733B733C733D7340734173427343734473457346734773480000
+7349734A734B734C734E734F7351735373547355735673587359735A735B735C
+735D735E735F736173627363736473657366736773687369736A736B736E7370
+7371000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+AB
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+73727373737473757376737773787379737A737B737C737D737F738073817382
+7383738573867388738A738C738D738F73907392739373947395739773987399
+739A739C739D739E73A073A173A373A473A573A673A773A873AA73AC73AD73B1
+73B473B573B673B873B973BC73BD73BE73BF73C173C373C473C573C673C70000
+73CB73CC73CE73D273D373D473D573D673D773D873DA73DB73DC73DD73DF73E1
+73E273E373E473E673E873EA73EB73EC73EE73EF73F073F173F373F473F573F6
+73F7000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+AC
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+73F873F973FA73FB73FC73FD73FE73FF740074017402740474077408740B740C
+740D740E741174127413741474157416741774187419741C741D741E741F7420
+74217423742474277429742B742D742F74317432743774387439743A743B743D
+743E743F744074427443744474457446744774487449744A744B744C744D0000
+744E744F7450745174527453745474567458745D746074617462746374647465
+7466746774687469746A746B746C746E746F7471747274737474747574787479
+747A000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+AD
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+747B747C747D747F748274847485748674887489748A748C748D748F74917492
+7493749474957496749774987499749A749B749D749F74A074A174A274A374A4
+74A574A674AA74AB74AC74AD74AE74AF74B074B174B274B374B474B574B674B7
+74B874B974BB74BC74BD74BE74BF74C074C174C274C374C474C574C674C70000
+74C874C974CA74CB74CC74CD74CE74CF74D074D174D374D474D574D674D774D8
+74D974DA74DB74DD74DF74E174E574E774E874E974EA74EB74EC74ED74F074F1
+74F2000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+AE
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+74F374F574F874F974FA74FB74FC74FD74FE7500750175027503750575067507
+75087509750A750B750C750E751075127514751575167517751B751D751E7520
+752175227523752475267527752A752E753475367539753C753D753F75417542
+75437544754675477549754A754D755075517552755375557556755775580000
+755D755E755F75607561756275637564756775687569756B756C756D756E756F
+757075717573757575767577757A757B757C757D757E75807581758275847585
+7587000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+AF
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+75887589758A758C758D758E7590759375957598759B759C759E75A275A675A7
+75A875A975AA75AD75B675B775BA75BB75BF75C075C175C675CB75CC75CE75CF
+75D075D175D375D775D975DA75DC75DD75DF75E075E175E575E975EC75ED75EE
+75EF75F275F375F575F675F775F875FA75FB75FD75FE76027604760676070000
+76087609760B760D760E760F76117612761376147616761A761C761D761E7621
+762376277628762C762E762F76317632763676377639763A763B763D76417642
+7644000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+B0
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+76457646764776487649764A764B764E764F7650765176527653765576577658
+7659765A765B765D765F766076617662766476657666766776687669766A766C
+766D766E767076717672767376747675767676777679767A767C767F76807681
+768376857689768A768C768D768F769076927694769576977698769A769B0000
+769C769D769E769F76A076A176A276A376A576A676A776A876A976AA76AB76AC
+76AD76AF76B076B376B576B676B776B876B976BA76BB76BC76BD76BE76C076C1
+76C3554A963F57C3632854CE550954C07691764C853C77EE827E788D72319698
+978D6C285B894FFA630966975CB880FA684880AE660276CE51F9655671AC7FF1
+888450B2596561CA6FB382AD634C625253ED54277B06516B75A45DF462D48DCB
+9776628A8019575D97387F627238767D67CF767E64464F708D2562DC7A176591
+73ED642C6273822C9881677F7248626E62CC4F3474E3534A529E7ECA90A65E2E
+6886699C81807ED168D278C5868C9551508D8C2482DE80DE5305891252650000
+B1
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+76C476C776C976CB76CC76D376D576D976DA76DC76DD76DE76E076E176E276E3
+76E476E676E776E876E976EA76EB76EC76ED76F076F376F576F676F776FA76FB
+76FD76FF77007702770377057706770A770C770E770F77107711771277137714
+7715771677177718771B771C771D771E77217723772477257727772A772B0000
+772C772E773077317732773377347739773B773D773E773F7742774477457746
+77487749774A774B774C774D774E774F77527753775477557756775777587759
+775C858496F94FDD582199715B9D62B162A566B48C799C8D7206676F789160B2
+535153178F8880CC8D1D94A1500D72C8590760EB711988AB595482EF672C7B28
+5D297EF7752D6CF58E668FF8903C9F3B6BD491197B145F7C78A784D6853D6BD5
+6BD96BD65E015E8775F995ED655D5F0A5FC58F9F58C181C2907F965B97AD8FB9
+7F168D2C62414FBF53D8535E8FA88FA98FAB904D68075F6A819888689CD6618B
+522B762A5F6C658C6FD26EE85BBE6448517551B067C44E1979C9997C70B30000
+B2
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+775D775E775F7760776477677769776A776D776E776F77707771777277737774
+7775777677777778777A777B777C7781778277837786778777887789778A778B
+778F77907793779477957796779777987799779A779B779C779D779E77A177A3
+77A477A677A877AB77AD77AE77AF77B177B277B477B677B777B877B977BA0000
+77BC77BE77C077C177C277C377C477C577C677C777C877C977CA77CB77CC77CE
+77CF77D077D177D277D377D477D577D677D877D977DA77DD77DE77DF77E077E1
+77E475C55E7673BB83E064AD62E894B56CE2535A52C3640F94C27B944F2F5E1B
+82368116818A6E246CCA9A736355535C54FA886557E04E0D5E036B657C3F90E8
+601664E6731C88C16750624D8D22776C8E2991C75F6983DC8521991053C28695
+6B8B60ED60E8707F82CD82314ED36CA785CF64CD7CD969FD66F9834953957B56
+4FA7518C6D4B5C428E6D63D253C9832C833667E578B4643D5BDF5C945DEE8BE7
+62C667F48C7A640063BA8749998B8C177F2094F24EA7961098A4660C73160000
+B3
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+77E677E877EA77EF77F077F177F277F477F577F777F977FA77FB77FC78037804
+7805780678077808780A780B780E780F7810781378157819781B781E78207821
+782278247828782A782B782E782F78317832783378357836783D783F78417842
+78437844784678487849784A784B784D784F78517853785478587859785A0000
+785B785C785E785F7860786178627863786478657866786778687869786F7870
+78717872787378747875787678787879787A787B787D787E787F788078817882
+7883573A5C1D5E38957F507F80A05382655E7545553150218D856284949E671D
+56326F6E5DE2543570928F66626F64A463A35F7B6F8890F481E38FB05C186668
+5FF16C8996488D81886C649179F057CE6A59621054484E587A0B60E96F848BDA
+627F901E9A8B79E4540375F4630153196C608FDF5F1B9A70803B9F7F4F885C3A
+8D647FC565A570BD514551B2866B5D075BA062BD916C75748E0C7A2061017B79
+4EC77EF877854E1181ED521D51FA6A7153A88E87950496CF6EC19664695A0000
+B4
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+7884788578867888788A788B788F789078927894789578967899789D789E78A0
+78A278A478A678A878A978AA78AB78AC78AD78AE78AF78B578B678B778B878BA
+78BB78BC78BD78BF78C078C278C378C478C678C778C878CC78CD78CE78CF78D1
+78D278D378D678D778D878DA78DB78DC78DD78DE78DF78E078E178E278E30000
+78E478E578E678E778E978EA78EB78ED78EE78EF78F078F178F378F578F678F8
+78F978FB78FC78FD78FE78FF79007902790379047906790779087909790A790B
+790C784050A877D7641089E6590463E35DDD7A7F693D4F20823955984E3275AE
+7A975E625E8A95EF521B5439708A6376952457826625693F918755076DF37EAF
+882262337EF075B5832878C196CC8F9E614874F78BCD6B64523A8D506B21806A
+847156F153064ECE4E1B51D17C97918B7C074FC38E7F7BE17A9C64675D1450AC
+810676017CB96DEC7FE067515B585BF878CB64AE641363AA632B9519642D8FBE
+7B5476296253592754466B7950A362345E266B864EE38D37888B5F85902E0000
+B5
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+790D790E790F791079117912791479157916791779187919791A791B791C791D
+791F792079217922792379257926792779287929792A792B792C792D792E792F
+793079317932793379357936793779387939793D793F79427943794479457947
+794A794B794C794D794E794F7950795179527954795579587959796179630000
+796479667969796A796B796C796E79707971797279737974797579767979797B
+797C797D797E797F798279837986798779887989798B798C798D798E79907991
+79926020803D62C54E39535590F863B880C665E66C2E4F4660EE6DE18BDE5F39
+86CB5F536321515A83616863520063638E4850125C9B79775BFC52307A3B60BC
+905376D75FB75F9776848E6C706F767B7B4977AA51F3909358244F4E6EF48FEA
+654C7B1B72C46DA47FDF5AE162B55E95573084827B2C5E1D5F1F90127F1498A0
+63826EC7789870B95178975B57AB75354F4375385E9760E659606DC06BBF7889
+53FC96D551CB52016389540A94938C038DCC7239789F87768FED8C0D53E00000
+B6
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+7993799479957996799779987999799B799C799D799E799F79A079A179A279A3
+79A479A579A679A879A979AA79AB79AC79AD79AE79AF79B079B179B279B479B5
+79B679B779B879BC79BF79C279C479C579C779C879CA79CC79CE79CF79D079D3
+79D479D679D779D979DA79DB79DC79DD79DE79E079E179E279E579E879EA0000
+79EC79EE79F179F279F379F479F579F679F779F979FA79FC79FE79FF7A017A04
+7A057A077A087A097A0A7A0C7A0F7A107A117A127A137A157A167A187A197A1B
+7A1C4E0176EF53EE948998769F0E952D5B9A8BA24E224E1C51AC846361C252A8
+680B4F97606B51BB6D1E515C6296659796618C46901775D890FD77636BD2728A
+72EC8BFB583577798D4C675C9540809A5EA66E2159927AEF77ED953B6BB565AD
+7F0E58065151961F5BF958A954288E726566987F56E4949D76FE9041638754C6
+591A593A579B8EB267358DFA8235524160F0581586FE5CE89E454FC4989D8BB9
+5A2560765384627C904F9102997F6069800C513F80335C1499756D314E8C0000
+B7
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+7A1D7A1F7A217A227A247A257A267A277A287A297A2A7A2B7A2C7A2D7A2E7A2F
+7A307A317A327A347A357A367A387A3A7A3E7A407A417A427A437A447A457A47
+7A487A497A4A7A4B7A4C7A4D7A4E7A4F7A507A527A537A547A557A567A587A59
+7A5A7A5B7A5C7A5D7A5E7A5F7A607A617A627A637A647A657A667A677A680000
+7A697A6A7A6B7A6C7A6D7A6E7A6F7A717A727A737A757A7B7A7C7A7D7A7E7A82
+7A857A877A897A8A7A8B7A8C7A8E7A8F7A907A937A947A997A9A7A9B7A9E7AA1
+7AA28D3053D17F5A7B4F4F104E4F96006CD573D085E95E06756A7FFB6A0A77FE
+94927E4151E170E653CD8FD483038D2972AF996D6CDB574A82B365B980AA623F
+963259A84EFF8BBF7EBA653E83F2975E556198DE80A5532A8BFD542080BA5E9F
+6CB88D3982AC915A54296C1B52067EB7575F711A6C7E7C89594B4EFD5FFF6124
+7CAA4E305C0167AB87025CF0950B98CE75AF70FD902251AF7F1D8BBD594951E4
+4F5B5426592B657780A45B75627662C28F905E456C1F7B264F0F4FD8670D0000
+B8
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+7AA37AA47AA77AA97AAA7AAB7AAE7AAF7AB07AB17AB27AB47AB57AB67AB77AB8
+7AB97ABA7ABB7ABC7ABD7ABE7AC07AC17AC27AC37AC47AC57AC67AC77AC87AC9
+7ACA7ACC7ACD7ACE7ACF7AD07AD17AD27AD37AD47AD57AD77AD87ADA7ADB7ADC
+7ADD7AE17AE27AE47AE77AE87AE97AEA7AEB7AEC7AEE7AF07AF17AF27AF30000
+7AF47AF57AF67AF77AF87AFB7AFC7AFE7B007B017B027B057B077B097B0C7B0D
+7B0E7B107B127B137B167B177B187B1A7B1C7B1D7B1F7B217B227B237B277B29
+7B2D6D6E6DAA798F88B15F17752B629A8F854FEF91DC65A7812F81515E9C8150
+8D74526F89868D4B590D50854ED8961C723681798D1F5BCC8BA3964459877F1A
+54905676560E8BE565396982949976D66E895E727518674667D17AFF809D8D76
+611F79C665628D635188521A94A27F38809B7EB25C976E2F67607BD9768B9AD8
+818F7F947CD5641E95507A3F544A54E56B4C640162089E3D80F3759952729769
+845B683C86E49601969494EC4E2A54047ED968398DDF801566F45E9A7FB90000
+B9
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+7B2F7B307B327B347B357B367B377B397B3B7B3D7B3F7B407B417B427B437B44
+7B467B487B4A7B4D7B4E7B537B557B577B597B5C7B5E7B5F7B617B637B647B65
+7B667B677B687B697B6A7B6B7B6C7B6D7B6F7B707B737B747B767B787B7A7B7C
+7B7D7B7F7B817B827B837B847B867B877B887B897B8A7B8B7B8C7B8E7B8F0000
+7B917B927B937B967B987B997B9A7B9B7B9E7B9F7BA07BA37BA47BA57BAE7BAF
+7BB07BB27BB37BB57BB67BB77BB97BBA7BBB7BBC7BBD7BBE7BBF7BC07BC27BC3
+7BC457C2803F68975DE5653B529F606D9F9A4F9B8EAC516C5BAB5F135DE96C5E
+62F18D21517194A952FE6C9F82DF72D757A267848D2D591F8F9C83C754957B8D
+4F306CBD5B6459D19F1353E486CA9AA88C3780A16545987E56FA96C7522E74DC
+52505BE1630289024E5662D0602A68FA51735B9851A089C27BA199867F5060EF
+704C8D2F51495E7F901B747089C4572D78455F529F9F95FA8F689B3C8BE17678
+684267DC8DEA8D35523D8F8A6EDA68CD950590ED56FD679C88F98FC754C80000
+BA
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+7BC57BC87BC97BCA7BCB7BCD7BCE7BCF7BD07BD27BD47BD57BD67BD77BD87BDB
+7BDC7BDE7BDF7BE07BE27BE37BE47BE77BE87BE97BEB7BEC7BED7BEF7BF07BF2
+7BF37BF47BF57BF67BF87BF97BFA7BFB7BFD7BFF7C007C017C027C037C047C05
+7C067C087C097C0A7C0D7C0E7C107C117C127C137C147C157C177C187C190000
+7C1A7C1B7C1C7C1D7C1E7C207C217C227C237C247C257C287C297C2B7C2C7C2D
+7C2E7C2F7C307C317C327C337C347C357C367C377C397C3A7C3B7C3C7C3D7C3E
+7C429AB85B696D776C264EA55BB39A87916361A890AF97E9542B6DB55BD251FD
+558A7F557FF064BC634D65F161BE608D710A6C576C49592F676D822A58D5568E
+8C6A6BEB90DD597D801753F76D695475559D837783CF683879BE548C4F555408
+76D28C8996026CB36DB88D6B89109E648D3A563F9ED175D55F8872E0606854FC
+4EA86A2A886160528F7054C470D886799E3F6D2A5B8F5F187EA255894FAF7334
+543C539A5019540E547C4E4E5FFD745A58F6846B80E1877472D07CCA6E560000
+BB
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+7C437C447C457C467C477C487C497C4A7C4B7C4C7C4E7C4F7C507C517C527C53
+7C547C557C567C577C587C597C5A7C5B7C5C7C5D7C5E7C5F7C607C617C627C63
+7C647C657C667C677C687C697C6A7C6B7C6C7C6D7C6E7C6F7C707C717C727C75
+7C767C777C787C797C7A7C7E7C7F7C807C817C827C837C847C857C867C870000
+7C887C8A7C8B7C8C7C8D7C8E7C8F7C907C937C947C967C997C9A7C9B7CA07CA1
+7CA37CA67CA77CA87CA97CAB7CAC7CAD7CAF7CB07CB47CB57CB67CB77CB87CBA
+7CBB5F27864E552C62A44E926CAA623782B154D7534E733E6ED1753B52125316
+8BDD69D05F8A60006DEE574F6B2273AF68538FD87F13636260A3552475EA8C62
+71156DA35BA65E7B8352614C9EC478FA87577C27768751F060F6714C66435E4C
+604D8C0E707063258F895FBD606286D456DE6BC160946167534960E066668D3F
+79FD4F1A70E96C478BB38BF27ED88364660F5A5A9B426D516DF78C416D3B4F19
+706B83B7621660D1970D8D27797851FB573E57FA673A75787A3D79EF7B950000
+BC
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+7CBF7CC07CC27CC37CC47CC67CC97CCB7CCE7CCF7CD07CD17CD27CD37CD47CD8
+7CDA7CDB7CDD7CDE7CE17CE27CE37CE47CE57CE67CE77CE97CEA7CEB7CEC7CED
+7CEE7CF07CF17CF27CF37CF47CF57CF67CF77CF97CFA7CFC7CFD7CFE7CFF7D00
+7D017D027D037D047D057D067D077D087D097D0B7D0C7D0D7D0E7D0F7D100000
+7D117D127D137D147D157D167D177D187D197D1A7D1B7D1C7D1D7D1E7D1F7D21
+7D237D247D257D267D287D297D2A7D2C7D2D7D2E7D307D317D327D337D347D35
+7D36808C99658FF96FC08BA59E2159EC7EE97F095409678168D88F917C4D96C6
+53CA602575BE6C7253735AC97EA7632451E0810A5DF184DF628051805B634F0E
+796D524260B86D4E5BC45BC28BA18BB065E25FCC964559937EE77EAA560967B7
+59394F735BB652A0835A988A8D3E753294BE50477A3C4EF767B69A7E5AC16B7C
+76D1575A5C167B3A95F4714E517C80A9827059787F04832768C067EC78B17877
+62E363617B804FED526A51CF835069DB92748DF58D3189C1952E7BAD4EF60000
+BD
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+7D377D387D397D3A7D3B7D3C7D3D7D3E7D3F7D407D417D427D437D447D457D46
+7D477D487D497D4A7D4B7D4C7D4D7D4E7D4F7D507D517D527D537D547D557D56
+7D577D587D597D5A7D5B7D5C7D5D7D5E7D5F7D607D617D627D637D647D657D66
+7D677D687D697D6A7D6B7D6C7D6D7D6F7D707D717D727D737D747D757D760000
+7D787D797D7A7D7B7D7C7D7D7D7E7D7F7D807D817D827D837D847D857D867D87
+7D887D897D8A7D8B7D8C7D8D7D8E7D8F7D907D917D927D937D947D957D967D97
+7D98506582305251996F6E106E856DA75EFA50F559DC5C066D466C5F7586848B
+686859568BB253209171964D854969127901712680F64EA490CA6D479A845A07
+56BC640594F077EB4FA5811A72E189D2997A7F347EDE527F655991758F7F8F83
+53EB7A9663ED63A5768679F888579636622A52AB8282685467706377776B7AED
+6D017ED389E359D0621285C982A5754C501F4ECB75A58BEB5C4A5DFE7B4B65A4
+91D14ECA6D25895F7D2795264EC58C288FDB9773664B79818FD170EC6D780000
+BE
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+7D997D9A7D9B7D9C7D9D7D9E7D9F7DA07DA17DA27DA37DA47DA57DA77DA87DA9
+7DAA7DAB7DAC7DAD7DAF7DB07DB17DB27DB37DB47DB57DB67DB77DB87DB97DBA
+7DBB7DBC7DBD7DBE7DBF7DC07DC17DC27DC37DC47DC57DC67DC77DC87DC97DCA
+7DCB7DCC7DCD7DCE7DCF7DD07DD17DD27DD37DD47DD57DD67DD77DD87DD90000
+7DDA7DDB7DDC7DDD7DDE7DDF7DE07DE17DE27DE37DE47DE57DE67DE77DE87DE9
+7DEA7DEB7DEC7DED7DEE7DEF7DF07DF17DF27DF37DF47DF57DF67DF77DF87DF9
+7DFA5C3D52B283465162830E775B66769CB84EAC60CA7CBE7CB37ECF4E958B66
+666F988897595883656C955C5F8475C997567ADF7ADE51C070AF7A9863EA7A76
+7EA0739697ED4E4570784E5D915253A9655165E781FC8205548E5C31759A97A0
+62D872D975BD5C459A7983CA5C40548077E94E3E6CAE805A62D2636E5DE85177
+8DDD8E1E952F4FF153E560E770AC526763509E435A1F5026773753777EE26485
+652B628963985014723589C951B38BC07EDD574783CC94A7519B541B5CFB0000
+BF
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+7DFB7DFC7DFD7DFE7DFF7E007E017E027E037E047E057E067E077E087E097E0A
+7E0B7E0C7E0D7E0E7E0F7E107E117E127E137E147E157E167E177E187E197E1A
+7E1B7E1C7E1D7E1E7E1F7E207E217E227E237E247E257E267E277E287E297E2A
+7E2B7E2C7E2D7E2E7E2F7E307E317E327E337E347E357E367E377E387E390000
+7E3A7E3C7E3D7E3E7E3F7E407E427E437E447E457E467E487E497E4A7E4B7E4C
+7E4D7E4E7E4F7E507E517E527E537E547E557E567E577E587E597E5A7E5B7E5C
+7E5D4FCA7AE36D5A90E19A8F55805496536154AF5F0063E9697751EF6168520A
+582A52D8574E780D770B5EB761777CE0625B62974EA27095800362F770E49760
+577782DB67EF68F578D5989779D158F354B353EF6E34514B523B5BA28BFE80AF
+554357A660735751542D7A7A60505B5463A762A053E362635BC767AF54ED7A9F
+82E691775E9388E4593857AE630E8DE880EF57577B774FA95FEB5BBD6B3E5321
+7B5072C2684677FF773665F751B54E8F76D45CBF7AA58475594E9B4150800000
+C0
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+7E5E7E5F7E607E617E627E637E647E657E667E677E687E697E6A7E6B7E6C7E6D
+7E6E7E6F7E707E717E727E737E747E757E767E777E787E797E7A7E7B7E7C7E7D
+7E7E7E7F7E807E817E837E847E857E867E877E887E897E8A7E8B7E8C7E8D7E8E
+7E8F7E907E917E927E937E947E957E967E977E987E997E9A7E9C7E9D7E9E0000
+7EAE7EB47EBB7EBC7ED67EE47EEC7EF97F0A7F107F1E7F377F397F3B7F3C7F3D
+7F3E7F3F7F407F417F437F467F477F487F497F4A7F4B7F4C7F4D7F4E7F4F7F52
+7F53998861276E8357646606634656F062EC62695ED39614578362C955878721
+814A8FA3556683B167658D5684DD5A6A680F62E67BEE961151706F9C8C3063FD
+89C861D27F0670C26EE57405699472FC5ECA90CE67176D6A635E52B372628001
+4F6C59E5916A70D96D9D52D24E5096F7956D857E78CA7D2F5121579264C2808B
+7C7B6CEA68F1695E51B7539868A872819ECE7BF172F879BB6F137406674E91CC
+9CA4793C83898354540F68174E3D538952B1783E5386522950884F8B4FD00000
+C1
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+7F567F597F5B7F5C7F5D7F5E7F607F637F647F657F667F677F6B7F6C7F6D7F6F
+7F707F737F757F767F777F787F7A7F7B7F7C7F7D7F7F7F807F827F837F847F85
+7F867F877F887F897F8B7F8D7F8F7F907F917F927F937F957F967F977F987F99
+7F9B7F9C7FA07FA27FA37FA57FA67FA87FA97FAA7FAB7FAC7FAD7FAE7FB10000
+7FB37FB47FB57FB67FB77FBA7FBB7FBE7FC07FC27FC37FC47FC67FC77FC87FC9
+7FCB7FCD7FCF7FD07FD17FD27FD37FD67FD77FD97FDA7FDB7FDC7FDD7FDE7FE2
+7FE375E27ACB7C926CA596B6529B748354E94FE9805483B28FDE95705EC9601C
+6D9F5E18655B813894FE604B70BC7EC37CAE51C968817CB1826F4E248F8691CF
+667E4EAE8C0564A9804A50DA759771CE5BE58FBD6F664E86648295635ED66599
+521788C270C852A3730E7433679778F797164E3490BB9CDE6DCB51DB8D41541D
+62CE73B283F196F69F8494C34F367F9A51CC707596755CAD988653E64EE46E9C
+740969B4786B998F7559521876246D4167F3516D9F99804B54997B3C7ABF0000
+C2
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+7FE47FE77FE87FEA7FEB7FEC7FED7FEF7FF27FF47FF57FF67FF77FF87FF97FFA
+7FFD7FFE7FFF8002800780088009800A800E800F80118013801A801B801D801E
+801F802180238024802B802C802D802E802F8030803280348039803A803C803E
+8040804180448045804780488049804E804F8050805180538055805680570000
+8059805B805C805D805E805F806080618062806380648065806680678068806B
+806C806D806E806F807080728073807480758076807780788079807A807B807C
+807D9686578462E29647697C5A0464027BD36F0F964B82A6536298855E907089
+63B35364864F9C819E93788C97328DEF8D429E7F6F5E79845F559646622E9A74
+541594DD4FA365C55C655C617F1586516C2F5F8B73876EE47EFF5CE6631B5B6A
+6EE653754E7163A0756562A18F6E4F264ED16CA67EB68BBA841D87BA7F57903B
+95237BA99AA188F8843D6D1B9A867EDC59889EBB739B780186829A6C9A82561B
+541757CB4E709EA653568FC881097792999286EE6EE1851366FC61626F2B0000
+C3
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+807E8081808280858088808A808D808E808F8090809180928094809580978099
+809E80A380A680A780A880AC80B080B380B580B680B880B980BB80C580C780C8
+80C980CA80CB80CF80D080D180D280D380D480D580D880DF80E080E280E380E6
+80EE80F580F780F980FB80FE80FF8100810181038104810581078108810B0000
+810C811581178119811B811C811D811F81208121812281238124812581268127
+81288129812A812B812D812E813081338134813581378139813A813B813C813D
+813F8C298292832B76F26C135FD983BD732B8305951A6BDB77DB94C6536F8302
+51925E3D8C8C8D384E4873AB679A68859176970971646CA177095A9295416BCF
+7F8E66275BD059B95A9A95E895F74EEC840C84996AAC76DF9530731B68A65B5F
+772F919A97617CDC8FF78C1C5F257C7379D889C56CCC871C5BC65E4268C97720
+7EF55195514D52C95A297F05976282D763CF778485D079D26E3A5E9959998511
+706D6C1162BF76BF654F60AF95FD660E879F9E2394ED540D547D8C2C64780000
+C4
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+81408141814281438144814581478149814D814E814F8152815681578158815B
+815C815D815E815F816181628163816481668168816A816B816C816F81728173
+81758176817781788181818381848185818681878189818B818C818D818E8190
+8192819381948195819681978199819A819E819F81A081A181A281A481A50000
+81A781A981AB81AC81AD81AE81AF81B081B181B281B481B581B681B781B881B9
+81BC81BD81BE81BF81C481C581C781C881C981CB81CD81CE81CF81D081D181D2
+81D3647986116A21819C78E864699B5462B9672B83AB58A89ED86CAB6F205BDE
+964C8C0B725F67D062C772614EA959C66BCD589366AE5E5552DF6155672876EE
+776672677A4662FF54EA545094A090A35A1C7EB36C164E435976801059485357
+753796BE56CA63208111607C95F96DD65462998151855AE980FD59AE9713502A
+6CE55C3C62DF4F60533F817B90066EBA852B62C85E7478BE64B5637B5FF55A18
+917F9E1F5C3F634F80425B7D556E954A954D6D8560A867E072DE51DD5B810000
+C5
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+81D481D581D681D781D881D981DA81DB81DC81DD81DE81DF81E081E181E281E4
+81E581E681E881E981EB81EE81EF81F081F181F281F581F681F781F881F981FA
+81FD81FF8203820782088209820A820B820E820F821182138215821682178218
+8219821A821D822082248225822682278229822E8232823A823C823D823F0000
+8240824182428243824582468248824A824C824D824E82508251825282538254
+8255825682578259825B825C825D825E82608261826282638264826582668267
+826962E76CDE725B626D94AE7EBD81136D53519C5F04597452AA601259736696
+8650759F632A61E67CEF8BFA54E66B279E256BB485D5545550766CA4556A8DB4
+722C5E156015743662CD6392724C5F986E436D3E65006F5876D878D076FC7554
+522453DB4E535E9E65C1802A80D6629B5486522870AE888D8DD16CE1547880DA
+57F988F48D54966A914D4F696C9B55B776C6783062A870F96F8E5F6D84EC68DA
+787C7BF781A8670B9E4F636778B0576F78129739627962AB528874356BD70000
+C6
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+826A826B826C826D82718275827682778278827B827C82808281828382858286
+82878289828C82908293829482958296829A829B829E82A082A282A382A782B2
+82B582B682BA82BB82BC82BF82C082C282C382C582C682C982D082D682D982DA
+82DD82E282E782E882E982EA82EC82ED82EE82F082F282F382F582F682F80000
+82FA82FC82FD82FE82FF8300830A830B830D831083128313831683188319831D
+831E831F83208321832283238324832583268329832A832E833083328337833B
+833D5564813E75B276AE533975DE50FB5C418B6C7BC7504F72479A9798D86F02
+74E27968648777A562FC98918D2B54C180584E52576A82F9840D5E7351ED74F6
+8BC45C4F57616CFC98875A4678349B448FEB7C955256625194FA4EC683868461
+83E984B257D467345703666E6D668C3166DD7011671F6B3A6816621A59BB4E03
+51C46F0667D26C8F517668CB59476B6775665D0E81109F5065D7794879419A91
+8D775C824E5E4F01542F5951780C56686C148FC45F036C7D6CE38BAB63900000
+C7
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+833E833F83418342834483458348834A834B834C834D834E8353835583568357
+83588359835D836283708371837283738374837583768379837A837E837F8380
+838183828383838483878388838A838B838C838D838F83908391839483958396
+83978399839A839D839F83A183A283A383A483A583A683A783AC83AD83AE0000
+83AF83B583BB83BE83BF83C283C383C483C683C883C983CB83CD83CE83D083D1
+83D283D383D583D783D983DA83DB83DE83E283E383E483E683E783E883EB83EC
+83ED60706D3D72756266948E94C553438FC17B7E4EDF8C264E7E9ED494B194B3
+524D6F5C90636D458C3458115D4C6B206B4967AA545B81547F8C589985375F3A
+62A26A47953965726084686577A74E544FA85DE7979864AC7FD85CED4FCF7A8D
+520783044E14602F7A8394A64FB54EB279E6743452E482B964D279BD5BDD6C81
+97528F7B6C22503E537F6E0564CE66746C3060C598778BF75E86743C7A7779CB
+4E1890B174036C4256DA914B6CC58D8B533A86C666F28EAF5C489A716E200000
+C8
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+83EE83EF83F383F483F583F683F783FA83FB83FC83FE83FF8400840284058407
+84088409840A84108412841384148415841684178419841A841B841E841F8420
+8421842284238429842A842B842C842D842E842F843084328433843484358436
+84378439843A843B843E843F8440844184428443844484458447844884490000
+844A844B844C844D844E844F8450845284538454845584568458845D845E845F
+8460846284648465846684678468846A846E846F84708472847484778479847B
+847C53D65A369F8B8DA353BB570898A76743919B6CC9516875CA62F372AC5238
+529D7F3A7094763853749E4A69B7786E96C088D97FA4713671C3518967D374E4
+58E4651856B78BA9997662707ED560F970ED58EC4EC14EBA5FCD97E74EFB8BA4
+5203598A7EAB62544ECD65E5620E833884C98363878D71946EB65BB97ED25197
+63C967D480898339881551125B7A59828FB14E736C5D516589258F6F962E854A
+745E951095F06DA682E55F3164926D128428816E9CC3585E8D5B4E0953C10000
+C9
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+847D847E847F848084818483848484858486848A848D848F8490849184928493
+8494849584968498849A849B849D849E849F84A084A284A384A484A584A684A7
+84A884A984AA84AB84AC84AD84AE84B084B184B384B584B684B784BB84BC84BE
+84C084C284C384C584C684C784C884CB84CC84CE84CF84D284D484D584D70000
+84D884D984DA84DB84DC84DE84E184E284E484E784E884E984EA84EB84ED84EE
+84EF84F184F284F384F484F584F684F784F884F984FA84FB84FD84FE85008501
+85024F1E6563685155D34E2764149A9A626B5AC2745F82726DA968EE50E7838E
+7802674052396C997EB150BB5565715E7B5B665273CA82EB67495C715220717D
+886B95EA965564C58D6181B355846C5562477F2E58924F2455468D4F664C4E0A
+5C1A88F368A2634E7A0D70E7828D52FA97F65C1154E890B57ECD59628D4A86C7
+820C820D8D6664445C0461516D89793E8BBE78377533547B4F388EAB6DF15A20
+7EC5795E6C885BA15A76751A80BE614E6E1758F0751F7525727253477EF30000
+CA
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+8503850485058506850785088509850A850B850D850E850F8510851285148515
+851685188519851B851C851D851E852085228523852485258526852785288529
+852A852D852E852F8530853185328533853485358536853E853F854085418542
+8544854585468547854B854C854D854E854F8550855185528553855485550000
+85578558855A855B855C855D855F85608561856285638565856685678569856A
+856B856C856D856E856F8570857185738575857685778578857C857D857F8580
+8581770176DB526980DC57235E08593172EE65BD6E7F8BD75C388671534177F3
+62FE65F64EC098DF86805B9E8BC653F277E24F7F5C4E9A7659CB5F0F793A58EB
+4E1667FF4E8B62ED8A93901D52BF662F55DC566C90024ED54F8D91CA99706C0F
+5E0260435BA489C68BD56536624B99965B885BFF6388552E53D77626517D852C
+67A268B36B8A62928F9353D482126DD1758F4E668D4E5B70719F85AF669166D9
+7F7287009ECD9F205C5E672F8FF06811675F620D7AD658855EB665706F310000
+CB
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+85828583858685888589858A858B858C858D858E859085918592859385948595
+8596859785988599859A859D859E859F85A085A185A285A385A585A685A785A9
+85AB85AC85AD85B185B285B385B485B585B685B885BA85BB85BC85BD85BE85BF
+85C085C285C385C485C585C685C785C885CA85CB85CC85CD85CE85D185D20000
+85D485D685D785D885D985DA85DB85DD85DE85DF85E085E185E285E385E585E6
+85E785E885EA85EB85EC85ED85EE85EF85F085F185F285F385F485F585F685F7
+85F860555237800D6454887075295E05681362F4971C53CC723D8C016C347761
+7A0E542E77AC987A821C8BF47855671470C165AF64955636601D79C153F84E1D
+6B7B80865BFA55E356DB4F3A4F3C99725DF3677E80386002988290015B8B8BBC
+8BF5641C825864DE55FD82CF91654FD77D20901F7C9F50F358516EAF5BBF8BC9
+80839178849C7B97867D968B968F7EE59AD3788E5C817A57904296A7795F5B59
+635F7B0B84D168AD55067F2974107D2295016240584C4ED65B83597958540000
+CC
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+85F985FA85FC85FD85FE860086018602860386048606860786088609860A860B
+860C860D860E860F86108612861386148615861786188619861A861B861C861D
+861E861F86208621862286238624862586268628862A862B862C862D862E862F
+863086318632863386348635863686378639863A863B863D863E863F86400000
+864186428643864486458646864786488649864A864B864C8652865386558656
+865786588659865B865C865D865F866086618663866486658666866786688669
+866A736D631E8E4B8E0F80CE82D462AC53F06CF0915E592A60016C70574D644A
+8D2A762B6EE9575B6A8075F06F6D8C2D8C0857666BEF889278B363A253F970AD
+6C645858642A580268E0819B55107CD650188EBA6DCC8D9F70EB638F6D9B6ED4
+7EE68404684390036DD896768BA85957727985E4817E75BC8A8A68AF52548E22
+951163D098988E44557C4F5366FF568F60D56D9552435C4959296DFB586B7530
+751C606C82148146631167618FE2773A8DF38D3494C15E165385542C70C30000
+CD
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+866D866F86708672867386748675867686778678868386848685868686878688
+8689868E868F86908691869286948696869786988699869A869B869E869F86A0
+86A186A286A586A686AB86AD86AE86B286B386B786B886B986BB86BC86BD86BE
+86BF86C186C286C386C586C886CC86CD86D286D386D586D686D786DA86DC0000
+86DD86E086E186E286E386E586E686E786E886EA86EB86EC86EF86F586F686F7
+86FA86FB86FC86FD86FF8701870487058706870B870C870E870F871087118714
+87166C405EF7505C4EAD5EAD633A8247901A6850916E77B3540C94DC5F647AE5
+687663457B527EDF75DB507762955934900F51F879C37A8156FE5F9290146D82
+5C60571F541051546E4D56E263A89893817F8715892A9000541E5C6F81C062D6
+625881319E3596409A6E9A7C692D59A562D3553E631654C786D96D3C5A0374E6
+889C6B6A59168C4C5F2F6E7E73A9987D4E3870F75B8C7897633D665A769660CB
+5B9B5A494E0781556C6A738B4EA167897F515F8065FA671B5FD859845A010000
+CE
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+8719871B871D871F87208724872687278728872A872B872C872D872F87308732
+87338735873687388739873A873C873D8740874187428743874487458746874A
+874B874D874F8750875187528754875587568758875A875B875C875D875E875F
+876187628766876787688769876A876B876C876D876F87718772877387750000
+877787788779877A877F878087818784878687878789878A878C878E878F8790
+8791879287948795879687988799879A879B879C879D879E87A087A187A287A3
+87A45DCD5FAE537197E68FDD684556F4552F60DF4E3A6F4D7EF482C7840E59D4
+4F1F4F2A5C3E7EAC672A851A5473754F80C355829B4F4F4D6E2D8C135C096170
+536B761F6E29868A658795FB7EB9543B7A337D0A95EE55E17FC174EE631D8717
+6DA17A9D621165A1536763E16C835DEB545C94A84E4C6C618BEC5C4B65E0829C
+68A7543E54346BCB6B664E9463425348821E4F0D4FAE575E620A96FE66647269
+52FF52A1609F8BEF661471996790897F785277FD6670563B54389521727A0000
+CF
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+87A587A687A787A987AA87AE87B087B187B287B487B687B787B887B987BB87BC
+87BE87BF87C187C287C387C487C587C787C887C987CC87CD87CE87CF87D087D4
+87D587D687D787D887D987DA87DC87DD87DE87DF87E187E287E387E487E687E7
+87E887E987EB87EC87ED87EF87F087F187F287F387F487F587F687F787F80000
+87FA87FB87FC87FD87FF880088018802880488058806880788088809880B880C
+880D880E880F8810881188128814881788188819881A881C881D881E881F8820
+88237A00606F5E0C6089819D591560DC718470EF6EAA6C5072806A8488AD5E2D
+4E605AB3559C94E36D177CFB9699620F7EC6778E867E5323971E8F9666875CE1
+4FA072ED4E0B53A6590F54136380952851484ED99C9C7EA454B88D2488548237
+95F26D8E5F265ACC663E966973B0732E53BF817A99857FA15BAA967796507EBF
+76F853A2957699997BB189446E584E617FD479658BE660F354CD4EAB98795DF7
+6A6150CF54118C618427785D9704524A54EE56A395006D885BB56DC666530000
+D0
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+882488258826882788288829882A882B882C882D882E882F8830883188338834
+8835883688378838883A883B883D883E883F8841884288438846884788488849
+884A884B884E884F8850885188528853885588568858885A885B885C885D885E
+885F886088668867886A886D886F8871887388748875887688788879887A0000
+887B887C88808883888688878889888A888C888E888F88908891889388948895
+889788988899889A889B889D889E889F88A088A188A388A588A688A788A888A9
+88AA5C0F5B5D6821809655787B11654869544E9B6B47874E978B534F631F643A
+90AA659C80C18C10519968B0537887F961C86CC46CFB8C225C5185AA82AF950C
+6B238F9B65B05FFB5FC34FE18845661F8165732960FA51745211578B5F6290A2
+884C91925E78674F602759D3514451F680F853086C7996C4718A4F114FEE7F9E
+673D55C5950879C088967EE3589F620C9700865A5618987B5F908BB884C49157
+53D965ED5E8F755C60647D6E5A7F7EEA7EED8F6955A75BA360AC65CB73840000
+D1
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+88AC88AE88AF88B088B288B388B488B588B688B888B988BA88BB88BD88BE88BF
+88C088C388C488C788C888CA88CB88CC88CD88CF88D088D188D388D688D788DA
+88DB88DC88DD88DE88E088E188E688E788E988EA88EB88EC88ED88EE88EF88F2
+88F588F688F788FA88FB88FD88FF890089018903890489058906890789080000
+8909890B890C890D890E890F891189148915891689178918891C891D891E891F
+89208922892389248926892789288929892C892D892E892F8931893289338935
+89379009766377297EDA9774859B5B667A7496EA884052CB718F5FAA65EC8BE2
+5BFB9A6F5DE16B896C5B8BAD8BAF900A8FC5538B62BC9E269E2D54404E2B82BD
+7259869C5D1688596DAF96C554D14E9A8BB6710954BD960970DF6DF976D04E25
+781487125CA95EF68A00989C960E708E6CBF594463A9773C884D6F1482735830
+71D5538C781A96C155015F6671305BB48C1A9A8C6B83592E9E2F79E76768626C
+4F6F75A17F8A6D0B96336C274EF075D2517B68376F3E90808170599674760000
+D2
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+89388939893A893B893C893D893E893F89408942894389458946894789488949
+894A894B894C894D894E894F8950895189528953895489558956895789588959
+895A895B895C895D896089618962896389648965896789688969896A896B896C
+896D896E896F8970897189728973897489758976897789788979897A897C0000
+897D897E8980898289848985898789888989898A898B898C898D898E898F8990
+899189928993899489958996899789988999899A899B899C899D899E899F89A0
+89A164475C2790657A918C2359DA54AC8200836F898180006930564E80367237
+91CE51B64E5F987563964E1A53F666F3814B591C6DB24E0058F9533B63D694F1
+4F9D4F0A886398905937905779FB4EEA80F075916C825B9C59E85F5D69058681
+501A5DF24E5977E34EE5827A6291661390915C794EBF5F7981C69038808475AB
+4EA688D4610F6BC55FC64E4976CA6EA28BE38BAE8C0A8BD15F027FFC7FCC7ECE
+8335836B56E06BB797F3963459FB541F94F66DEB5BC5996E5C395F1596900000
+D3
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+89A289A389A489A589A689A789A889A989AA89AB89AC89AD89AE89AF89B089B1
+89B289B389B489B589B689B789B889B989BA89BB89BC89BD89BE89BF89C089C3
+89CD89D389D489D589D789D889D989DB89DD89DF89E089E189E289E489E789E8
+89E989EA89EC89ED89EE89F089F189F289F489F589F689F789F889F989FA0000
+89FB89FC89FD89FE89FF8A018A028A038A048A058A068A088A098A0A8A0B8A0C
+8A0D8A0E8A0F8A108A118A128A138A148A158A168A178A188A198A1A8A1B8A1C
+8A1D537082F16A315A749E705E947F2883B984248425836787478FCE8D6276C8
+5F719896786C662054DF62E54F6381C375C85EB896CD8E0A86F9548F6CF36D8C
+6C38607F52C775285E7D4F1860A05FE75C24753190AE94C072B96CB96E389149
+670953CB53F34F5191C98BF153C85E7C8FC26DE44E8E76C26986865E611A8206
+4F594FDE903E9C7C61096E1D6E1496854E885A3196E84E0E5C7F79B95B878BED
+7FBD738957DF828B90C15401904755BB5CEA5FA161086B3272F180B28A890000
+D4
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+8A1E8A1F8A208A218A228A238A248A258A268A278A288A298A2A8A2B8A2C8A2D
+8A2E8A2F8A308A318A328A338A348A358A368A378A388A398A3A8A3B8A3C8A3D
+8A3F8A408A418A428A438A448A458A468A478A498A4A8A4B8A4C8A4D8A4E8A4F
+8A508A518A528A538A548A558A568A578A588A598A5A8A5B8A5C8A5D8A5E0000
+8A5F8A608A618A628A638A648A658A668A678A688A698A6A8A6B8A6C8A6D8A6E
+8A6F8A708A718A728A738A748A758A768A778A788A7A8A7B8A7C8A7D8A7E8A7F
+8A806D745BD388D598848C6B9A6D9E336E0A51A4514357A38881539F63F48F95
+56ED54585706733F6E907F188FDC82D1613F6028966266F07EA68D8A8DC394A5
+5CB37CA4670860A6960580184E9190E75300966851418FD08574915D665597F5
+5B55531D78386742683D54C9707E5BB08F7D518D572854B1651266828D5E8D43
+810F846C906D7CDF51FF85FB67A365E96FA186A48E81566A90207682707671E5
+8D2362E952196CFD8D3C600E589E618E66FE8D60624E55B36E23672D8F670000
+D5
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+8A818A828A838A848A858A868A878A888A8B8A8C8A8D8A8E8A8F8A908A918A92
+8A948A958A968A978A988A998A9A8A9B8A9C8A9D8A9E8A9F8AA08AA18AA28AA3
+8AA48AA58AA68AA78AA88AA98AAA8AAB8AAC8AAD8AAE8AAF8AB08AB18AB28AB3
+8AB48AB58AB68AB78AB88AB98ABA8ABB8ABC8ABD8ABE8ABF8AC08AC18AC20000
+8AC38AC48AC58AC68AC78AC88AC98ACA8ACB8ACC8ACD8ACE8ACF8AD08AD18AD2
+8AD38AD48AD58AD68AD78AD88AD98ADA8ADB8ADC8ADD8ADE8ADF8AE08AE18AE2
+8AE394E195F87728680569A8548B4E4D70B88BC86458658B5B857A84503A5BE8
+77BB6BE18A797C986CBE76CF65A98F975D2D5C5586386808536062187AD96E5B
+7EFD6A1F7AE05F706F335F20638C6DA867564E085E108D264ED780C07634969C
+62DB662D627E6CBC8D7571677F695146808753EC906E629854F286F08F998005
+951785178FD96D5973CD659F771F7504782781FB8D1E94884FA6679575B98BCA
+9707632F9547963584B8632377415F8172F04E896014657462EF6B63653F0000
+D6
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+8AE48AE58AE68AE78AE88AE98AEA8AEB8AEC8AED8AEE8AEF8AF08AF18AF28AF3
+8AF48AF58AF68AF78AF88AF98AFA8AFB8AFC8AFD8AFE8AFF8B008B018B028B03
+8B048B058B068B088B098B0A8B0B8B0C8B0D8B0E8B0F8B108B118B128B138B14
+8B158B168B178B188B198B1A8B1B8B1C8B1D8B1E8B1F8B208B218B228B230000
+8B248B258B278B288B298B2A8B2B8B2C8B2D8B2E8B2F8B308B318B328B338B34
+8B358B368B378B388B398B3A8B3B8B3C8B3D8B3E8B3F8B408B418B428B438B44
+8B455E2775C790D18BC1829D679D652F5431871877E580A281026C414E4B7EC7
+804C76F4690D6B966267503C4F84574063076B628DBE53EA65E87EB85FD7631A
+63B781F381F47F6E5E1C5CD95236667A79E97A1A8D28709975D46EDE6CBB7A92
+4E2D76C55FE0949F88777EC879CD80BF91CD4EF24F17821F54685DDE6D328BCC
+7CA58F7480985E1A549276B15B99663C9AA473E0682A86DB6731732A8BF88BDB
+90107AF970DB716E62C477A956314E3B845767F152A986C08D2E94F87B510000
+D7
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+8B468B478B488B498B4A8B4B8B4C8B4D8B4E8B4F8B508B518B528B538B548B55
+8B568B578B588B598B5A8B5B8B5C8B5D8B5E8B5F8B608B618B628B638B648B65
+8B678B688B698B6A8B6B8B6D8B6E8B6F8B708B718B728B738B748B758B768B77
+8B788B798B7A8B7B8B7C8B7D8B7E8B7F8B808B818B828B838B848B858B860000
+8B878B888B898B8A8B8B8B8C8B8D8B8E8B8F8B908B918B928B938B948B958B96
+8B978B988B998B9A8B9B8B9C8B9D8B9E8B9F8BAC8BB18BBB8BC78BD08BEA8C09
+8C1E4F4F6CE8795D9A7B6293722A62FD4E1378168F6C64B08D5A7BC668695E84
+88C55986649E58EE72B6690E95258FFD8D5857607F008C0651C6634962D95353
+684C74228301914C55447740707C6D4A517954A88D4459FF6ECB6DC45B5C7D2B
+4ED47C7D6ED35B5081EA6E0D5B579B0368D58E2A5B977EFC603B7EB590B98D70
+594F63CD79DF8DB3535265CF79568BC5963B7EC494BB7E825634918967007F6A
+5C0A907566285DE64F5067DE505A4F5C57505EA7000000000000000000000000
+D8
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+8C388C398C3A8C3B8C3C8C3D8C3E8C3F8C408C428C438C448C458C488C4A8C4B
+8C4D8C4E8C4F8C508C518C528C538C548C568C578C588C598C5B8C5C8C5D8C5E
+8C5F8C608C638C648C658C668C678C688C698C6C8C6D8C6E8C6F8C708C718C72
+8C748C758C768C778C7B8C7C8C7D8C7E8C7F8C808C818C838C848C868C870000
+8C888C8B8C8D8C8E8C8F8C908C918C928C938C958C968C978C998C9A8C9B8C9C
+8C9D8C9E8C9F8CA08CA18CA28CA38CA48CA58CA68CA78CA88CA98CAA8CAB8CAC
+8CAD4E8D4E0C51404E105EFF53454E154E984E1E9B325B6C56694E2879BA4E3F
+53154E47592D723B536E6C1056DF80E499976BD3777E9F174E364E9F9F104E5C
+4E694E9382885B5B556C560F4EC4538D539D53A353A553AE97658D5D531A53F5
+5326532E533E8D5C5366536352025208520E522D5233523F5240524C525E5261
+525C84AF527D528252815290529351827F544EBB4EC34EC94EC24EE84EE14EEB
+4EDE4F1B4EF34F224F644EF54F254F274F094F2B4F5E4F6765384F5A4F5D0000
+D9
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+8CAE8CAF8CB08CB18CB28CB38CB48CB58CB68CB78CB88CB98CBA8CBB8CBC8CBD
+8CBE8CBF8CC08CC18CC28CC38CC48CC58CC68CC78CC88CC98CCA8CCB8CCC8CCD
+8CCE8CCF8CD08CD18CD28CD38CD48CD58CD68CD78CD88CD98CDA8CDB8CDC8CDD
+8CDE8CDF8CE08CE18CE28CE38CE48CE58CE68CE78CE88CE98CEA8CEB8CEC0000
+8CED8CEE8CEF8CF08CF18CF28CF38CF48CF58CF68CF78CF88CF98CFA8CFB8CFC
+8CFD8CFE8CFF8D008D018D028D038D048D058D068D078D088D098D0A8D0B8D0C
+8D0D4F5F4F574F324F3D4F764F744F914F894F834F8F4F7E4F7B4FAA4F7C4FAC
+4F944FE64FE84FEA4FC54FDA4FE34FDC4FD14FDF4FF85029504C4FF3502C500F
+502E502D4FFE501C500C50255028507E504350555048504E506C507B50A550A7
+50A950BA50D6510650ED50EC50E650EE5107510B4EDD6C3D4F584F654FCE9FA0
+6C467C74516E5DFD9EC999985181591452F9530D8A07531051EB591951554EA0
+51564EB3886E88A44EB5811488D279805B3488037FB851AB51B151BD51BC0000
+DA
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+8D0E8D0F8D108D118D128D138D148D158D168D178D188D198D1A8D1B8D1C8D20
+8D518D528D578D5F8D658D688D698D6A8D6C8D6E8D6F8D718D728D788D798D7A
+8D7B8D7C8D7D8D7E8D7F8D808D828D838D868D878D888D898D8C8D8D8D8E8D8F
+8D908D928D938D958D968D978D988D998D9A8D9B8D9C8D9D8D9E8DA08DA10000
+8DA28DA48DA58DA68DA78DA88DA98DAA8DAB8DAC8DAD8DAE8DAF8DB08DB28DB6
+8DB78DB98DBB8DBD8DC08DC18DC28DC58DC78DC88DC98DCA8DCD8DD08DD28DD3
+8DD451C7519651A251A58BA08BA68BA78BAA8BB48BB58BB78BC28BC38BCB8BCF
+8BCE8BD28BD38BD48BD68BD88BD98BDC8BDF8BE08BE48BE88BE98BEE8BF08BF3
+8BF68BF98BFC8BFF8C008C028C048C078C0C8C0F8C118C128C148C158C168C19
+8C1B8C188C1D8C1F8C208C218C258C278C2A8C2B8C2E8C2F8C328C338C358C36
+5369537A961D962296219631962A963D963C964296499654965F9667966C9672
+96749688968D969796B09097909B909D909990AC90A190B490B390B690BA0000
+DB
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+8DD58DD88DD98DDC8DE08DE18DE28DE58DE68DE78DE98DED8DEE8DF08DF18DF2
+8DF48DF68DFC8DFE8DFF8E008E018E028E038E048E068E078E088E0B8E0D8E0E
+8E108E118E128E138E158E168E178E188E198E1A8E1B8E1C8E208E218E248E25
+8E268E278E288E2B8E2D8E308E328E338E348E368E378E388E3B8E3C8E3E0000
+8E3F8E438E458E468E4C8E4D8E4E8E4F8E508E538E548E558E568E578E588E5A
+8E5B8E5C8E5D8E5E8E5F8E608E618E628E638E648E658E678E688E6A8E6B8E6E
+8E7190B890B090CF90C590BE90D090C490C790D390E690E290DC90D790DB90EB
+90EF90FE91049122911E91239131912F913991439146520D594252A252AC52AD
+52BE54FF52D052D652F053DF71EE77CD5EF451F551FC9B2F53B65F01755A5DEF
+574C57A957A1587E58BC58C558D15729572C572A57335739572E572F575C573B
+574257695785576B5786577C577B5768576D5776577357AD57A4578C57B257CF
+57A757B4579357A057D557D857DA57D957D257B857F457EF57F857E457DD0000
+DC
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+8E738E758E778E788E798E7A8E7B8E7D8E7E8E808E828E838E848E868E888E89
+8E8A8E8B8E8C8E8D8E8E8E918E928E938E958E968E978E988E998E9A8E9B8E9D
+8E9F8EA08EA18EA28EA38EA48EA58EA68EA78EA88EA98EAA8EAD8EAE8EB08EB1
+8EB38EB48EB58EB68EB78EB88EB98EBB8EBC8EBD8EBE8EBF8EC08EC18EC20000
+8EC38EC48EC58EC68EC78EC88EC98ECA8ECB8ECC8ECD8ECF8ED08ED18ED28ED3
+8ED48ED58ED68ED78ED88ED98EDA8EDB8EDC8EDD8EDE8EDF8EE08EE18EE28EE3
+8EE4580B580D57FD57ED5800581E5819584458205865586C58815889589A5880
+99A89F1961FF8279827D827F828F828A82A88284828E82918297829982AB82B8
+82BE82B082C882CA82E3829882B782AE82CB82CC82C182A982B482A182AA829F
+82C482CE82A482E1830982F782E4830F830782DC82F482D282D8830C82FB82D3
+8311831A83068314831582E082D5831C8351835B835C83088392833C83348331
+839B835E832F834F83478343835F834083178360832D833A8333836683650000
+DD
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+8EE58EE68EE78EE88EE98EEA8EEB8EEC8EED8EEE8EEF8EF08EF18EF28EF38EF4
+8EF58EF68EF78EF88EF98EFA8EFB8EFC8EFD8EFE8EFF8F008F018F028F038F04
+8F058F068F078F088F098F0A8F0B8F0C8F0D8F0E8F0F8F108F118F128F138F14
+8F158F168F178F188F198F1A8F1B8F1C8F1D8F1E8F1F8F208F218F228F230000
+8F248F258F268F278F288F298F2A8F2B8F2C8F2D8F2E8F2F8F308F318F328F33
+8F348F358F368F378F388F398F3A8F3B8F3C8F3D8F3E8F3F8F408F418F428F43
+8F448368831B8369836C836A836D836E83B0837883B383B483A083AA8393839C
+8385837C83B683A9837D83B8837B8398839E83A883BA83BC83C1840183E583D8
+58078418840B83DD83FD83D6841C84388411840683D483DF840F840383F883F9
+83EA83C583C0842683F083E1845C8451845A8459847384878488847A84898478
+843C844684698476848C848E8431846D84C184CD84D084E684BD84D384CA84BF
+84BA84E084A184B984B4849784E584E3850C750D853884F08539851F853A0000
+DE
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+8F458F468F478F488F498F4A8F4B8F4C8F4D8F4E8F4F8F508F518F528F538F54
+8F558F568F578F588F598F5A8F5B8F5C8F5D8F5E8F5F8F608F618F628F638F64
+8F658F6A8F808F8C8F928F9D8FA08FA18FA28FA48FA58FA68FA78FAA8FAC8FAD
+8FAE8FAF8FB28FB38FB48FB58FB78FB88FBA8FBB8FBC8FBF8FC08FC38FC60000
+8FC98FCA8FCB8FCC8FCD8FCF8FD28FD68FD78FDA8FE08FE18FE38FE78FEC8FEF
+8FF18FF28FF48FF58FF68FFA8FFB8FFC8FFE8FFF90079008900C900E90139015
+90188556853B84FF84FC8559854885688564855E857A77A285438572857B85A4
+85A88587858F857985AE859C858585B985B785B085D385C185DC85FF86278605
+86298616863C5EFE5F08593C594180375955595A5958530F5C225C255C2C5C34
+624C626A629F62BB62CA62DA62D762EE632262F66339634B634363AD63F66371
+637A638E63B4636D63AC638A636963AE63BC63F263F863E063FF63C463DE63CE
+645263C663BE64456441640B641B6420640C64266421645E6484646D64960000
+DF
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+9019901C902390249025902790289029902A902B902C90309031903290339034
+90379039903A903D903F904090439045904690489049904A904B904C904E9054
+905590569059905A905C905D905E905F906090619064906690679069906A906B
+906C906F90709071907290739076907790789079907A907B907C907E90810000
+90849085908690879089908A908C908D908E908F90909092909490969098909A
+909C909E909F90A090A490A590A790A890A990AB90AD90B290B790BC90BD90BF
+90C0647A64B764B8649964BA64C064D064D764E464E265096525652E5F0B5FD2
+75195F11535F53F153FD53E953E853FB541254165406544B5452545354545456
+54435421545754595423543254825494547754715464549A549B548454765466
+549D54D054AD54C254B454D254A754A654D354D4547254A354D554BB54BF54CC
+54D954DA54DC54A954AA54A454DD54CF54DE551B54E7552054FD551454F35522
+5523550F55115527552A5567558F55B55549556D55415555553F5550553C0000
+E0
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+90C290C390C690C890C990CB90CC90CD90D290D490D590D690D890D990DA90DE
+90DF90E090E390E490E590E990EA90EC90EE90F090F190F290F390F590F690F7
+90F990FA90FB90FC90FF91009101910391059106910791089109910A910B910C
+910D910E910F911091119112911391149115911691179118911A911B911C0000
+911D911F91209121912491259126912791289129912A912B912C912D912E9130
+9132913391349135913691379138913A913B913C913D913E913F914091419142
+91445537555655755576557755335530555C558B55D2558355B155B955885581
+559F557E55D65591557B55DF55BD55BE5594559955EA55F755C9561F55D155EB
+55EC55D455E655DD55C455EF55E555F255F355CC55CD55E855F555E48F94561E
+5608560C56015624562355FE56005627562D565856395657562C564D56625659
+565C564C5654568656645671566B567B567C5685569356AF56D456D756DD56E1
+56F556EB56F956FF5704570A5709571C5E0F5E195E145E115E315E3B5E3C0000
+E1
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+9145914791489151915391549155915691589159915B915C915F916091669167
+9168916B916D9173917A917B917C9180918191829183918491869188918A918E
+918F9193919491959196919791989199919C919D919E919F91A091A191A491A5
+91A691A791A891A991AB91AC91B091B191B291B391B691B791B891B991BB0000
+91BC91BD91BE91BF91C091C191C291C391C491C591C691C891CB91D091D291D3
+91D491D591D691D791D891D991DA91DB91DD91DE91DF91E091E191E291E391E4
+91E55E375E445E545E5B5E5E5E615C8C5C7A5C8D5C905C965C885C985C995C91
+5C9A5C9C5CB55CA25CBD5CAC5CAB5CB15CA35CC15CB75CC45CD25CE45CCB5CE5
+5D025D035D275D265D2E5D245D1E5D065D1B5D585D3E5D345D3D5D6C5D5B5D6F
+5D5D5D6B5D4B5D4A5D695D745D825D995D9D8C735DB75DC55F735F775F825F87
+5F895F8C5F955F995F9C5FA85FAD5FB55FBC88625F6172AD72B072B472B772B8
+72C372C172CE72CD72D272E872EF72E972F272F472F7730172F3730372FA0000
+E2
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+91E691E791E891E991EA91EB91EC91ED91EE91EF91F091F191F291F391F491F5
+91F691F791F891F991FA91FB91FC91FD91FE91FF920092019202920392049205
+9206920792089209920A920B920C920D920E920F921092119212921392149215
+9216921792189219921A921B921C921D921E921F922092219222922392240000
+92259226922792289229922A922B922C922D922E922F92309231923292339234
+92359236923792389239923A923B923C923D923E923F92409241924292439244
+924572FB731773137321730A731E731D7315732273397325732C733873317350
+734D73577360736C736F737E821B592598E7592459029963996799689969996A
+996B996C99749977997D998099849987998A998D999099919993999499955E80
+5E915E8B5E965EA55EA05EB95EB55EBE5EB38D535ED25ED15EDB5EE85EEA81BA
+5FC45FC95FD65FCF60035FEE60045FE15FE45FFE600560065FEA5FED5FF86019
+60356026601B600F600D6029602B600A603F602160786079607B607A60420000
+E3
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+9246924792489249924A924B924C924D924E924F925092519252925392549255
+9256925792589259925A925B925C925D925E925F926092619262926392649265
+9266926792689269926A926B926C926D926E926F927092719272927392759276
+927792789279927A927B927C927D927E927F9280928192829283928492850000
+9286928792889289928A928B928C928D928F9290929192929293929492959296
+929792989299929A929B929C929D929E929F92A092A192A292A392A492A592A6
+92A7606A607D6096609A60AD609D60836092608C609B60EC60BB60B160DD60D8
+60C660DA60B4612061266115612360F46100610E612B614A617561AC619461A7
+61B761D461F55FDD96B395E995EB95F195F395F595F695FC95FE960396049606
+9608960A960B960C960D960F96129615961696179619961A4E2C723F62156C35
+6C546C5C6C4A6CA36C856C906C946C8C6C686C696C746C766C866CA96CD06CD4
+6CAD6CF76CF86CF16CD76CB26CE06CD66CFA6CEB6CEE6CB16CD36CEF6CFE0000
+E4
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+92A892A992AA92AB92AC92AD92AF92B092B192B292B392B492B592B692B792B8
+92B992BA92BB92BC92BD92BE92BF92C092C192C292C392C492C592C692C792C9
+92CA92CB92CC92CD92CE92CF92D092D192D292D392D492D592D692D792D892D9
+92DA92DB92DC92DD92DE92DF92E092E192E292E392E492E592E692E792E80000
+92E992EA92EB92EC92ED92EE92EF92F092F192F292F392F492F592F692F792F8
+92F992FA92FB92FC92FD92FE92FF930093019302930393049305930693079308
+93096D396D276D0C6D436D486D076D046D196D0E6D2B6D4D6D2E6D356D1A6D4F
+6D526D546D336D916D6F6D9E6DA06D5E6D936D946D5C6D606D7C6D636E1A6DC7
+6DC56DDE6E0E6DBF6DE06E116DE66DDD6DD96E166DAB6E0C6DAE6E2B6E6E6E4E
+6E6B6EB26E5F6E866E536E546E326E256E446EDF6EB16E986EE06F2D6EE26EA5
+6EA76EBD6EBB6EB76ED76EB46ECF6E8F6EC26E9F6F626F466F476F246F156EF9
+6F2F6F366F4B6F746F2A6F096F296F896F8D6F8C6F786F726F7C6F7A6FD10000
+E5
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+930A930B930C930D930E930F9310931193129313931493159316931793189319
+931A931B931C931D931E931F9320932193229323932493259326932793289329
+932A932B932C932D932E932F9330933193329333933493359336933793389339
+933A933B933C933D933F93409341934293439344934593469347934893490000
+934A934B934C934D934E934F9350935193529353935493559356935793589359
+935A935B935C935D935E935F9360936193629363936493659366936793689369
+936B6FC96FA76FB96FB66FC26FE16FEE6FDE6FE06FEF701A7023701B70397035
+704F705E5B805B845B955B935BA55BB8752F9A9E64345BE45BEE89305BF08E47
+8B078FB68FD38FD58FE58FEE8FE48FE98FE68FF38FE890059004900B90269011
+900D9016902190359036902D902F9044905190529050906890589062905B66B9
+9074907D908290889083908B5F505F575F565F585C3B54AB5C505C595B715C63
+5C667FBC5F2A5F295F2D82745F3C9B3B5C6E59815983598D59A959AA59A30000
+E6
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+936C936D936E936F9370937193729373937493759376937793789379937A937B
+937C937D937E937F9380938193829383938493859386938793889389938A938B
+938C938D938E9390939193929393939493959396939793989399939A939B939C
+939D939E939F93A093A193A293A393A493A593A693A793A893A993AA93AB0000
+93AC93AD93AE93AF93B093B193B293B393B493B593B693B793B893B993BA93BB
+93BC93BD93BE93BF93C093C193C293C393C493C593C693C793C893C993CB93CC
+93CD599759CA59AB599E59A459D259B259AF59D759BE5A055A0659DD5A0859E3
+59D859F95A0C5A095A325A345A115A235A135A405A675A4A5A555A3C5A625A75
+80EC5AAA5A9B5A775A7A5ABE5AEB5AB25AD25AD45AB85AE05AE35AF15AD65AE6
+5AD85ADC5B095B175B165B325B375B405C155C1C5B5A5B655B735B515B535B62
+9A759A779A789A7A9A7F9A7D9A809A819A859A889A8A9A909A929A939A969A98
+9A9B9A9C9A9D9A9F9AA09AA29AA39AA59AA77E9F7EA17EA37EA57EA87EA90000
+E7
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+93CE93CF93D093D193D293D393D493D593D793D893D993DA93DB93DC93DD93DE
+93DF93E093E193E293E393E493E593E693E793E893E993EA93EB93EC93ED93EE
+93EF93F093F193F293F393F493F593F693F793F893F993FA93FB93FC93FD93FE
+93FF9400940194029403940494059406940794089409940A940B940C940D0000
+940E940F9410941194129413941494159416941794189419941A941B941C941D
+941E941F9420942194229423942494259426942794289429942A942B942C942D
+942E7EAD7EB07EBE7EC07EC17EC27EC97ECB7ECC7ED07ED47ED77EDB7EE07EE1
+7EE87EEB7EEE7EEF7EF17EF27F0D7EF67EFA7EFB7EFE7F017F027F037F077F08
+7F0B7F0C7F0F7F117F127F177F197F1C7F1B7F1F7F217F227F237F247F257F26
+7F277F2A7F2B7F2C7F2D7F2F7F307F317F327F337F355E7A757F5DDB753E9095
+738E739173AE73A2739F73CF73C273D173B773B373C073C973C873E573D9987C
+740A73E973E773DE73BA73F2740F742A745B7426742574287430742E742C0000
+E8
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+942F9430943194329433943494359436943794389439943A943B943C943D943F
+9440944194429443944494459446944794489449944A944B944C944D944E944F
+9450945194529453945494559456945794589459945A945B945C945D945E945F
+9460946194629463946494659466946794689469946A946C946D946E946F0000
+9470947194729473947494759476947794789479947A947B947C947D947E947F
+9480948194829483948494919496949894C794CF94D394D494DA94E694FB951C
+9520741B741A7441745C7457745574597477746D747E749C748E748074817487
+748B749E74A874A9749074A774D274BA97EA97EB97EC674C6753675E67486769
+67A56787676A6773679867A7677567A8679E67AD678B6777677C67F0680967D8
+680A67E967B0680C67D967B567DA67B367DD680067C367B867E2680E67C167FD
+6832683368606861684E6862684468646883681D68556866684168676840683E
+684A6849682968B5688F687468776893686B68C2696E68FC691F692068F90000
+E9
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+95279533953D95439548954B9555955A9560956E95749575957795789579957A
+957B957C957D957E9580958195829583958495859586958795889589958A958B
+958C958D958E958F9590959195929593959495959596959795989599959A959B
+959C959D959E959F95A095A195A295A395A495A595A695A795A895A995AA0000
+95AB95AC95AD95AE95AF95B095B195B295B395B495B595B695B795B895B995BA
+95BB95BC95BD95BE95BF95C095C195C295C395C495C595C695C795C895C995CA
+95CB692468F0690B6901695768E369106971693969606942695D6984696B6980
+69986978693469CC6987698869CE6989696669636979699B69A769BB69AB69AD
+69D469B169C169CA69DF699569E0698D69FF6A2F69ED6A176A186A6569F26A44
+6A3E6AA06A506A5B6A356A8E6A796A3D6A286A586A7C6A916A906AA96A976AAB
+733773526B816B826B876B846B926B936B8D6B9A6B9B6BA16BAA8F6B8F6D8F71
+8F728F738F758F768F788F778F798F7A8F7C8F7E8F818F828F848F878F8B0000
+EA
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+95CC95CD95CE95CF95D095D195D295D395D495D595D695D795D895D995DA95DB
+95DC95DD95DE95DF95E095E195E295E395E495E595E695E795EC95FF96079613
+9618961B961E96209623962496259626962796289629962B962C962D962F9630
+963796389639963A963E96419643964A964E964F965196529653965696570000
+96589659965A965C965D965E9660966396659666966B966D966E966F96709671
+967396789679967A967B967C967D967E967F9680968196829683968496879689
+968A8F8D8F8E8F8F8F988F9A8ECE620B6217621B621F6222622162256224622C
+81E774EF74F474FF750F75117513653465EE65EF65F0660A6619677266036615
+6600708566F7661D66346631663666358006665F66546641664F665666616657
+66776684668C66A7669D66BE66DB66DC66E666E98D328D338D368D3B8D3D8D40
+8D458D468D488D498D478D4D8D558D5989C789CA89CB89CC89CE89CF89D089D1
+726E729F725D7266726F727E727F7284728B728D728F72926308633263B00000
+EB
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+968C968E96919692969396959696969A969B969D969E969F96A096A196A296A3
+96A496A596A696A896A996AA96AB96AC96AD96AE96AF96B196B296B496B596B7
+96B896BA96BB96BF96C296C396C896CA96CB96D096D196D396D496D696D796D8
+96D996DA96DB96DC96DD96DE96DF96E196E296E396E496E596E696E796EB0000
+96EC96ED96EE96F096F196F296F496F596F896FA96FB96FC96FD96FF97029703
+9705970A970B970C97109711971297149715971797189719971A971B971D971F
+9720643F64D880046BEA6BF36BFD6BF56BF96C056C076C066C0D6C156C186C19
+6C1A6C216C296C246C2A6C3265356555656B724D72527256723086625216809F
+809C809380BC670A80BD80B180AB80AD80B480B780E780E880E980EA80DB80C2
+80C480D980CD80D7671080DD80EB80F180F480ED810D810E80F280FC67158112
+8C5A8136811E812C811881328148814C815381748159815A817181608169817C
+817D816D8167584D5AB58188818281916ED581A381AA81CC672681CA81BB0000
+EC
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+972197229723972497259726972797289729972B972C972E972F973197339734
+973597369737973A973B973C973D973F97409741974297439744974597469747
+97489749974A974B974C974D974E974F975097519754975597579758975A975C
+975D975F97639764976697679768976A976B976C976D976E976F977097710000
+97729775977797789779977A977B977D977E977F978097819782978397849786
+978797889789978A978C978E978F979097939795979697979799979A979B979C
+979D81C181A66B246B376B396B436B466B5998D198D298D398D598D998DA6BB3
+5F406BC289F365909F51659365BC65C665C465C365CC65CE65D265D67080709C
+7096709D70BB70C070B770AB70B170E870CA711071137116712F71317173715C
+716871457172714A7178717A719871B371B571A871A071E071D471E771F9721D
+7228706C7118716671B9623E623D624362486249793B794079467949795B795C
+7953795A796279577960796F7967797A7985798A799A79A779B35FD15FD00000
+ED
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+979E979F97A197A297A497A597A697A797A897A997AA97AC97AE97B097B197B3
+97B597B697B797B897B997BA97BB97BC97BD97BE97BF97C097C197C297C397C4
+97C597C697C797C897C997CA97CB97CC97CD97CE97CF97D097D197D297D397D4
+97D597D697D797D897D997DA97DB97DC97DD97DE97DF97E097E197E297E30000
+97E497E597E897EE97EF97F097F197F297F497F797F897F997FA97FB97FC97FD
+97FE97FF9800980198029803980498059806980798089809980A980B980C980D
+980E603C605D605A606760416059606360AB6106610D615D61A9619D61CB61D1
+62068080807F6C936CF66DFC77F677F87800780978177818781165AB782D781C
+781D7839783A783B781F783C7825782C78237829784E786D7856785778267850
+7847784C786A789B7893789A7887789C78A178A378B278B978A578D478D978C9
+78EC78F2790578F479137924791E79349F9B9EF99EFB9EFC76F17704770D76F9
+77077708771A77227719772D7726773577387750775177477743775A77680000
+EE
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+980F9810981198129813981498159816981798189819981A981B981C981D981E
+981F9820982198229823982498259826982798289829982A982B982C982D982E
+982F9830983198329833983498359836983798389839983A983B983C983D983E
+983F9840984198429843984498459846984798489849984A984B984C984D0000
+984E984F9850985198529853985498559856985798589859985A985B985C985D
+985E985F9860986198629863986498659866986798689869986A986B986C986D
+986E77627765777F778D777D7780778C7791779F77A077B077B577BD753A7540
+754E754B7548755B7572757975837F587F617F5F8A487F687F747F717F797F81
+7F7E76CD76E58832948594869487948B948A948C948D948F9490949494979495
+949A949B949C94A394A494AB94AA94AD94AC94AF94B094B294B494B694B794B8
+94B994BA94BC94BD94BF94C494C894C994CA94CB94CC94CD94CE94D094D194D2
+94D594D694D794D994D894DB94DE94DF94E094E294E494E594E794E894EA0000
+EF
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+986F98709871987298739874988B988E98929895989998A398A898A998AA98AB
+98AC98AD98AE98AF98B098B198B298B398B498B598B698B798B898B998BA98BB
+98BC98BD98BE98BF98C098C198C298C398C498C598C698C798C898C998CA98CB
+98CC98CD98CF98D098D498D698D798DB98DC98DD98E098E198E298E398E40000
+98E598E698E998EA98EB98EC98ED98EE98EF98F098F198F298F398F498F598F6
+98F798F898F998FA98FB98FC98FD98FE98FF9900990199029903990499059906
+990794E994EB94EE94EF94F394F494F594F794F994FC94FD94FF950395029506
+95079509950A950D950E950F951295139514951595169518951B951D951E951F
+9522952A952B9529952C953195329534953695379538953C953E953F95429535
+9544954595469549954C954E954F9552955395549556955795589559955B955E
+955F955D95619562956495659566956795689569956A956B956C956F95719572
+9573953A77E777EC96C979D579ED79E379EB7A065D477A037A027A1E7A140000
+F0
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+99089909990A990B990C990E990F991199129913991499159916991799189919
+991A991B991C991D991E991F9920992199229923992499259926992799289929
+992A992B992C992D992F9930993199329933993499359936993799389939993A
+993B993C993D993E993F99409941994299439944994599469947994899490000
+994A994B994C994D994E994F99509951995299539956995799589959995A995B
+995C995D995E995F99609961996299649966997399789979997B997E99829983
+99897A397A377A519ECF99A57A707688768E7693769976A474DE74E0752C9E20
+9E229E289E299E2A9E2B9E2C9E329E319E369E389E379E399E3A9E3E9E419E42
+9E449E469E479E489E499E4B9E4C9E4E9E519E559E579E5A9E5B9E5C9E5E9E63
+9E669E679E689E699E6A9E6B9E6C9E719E6D9E7375927594759675A0759D75AC
+75A375B375B475B875C475B175B075C375C275D675CD75E375E875E675E475EB
+75E7760375F175FC75FF761076007605760C7617760A76257618761576190000
+F1
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+998C998E999A999B999C999D999E999F99A099A199A299A399A499A699A799A9
+99AA99AB99AC99AD99AE99AF99B099B199B299B399B499B599B699B799B899B9
+99BA99BB99BC99BD99BE99BF99C099C199C299C399C499C599C699C799C899C9
+99CA99CB99CC99CD99CE99CF99D099D199D299D399D499D599D699D799D80000
+99D999DA99DB99DC99DD99DE99DF99E099E199E299E399E499E599E699E799E8
+99E999EA99EB99EC99ED99EE99EF99F099F199F299F399F499F599F699F799F8
+99F9761B763C762276207640762D7630763F76357643763E7633764D765E7654
+765C7656766B766F7FCA7AE67A787A797A807A867A887A957AA67AA07AAC7AA8
+7AAD7AB3886488698872887D887F888288A288C688B788BC88C988E288CE88E3
+88E588F1891A88FC88E888FE88F0892189198913891B890A8934892B89368941
+8966897B758B80E576B276B477DC801280148016801C80208022802580268027
+802980288031800B803580438046804D80528069807189839878988098830000
+F2
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+99FA99FB99FC99FD99FE99FF9A009A019A029A039A049A059A069A079A089A09
+9A0A9A0B9A0C9A0D9A0E9A0F9A109A119A129A139A149A159A169A179A189A19
+9A1A9A1B9A1C9A1D9A1E9A1F9A209A219A229A239A249A259A269A279A289A29
+9A2A9A2B9A2C9A2D9A2E9A2F9A309A319A329A339A349A359A369A379A380000
+9A399A3A9A3B9A3C9A3D9A3E9A3F9A409A419A429A439A449A459A469A479A48
+9A499A4A9A4B9A4C9A4D9A4E9A4F9A509A519A529A539A549A559A569A579A58
+9A599889988C988D988F9894989A989B989E989F98A198A298A598A6864D8654
+866C866E867F867A867C867B86A8868D868B86AC869D86A786A386AA869386A9
+86B686C486B586CE86B086BA86B186AF86C986CF86B486E986F186F286ED86F3
+86D0871386DE86F486DF86D886D18703870786F88708870A870D87098723873B
+871E8725872E871A873E87488734873187298737873F87828722877D877E877B
+87608770874C876E878B87538763877C876487598765879387AF87A887D20000
+F3
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+9A5A9A5B9A5C9A5D9A5E9A5F9A609A619A629A639A649A659A669A679A689A69
+9A6A9A6B9A729A839A899A8D9A8E9A949A959A999AA69AA99AAA9AAB9AAC9AAD
+9AAE9AAF9AB29AB39AB49AB59AB99ABB9ABD9ABE9ABF9AC39AC49AC69AC79AC8
+9AC99ACA9ACD9ACE9ACF9AD09AD29AD49AD59AD69AD79AD99ADA9ADB9ADC0000
+9ADD9ADE9AE09AE29AE39AE49AE59AE79AE89AE99AEA9AEC9AEE9AF09AF19AF2
+9AF39AF49AF59AF69AF79AF89AFA9AFC9AFD9AFE9AFF9B009B019B029B049B05
+9B0687C68788878587AD8797878387AB87E587AC87B587B387CB87D387BD87D1
+87C087CA87DB87EA87E087EE8816881387FE880A881B88218839883C7F367F42
+7F447F4582107AFA7AFD7B087B037B047B157B0A7B2B7B0F7B477B387B2A7B19
+7B2E7B317B207B257B247B337B3E7B1E7B587B5A7B457B757B4C7B5D7B607B6E
+7B7B7B627B727B717B907BA67BA77BB87BAC7B9D7BA87B857BAA7B9C7BA27BAB
+7BB47BD17BC17BCC7BDD7BDA7BE57BE67BEA7C0C7BFE7BFC7C0F7C167C0B0000
+F4
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+9B079B099B0A9B0B9B0C9B0D9B0E9B109B119B129B149B159B169B179B189B19
+9B1A9B1B9B1C9B1D9B1E9B209B219B229B249B259B269B279B289B299B2A9B2B
+9B2C9B2D9B2E9B309B319B339B349B359B369B379B389B399B3A9B3D9B3E9B3F
+9B409B469B4A9B4B9B4C9B4E9B509B529B539B559B569B579B589B599B5A0000
+9B5B9B5C9B5D9B5E9B5F9B609B619B629B639B649B659B669B679B689B699B6A
+9B6B9B6C9B6D9B6E9B6F9B709B719B729B739B749B759B769B779B789B799B7A
+9B7B7C1F7C2A7C267C387C417C4081FE82018202820481EC8844822182228223
+822D822F8228822B8238823B82338234823E82448249824B824F825A825F8268
+887E8885888888D888DF895E7F9D7F9F7FA77FAF7FB07FB27C7C65497C917C9D
+7C9C7C9E7CA27CB27CBC7CBD7CC17CC77CCC7CCD7CC87CC57CD77CE8826E66A8
+7FBF7FCE7FD57FE57FE17FE67FE97FEE7FF37CF87D777DA67DAE7E477E9B9EB8
+9EB48D738D848D948D918DB18D678D6D8C478C49914A9150914E914F91640000
+F5
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+9B7C9B7D9B7E9B7F9B809B819B829B839B849B859B869B879B889B899B8A9B8B
+9B8C9B8D9B8E9B8F9B909B919B929B939B949B959B969B979B989B999B9A9B9B
+9B9C9B9D9B9E9B9F9BA09BA19BA29BA39BA49BA59BA69BA79BA89BA99BAA9BAB
+9BAC9BAD9BAE9BAF9BB09BB19BB29BB39BB49BB59BB69BB79BB89BB99BBA0000
+9BBB9BBC9BBD9BBE9BBF9BC09BC19BC29BC39BC49BC59BC69BC79BC89BC99BCA
+9BCB9BCC9BCD9BCE9BCF9BD09BD19BD29BD39BD49BD59BD69BD79BD89BD99BDA
+9BDB9162916191709169916F917D917E917291749179918C91859190918D9191
+91A291A391AA91AD91AE91AF91B591B491BA8C559E7E8DB88DEB8E058E598E69
+8DB58DBF8DBC8DBA8DC48DD68DD78DDA8DDE8DCE8DCF8DDB8DC68DEC8DF78DF8
+8DE38DF98DFB8DE48E098DFD8E148E1D8E1F8E2C8E2E8E238E2F8E3A8E408E39
+8E358E3D8E318E498E418E428E518E528E4A8E708E768E7C8E6F8E748E858E8F
+8E948E908E9C8E9E8C788C828C8A8C858C988C94659B89D689DE89DA89DC0000
+F6
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+9BDC9BDD9BDE9BDF9BE09BE19BE29BE39BE49BE59BE69BE79BE89BE99BEA9BEB
+9BEC9BED9BEE9BEF9BF09BF19BF29BF39BF49BF59BF69BF79BF89BF99BFA9BFB
+9BFC9BFD9BFE9BFF9C009C019C029C039C049C059C069C079C089C099C0A9C0B
+9C0C9C0D9C0E9C0F9C109C119C129C139C149C159C169C179C189C199C1A0000
+9C1B9C1C9C1D9C1E9C1F9C209C219C229C239C249C259C269C279C289C299C2A
+9C2B9C2C9C2D9C2E9C2F9C309C319C329C339C349C359C369C379C389C399C3A
+9C3B89E589EB89EF8A3E8B26975396E996F396EF970697019708970F970E972A
+972D9730973E9F809F839F859F869F879F889F899F8A9F8C9EFE9F0B9F0D96B9
+96BC96BD96CE96D277BF96E0928E92AE92C8933E936A93CA938F943E946B9C7F
+9C829C859C869C879C887A239C8B9C8E9C909C919C929C949C959C9A9C9B9C9E
+9C9F9CA09CA19CA29CA39CA59CA69CA79CA89CA99CAB9CAD9CAE9CB09CB19CB2
+9CB39CB49CB59CB69CB79CBA9CBB9CBC9CBD9CC49CC59CC69CC79CCA9CCB0000
+F7
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+9C3C9C3D9C3E9C3F9C409C419C429C439C449C459C469C479C489C499C4A9C4B
+9C4C9C4D9C4E9C4F9C509C519C529C539C549C559C569C579C589C599C5A9C5B
+9C5C9C5D9C5E9C5F9C609C619C629C639C649C659C669C679C689C699C6A9C6B
+9C6C9C6D9C6E9C6F9C709C719C729C739C749C759C769C779C789C799C7A0000
+9C7B9C7D9C7E9C809C839C849C899C8A9C8C9C8F9C939C969C979C989C999C9D
+9CAA9CAC9CAF9CB99CBE9CBF9CC09CC19CC29CC89CC99CD19CD29CDA9CDB9CE0
+9CE19CCC9CCD9CCE9CCF9CD09CD39CD49CD59CD79CD89CD99CDC9CDD9CDF9CE2
+977C978597919792979497AF97AB97A397B297B49AB19AB09AB79E589AB69ABA
+9ABC9AC19AC09AC59AC29ACB9ACC9AD19B459B439B479B499B489B4D9B5198E8
+990D992E995599549ADF9AE19AE69AEF9AEB9AFB9AED9AF99B089B0F9B139B1F
+9B239EBD9EBE7E3B9E829E879E889E8B9E9293D69E9D9E9F9EDB9EDC9EDD9EE0
+9EDF9EE29EE99EE79EE59EEA9EEF9F229F2C9F2F9F399F379F3D9F3E9F440000
+F8
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+9CE39CE49CE59CE69CE79CE89CE99CEA9CEB9CEC9CED9CEE9CEF9CF09CF19CF2
+9CF39CF49CF59CF69CF79CF89CF99CFA9CFB9CFC9CFD9CFE9CFF9D009D019D02
+9D039D049D059D069D079D089D099D0A9D0B9D0C9D0D9D0E9D0F9D109D119D12
+9D139D149D159D169D179D189D199D1A9D1B9D1C9D1D9D1E9D1F9D209D210000
+9D229D239D249D259D269D279D289D299D2A9D2B9D2C9D2D9D2E9D2F9D309D31
+9D329D339D349D359D369D379D389D399D3A9D3B9D3C9D3D9D3E9D3F9D409D41
+9D42000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+F9
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+9D439D449D459D469D479D489D499D4A9D4B9D4C9D4D9D4E9D4F9D509D519D52
+9D539D549D559D569D579D589D599D5A9D5B9D5C9D5D9D5E9D5F9D609D619D62
+9D639D649D659D669D679D689D699D6A9D6B9D6C9D6D9D6E9D6F9D709D719D72
+9D739D749D759D769D779D789D799D7A9D7B9D7C9D7D9D7E9D7F9D809D810000
+9D829D839D849D859D869D879D889D899D8A9D8B9D8C9D8D9D8E9D8F9D909D91
+9D929D939D949D959D969D979D989D999D9A9D9B9D9C9D9D9D9E9D9F9DA09DA1
+9DA2000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+FA
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+9DA39DA49DA59DA69DA79DA89DA99DAA9DAB9DAC9DAD9DAE9DAF9DB09DB19DB2
+9DB39DB49DB59DB69DB79DB89DB99DBA9DBB9DBC9DBD9DBE9DBF9DC09DC19DC2
+9DC39DC49DC59DC69DC79DC89DC99DCA9DCB9DCC9DCD9DCE9DCF9DD09DD19DD2
+9DD39DD49DD59DD69DD79DD89DD99DDA9DDB9DDC9DDD9DDE9DDF9DE09DE10000
+9DE29DE39DE49DE59DE69DE79DE89DE99DEA9DEB9DEC9DED9DEE9DEF9DF09DF1
+9DF29DF39DF49DF59DF69DF79DF89DF99DFA9DFB9DFC9DFD9DFE9DFF9E009E01
+9E02000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+FB
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+9E039E049E059E069E079E089E099E0A9E0B9E0C9E0D9E0E9E0F9E109E119E12
+9E139E149E159E169E179E189E199E1A9E1B9E1C9E1D9E1E9E249E279E2E9E30
+9E349E3B9E3C9E409E4D9E509E529E539E549E569E599E5D9E5F9E609E619E62
+9E659E6E9E6F9E729E749E759E769E779E789E799E7A9E7B9E7C9E7D9E800000
+9E819E839E849E859E869E899E8A9E8C9E8D9E8E9E8F9E909E919E949E959E96
+9E979E989E999E9A9E9B9E9C9E9E9EA09EA19EA29EA39EA49EA59EA79EA89EA9
+9EAA000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+FC
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+9EAB9EAC9EAD9EAE9EAF9EB09EB19EB29EB39EB59EB69EB79EB99EBA9EBC9EBF
+9EC09EC19EC29EC39EC59EC69EC79EC89ECA9ECB9ECC9ED09ED29ED39ED59ED6
+9ED79ED99EDA9EDE9EE19EE39EE49EE69EE89EEB9EEC9EED9EEE9EF09EF19EF2
+9EF39EF49EF59EF69EF79EF89EFA9EFD9EFF9F009F019F029F039F049F050000
+9F069F079F089F099F0A9F0C9F0F9F119F129F149F159F169F189F1A9F1B9F1C
+9F1D9F1E9F1F9F219F239F249F259F269F279F289F299F2A9F2B9F2D9F2E9F30
+9F31000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+FD
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+9F329F339F349F359F369F389F3A9F3C9F3F9F409F419F429F439F459F469F47
+9F489F499F4A9F4B9F4C9F4D9F4E9F4F9F529F539F549F559F569F579F589F59
+9F5A9F5B9F5C9F5D9F5E9F5F9F609F619F629F639F649F659F669F679F689F69
+9F6A9F6B9F6C9F6D9F6E9F6F9F709F719F729F739F749F759F769F779F780000
+9F799F7A9F7B9F7C9F7D9F7E9F819F829F8D9F8E9F8F9F909F919F929F939F94
+9F959F969F979F989F9C9F9D9F9E9FA19FA29FA39FA49FA5F92CF979F995F9E7
+F9F1000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+FE
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+FA0CFA0DFA0EFA0FFA11FA13FA14FA18FA1FFA20FA21FA23FA24FA27FA28FA29
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000


Property changes on: trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp936.enc
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp949.enc
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp949.enc	                        (rev 0)
+++ trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp949.enc	2020-03-17 20:46:21 UTC (rev 54375)
@@ -0,0 +1,2128 @@
+# Encoding file: cp949, multi-byte
+M
+003F 0 125
+00
+0000000100020003000400050006000700080009000A000B000C000D000E000F
+0010001100120013001400150016001700180019001A001B001C001D001E001F
+0020002100220023002400250026002700280029002A002B002C002D002E002F
+0030003100320033003400350036003700380039003A003B003C003D003E003F
+0040004100420043004400450046004700480049004A004B004C004D004E004F
+0050005100520053005400550056005700580059005A005B005C005D005E005F
+0060006100620063006400650066006700680069006A006B006C006D006E006F
+0070007100720073007400750076007700780079007A007B007C007D007E007F
+0080000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+81
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000AC02AC03AC05AC06AC0BAC0CAC0DAC0EAC0FAC18AC1EAC1FAC21AC22AC23
+AC25AC26AC27AC28AC29AC2AAC2BAC2EAC32AC33AC3400000000000000000000
+0000AC35AC36AC37AC3AAC3BAC3DAC3EAC3FAC41AC42AC43AC44AC45AC46AC47
+AC48AC49AC4AAC4CAC4EAC4FAC50AC51AC52AC53AC5500000000000000000000
+0000AC56AC57AC59AC5AAC5BAC5DAC5EAC5FAC60AC61AC62AC63AC64AC65AC66
+AC67AC68AC69AC6AAC6BAC6CAC6DAC6EAC6FAC72AC73AC75AC76AC79AC7BAC7C
+AC7DAC7EAC7FAC82AC87AC88AC8DAC8EAC8FAC91AC92AC93AC95AC96AC97AC98
+AC99AC9AAC9BAC9EACA2ACA3ACA4ACA5ACA6ACA7ACABACADACAEACB1ACB2ACB3
+ACB4ACB5ACB6ACB7ACBAACBEACBFACC0ACC2ACC3ACC5ACC6ACC7ACC9ACCAACCB
+ACCDACCEACCFACD0ACD1ACD2ACD3ACD4ACD6ACD8ACD9ACDAACDBACDCACDDACDE
+ACDFACE2ACE3ACE5ACE6ACE9ACEBACEDACEEACF2ACF4ACF7ACF8ACF9ACFAACFB
+ACFEACFFAD01AD02AD03AD05AD07AD08AD09AD0AAD0BAD0EAD10AD12AD130000
+82
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000AD14AD15AD16AD17AD19AD1AAD1BAD1DAD1EAD1FAD21AD22AD23AD24AD25
+AD26AD27AD28AD2AAD2BAD2EAD2FAD30AD31AD32AD3300000000000000000000
+0000AD36AD37AD39AD3AAD3BAD3DAD3EAD3FAD40AD41AD42AD43AD46AD48AD4A
+AD4BAD4CAD4DAD4EAD4FAD51AD52AD53AD55AD56AD5700000000000000000000
+0000AD59AD5AAD5BAD5CAD5DAD5EAD5FAD60AD62AD64AD65AD66AD67AD68AD69
+AD6AAD6BAD6EAD6FAD71AD72AD77AD78AD79AD7AAD7EAD80AD83AD84AD85AD86
+AD87AD8AAD8BAD8DAD8EAD8FAD91AD92AD93AD94AD95AD96AD97AD98AD99AD9A
+AD9BAD9EAD9FADA0ADA1ADA2ADA3ADA5ADA6ADA7ADA8ADA9ADAAADABADACADAD
+ADAEADAFADB0ADB1ADB2ADB3ADB4ADB5ADB6ADB8ADB9ADBAADBBADBCADBDADBE
+ADBFADC2ADC3ADC5ADC6ADC7ADC9ADCAADCBADCCADCDADCEADCFADD2ADD4ADD5
+ADD6ADD7ADD8ADD9ADDAADDBADDDADDEADDFADE1ADE2ADE3ADE5ADE6ADE7ADE8
+ADE9ADEAADEBADECADEDADEEADEFADF0ADF1ADF2ADF3ADF4ADF5ADF6ADF70000
+83
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000ADFAADFBADFDADFEAE02AE03AE04AE05AE06AE07AE0AAE0CAE0EAE0FAE10
+AE11AE12AE13AE15AE16AE17AE18AE19AE1AAE1BAE1C00000000000000000000
+0000AE1DAE1EAE1FAE20AE21AE22AE23AE24AE25AE26AE27AE28AE29AE2AAE2B
+AE2CAE2DAE2EAE2FAE32AE33AE35AE36AE39AE3BAE3C00000000000000000000
+0000AE3DAE3EAE3FAE42AE44AE47AE48AE49AE4BAE4FAE51AE52AE53AE55AE57
+AE58AE59AE5AAE5BAE5EAE62AE63AE64AE66AE67AE6AAE6BAE6DAE6EAE6FAE71
+AE72AE73AE74AE75AE76AE77AE7AAE7EAE7FAE80AE81AE82AE83AE86AE87AE88
+AE89AE8AAE8BAE8DAE8EAE8FAE90AE91AE92AE93AE94AE95AE96AE97AE98AE99
+AE9AAE9BAE9CAE9DAE9EAE9FAEA0AEA1AEA2AEA3AEA4AEA5AEA6AEA7AEA8AEA9
+AEAAAEABAEACAEADAEAEAEAFAEB0AEB1AEB2AEB3AEB4AEB5AEB6AEB7AEB8AEB9
+AEBAAEBBAEBFAEC1AEC2AEC3AEC5AEC6AEC7AEC8AEC9AECAAECBAECEAED2AED3
+AED4AED5AED6AED7AEDAAEDBAEDDAEDEAEDFAEE0AEE1AEE2AEE3AEE4AEE50000
+84
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000AEE6AEE7AEE9AEEAAEECAEEEAEEFAEF0AEF1AEF2AEF3AEF5AEF6AEF7AEF9
+AEFAAEFBAEFDAEFEAEFFAF00AF01AF02AF03AF04AF0500000000000000000000
+0000AF06AF09AF0AAF0BAF0CAF0EAF0FAF11AF12AF13AF14AF15AF16AF17AF18
+AF19AF1AAF1BAF1CAF1DAF1EAF1FAF20AF21AF22AF2300000000000000000000
+0000AF24AF25AF26AF27AF28AF29AF2AAF2BAF2EAF2FAF31AF33AF35AF36AF37
+AF38AF39AF3AAF3BAF3EAF40AF44AF45AF46AF47AF4AAF4BAF4CAF4DAF4EAF4F
+AF51AF52AF53AF54AF55AF56AF57AF58AF59AF5AAF5BAF5EAF5FAF60AF61AF62
+AF63AF66AF67AF68AF69AF6AAF6BAF6CAF6DAF6EAF6FAF70AF71AF72AF73AF74
+AF75AF76AF77AF78AF7AAF7BAF7CAF7DAF7EAF7FAF81AF82AF83AF85AF86AF87
+AF89AF8AAF8BAF8CAF8DAF8EAF8FAF92AF93AF94AF96AF97AF98AF99AF9AAF9B
+AF9DAF9EAF9FAFA0AFA1AFA2AFA3AFA4AFA5AFA6AFA7AFA8AFA9AFAAAFABAFAC
+AFADAFAEAFAFAFB0AFB1AFB2AFB3AFB4AFB5AFB6AFB7AFBAAFBBAFBDAFBE0000
+85
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000AFBFAFC1AFC2AFC3AFC4AFC5AFC6AFCAAFCCAFCFAFD0AFD1AFD2AFD3AFD5
+AFD6AFD7AFD8AFD9AFDAAFDBAFDDAFDEAFDFAFE0AFE100000000000000000000
+0000AFE2AFE3AFE4AFE5AFE6AFE7AFEAAFEBAFECAFEDAFEEAFEFAFF2AFF3AFF5
+AFF6AFF7AFF9AFFAAFFBAFFCAFFDAFFEAFFFB002B00300000000000000000000
+0000B005B006B007B008B009B00AB00BB00DB00EB00FB011B012B013B015B016
+B017B018B019B01AB01BB01EB01FB020B021B022B023B024B025B026B027B029
+B02AB02BB02CB02DB02EB02FB030B031B032B033B034B035B036B037B038B039
+B03AB03BB03CB03DB03EB03FB040B041B042B043B046B047B049B04BB04DB04F
+B050B051B052B056B058B05AB05BB05CB05EB05FB060B061B062B063B064B065
+B066B067B068B069B06AB06BB06CB06DB06EB06FB070B071B072B073B074B075
+B076B077B078B079B07AB07BB07EB07FB081B082B083B085B086B087B088B089
+B08AB08BB08EB090B092B093B094B095B096B097B09BB09DB09EB0A3B0A40000
+86
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000B0A5B0A6B0A7B0AAB0B0B0B2B0B6B0B7B0B9B0BAB0BBB0BDB0BEB0BFB0C0
+B0C1B0C2B0C3B0C6B0CAB0CBB0CCB0CDB0CEB0CFB0D200000000000000000000
+0000B0D3B0D5B0D6B0D7B0D9B0DAB0DBB0DCB0DDB0DEB0DFB0E1B0E2B0E3B0E4
+B0E6B0E7B0E8B0E9B0EAB0EBB0ECB0EDB0EEB0EFB0F000000000000000000000
+0000B0F1B0F2B0F3B0F4B0F5B0F6B0F7B0F8B0F9B0FAB0FBB0FCB0FDB0FEB0FF
+B100B101B102B103B104B105B106B107B10AB10DB10EB10FB111B114B115B116
+B117B11AB11EB11FB120B121B122B126B127B129B12AB12BB12DB12EB12FB130
+B131B132B133B136B13AB13BB13CB13DB13EB13FB142B143B145B146B147B149
+B14AB14BB14CB14DB14EB14FB152B153B156B157B159B15AB15BB15DB15EB15F
+B161B162B163B164B165B166B167B168B169B16AB16BB16CB16DB16EB16FB170
+B171B172B173B174B175B176B177B17AB17BB17DB17EB17FB181B183B184B185
+B186B187B18AB18CB18EB18FB190B191B195B196B197B199B19AB19BB19D0000
+87
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000B19EB19FB1A0B1A1B1A2B1A3B1A4B1A5B1A6B1A7B1A9B1AAB1ABB1ACB1AD
+B1AEB1AFB1B0B1B1B1B2B1B3B1B4B1B5B1B6B1B7B1B800000000000000000000
+0000B1B9B1BAB1BBB1BCB1BDB1BEB1BFB1C0B1C1B1C2B1C3B1C4B1C5B1C6B1C7
+B1C8B1C9B1CAB1CBB1CDB1CEB1CFB1D1B1D2B1D3B1D500000000000000000000
+0000B1D6B1D7B1D8B1D9B1DAB1DBB1DEB1E0B1E1B1E2B1E3B1E4B1E5B1E6B1E7
+B1EAB1EBB1EDB1EEB1EFB1F1B1F2B1F3B1F4B1F5B1F6B1F7B1F8B1FAB1FCB1FE
+B1FFB200B201B202B203B206B207B209B20AB20DB20EB20FB210B211B212B213
+B216B218B21AB21BB21CB21DB21EB21FB221B222B223B224B225B226B227B228
+B229B22AB22BB22CB22DB22EB22FB230B231B232B233B235B236B237B238B239
+B23AB23BB23DB23EB23FB240B241B242B243B244B245B246B247B248B249B24A
+B24BB24CB24DB24EB24FB250B251B252B253B254B255B256B257B259B25AB25B
+B25DB25EB25FB261B262B263B264B265B266B267B26AB26BB26CB26DB26E0000
+88
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000B26FB270B271B272B273B276B277B278B279B27AB27BB27DB27EB27FB280
+B281B282B283B286B287B288B28AB28BB28CB28DB28E00000000000000000000
+0000B28FB292B293B295B296B297B29BB29CB29DB29EB29FB2A2B2A4B2A7B2A8
+B2A9B2ABB2ADB2AEB2AFB2B1B2B2B2B3B2B5B2B6B2B700000000000000000000
+0000B2B8B2B9B2BAB2BBB2BCB2BDB2BEB2BFB2C0B2C1B2C2B2C3B2C4B2C5B2C6
+B2C7B2CAB2CBB2CDB2CEB2CFB2D1B2D3B2D4B2D5B2D6B2D7B2DAB2DCB2DEB2DF
+B2E0B2E1B2E3B2E7B2E9B2EAB2F0B2F1B2F2B2F6B2FCB2FDB2FEB302B303B305
+B306B307B309B30AB30BB30CB30DB30EB30FB312B316B317B318B319B31AB31B
+B31DB31EB31FB320B321B322B323B324B325B326B327B328B329B32AB32BB32C
+B32DB32EB32FB330B331B332B333B334B335B336B337B338B339B33AB33BB33C
+B33DB33EB33FB340B341B342B343B344B345B346B347B348B349B34AB34BB34C
+B34DB34EB34FB350B351B352B353B357B359B35AB35DB360B361B362B3630000
+89
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000B366B368B36AB36CB36DB36FB372B373B375B376B377B379B37AB37BB37C
+B37DB37EB37FB382B386B387B388B389B38AB38BB38D00000000000000000000
+0000B38EB38FB391B392B393B395B396B397B398B399B39AB39BB39CB39DB39E
+B39FB3A2B3A3B3A4B3A5B3A6B3A7B3A9B3AAB3ABB3AD00000000000000000000
+0000B3AEB3AFB3B0B3B1B3B2B3B3B3B4B3B5B3B6B3B7B3B8B3B9B3BAB3BBB3BC
+B3BDB3BEB3BFB3C0B3C1B3C2B3C3B3C6B3C7B3C9B3CAB3CDB3CFB3D1B3D2B3D3
+B3D6B3D8B3DAB3DCB3DEB3DFB3E1B3E2B3E3B3E5B3E6B3E7B3E9B3EAB3EBB3EC
+B3EDB3EEB3EFB3F0B3F1B3F2B3F3B3F4B3F5B3F6B3F7B3F8B3F9B3FAB3FBB3FD
+B3FEB3FFB400B401B402B403B404B405B406B407B408B409B40AB40BB40CB40D
+B40EB40FB411B412B413B414B415B416B417B419B41AB41BB41DB41EB41FB421
+B422B423B424B425B426B427B42AB42CB42DB42EB42FB430B431B432B433B435
+B436B437B438B439B43AB43BB43CB43DB43EB43FB440B441B442B443B4440000
+8A
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000B445B446B447B448B449B44AB44BB44CB44DB44EB44FB452B453B455B456
+B457B459B45AB45BB45CB45DB45EB45FB462B464B46600000000000000000000
+0000B467B468B469B46AB46BB46DB46EB46FB470B471B472B473B474B475B476
+B477B478B479B47AB47BB47CB47DB47EB47FB481B48200000000000000000000
+0000B483B484B485B486B487B489B48AB48BB48CB48DB48EB48FB490B491B492
+B493B494B495B496B497B498B499B49AB49BB49CB49EB49FB4A0B4A1B4A2B4A3
+B4A5B4A6B4A7B4A9B4AAB4ABB4ADB4AEB4AFB4B0B4B1B4B2B4B3B4B4B4B6B4B8
+B4BAB4BBB4BCB4BDB4BEB4BFB4C1B4C2B4C3B4C5B4C6B4C7B4C9B4CAB4CBB4CC
+B4CDB4CEB4CFB4D1B4D2B4D3B4D4B4D6B4D7B4D8B4D9B4DAB4DBB4DEB4DFB4E1
+B4E2B4E5B4E7B4E8B4E9B4EAB4EBB4EEB4F0B4F2B4F3B4F4B4F5B4F6B4F7B4F9
+B4FAB4FBB4FCB4FDB4FEB4FFB500B501B502B503B504B505B506B507B508B509
+B50AB50BB50CB50DB50EB50FB510B511B512B513B516B517B519B51AB51D0000
+8B
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000B51EB51FB520B521B522B523B526B52BB52CB52DB52EB52FB532B533B535
+B536B537B539B53AB53BB53CB53DB53EB53FB542B54600000000000000000000
+0000B547B548B549B54AB54EB54FB551B552B553B555B556B557B558B559B55A
+B55BB55EB562B563B564B565B566B567B568B569B56A00000000000000000000
+0000B56BB56CB56DB56EB56FB570B571B572B573B574B575B576B577B578B579
+B57AB57BB57CB57DB57EB57FB580B581B582B583B584B585B586B587B588B589
+B58AB58BB58CB58DB58EB58FB590B591B592B593B594B595B596B597B598B599
+B59AB59BB59CB59DB59EB59FB5A2B5A3B5A5B5A6B5A7B5A9B5ACB5ADB5AEB5AF
+B5B2B5B6B5B7B5B8B5B9B5BAB5BEB5BFB5C1B5C2B5C3B5C5B5C6B5C7B5C8B5C9
+B5CAB5CBB5CEB5D2B5D3B5D4B5D5B5D6B5D7B5D9B5DAB5DBB5DCB5DDB5DEB5DF
+B5E0B5E1B5E2B5E3B5E4B5E5B5E6B5E7B5E8B5E9B5EAB5EBB5EDB5EEB5EFB5F0
+B5F1B5F2B5F3B5F4B5F5B5F6B5F7B5F8B5F9B5FAB5FBB5FCB5FDB5FEB5FF0000
+8C
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000B600B601B602B603B604B605B606B607B608B609B60AB60BB60CB60DB60E
+B60FB612B613B615B616B617B619B61AB61BB61CB61D00000000000000000000
+0000B61EB61FB620B621B622B623B624B626B627B628B629B62AB62BB62DB62E
+B62FB630B631B632B633B635B636B637B638B639B63A00000000000000000000
+0000B63BB63CB63DB63EB63FB640B641B642B643B644B645B646B647B649B64A
+B64BB64CB64DB64EB64FB650B651B652B653B654B655B656B657B658B659B65A
+B65BB65CB65DB65EB65FB660B661B662B663B665B666B667B669B66AB66BB66C
+B66DB66EB66FB670B671B672B673B674B675B676B677B678B679B67AB67BB67C
+B67DB67EB67FB680B681B682B683B684B685B686B687B688B689B68AB68BB68C
+B68DB68EB68FB690B691B692B693B694B695B696B697B698B699B69AB69BB69E
+B69FB6A1B6A2B6A3B6A5B6A6B6A7B6A8B6A9B6AAB6ADB6AEB6AFB6B0B6B2B6B3
+B6B4B6B5B6B6B6B7B6B8B6B9B6BAB6BBB6BCB6BDB6BEB6BFB6C0B6C1B6C20000
+8D
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000B6C3B6C4B6C5B6C6B6C7B6C8B6C9B6CAB6CBB6CCB6CDB6CEB6CFB6D0B6D1
+B6D2B6D3B6D5B6D6B6D7B6D8B6D9B6DAB6DBB6DCB6DD00000000000000000000
+0000B6DEB6DFB6E0B6E1B6E2B6E3B6E4B6E5B6E6B6E7B6E8B6E9B6EAB6EBB6EC
+B6EDB6EEB6EFB6F1B6F2B6F3B6F5B6F6B6F7B6F9B6FA00000000000000000000
+0000B6FBB6FCB6FDB6FEB6FFB702B703B704B706B707B708B709B70AB70BB70C
+B70DB70EB70FB710B711B712B713B714B715B716B717B718B719B71AB71BB71C
+B71DB71EB71FB720B721B722B723B724B725B726B727B72AB72BB72DB72EB731
+B732B733B734B735B736B737B73AB73CB73DB73EB73FB740B741B742B743B745
+B746B747B749B74AB74BB74DB74EB74FB750B751B752B753B756B757B758B759
+B75AB75BB75CB75DB75EB75FB761B762B763B765B766B767B769B76AB76BB76C
+B76DB76EB76FB772B774B776B777B778B779B77AB77BB77EB77FB781B782B783
+B785B786B787B788B789B78AB78BB78EB793B794B795B79AB79BB79DB79E0000
+8E
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000B79FB7A1B7A2B7A3B7A4B7A5B7A6B7A7B7AAB7AEB7AFB7B0B7B1B7B2B7B3
+B7B6B7B7B7B9B7BAB7BBB7BCB7BDB7BEB7BFB7C0B7C100000000000000000000
+0000B7C2B7C3B7C4B7C5B7C6B7C8B7CAB7CBB7CCB7CDB7CEB7CFB7D0B7D1B7D2
+B7D3B7D4B7D5B7D6B7D7B7D8B7D9B7DAB7DBB7DCB7DD00000000000000000000
+0000B7DEB7DFB7E0B7E1B7E2B7E3B7E4B7E5B7E6B7E7B7E8B7E9B7EAB7EBB7EE
+B7EFB7F1B7F2B7F3B7F5B7F6B7F7B7F8B7F9B7FAB7FBB7FEB802B803B804B805
+B806B80AB80BB80DB80EB80FB811B812B813B814B815B816B817B81AB81CB81E
+B81FB820B821B822B823B826B827B829B82AB82BB82DB82EB82FB830B831B832
+B833B836B83AB83BB83CB83DB83EB83FB841B842B843B845B846B847B848B849
+B84AB84BB84CB84DB84EB84FB850B852B854B855B856B857B858B859B85AB85B
+B85EB85FB861B862B863B865B866B867B868B869B86AB86BB86EB870B872B873
+B874B875B876B877B879B87AB87BB87DB87EB87FB880B881B882B883B8840000
+8F
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000B885B886B887B888B889B88AB88BB88CB88EB88FB890B891B892B893B894
+B895B896B897B898B899B89AB89BB89CB89DB89EB89F00000000000000000000
+0000B8A0B8A1B8A2B8A3B8A4B8A5B8A6B8A7B8A9B8AAB8ABB8ACB8ADB8AEB8AF
+B8B1B8B2B8B3B8B5B8B6B8B7B8B9B8BAB8BBB8BCB8BD00000000000000000000
+0000B8BEB8BFB8C2B8C4B8C6B8C7B8C8B8C9B8CAB8CBB8CDB8CEB8CFB8D1B8D2
+B8D3B8D5B8D6B8D7B8D8B8D9B8DAB8DBB8DCB8DEB8E0B8E2B8E3B8E4B8E5B8E6
+B8E7B8EAB8EBB8EDB8EEB8EFB8F1B8F2B8F3B8F4B8F5B8F6B8F7B8FAB8FCB8FE
+B8FFB900B901B902B903B905B906B907B908B909B90AB90BB90CB90DB90EB90F
+B910B911B912B913B914B915B916B917B919B91AB91BB91CB91DB91EB91FB921
+B922B923B924B925B926B927B928B929B92AB92BB92CB92DB92EB92FB930B931
+B932B933B934B935B936B937B938B939B93AB93BB93EB93FB941B942B943B945
+B946B947B948B949B94AB94BB94DB94EB950B952B953B954B955B956B9570000
+90
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000B95AB95BB95DB95EB95FB961B962B963B964B965B966B967B96AB96CB96E
+B96FB970B971B972B973B976B977B979B97AB97BB97D00000000000000000000
+0000B97EB97FB980B981B982B983B986B988B98BB98CB98FB990B991B992B993
+B994B995B996B997B998B999B99AB99BB99CB99DB99E00000000000000000000
+0000B99FB9A0B9A1B9A2B9A3B9A4B9A5B9A6B9A7B9A8B9A9B9AAB9ABB9AEB9AF
+B9B1B9B2B9B3B9B5B9B6B9B7B9B8B9B9B9BAB9BBB9BEB9C0B9C2B9C3B9C4B9C5
+B9C6B9C7B9CAB9CBB9CDB9D3B9D4B9D5B9D6B9D7B9DAB9DCB9DFB9E0B9E2B9E6
+B9E7B9E9B9EAB9EBB9EDB9EEB9EFB9F0B9F1B9F2B9F3B9F6B9FBB9FCB9FDB9FE
+B9FFBA02BA03BA04BA05BA06BA07BA09BA0ABA0BBA0CBA0DBA0EBA0FBA10BA11
+BA12BA13BA14BA16BA17BA18BA19BA1ABA1BBA1CBA1DBA1EBA1FBA20BA21BA22
+BA23BA24BA25BA26BA27BA28BA29BA2ABA2BBA2CBA2DBA2EBA2FBA30BA31BA32
+BA33BA34BA35BA36BA37BA3ABA3BBA3DBA3EBA3FBA41BA43BA44BA45BA460000
+91
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000BA47BA4ABA4CBA4FBA50BA51BA52BA56BA57BA59BA5ABA5BBA5DBA5EBA5F
+BA60BA61BA62BA63BA66BA6ABA6BBA6CBA6DBA6EBA6F00000000000000000000
+0000BA72BA73BA75BA76BA77BA79BA7ABA7BBA7CBA7DBA7EBA7FBA80BA81BA82
+BA86BA88BA89BA8ABA8BBA8DBA8EBA8FBA90BA91BA9200000000000000000000
+0000BA93BA94BA95BA96BA97BA98BA99BA9ABA9BBA9CBA9DBA9EBA9FBAA0BAA1
+BAA2BAA3BAA4BAA5BAA6BAA7BAAABAADBAAEBAAFBAB1BAB3BAB4BAB5BAB6BAB7
+BABABABCBABEBABFBAC0BAC1BAC2BAC3BAC5BAC6BAC7BAC9BACABACBBACCBACD
+BACEBACFBAD0BAD1BAD2BAD3BAD4BAD5BAD6BAD7BADABADBBADCBADDBADEBADF
+BAE0BAE1BAE2BAE3BAE4BAE5BAE6BAE7BAE8BAE9BAEABAEBBAECBAEDBAEEBAEF
+BAF0BAF1BAF2BAF3BAF4BAF5BAF6BAF7BAF8BAF9BAFABAFBBAFDBAFEBAFFBB01
+BB02BB03BB05BB06BB07BB08BB09BB0ABB0BBB0CBB0EBB10BB12BB13BB14BB15
+BB16BB17BB19BB1ABB1BBB1DBB1EBB1FBB21BB22BB23BB24BB25BB26BB270000
+92
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000BB28BB2ABB2CBB2DBB2EBB2FBB30BB31BB32BB33BB37BB39BB3ABB3FBB40
+BB41BB42BB43BB46BB48BB4ABB4BBB4CBB4EBB51BB5200000000000000000000
+0000BB53BB55BB56BB57BB59BB5ABB5BBB5CBB5DBB5EBB5FBB60BB62BB64BB65
+BB66BB67BB68BB69BB6ABB6BBB6DBB6EBB6FBB70BB7100000000000000000000
+0000BB72BB73BB74BB75BB76BB77BB78BB79BB7ABB7BBB7CBB7DBB7EBB7FBB80
+BB81BB82BB83BB84BB85BB86BB87BB89BB8ABB8BBB8DBB8EBB8FBB91BB92BB93
+BB94BB95BB96BB97BB98BB99BB9ABB9BBB9CBB9DBB9EBB9FBBA0BBA1BBA2BBA3
+BBA5BBA6BBA7BBA9BBAABBABBBADBBAEBBAFBBB0BBB1BBB2BBB3BBB5BBB6BBB8
+BBB9BBBABBBBBBBCBBBDBBBEBBBFBBC1BBC2BBC3BBC5BBC6BBC7BBC9BBCABBCB
+BBCCBBCDBBCEBBCFBBD1BBD2BBD4BBD5BBD6BBD7BBD8BBD9BBDABBDBBBDCBBDD
+BBDEBBDFBBE0BBE1BBE2BBE3BBE4BBE5BBE6BBE7BBE8BBE9BBEABBEBBBECBBED
+BBEEBBEFBBF0BBF1BBF2BBF3BBF4BBF5BBF6BBF7BBFABBFBBBFDBBFEBC010000
+93
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000BC03BC04BC05BC06BC07BC0ABC0EBC10BC12BC13BC19BC1ABC20BC21BC22
+BC23BC26BC28BC2ABC2BBC2CBC2EBC2FBC32BC33BC3500000000000000000000
+0000BC36BC37BC39BC3ABC3BBC3CBC3DBC3EBC3FBC42BC46BC47BC48BC4ABC4B
+BC4EBC4FBC51BC52BC53BC54BC55BC56BC57BC58BC5900000000000000000000
+0000BC5ABC5BBC5CBC5EBC5FBC60BC61BC62BC63BC64BC65BC66BC67BC68BC69
+BC6ABC6BBC6CBC6DBC6EBC6FBC70BC71BC72BC73BC74BC75BC76BC77BC78BC79
+BC7ABC7BBC7CBC7DBC7EBC7FBC80BC81BC82BC83BC86BC87BC89BC8ABC8DBC8F
+BC90BC91BC92BC93BC96BC98BC9BBC9CBC9DBC9EBC9FBCA2BCA3BCA5BCA6BCA9
+BCAABCABBCACBCADBCAEBCAFBCB2BCB6BCB7BCB8BCB9BCBABCBBBCBEBCBFBCC1
+BCC2BCC3BCC5BCC6BCC7BCC8BCC9BCCABCCBBCCCBCCEBCD2BCD3BCD4BCD6BCD7
+BCD9BCDABCDBBCDDBCDEBCDFBCE0BCE1BCE2BCE3BCE4BCE5BCE6BCE7BCE8BCE9
+BCEABCEBBCECBCEDBCEEBCEFBCF0BCF1BCF2BCF3BCF7BCF9BCFABCFBBCFD0000
+94
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000BCFEBCFFBD00BD01BD02BD03BD06BD08BD0ABD0BBD0CBD0DBD0EBD0FBD11
+BD12BD13BD15BD16BD17BD18BD19BD1ABD1BBD1CBD1D00000000000000000000
+0000BD1EBD1FBD20BD21BD22BD23BD25BD26BD27BD28BD29BD2ABD2BBD2DBD2E
+BD2FBD30BD31BD32BD33BD34BD35BD36BD37BD38BD3900000000000000000000
+0000BD3ABD3BBD3CBD3DBD3EBD3FBD41BD42BD43BD44BD45BD46BD47BD4ABD4B
+BD4DBD4EBD4FBD51BD52BD53BD54BD55BD56BD57BD5ABD5BBD5CBD5DBD5EBD5F
+BD60BD61BD62BD63BD65BD66BD67BD69BD6ABD6BBD6CBD6DBD6EBD6FBD70BD71
+BD72BD73BD74BD75BD76BD77BD78BD79BD7ABD7BBD7CBD7DBD7EBD7FBD82BD83
+BD85BD86BD8BBD8CBD8DBD8EBD8FBD92BD94BD96BD97BD98BD9BBD9DBD9EBD9F
+BDA0BDA1BDA2BDA3BDA5BDA6BDA7BDA8BDA9BDAABDABBDACBDADBDAEBDAFBDB1
+BDB2BDB3BDB4BDB5BDB6BDB7BDB9BDBABDBBBDBCBDBDBDBEBDBFBDC0BDC1BDC2
+BDC3BDC4BDC5BDC6BDC7BDC8BDC9BDCABDCBBDCCBDCDBDCEBDCFBDD0BDD10000
+95
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000BDD2BDD3BDD6BDD7BDD9BDDABDDBBDDDBDDEBDDFBDE0BDE1BDE2BDE3BDE4
+BDE5BDE6BDE7BDE8BDEABDEBBDECBDEDBDEEBDEFBDF100000000000000000000
+0000BDF2BDF3BDF5BDF6BDF7BDF9BDFABDFBBDFCBDFDBDFEBDFFBE01BE02BE04
+BE06BE07BE08BE09BE0ABE0BBE0EBE0FBE11BE12BE1300000000000000000000
+0000BE15BE16BE17BE18BE19BE1ABE1BBE1EBE20BE21BE22BE23BE24BE25BE26
+BE27BE28BE29BE2ABE2BBE2CBE2DBE2EBE2FBE30BE31BE32BE33BE34BE35BE36
+BE37BE38BE39BE3ABE3BBE3CBE3DBE3EBE3FBE40BE41BE42BE43BE46BE47BE49
+BE4ABE4BBE4DBE4FBE50BE51BE52BE53BE56BE58BE5CBE5DBE5EBE5FBE62BE63
+BE65BE66BE67BE69BE6BBE6CBE6DBE6EBE6FBE72BE76BE77BE78BE79BE7ABE7E
+BE7FBE81BE82BE83BE85BE86BE87BE88BE89BE8ABE8BBE8EBE92BE93BE94BE95
+BE96BE97BE9ABE9BBE9CBE9DBE9EBE9FBEA0BEA1BEA2BEA3BEA4BEA5BEA6BEA7
+BEA9BEAABEABBEACBEADBEAEBEAFBEB0BEB1BEB2BEB3BEB4BEB5BEB6BEB70000
+96
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000BEB8BEB9BEBABEBBBEBCBEBDBEBEBEBFBEC0BEC1BEC2BEC3BEC4BEC5BEC6
+BEC7BEC8BEC9BECABECBBECCBECDBECEBECFBED2BED300000000000000000000
+0000BED5BED6BED9BEDABEDBBEDCBEDDBEDEBEDFBEE1BEE2BEE6BEE7BEE8BEE9
+BEEABEEBBEEDBEEEBEEFBEF0BEF1BEF2BEF3BEF4BEF500000000000000000000
+0000BEF6BEF7BEF8BEF9BEFABEFBBEFCBEFDBEFEBEFFBF00BF02BF03BF04BF05
+BF06BF07BF0ABF0BBF0CBF0DBF0EBF0FBF10BF11BF12BF13BF14BF15BF16BF17
+BF1ABF1EBF1FBF20BF21BF22BF23BF24BF25BF26BF27BF28BF29BF2ABF2BBF2C
+BF2DBF2EBF2FBF30BF31BF32BF33BF34BF35BF36BF37BF38BF39BF3ABF3BBF3C
+BF3DBF3EBF3FBF42BF43BF45BF46BF47BF49BF4ABF4BBF4CBF4DBF4EBF4FBF52
+BF53BF54BF56BF57BF58BF59BF5ABF5BBF5CBF5DBF5EBF5FBF60BF61BF62BF63
+BF64BF65BF66BF67BF68BF69BF6ABF6BBF6CBF6DBF6EBF6FBF70BF71BF72BF73
+BF74BF75BF76BF77BF78BF79BF7ABF7BBF7CBF7DBF7EBF7FBF80BF81BF820000
+97
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000BF83BF84BF85BF86BF87BF88BF89BF8ABF8BBF8CBF8DBF8EBF8FBF90BF91
+BF92BF93BF95BF96BF97BF98BF99BF9ABF9BBF9CBF9D00000000000000000000
+0000BF9EBF9FBFA0BFA1BFA2BFA3BFA4BFA5BFA6BFA7BFA8BFA9BFAABFABBFAC
+BFADBFAEBFAFBFB1BFB2BFB3BFB4BFB5BFB6BFB7BFB800000000000000000000
+0000BFB9BFBABFBBBFBCBFBDBFBEBFBFBFC0BFC1BFC2BFC3BFC4BFC6BFC7BFC8
+BFC9BFCABFCBBFCEBFCFBFD1BFD2BFD3BFD5BFD6BFD7BFD8BFD9BFDABFDBBFDD
+BFDEBFE0BFE2BFE3BFE4BFE5BFE6BFE7BFE8BFE9BFEABFEBBFECBFEDBFEEBFEF
+BFF0BFF1BFF2BFF3BFF4BFF5BFF6BFF7BFF8BFF9BFFABFFBBFFCBFFDBFFEBFFF
+C000C001C002C003C004C005C006C007C008C009C00AC00BC00CC00DC00EC00F
+C010C011C012C013C014C015C016C017C018C019C01AC01BC01CC01DC01EC01F
+C020C021C022C023C024C025C026C027C028C029C02AC02BC02CC02DC02EC02F
+C030C031C032C033C034C035C036C037C038C039C03AC03BC03DC03EC03F0000
+98
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000C040C041C042C043C044C045C046C047C048C049C04AC04BC04CC04DC04E
+C04FC050C052C053C054C055C056C057C059C05AC05B00000000000000000000
+0000C05DC05EC05FC061C062C063C064C065C066C067C06AC06BC06CC06DC06E
+C06FC070C071C072C073C074C075C076C077C078C07900000000000000000000
+0000C07AC07BC07CC07DC07EC07FC080C081C082C083C084C085C086C087C088
+C089C08AC08BC08CC08DC08EC08FC092C093C095C096C097C099C09AC09BC09C
+C09DC09EC09FC0A2C0A4C0A6C0A7C0A8C0A9C0AAC0ABC0AEC0B1C0B2C0B7C0B8
+C0B9C0BAC0BBC0BEC0C2C0C3C0C4C0C6C0C7C0CAC0CBC0CDC0CEC0CFC0D1C0D2
+C0D3C0D4C0D5C0D6C0D7C0DAC0DEC0DFC0E0C0E1C0E2C0E3C0E6C0E7C0E9C0EA
+C0EBC0EDC0EEC0EFC0F0C0F1C0F2C0F3C0F6C0F8C0FAC0FBC0FCC0FDC0FEC0FF
+C101C102C103C105C106C107C109C10AC10BC10CC10DC10EC10FC111C112C113
+C114C116C117C118C119C11AC11BC121C122C125C128C129C12AC12BC12E0000
+99
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000C132C133C134C135C137C13AC13BC13DC13EC13FC141C142C143C144C145
+C146C147C14AC14EC14FC150C151C152C153C156C15700000000000000000000
+0000C159C15AC15BC15DC15EC15FC160C161C162C163C166C16AC16BC16CC16D
+C16EC16FC171C172C173C175C176C177C179C17AC17B00000000000000000000
+0000C17CC17DC17EC17FC180C181C182C183C184C186C187C188C189C18AC18B
+C18FC191C192C193C195C197C198C199C19AC19BC19EC1A0C1A2C1A3C1A4C1A6
+C1A7C1AAC1ABC1ADC1AEC1AFC1B1C1B2C1B3C1B4C1B5C1B6C1B7C1B8C1B9C1BA
+C1BBC1BCC1BEC1BFC1C0C1C1C1C2C1C3C1C5C1C6C1C7C1C9C1CAC1CBC1CDC1CE
+C1CFC1D0C1D1C1D2C1D3C1D5C1D6C1D9C1DAC1DBC1DCC1DDC1DEC1DFC1E1C1E2
+C1E3C1E5C1E6C1E7C1E9C1EAC1EBC1ECC1EDC1EEC1EFC1F2C1F4C1F5C1F6C1F7
+C1F8C1F9C1FAC1FBC1FEC1FFC201C202C203C205C206C207C208C209C20AC20B
+C20EC210C212C213C214C215C216C217C21AC21BC21DC21EC221C222C2230000
+9A
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000C224C225C226C227C22AC22CC22EC230C233C235C236C237C238C239C23A
+C23BC23CC23DC23EC23FC240C241C242C243C244C24500000000000000000000
+0000C246C247C249C24AC24BC24CC24DC24EC24FC252C253C255C256C257C259
+C25AC25BC25CC25DC25EC25FC261C262C263C264C26600000000000000000000
+0000C267C268C269C26AC26BC26EC26FC271C272C273C275C276C277C278C279
+C27AC27BC27EC280C282C283C284C285C286C287C28AC28BC28CC28DC28EC28F
+C291C292C293C294C295C296C297C299C29AC29CC29EC29FC2A0C2A1C2A2C2A3
+C2A6C2A7C2A9C2AAC2ABC2AEC2AFC2B0C2B1C2B2C2B3C2B6C2B8C2BAC2BBC2BC
+C2BDC2BEC2BFC2C0C2C1C2C2C2C3C2C4C2C5C2C6C2C7C2C8C2C9C2CAC2CBC2CC
+C2CDC2CEC2CFC2D0C2D1C2D2C2D3C2D4C2D5C2D6C2D7C2D8C2D9C2DAC2DBC2DE
+C2DFC2E1C2E2C2E5C2E6C2E7C2E8C2E9C2EAC2EEC2F0C2F2C2F3C2F4C2F5C2F7
+C2FAC2FDC2FEC2FFC301C302C303C304C305C306C307C30AC30BC30EC30F0000
+9B
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000C310C311C312C316C317C319C31AC31BC31DC31EC31FC320C321C322C323
+C326C327C32AC32BC32CC32DC32EC32FC330C331C33200000000000000000000
+0000C333C334C335C336C337C338C339C33AC33BC33CC33DC33EC33FC340C341
+C342C343C344C346C347C348C349C34AC34BC34CC34D00000000000000000000
+0000C34EC34FC350C351C352C353C354C355C356C357C358C359C35AC35BC35C
+C35DC35EC35FC360C361C362C363C364C365C366C367C36AC36BC36DC36EC36F
+C371C373C374C375C376C377C37AC37BC37EC37FC380C381C382C383C385C386
+C387C389C38AC38BC38DC38EC38FC390C391C392C393C394C395C396C397C398
+C399C39AC39BC39CC39DC39EC39FC3A0C3A1C3A2C3A3C3A4C3A5C3A6C3A7C3A8
+C3A9C3AAC3ABC3ACC3ADC3AEC3AFC3B0C3B1C3B2C3B3C3B4C3B5C3B6C3B7C3B8
+C3B9C3BAC3BBC3BCC3BDC3BEC3BFC3C1C3C2C3C3C3C4C3C5C3C6C3C7C3C8C3C9
+C3CAC3CBC3CCC3CDC3CEC3CFC3D0C3D1C3D2C3D3C3D4C3D5C3D6C3D7C3DA0000
+9C
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000C3DBC3DDC3DEC3E1C3E3C3E4C3E5C3E6C3E7C3EAC3EBC3ECC3EEC3EFC3F0
+C3F1C3F2C3F3C3F6C3F7C3F9C3FAC3FBC3FCC3FDC3FE00000000000000000000
+0000C3FFC400C401C402C403C404C405C406C407C409C40AC40BC40CC40DC40E
+C40FC411C412C413C414C415C416C417C418C419C41A00000000000000000000
+0000C41BC41CC41DC41EC41FC420C421C422C423C425C426C427C428C429C42A
+C42BC42DC42EC42FC431C432C433C435C436C437C438C439C43AC43BC43EC43F
+C440C441C442C443C444C445C446C447C449C44AC44BC44CC44DC44EC44FC450
+C451C452C453C454C455C456C457C458C459C45AC45BC45CC45DC45EC45FC460
+C461C462C463C466C467C469C46AC46BC46DC46EC46FC470C471C472C473C476
+C477C478C47AC47BC47CC47DC47EC47FC481C482C483C484C485C486C487C488
+C489C48AC48BC48CC48DC48EC48FC490C491C492C493C495C496C497C498C499
+C49AC49BC49DC49EC49FC4A0C4A1C4A2C4A3C4A4C4A5C4A6C4A7C4A8C4A90000
+9D
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000C4AAC4ABC4ACC4ADC4AEC4AFC4B0C4B1C4B2C4B3C4B4C4B5C4B6C4B7C4B9
+C4BAC4BBC4BDC4BEC4BFC4C0C4C1C4C2C4C3C4C4C4C500000000000000000000
+0000C4C6C4C7C4C8C4C9C4CAC4CBC4CCC4CDC4CEC4CFC4D0C4D1C4D2C4D3C4D4
+C4D5C4D6C4D7C4D8C4D9C4DAC4DBC4DCC4DDC4DEC4DF00000000000000000000
+0000C4E0C4E1C4E2C4E3C4E4C4E5C4E6C4E7C4E8C4EAC4EBC4ECC4EDC4EEC4EF
+C4F2C4F3C4F5C4F6C4F7C4F9C4FBC4FCC4FDC4FEC502C503C504C505C506C507
+C508C509C50AC50BC50DC50EC50FC511C512C513C515C516C517C518C519C51A
+C51BC51DC51EC51FC520C521C522C523C524C525C526C527C52AC52BC52DC52E
+C52FC531C532C533C534C535C536C537C53AC53CC53EC53FC540C541C542C543
+C546C547C54BC54FC550C551C552C556C55AC55BC55CC55FC562C563C565C566
+C567C569C56AC56BC56CC56DC56EC56FC572C576C577C578C579C57AC57BC57E
+C57FC581C582C583C585C586C588C589C58AC58BC58EC590C592C593C5940000
+9E
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000C596C599C59AC59BC59DC59EC59FC5A1C5A2C5A3C5A4C5A5C5A6C5A7C5A8
+C5AAC5ABC5ACC5ADC5AEC5AFC5B0C5B1C5B2C5B3C5B600000000000000000000
+0000C5B7C5BAC5BFC5C0C5C1C5C2C5C3C5CBC5CDC5CFC5D2C5D3C5D5C5D6C5D7
+C5D9C5DAC5DBC5DCC5DDC5DEC5DFC5E2C5E4C5E6C5E700000000000000000000
+0000C5E8C5E9C5EAC5EBC5EFC5F1C5F2C5F3C5F5C5F8C5F9C5FAC5FBC602C603
+C604C609C60AC60BC60DC60EC60FC611C612C613C614C615C616C617C61AC61D
+C61EC61FC620C621C622C623C626C627C629C62AC62BC62FC631C632C636C638
+C63AC63CC63DC63EC63FC642C643C645C646C647C649C64AC64BC64CC64DC64E
+C64FC652C656C657C658C659C65AC65BC65EC65FC661C662C663C664C665C666
+C667C668C669C66AC66BC66DC66EC670C672C673C674C675C676C677C67AC67B
+C67DC67EC67FC681C682C683C684C685C686C687C68AC68CC68EC68FC690C691
+C692C693C696C697C699C69AC69BC69DC69EC69FC6A0C6A1C6A2C6A3C6A60000
+9F
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000C6A8C6AAC6ABC6ACC6ADC6AEC6AFC6B2C6B3C6B5C6B6C6B7C6BBC6BCC6BD
+C6BEC6BFC6C2C6C4C6C6C6C7C6C8C6C9C6CAC6CBC6CE00000000000000000000
+0000C6CFC6D1C6D2C6D3C6D5C6D6C6D7C6D8C6D9C6DAC6DBC6DEC6DFC6E2C6E3
+C6E4C6E5C6E6C6E7C6EAC6EBC6EDC6EEC6EFC6F1C6F200000000000000000000
+0000C6F3C6F4C6F5C6F6C6F7C6FAC6FBC6FCC6FEC6FFC700C701C702C703C706
+C707C709C70AC70BC70DC70EC70FC710C711C712C713C716C718C71AC71BC71C
+C71DC71EC71FC722C723C725C726C727C729C72AC72BC72CC72DC72EC72FC732
+C734C736C738C739C73AC73BC73EC73FC741C742C743C745C746C747C748C749
+C74BC74EC750C759C75AC75BC75DC75EC75FC761C762C763C764C765C766C767
+C769C76AC76CC76DC76EC76FC770C771C772C773C776C777C779C77AC77BC77F
+C780C781C782C786C78BC78CC78DC78FC792C793C795C799C79BC79CC79DC79E
+C79FC7A2C7A7C7A8C7A9C7AAC7ABC7AEC7AFC7B1C7B2C7B3C7B5C7B6C7B70000
+A0
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000C7B8C7B9C7BAC7BBC7BEC7C2C7C3C7C4C7C5C7C6C7C7C7CAC7CBC7CDC7CF
+C7D1C7D2C7D3C7D4C7D5C7D6C7D7C7D9C7DAC7DBC7DC00000000000000000000
+0000C7DEC7DFC7E0C7E1C7E2C7E3C7E5C7E6C7E7C7E9C7EAC7EBC7EDC7EEC7EF
+C7F0C7F1C7F2C7F3C7F4C7F5C7F6C7F7C7F8C7F9C7FA00000000000000000000
+0000C7FBC7FCC7FDC7FEC7FFC802C803C805C806C807C809C80BC80CC80DC80E
+C80FC812C814C817C818C819C81AC81BC81EC81FC821C822C823C825C826C827
+C828C829C82AC82BC82EC830C832C833C834C835C836C837C839C83AC83BC83D
+C83EC83FC841C842C843C844C845C846C847C84AC84BC84EC84FC850C851C852
+C853C855C856C857C858C859C85AC85BC85CC85DC85EC85FC860C861C862C863
+C864C865C866C867C868C869C86AC86BC86CC86DC86EC86FC872C873C875C876
+C877C879C87BC87CC87DC87EC87FC882C884C888C889C88AC88EC88FC890C891
+C892C893C895C896C897C898C899C89AC89BC89CC89EC8A0C8A2C8A3C8A40000
+A1
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000C8A5C8A6C8A7C8A9C8AAC8ABC8ACC8ADC8AEC8AFC8B0C8B1C8B2C8B3C8B4
+C8B5C8B6C8B7C8B8C8B9C8BAC8BBC8BEC8BFC8C0C8C100000000000000000000
+0000C8C2C8C3C8C5C8C6C8C7C8C9C8CAC8CBC8CDC8CEC8CFC8D0C8D1C8D2C8D3
+C8D6C8D8C8DAC8DBC8DCC8DDC8DEC8DFC8E2C8E3C8E500000000000000000000
+0000C8E6C8E7C8E8C8E9C8EAC8EBC8ECC8EDC8EEC8EFC8F0C8F1C8F2C8F3C8F4
+C8F6C8F7C8F8C8F9C8FAC8FBC8FEC8FFC901C902C903C907C908C909C90AC90B
+C90E30003001300200B72025202600A8300300AD20152225FF3C223C20182019
+201C201D3014301530083009300A300B300C300D300E300F3010301100B100D7
+00F7226022642265221E223400B0203220332103212BFFE0FFE1FFE526422640
+222022A52312220222072261225200A7203B2606260525CB25CF25CE25C725C6
+25A125A025B325B225BD25BC219221902191219321943013226A226B221A223D
+221D2235222B222C2208220B2286228722822283222A222922272228FFE20000
+A2
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000C910C912C913C914C915C916C917C919C91AC91BC91CC91DC91EC91FC920
+C921C922C923C924C925C926C927C928C929C92AC92B00000000000000000000
+0000C92DC92EC92FC930C931C932C933C935C936C937C938C939C93AC93BC93C
+C93DC93EC93FC940C941C942C943C944C945C946C94700000000000000000000
+0000C948C949C94AC94BC94CC94DC94EC94FC952C953C955C956C957C959C95A
+C95BC95CC95DC95EC95FC962C964C965C966C967C968C969C96AC96BC96DC96E
+C96F21D221D42200220300B4FF5E02C702D802DD02DA02D900B802DB00A100BF
+02D0222E2211220F00A42109203025C125C025B725B626642660266126652667
+2663229925C825A325D025D1259225A425A525A825A725A625A92668260F260E
+261C261E00B62020202121952197219921962198266D2669266A266C327F321C
+211633C7212233C233D8212120AC00AE00000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+A3
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000C971C972C973C975C976C977C978C979C97AC97BC97DC97EC97FC980C981
+C982C983C984C985C986C987C98AC98BC98DC98EC98F00000000000000000000
+0000C991C992C993C994C995C996C997C99AC99CC99EC99FC9A0C9A1C9A2C9A3
+C9A4C9A5C9A6C9A7C9A8C9A9C9AAC9ABC9ACC9ADC9AE00000000000000000000
+0000C9AFC9B0C9B1C9B2C9B3C9B4C9B5C9B6C9B7C9B8C9B9C9BAC9BBC9BCC9BD
+C9BEC9BFC9C2C9C3C9C5C9C6C9C9C9CBC9CCC9CDC9CEC9CFC9D2C9D4C9D7C9D8
+C9DBFF01FF02FF03FF04FF05FF06FF07FF08FF09FF0AFF0BFF0CFF0DFF0EFF0F
+FF10FF11FF12FF13FF14FF15FF16FF17FF18FF19FF1AFF1BFF1CFF1DFF1EFF1F
+FF20FF21FF22FF23FF24FF25FF26FF27FF28FF29FF2AFF2BFF2CFF2DFF2EFF2F
+FF30FF31FF32FF33FF34FF35FF36FF37FF38FF39FF3AFF3BFFE6FF3DFF3EFF3F
+FF40FF41FF42FF43FF44FF45FF46FF47FF48FF49FF4AFF4BFF4CFF4DFF4EFF4F
+FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
+A4
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000C9DEC9DFC9E1C9E3C9E5C9E6C9E8C9E9C9EAC9EBC9EEC9F2C9F3C9F4C9F5
+C9F6C9F7C9FAC9FBC9FDC9FEC9FFCA01CA02CA03CA0400000000000000000000
+0000CA05CA06CA07CA0ACA0ECA0FCA10CA11CA12CA13CA15CA16CA17CA19CA1A
+CA1BCA1CCA1DCA1ECA1FCA20CA21CA22CA23CA24CA2500000000000000000000
+0000CA26CA27CA28CA2ACA2BCA2CCA2DCA2ECA2FCA30CA31CA32CA33CA34CA35
+CA36CA37CA38CA39CA3ACA3BCA3CCA3DCA3ECA3FCA40CA41CA42CA43CA44CA45
+CA46313131323133313431353136313731383139313A313B313C313D313E313F
+3140314131423143314431453146314731483149314A314B314C314D314E314F
+3150315131523153315431553156315731583159315A315B315C315D315E315F
+3160316131623163316431653166316731683169316A316B316C316D316E316F
+3170317131723173317431753176317731783179317A317B317C317D317E317F
+3180318131823183318431853186318731883189318A318B318C318D318E0000
+A5
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000CA47CA48CA49CA4ACA4BCA4ECA4FCA51CA52CA53CA55CA56CA57CA58CA59
+CA5ACA5BCA5ECA62CA63CA64CA65CA66CA67CA69CA6A00000000000000000000
+0000CA6BCA6CCA6DCA6ECA6FCA70CA71CA72CA73CA74CA75CA76CA77CA78CA79
+CA7ACA7BCA7CCA7ECA7FCA80CA81CA82CA83CA85CA8600000000000000000000
+0000CA87CA88CA89CA8ACA8BCA8CCA8DCA8ECA8FCA90CA91CA92CA93CA94CA95
+CA96CA97CA99CA9ACA9BCA9CCA9DCA9ECA9FCAA0CAA1CAA2CAA3CAA4CAA5CAA6
+CAA7217021712172217321742175217621772178217900000000000000000000
+2160216121622163216421652166216721682169000000000000000000000000
+0000039103920393039403950396039703980399039A039B039C039D039E039F
+03A003A103A303A403A503A603A703A803A90000000000000000000000000000
+000003B103B203B303B403B503B603B703B803B903BA03BB03BC03BD03BE03BF
+03C003C103C303C403C503C603C703C803C90000000000000000000000000000
+A6
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000CAA8CAA9CAAACAABCAACCAADCAAECAAFCAB0CAB1CAB2CAB3CAB4CAB5CAB6
+CAB7CAB8CAB9CABACABBCABECABFCAC1CAC2CAC3CAC500000000000000000000
+0000CAC6CAC7CAC8CAC9CACACACBCACECAD0CAD2CAD4CAD5CAD6CAD7CADACADB
+CADCCADDCADECADFCAE1CAE2CAE3CAE4CAE5CAE6CAE700000000000000000000
+0000CAE8CAE9CAEACAEBCAEDCAEECAEFCAF0CAF1CAF2CAF3CAF5CAF6CAF7CAF8
+CAF9CAFACAFBCAFCCAFDCAFECAFFCB00CB01CB02CB03CB04CB05CB06CB07CB09
+CB0A25002502250C251025182514251C252C25242534253C25012503250F2513
+251B251725232533252B253B254B2520252F25282537253F251D253025252538
+254225122511251A251925162515250E250D251E251F25212522252625272529
+252A252D252E25312532253525362539253A253D253E25402541254325442545
+2546254725482549254A00000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+A7
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000CB0BCB0CCB0DCB0ECB0FCB11CB12CB13CB15CB16CB17CB19CB1ACB1BCB1C
+CB1DCB1ECB1FCB22CB23CB24CB25CB26CB27CB28CB2900000000000000000000
+0000CB2ACB2BCB2CCB2DCB2ECB2FCB30CB31CB32CB33CB34CB35CB36CB37CB38
+CB39CB3ACB3BCB3CCB3DCB3ECB3FCB40CB42CB43CB4400000000000000000000
+0000CB45CB46CB47CB4ACB4BCB4DCB4ECB4FCB51CB52CB53CB54CB55CB56CB57
+CB5ACB5BCB5CCB5ECB5FCB60CB61CB62CB63CB65CB66CB67CB68CB69CB6ACB6B
+CB6C3395339633972113339833C433A333A433A533A63399339A339B339C339D
+339E339F33A033A133A233CA338D338E338F33CF3388338933C833A733A833B0
+33B133B233B333B433B533B633B733B833B93380338133823383338433BA33BB
+33BC33BD33BE33BF33903391339233933394212633C033C1338A338B338C33D6
+33C533AD33AE33AF33DB33A933AA33AB33AC33DD33D033D333C333C933DC33C6
+0000000000000000000000000000000000000000000000000000000000000000
+A8
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000CB6DCB6ECB6FCB70CB71CB72CB73CB74CB75CB76CB77CB7ACB7BCB7CCB7D
+CB7ECB7FCB80CB81CB82CB83CB84CB85CB86CB87CB8800000000000000000000
+0000CB89CB8ACB8BCB8CCB8DCB8ECB8FCB90CB91CB92CB93CB94CB95CB96CB97
+CB98CB99CB9ACB9BCB9DCB9ECB9FCBA0CBA1CBA2CBA300000000000000000000
+0000CBA4CBA5CBA6CBA7CBA8CBA9CBAACBABCBACCBADCBAECBAFCBB0CBB1CBB2
+CBB3CBB4CBB5CBB6CBB7CBB9CBBACBBBCBBCCBBDCBBECBBFCBC0CBC1CBC2CBC3
+CBC400C600D000AA0126000001320000013F014100D8015200BA00DE0166014A
+00003260326132623263326432653266326732683269326A326B326C326D326E
+326F3270327132723273327432753276327732783279327A327B24D024D124D2
+24D324D424D524D624D724D824D924DA24DB24DC24DD24DE24DF24E024E124E2
+24E324E424E524E624E724E824E9246024612462246324642465246624672468
+2469246A246B246C246D246E00BD2153215400BC00BE215B215C215D215E0000
+A9
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000CBC5CBC6CBC7CBC8CBC9CBCACBCBCBCCCBCDCBCECBCFCBD0CBD1CBD2CBD3
+CBD5CBD6CBD7CBD8CBD9CBDACBDBCBDCCBDDCBDECBDF00000000000000000000
+0000CBE0CBE1CBE2CBE3CBE5CBE6CBE8CBEACBEBCBECCBEDCBEECBEFCBF0CBF1
+CBF2CBF3CBF4CBF5CBF6CBF7CBF8CBF9CBFACBFBCBFC00000000000000000000
+0000CBFDCBFECBFFCC00CC01CC02CC03CC04CC05CC06CC07CC08CC09CC0ACC0B
+CC0ECC0FCC11CC12CC13CC15CC16CC17CC18CC19CC1ACC1BCC1ECC1FCC20CC23
+CC2400E6011100F001270131013301380140014200F8015300DF00FE0167014B
+01493200320132023203320432053206320732083209320A320B320C320D320E
+320F3210321132123213321432153216321732183219321A321B249C249D249E
+249F24A024A124A224A324A424A524A624A724A824A924AA24AB24AC24AD24AE
+24AF24B024B124B224B324B424B5247424752476247724782479247A247B247C
+247D247E247F24802481248200B900B200B32074207F20812082208320840000
+AA
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000CC25CC26CC2ACC2BCC2DCC2FCC31CC32CC33CC34CC35CC36CC37CC3ACC3F
+CC40CC41CC42CC43CC46CC47CC49CC4ACC4BCC4DCC4E00000000000000000000
+0000CC4FCC50CC51CC52CC53CC56CC5ACC5BCC5CCC5DCC5ECC5FCC61CC62CC63
+CC65CC67CC69CC6ACC6BCC6CCC6DCC6ECC6FCC71CC7200000000000000000000
+0000CC73CC74CC76CC77CC78CC79CC7ACC7BCC7CCC7DCC7ECC7FCC80CC81CC82
+CC83CC84CC85CC86CC87CC88CC89CC8ACC8BCC8CCC8DCC8ECC8FCC90CC91CC92
+CC93304130423043304430453046304730483049304A304B304C304D304E304F
+3050305130523053305430553056305730583059305A305B305C305D305E305F
+3060306130623063306430653066306730683069306A306B306C306D306E306F
+3070307130723073307430753076307730783079307A307B307C307D307E307F
+3080308130823083308430853086308730883089308A308B308C308D308E308F
+3090309130923093000000000000000000000000000000000000000000000000
+AB
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000CC94CC95CC96CC97CC9ACC9BCC9DCC9ECC9FCCA1CCA2CCA3CCA4CCA5CCA6
+CCA7CCAACCAECCAFCCB0CCB1CCB2CCB3CCB6CCB7CCB900000000000000000000
+0000CCBACCBBCCBDCCBECCBFCCC0CCC1CCC2CCC3CCC6CCC8CCCACCCBCCCCCCCD
+CCCECCCFCCD1CCD2CCD3CCD5CCD6CCD7CCD8CCD9CCDA00000000000000000000
+0000CCDBCCDCCCDDCCDECCDFCCE0CCE1CCE2CCE3CCE5CCE6CCE7CCE8CCE9CCEA
+CCEBCCEDCCEECCEFCCF1CCF2CCF3CCF4CCF5CCF6CCF7CCF8CCF9CCFACCFBCCFC
+CCFD30A130A230A330A430A530A630A730A830A930AA30AB30AC30AD30AE30AF
+30B030B130B230B330B430B530B630B730B830B930BA30BB30BC30BD30BE30BF
+30C030C130C230C330C430C530C630C730C830C930CA30CB30CC30CD30CE30CF
+30D030D130D230D330D430D530D630D730D830D930DA30DB30DC30DD30DE30DF
+30E030E130E230E330E430E530E630E730E830E930EA30EB30EC30ED30EE30EF
+30F030F130F230F330F430F530F6000000000000000000000000000000000000
+AC
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000CCFECCFFCD00CD02CD03CD04CD05CD06CD07CD0ACD0BCD0DCD0ECD0FCD11
+CD12CD13CD14CD15CD16CD17CD1ACD1CCD1ECD1FCD2000000000000000000000
+0000CD21CD22CD23CD25CD26CD27CD29CD2ACD2BCD2DCD2ECD2FCD30CD31CD32
+CD33CD34CD35CD36CD37CD38CD3ACD3BCD3CCD3DCD3E00000000000000000000
+0000CD3FCD40CD41CD42CD43CD44CD45CD46CD47CD48CD49CD4ACD4BCD4CCD4D
+CD4ECD4FCD50CD51CD52CD53CD54CD55CD56CD57CD58CD59CD5ACD5BCD5DCD5E
+CD5F04100411041204130414041504010416041704180419041A041B041C041D
+041E041F0420042104220423042404250426042704280429042A042B042C042D
+042E042F00000000000000000000000000000000000000000000000000000000
+000004300431043204330434043504510436043704380439043A043B043C043D
+043E043F0440044104420443044404450446044704480449044A044B044C044D
+044E044F00000000000000000000000000000000000000000000000000000000
+AD
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000CD61CD62CD63CD65CD66CD67CD68CD69CD6ACD6BCD6ECD70CD72CD73CD74
+CD75CD76CD77CD79CD7ACD7BCD7CCD7DCD7ECD7FCD8000000000000000000000
+0000CD81CD82CD83CD84CD85CD86CD87CD89CD8ACD8BCD8CCD8DCD8ECD8FCD90
+CD91CD92CD93CD96CD97CD99CD9ACD9BCD9DCD9ECD9F00000000000000000000
+0000CDA0CDA1CDA2CDA3CDA6CDA8CDAACDABCDACCDADCDAECDAFCDB1CDB2CDB3
+CDB4CDB5CDB6CDB7CDB8CDB9CDBACDBBCDBCCDBDCDBECDBFCDC0CDC1CDC2CDC3
+CDC5000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+AE
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000CDC6CDC7CDC8CDC9CDCACDCBCDCDCDCECDCFCDD1CDD2CDD3CDD4CDD5CDD6
+CDD7CDD8CDD9CDDACDDBCDDCCDDDCDDECDDFCDE0CDE100000000000000000000
+0000CDE2CDE3CDE4CDE5CDE6CDE7CDE9CDEACDEBCDEDCDEECDEFCDF1CDF2CDF3
+CDF4CDF5CDF6CDF7CDFACDFCCDFECDFFCE00CE01CE0200000000000000000000
+0000CE03CE05CE06CE07CE09CE0ACE0BCE0DCE0ECE0FCE10CE11CE12CE13CE15
+CE16CE17CE18CE1ACE1BCE1CCE1DCE1ECE1FCE22CE23CE25CE26CE27CE29CE2A
+CE2B000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+AF
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000CE2CCE2DCE2ECE2FCE32CE34CE36CE37CE38CE39CE3ACE3BCE3CCE3DCE3E
+CE3FCE40CE41CE42CE43CE44CE45CE46CE47CE48CE4900000000000000000000
+0000CE4ACE4BCE4CCE4DCE4ECE4FCE50CE51CE52CE53CE54CE55CE56CE57CE5A
+CE5BCE5DCE5ECE62CE63CE64CE65CE66CE67CE6ACE6C00000000000000000000
+0000CE6ECE6FCE70CE71CE72CE73CE76CE77CE79CE7ACE7BCE7DCE7ECE7FCE80
+CE81CE82CE83CE86CE88CE8ACE8BCE8CCE8DCE8ECE8FCE92CE93CE95CE96CE97
+CE99000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+B0
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000CE9ACE9BCE9CCE9DCE9ECE9FCEA2CEA6CEA7CEA8CEA9CEAACEABCEAECEAF
+CEB0CEB1CEB2CEB3CEB4CEB5CEB6CEB7CEB8CEB9CEBA00000000000000000000
+0000CEBBCEBCCEBDCEBECEBFCEC0CEC2CEC3CEC4CEC5CEC6CEC7CEC8CEC9CECA
+CECBCECCCECDCECECECFCED0CED1CED2CED3CED4CED500000000000000000000
+0000CED6CED7CED8CED9CEDACEDBCEDCCEDDCEDECEDFCEE0CEE1CEE2CEE3CEE6
+CEE7CEE9CEEACEEDCEEECEEFCEF0CEF1CEF2CEF3CEF6CEFACEFBCEFCCEFDCEFE
+CEFFAC00AC01AC04AC07AC08AC09AC0AAC10AC11AC12AC13AC14AC15AC16AC17
+AC19AC1AAC1BAC1CAC1DAC20AC24AC2CAC2DAC2FAC30AC31AC38AC39AC3CAC40
+AC4BAC4DAC54AC58AC5CAC70AC71AC74AC77AC78AC7AAC80AC81AC83AC84AC85
+AC86AC89AC8AAC8BAC8CAC90AC94AC9CAC9DAC9FACA0ACA1ACA8ACA9ACAAACAC
+ACAFACB0ACB8ACB9ACBBACBCACBDACC1ACC4ACC8ACCCACD5ACD7ACE0ACE1ACE4
+ACE7ACE8ACEAACECACEFACF0ACF1ACF3ACF5ACF6ACFCACFDAD00AD04AD060000
+B1
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000CF02CF03CF05CF06CF07CF09CF0ACF0BCF0CCF0DCF0ECF0FCF12CF14CF16
+CF17CF18CF19CF1ACF1BCF1DCF1ECF1FCF21CF22CF2300000000000000000000
+0000CF25CF26CF27CF28CF29CF2ACF2BCF2ECF32CF33CF34CF35CF36CF37CF39
+CF3ACF3BCF3CCF3DCF3ECF3FCF40CF41CF42CF43CF4400000000000000000000
+0000CF45CF46CF47CF48CF49CF4ACF4BCF4CCF4DCF4ECF4FCF50CF51CF52CF53
+CF56CF57CF59CF5ACF5BCF5DCF5ECF5FCF60CF61CF62CF63CF66CF68CF6ACF6B
+CF6CAD0CAD0DAD0FAD11AD18AD1CAD20AD29AD2CAD2DAD34AD35AD38AD3CAD44
+AD45AD47AD49AD50AD54AD58AD61AD63AD6CAD6DAD70AD73AD74AD75AD76AD7B
+AD7CAD7DAD7FAD81AD82AD88AD89AD8CAD90AD9CAD9DADA4ADB7ADC0ADC1ADC4
+ADC8ADD0ADD1ADD3ADDCADE0ADE4ADF8ADF9ADFCADFFAE00AE01AE08AE09AE0B
+AE0DAE14AE30AE31AE34AE37AE38AE3AAE40AE41AE43AE45AE46AE4AAE4CAE4D
+AE4EAE50AE54AE56AE5CAE5DAE5FAE60AE61AE65AE68AE69AE6CAE70AE780000
+B2
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000CF6DCF6ECF6FCF72CF73CF75CF76CF77CF79CF7ACF7BCF7CCF7DCF7ECF7F
+CF81CF82CF83CF84CF86CF87CF88CF89CF8ACF8BCF8D00000000000000000000
+0000CF8ECF8FCF90CF91CF92CF93CF94CF95CF96CF97CF98CF99CF9ACF9BCF9C
+CF9DCF9ECF9FCFA0CFA2CFA3CFA4CFA5CFA6CFA7CFA900000000000000000000
+0000CFAACFABCFACCFADCFAECFAFCFB1CFB2CFB3CFB4CFB5CFB6CFB7CFB8CFB9
+CFBACFBBCFBCCFBDCFBECFBFCFC0CFC1CFC2CFC3CFC5CFC6CFC7CFC8CFC9CFCA
+CFCBAE79AE7BAE7CAE7DAE84AE85AE8CAEBCAEBDAEBEAEC0AEC4AECCAECDAECF
+AED0AED1AED8AED9AEDCAEE8AEEBAEEDAEF4AEF8AEFCAF07AF08AF0DAF10AF2C
+AF2DAF30AF32AF34AF3CAF3DAF3FAF41AF42AF43AF48AF49AF50AF5CAF5DAF64
+AF65AF79AF80AF84AF88AF90AF91AF95AF9CAFB8AFB9AFBCAFC0AFC7AFC8AFC9
+AFCBAFCDAFCEAFD4AFDCAFE8AFE9AFF0AFF1AFF4AFF8B000B001B004B00CB010
+B014B01CB01DB028B044B045B048B04AB04CB04EB053B054B055B057B0590000
+B3
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000CFCCCFCDCFCECFCFCFD0CFD1CFD2CFD3CFD4CFD5CFD6CFD7CFD8CFD9CFDA
+CFDBCFDCCFDDCFDECFDFCFE2CFE3CFE5CFE6CFE7CFE900000000000000000000
+0000CFEACFEBCFECCFEDCFEECFEFCFF2CFF4CFF6CFF7CFF8CFF9CFFACFFBCFFD
+CFFECFFFD001D002D003D005D006D007D008D009D00A00000000000000000000
+0000D00BD00CD00DD00ED00FD010D012D013D014D015D016D017D019D01AD01B
+D01CD01DD01ED01FD020D021D022D023D024D025D026D027D028D029D02AD02B
+D02CB05DB07CB07DB080B084B08CB08DB08FB091B098B099B09AB09CB09FB0A0
+B0A1B0A2B0A8B0A9B0ABB0ACB0ADB0AEB0AFB0B1B0B3B0B4B0B5B0B8B0BCB0C4
+B0C5B0C7B0C8B0C9B0D0B0D1B0D4B0D8B0E0B0E5B108B109B10BB10CB110B112
+B113B118B119B11BB11CB11DB123B124B125B128B12CB134B135B137B138B139
+B140B141B144B148B150B151B154B155B158B15CB160B178B179B17CB180B182
+B188B189B18BB18DB192B193B194B198B19CB1A8B1CCB1D0B1D4B1DCB1DD0000
+B4
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000D02ED02FD030D031D032D033D036D037D039D03AD03BD03DD03ED03FD040
+D041D042D043D046D048D04AD04BD04CD04DD04ED04F00000000000000000000
+0000D051D052D053D055D056D057D059D05AD05BD05CD05DD05ED05FD061D062
+D063D064D065D066D067D068D069D06AD06BD06ED06F00000000000000000000
+0000D071D072D073D075D076D077D078D079D07AD07BD07ED07FD080D082D083
+D084D085D086D087D088D089D08AD08BD08CD08DD08ED08FD090D091D092D093
+D094B1DFB1E8B1E9B1ECB1F0B1F9B1FBB1FDB204B205B208B20BB20CB214B215
+B217B219B220B234B23CB258B25CB260B268B269B274B275B27CB284B285B289
+B290B291B294B298B299B29AB2A0B2A1B2A3B2A5B2A6B2AAB2ACB2B0B2B4B2C8
+B2C9B2CCB2D0B2D2B2D8B2D9B2DBB2DDB2E2B2E4B2E5B2E6B2E8B2EBB2ECB2ED
+B2EEB2EFB2F3B2F4B2F5B2F7B2F8B2F9B2FAB2FBB2FFB300B301B304B308B310
+B311B313B314B315B31CB354B355B356B358B35BB35CB35EB35FB364B3650000
+B5
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000D095D096D097D098D099D09AD09BD09CD09DD09ED09FD0A0D0A1D0A2D0A3
+D0A6D0A7D0A9D0AAD0ABD0ADD0AED0AFD0B0D0B1D0B200000000000000000000
+0000D0B3D0B6D0B8D0BAD0BBD0BCD0BDD0BED0BFD0C2D0C3D0C5D0C6D0C7D0CA
+D0CBD0CCD0CDD0CED0CFD0D2D0D6D0D7D0D8D0D9D0DA00000000000000000000
+0000D0DBD0DED0DFD0E1D0E2D0E3D0E5D0E6D0E7D0E8D0E9D0EAD0EBD0EED0F2
+D0F3D0F4D0F5D0F6D0F7D0F9D0FAD0FBD0FCD0FDD0FED0FFD100D101D102D103
+D104B367B369B36BB36EB370B371B374B378B380B381B383B384B385B38CB390
+B394B3A0B3A1B3A8B3ACB3C4B3C5B3C8B3CBB3CCB3CEB3D0B3D4B3D5B3D7B3D9
+B3DBB3DDB3E0B3E4B3E8B3FCB410B418B41CB420B428B429B42BB434B450B451
+B454B458B460B461B463B465B46CB480B488B49DB4A4B4A8B4ACB4B5B4B7B4B9
+B4C0B4C4B4C8B4D0B4D5B4DCB4DDB4E0B4E3B4E4B4E6B4ECB4EDB4EFB4F1B4F8
+B514B515B518B51BB51CB524B525B527B528B529B52AB530B531B534B5380000
+B6
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000D105D106D107D108D109D10AD10BD10CD10ED10FD110D111D112D113D114
+D115D116D117D118D119D11AD11BD11CD11DD11ED11F00000000000000000000
+0000D120D121D122D123D124D125D126D127D128D129D12AD12BD12CD12DD12E
+D12FD132D133D135D136D137D139D13BD13CD13DD13E00000000000000000000
+0000D13FD142D146D147D148D149D14AD14BD14ED14FD151D152D153D155D156
+D157D158D159D15AD15BD15ED160D162D163D164D165D166D167D169D16AD16B
+D16DB540B541B543B544B545B54BB54CB54DB550B554B55CB55DB55FB560B561
+B5A0B5A1B5A4B5A8B5AAB5ABB5B0B5B1B5B3B5B4B5B5B5BBB5BCB5BDB5C0B5C4
+B5CCB5CDB5CFB5D0B5D1B5D8B5ECB610B611B614B618B625B62CB634B648B664
+B668B69CB69DB6A0B6A4B6ABB6ACB6B1B6D4B6F0B6F4B6F8B700B701B705B728
+B729B72CB72FB730B738B739B73BB744B748B74CB754B755B760B764B768B770
+B771B773B775B77CB77DB780B784B78CB78DB78FB790B791B792B796B7970000
+B7
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000D16ED16FD170D171D172D173D174D175D176D177D178D179D17AD17BD17D
+D17ED17FD180D181D182D183D185D186D187D189D18A00000000000000000000
+0000D18BD18CD18DD18ED18FD190D191D192D193D194D195D196D197D198D199
+D19AD19BD19CD19DD19ED19FD1A2D1A3D1A5D1A6D1A700000000000000000000
+0000D1A9D1AAD1ABD1ACD1ADD1AED1AFD1B2D1B4D1B6D1B7D1B8D1B9D1BBD1BD
+D1BED1BFD1C1D1C2D1C3D1C4D1C5D1C6D1C7D1C8D1C9D1CAD1CBD1CCD1CDD1CE
+D1CFB798B799B79CB7A0B7A8B7A9B7ABB7ACB7ADB7B4B7B5B7B8B7C7B7C9B7EC
+B7EDB7F0B7F4B7FCB7FDB7FFB800B801B807B808B809B80CB810B818B819B81B
+B81DB824B825B828B82CB834B835B837B838B839B840B844B851B853B85CB85D
+B860B864B86CB86DB86FB871B878B87CB88DB8A8B8B0B8B4B8B8B8C0B8C1B8C3
+B8C5B8CCB8D0B8D4B8DDB8DFB8E1B8E8B8E9B8ECB8F0B8F8B8F9B8FBB8FDB904
+B918B920B93CB93DB940B944B94CB94FB951B958B959B95CB960B968B9690000
+B8
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000D1D0D1D1D1D2D1D3D1D4D1D5D1D6D1D7D1D9D1DAD1DBD1DCD1DDD1DED1DF
+D1E0D1E1D1E2D1E3D1E4D1E5D1E6D1E7D1E8D1E9D1EA00000000000000000000
+0000D1EBD1ECD1EDD1EED1EFD1F0D1F1D1F2D1F3D1F5D1F6D1F7D1F9D1FAD1FB
+D1FCD1FDD1FED1FFD200D201D202D203D204D205D20600000000000000000000
+0000D208D20AD20BD20CD20DD20ED20FD211D212D213D214D215D216D217D218
+D219D21AD21BD21CD21DD21ED21FD220D221D222D223D224D225D226D227D228
+D229B96BB96DB974B975B978B97CB984B985B987B989B98AB98DB98EB9ACB9AD
+B9B0B9B4B9BCB9BDB9BFB9C1B9C8B9C9B9CCB9CEB9CFB9D0B9D1B9D2B9D8B9D9
+B9DBB9DDB9DEB9E1B9E3B9E4B9E5B9E8B9ECB9F4B9F5B9F7B9F8B9F9B9FABA00
+BA01BA08BA15BA38BA39BA3CBA40BA42BA48BA49BA4BBA4DBA4EBA53BA54BA55
+BA58BA5CBA64BA65BA67BA68BA69BA70BA71BA74BA78BA83BA84BA85BA87BA8C
+BAA8BAA9BAABBAACBAB0BAB2BAB8BAB9BABBBABDBAC4BAC8BAD8BAD9BAFC0000
+B9
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000D22AD22BD22ED22FD231D232D233D235D236D237D238D239D23AD23BD23E
+D240D242D243D244D245D246D247D249D24AD24BD24C00000000000000000000
+0000D24DD24ED24FD250D251D252D253D254D255D256D257D258D259D25AD25B
+D25DD25ED25FD260D261D262D263D265D266D267D26800000000000000000000
+0000D269D26AD26BD26CD26DD26ED26FD270D271D272D273D274D275D276D277
+D278D279D27AD27BD27CD27DD27ED27FD282D283D285D286D287D289D28AD28B
+D28CBB00BB04BB0DBB0FBB11BB18BB1CBB20BB29BB2BBB34BB35BB36BB38BB3B
+BB3CBB3DBB3EBB44BB45BB47BB49BB4DBB4FBB50BB54BB58BB61BB63BB6CBB88
+BB8CBB90BBA4BBA8BBACBBB4BBB7BBC0BBC4BBC8BBD0BBD3BBF8BBF9BBFCBBFF
+BC00BC02BC08BC09BC0BBC0CBC0DBC0FBC11BC14BC15BC16BC17BC18BC1BBC1C
+BC1DBC1EBC1FBC24BC25BC27BC29BC2DBC30BC31BC34BC38BC40BC41BC43BC44
+BC45BC49BC4CBC4DBC50BC5DBC84BC85BC88BC8BBC8CBC8EBC94BC95BC970000
+BA
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000D28DD28ED28FD292D293D294D296D297D298D299D29AD29BD29DD29ED29F
+D2A1D2A2D2A3D2A5D2A6D2A7D2A8D2A9D2AAD2ABD2AD00000000000000000000
+0000D2AED2AFD2B0D2B2D2B3D2B4D2B5D2B6D2B7D2BAD2BBD2BDD2BED2C1D2C3
+D2C4D2C5D2C6D2C7D2CAD2CCD2CDD2CED2CFD2D0D2D100000000000000000000
+0000D2D2D2D3D2D5D2D6D2D7D2D9D2DAD2DBD2DDD2DED2DFD2E0D2E1D2E2D2E3
+D2E6D2E7D2E8D2E9D2EAD2EBD2ECD2EDD2EED2EFD2F2D2F3D2F5D2F6D2F7D2F9
+D2FABC99BC9ABCA0BCA1BCA4BCA7BCA8BCB0BCB1BCB3BCB4BCB5BCBCBCBDBCC0
+BCC4BCCDBCCFBCD0BCD1BCD5BCD8BCDCBCF4BCF5BCF6BCF8BCFCBD04BD05BD07
+BD09BD10BD14BD24BD2CBD40BD48BD49BD4CBD50BD58BD59BD64BD68BD80BD81
+BD84BD87BD88BD89BD8ABD90BD91BD93BD95BD99BD9ABD9CBDA4BDB0BDB8BDD4
+BDD5BDD8BDDCBDE9BDF0BDF4BDF8BE00BE03BE05BE0CBE0DBE10BE14BE1CBE1D
+BE1FBE44BE45BE48BE4CBE4EBE54BE55BE57BE59BE5ABE5BBE60BE61BE640000
+BB
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000D2FBD2FCD2FDD2FED2FFD302D304D306D307D308D309D30AD30BD30FD311
+D312D313D315D317D318D319D31AD31BD31ED322D32300000000000000000000
+0000D324D326D327D32AD32BD32DD32ED32FD331D332D333D334D335D336D337
+D33AD33ED33FD340D341D342D343D346D347D348D34900000000000000000000
+0000D34AD34BD34CD34DD34ED34FD350D351D352D353D354D355D356D357D358
+D359D35AD35BD35CD35DD35ED35FD360D361D362D363D364D365D366D367D368
+D369BE68BE6ABE70BE71BE73BE74BE75BE7BBE7CBE7DBE80BE84BE8CBE8DBE8F
+BE90BE91BE98BE99BEA8BED0BED1BED4BED7BED8BEE0BEE3BEE4BEE5BEECBF01
+BF08BF09BF18BF19BF1BBF1CBF1DBF40BF41BF44BF48BF50BF51BF55BF94BFB0
+BFC5BFCCBFCDBFD0BFD4BFDCBFDFBFE1C03CC051C058C05CC060C068C069C090
+C091C094C098C0A0C0A1C0A3C0A5C0ACC0ADC0AFC0B0C0B3C0B4C0B5C0B6C0BC
+C0BDC0BFC0C0C0C1C0C5C0C8C0C9C0CCC0D0C0D8C0D9C0DBC0DCC0DDC0E40000
+BC
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000D36AD36BD36CD36DD36ED36FD370D371D372D373D374D375D376D377D378
+D379D37AD37BD37ED37FD381D382D383D385D386D38700000000000000000000
+0000D388D389D38AD38BD38ED392D393D394D395D396D397D39AD39BD39DD39E
+D39FD3A1D3A2D3A3D3A4D3A5D3A6D3A7D3AAD3ACD3AE00000000000000000000
+0000D3AFD3B0D3B1D3B2D3B3D3B5D3B6D3B7D3B9D3BAD3BBD3BDD3BED3BFD3C0
+D3C1D3C2D3C3D3C6D3C7D3CAD3CBD3CCD3CDD3CED3CFD3D1D3D2D3D3D3D4D3D5
+D3D6C0E5C0E8C0ECC0F4C0F5C0F7C0F9C100C104C108C110C115C11CC11DC11E
+C11FC120C123C124C126C127C12CC12DC12FC130C131C136C138C139C13CC140
+C148C149C14BC14CC14DC154C155C158C15CC164C165C167C168C169C170C174
+C178C185C18CC18DC18EC190C194C196C19CC19DC19FC1A1C1A5C1A8C1A9C1AC
+C1B0C1BDC1C4C1C8C1CCC1D4C1D7C1D8C1E0C1E4C1E8C1F0C1F1C1F3C1FCC1FD
+C200C204C20CC20DC20FC211C218C219C21CC21FC220C228C229C22BC22D0000
+BD
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000D3D7D3D9D3DAD3DBD3DCD3DDD3DED3DFD3E0D3E2D3E4D3E5D3E6D3E7D3E8
+D3E9D3EAD3EBD3EED3EFD3F1D3F2D3F3D3F5D3F6D3F700000000000000000000
+0000D3F8D3F9D3FAD3FBD3FED400D402D403D404D405D406D407D409D40AD40B
+D40CD40DD40ED40FD410D411D412D413D414D415D41600000000000000000000
+0000D417D418D419D41AD41BD41CD41ED41FD420D421D422D423D424D425D426
+D427D428D429D42AD42BD42CD42DD42ED42FD430D431D432D433D434D435D436
+D437C22FC231C232C234C248C250C251C254C258C260C265C26CC26DC270C274
+C27CC27DC27FC281C288C289C290C298C29BC29DC2A4C2A5C2A8C2ACC2ADC2B4
+C2B5C2B7C2B9C2DCC2DDC2E0C2E3C2E4C2EBC2ECC2EDC2EFC2F1C2F6C2F8C2F9
+C2FBC2FCC300C308C309C30CC30DC313C314C315C318C31CC324C325C328C329
+C345C368C369C36CC370C372C378C379C37CC37DC384C388C38CC3C0C3D8C3D9
+C3DCC3DFC3E0C3E2C3E8C3E9C3EDC3F4C3F5C3F8C408C410C424C42CC4300000
+BE
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000D438D439D43AD43BD43CD43DD43ED43FD441D442D443D445D446D447D448
+D449D44AD44BD44CD44DD44ED44FD450D451D452D45300000000000000000000
+0000D454D455D456D457D458D459D45AD45BD45DD45ED45FD461D462D463D465
+D466D467D468D469D46AD46BD46CD46ED470D471D47200000000000000000000
+0000D473D474D475D476D477D47AD47BD47DD47ED481D483D484D485D486D487
+D48AD48CD48ED48FD490D491D492D493D495D496D497D498D499D49AD49BD49C
+D49DC434C43CC43DC448C464C465C468C46CC474C475C479C480C494C49CC4B8
+C4BCC4E9C4F0C4F1C4F4C4F8C4FAC4FFC500C501C50CC510C514C51CC528C529
+C52CC530C538C539C53BC53DC544C545C548C549C54AC54CC54DC54EC553C554
+C555C557C558C559C55DC55EC560C561C564C568C570C571C573C574C575C57C
+C57DC580C584C587C58CC58DC58FC591C595C597C598C59CC5A0C5A9C5B4C5B5
+C5B8C5B9C5BBC5BCC5BDC5BEC5C4C5C5C5C6C5C7C5C8C5C9C5CAC5CCC5CE0000
+BF
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000D49ED49FD4A0D4A1D4A2D4A3D4A4D4A5D4A6D4A7D4A8D4AAD4ABD4ACD4AD
+D4AED4AFD4B0D4B1D4B2D4B3D4B4D4B5D4B6D4B7D4B800000000000000000000
+0000D4B9D4BAD4BBD4BCD4BDD4BED4BFD4C0D4C1D4C2D4C3D4C4D4C5D4C6D4C7
+D4C8D4C9D4CAD4CBD4CDD4CED4CFD4D1D4D2D4D3D4D500000000000000000000
+0000D4D6D4D7D4D8D4D9D4DAD4DBD4DDD4DED4E0D4E1D4E2D4E3D4E4D4E5D4E6
+D4E7D4E9D4EAD4EBD4EDD4EED4EFD4F1D4F2D4F3D4F4D4F5D4F6D4F7D4F9D4FA
+D4FCC5D0C5D1C5D4C5D8C5E0C5E1C5E3C5E5C5ECC5EDC5EEC5F0C5F4C5F6C5F7
+C5FCC5FDC5FEC5FFC600C601C605C606C607C608C60CC610C618C619C61BC61C
+C624C625C628C62CC62DC62EC630C633C634C635C637C639C63BC640C641C644
+C648C650C651C653C654C655C65CC65DC660C66CC66FC671C678C679C67CC680
+C688C689C68BC68DC694C695C698C69CC6A4C6A5C6A7C6A9C6B0C6B1C6B4C6B8
+C6B9C6BAC6C0C6C1C6C3C6C5C6CCC6CDC6D0C6D4C6DCC6DDC6E0C6E1C6E80000
+C0
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000D4FED4FFD500D501D502D503D505D506D507D509D50AD50BD50DD50ED50F
+D510D511D512D513D516D518D519D51AD51BD51CD51D00000000000000000000
+0000D51ED51FD520D521D522D523D524D525D526D527D528D529D52AD52BD52C
+D52DD52ED52FD530D531D532D533D534D535D536D53700000000000000000000
+0000D538D539D53AD53BD53ED53FD541D542D543D545D546D547D548D549D54A
+D54BD54ED550D552D553D554D555D556D557D55AD55BD55DD55ED55FD561D562
+D563C6E9C6ECC6F0C6F8C6F9C6FDC704C705C708C70CC714C715C717C719C720
+C721C724C728C730C731C733C735C737C73CC73DC740C744C74AC74CC74DC74F
+C751C752C753C754C755C756C757C758C75CC760C768C76BC774C775C778C77C
+C77DC77EC783C784C785C787C788C789C78AC78EC790C791C794C796C797C798
+C79AC7A0C7A1C7A3C7A4C7A5C7A6C7ACC7ADC7B0C7B4C7BCC7BDC7BFC7C0C7C1
+C7C8C7C9C7CCC7CEC7D0C7D8C7DDC7E4C7E8C7ECC800C801C804C808C80A0000
+C1
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000D564D566D567D56AD56CD56ED56FD570D571D572D573D576D577D579D57A
+D57BD57DD57ED57FD580D581D582D583D586D58AD58B00000000000000000000
+0000D58CD58DD58ED58FD591D592D593D594D595D596D597D598D599D59AD59B
+D59CD59DD59ED59FD5A0D5A1D5A2D5A3D5A4D5A6D5A700000000000000000000
+0000D5A8D5A9D5AAD5ABD5ACD5ADD5AED5AFD5B0D5B1D5B2D5B3D5B4D5B5D5B6
+D5B7D5B8D5B9D5BAD5BBD5BCD5BDD5BED5BFD5C0D5C1D5C2D5C3D5C4D5C5D5C6
+D5C7C810C811C813C815C816C81CC81DC820C824C82CC82DC82FC831C838C83C
+C840C848C849C84CC84DC854C870C871C874C878C87AC880C881C883C885C886
+C887C88BC88CC88DC894C89DC89FC8A1C8A8C8BCC8BDC8C4C8C8C8CCC8D4C8D5
+C8D7C8D9C8E0C8E1C8E4C8F5C8FCC8FDC900C904C905C906C90CC90DC90FC911
+C918C92CC934C950C951C954C958C960C961C963C96CC970C974C97CC988C989
+C98CC990C998C999C99BC99DC9C0C9C1C9C4C9C7C9C8C9CAC9D0C9D1C9D30000
+C2
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000D5CAD5CBD5CDD5CED5CFD5D1D5D3D5D4D5D5D5D6D5D7D5DAD5DCD5DED5DF
+D5E0D5E1D5E2D5E3D5E6D5E7D5E9D5EAD5EBD5EDD5EE00000000000000000000
+0000D5EFD5F0D5F1D5F2D5F3D5F6D5F8D5FAD5FBD5FCD5FDD5FED5FFD602D603
+D605D606D607D609D60AD60BD60CD60DD60ED60FD61200000000000000000000
+0000D616D617D618D619D61AD61BD61DD61ED61FD621D622D623D625D626D627
+D628D629D62AD62BD62CD62ED62FD630D631D632D633D634D635D636D637D63A
+D63BC9D5C9D6C9D9C9DAC9DCC9DDC9E0C9E2C9E4C9E7C9ECC9EDC9EFC9F0C9F1
+C9F8C9F9C9FCCA00CA08CA09CA0BCA0CCA0DCA14CA18CA29CA4CCA4DCA50CA54
+CA5CCA5DCA5FCA60CA61CA68CA7DCA84CA98CABCCABDCAC0CAC4CACCCACDCACF
+CAD1CAD3CAD8CAD9CAE0CAECCAF4CB08CB10CB14CB18CB20CB21CB41CB48CB49
+CB4CCB50CB58CB59CB5DCB64CB78CB79CB9CCBB8CBD4CBE4CBE7CBE9CC0CCC0D
+CC10CC14CC1CCC1DCC21CC22CC27CC28CC29CC2CCC2ECC30CC38CC39CC3B0000
+C3
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000D63DD63ED63FD641D642D643D644D646D647D64AD64CD64ED64FD650D652
+D653D656D657D659D65AD65BD65DD65ED65FD660D66100000000000000000000
+0000D662D663D664D665D666D668D66AD66BD66CD66DD66ED66FD672D673D675
+D676D677D678D679D67AD67BD67CD67DD67ED67FD68000000000000000000000
+0000D681D682D684D686D687D688D689D68AD68BD68ED68FD691D692D693D695
+D696D697D698D699D69AD69BD69CD69ED6A0D6A2D6A3D6A4D6A5D6A6D6A7D6A9
+D6AACC3CCC3DCC3ECC44CC45CC48CC4CCC54CC55CC57CC58CC59CC60CC64CC66
+CC68CC70CC75CC98CC99CC9CCCA0CCA8CCA9CCABCCACCCADCCB4CCB5CCB8CCBC
+CCC4CCC5CCC7CCC9CCD0CCD4CCE4CCECCCF0CD01CD08CD09CD0CCD10CD18CD19
+CD1BCD1DCD24CD28CD2CCD39CD5CCD60CD64CD6CCD6DCD6FCD71CD78CD88CD94
+CD95CD98CD9CCDA4CDA5CDA7CDA9CDB0CDC4CDCCCDD0CDE8CDECCDF0CDF8CDF9
+CDFBCDFDCE04CE08CE0CCE14CE19CE20CE21CE24CE28CE30CE31CE33CE350000
+C4
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000D6ABD6ADD6AED6AFD6B1D6B2D6B3D6B4D6B5D6B6D6B7D6B8D6BAD6BCD6BD
+D6BED6BFD6C0D6C1D6C2D6C3D6C6D6C7D6C9D6CAD6CB00000000000000000000
+0000D6CDD6CED6CFD6D0D6D2D6D3D6D5D6D6D6D8D6DAD6DBD6DCD6DDD6DED6DF
+D6E1D6E2D6E3D6E5D6E6D6E7D6E9D6EAD6EBD6ECD6ED00000000000000000000
+0000D6EED6EFD6F1D6F2D6F3D6F4D6F6D6F7D6F8D6F9D6FAD6FBD6FED6FFD701
+D702D703D705D706D707D708D709D70AD70BD70CD70DD70ED70FD710D712D713
+D714CE58CE59CE5CCE5FCE60CE61CE68CE69CE6BCE6DCE74CE75CE78CE7CCE84
+CE85CE87CE89CE90CE91CE94CE98CEA0CEA1CEA3CEA4CEA5CEACCEADCEC1CEE4
+CEE5CEE8CEEBCEECCEF4CEF5CEF7CEF8CEF9CF00CF01CF04CF08CF10CF11CF13
+CF15CF1CCF20CF24CF2CCF2DCF2FCF30CF31CF38CF54CF55CF58CF5CCF64CF65
+CF67CF69CF70CF71CF74CF78CF80CF85CF8CCFA1CFA8CFB0CFC4CFE0CFE1CFE4
+CFE8CFF0CFF1CFF3CFF5CFFCD000D004D011D018D02DD034D035D038D03C0000
+C5
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000D715D716D717D71AD71BD71DD71ED71FD721D722D723D724D725D726D727
+D72AD72CD72ED72FD730D731D732D733D736D737D73900000000000000000000
+0000D73AD73BD73DD73ED73FD740D741D742D743D745D746D748D74AD74BD74C
+D74DD74ED74FD752D753D755D75AD75BD75CD75DD75E00000000000000000000
+0000D75FD762D764D766D767D768D76AD76BD76DD76ED76FD771D772D773D775
+D776D777D778D779D77AD77BD77ED77FD780D782D783D784D785D786D787D78A
+D78BD044D045D047D049D050D054D058D060D06CD06DD070D074D07CD07DD081
+D0A4D0A5D0A8D0ACD0B4D0B5D0B7D0B9D0C0D0C1D0C4D0C8D0C9D0D0D0D1D0D3
+D0D4D0D5D0DCD0DDD0E0D0E4D0ECD0EDD0EFD0F0D0F1D0F8D10DD130D131D134
+D138D13AD140D141D143D144D145D14CD14DD150D154D15CD15DD15FD161D168
+D16CD17CD184D188D1A0D1A1D1A4D1A8D1B0D1B1D1B3D1B5D1BAD1BCD1C0D1D8
+D1F4D1F8D207D209D210D22CD22DD230D234D23CD23DD23FD241D248D25C0000
+C6
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000D78DD78ED78FD791D792D793D794D795D796D797D79AD79CD79ED79FD7A0
+D7A1D7A2D7A30000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000D264D280D281D284D288D290D291D295D29CD2A0D2A4D2ACD2B1D2B8D2B9
+D2BCD2BFD2C0D2C2D2C8D2C9D2CBD2D4D2D8D2DCD2E4D2E5D2F0D2F1D2F4D2F8
+D300D301D303D305D30CD30DD30ED310D314D316D31CD31DD31FD320D321D325
+D328D329D32CD330D338D339D33BD33CD33DD344D345D37CD37DD380D384D38C
+D38DD38FD390D391D398D399D39CD3A0D3A8D3A9D3ABD3ADD3B4D3B8D3BCD3C4
+D3C5D3C8D3C9D3D0D3D8D3E1D3E3D3ECD3EDD3F0D3F4D3FCD3FDD3FFD4010000
+C7
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000D408D41DD440D444D45CD460D464D46DD46FD478D479D47CD47FD480D482
+D488D489D48BD48DD494D4A9D4CCD4D0D4D4D4DCD4DFD4E8D4ECD4F0D4F8D4FB
+D4FDD504D508D50CD514D515D517D53CD53DD540D544D54CD54DD54FD551D558
+D559D55CD560D565D568D569D56BD56DD574D575D578D57CD584D585D587D588
+D589D590D5A5D5C8D5C9D5CCD5D0D5D2D5D8D5D9D5DBD5DDD5E4D5E5D5E8D5EC
+D5F4D5F5D5F7D5F9D600D601D604D608D610D611D613D614D615D61CD6200000
+C8
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000D624D62DD638D639D63CD640D645D648D649D64BD64DD651D654D655D658
+D65CD667D669D670D671D674D683D685D68CD68DD690D694D69DD69FD6A1D6A8
+D6ACD6B0D6B9D6BBD6C4D6C5D6C8D6CCD6D1D6D4D6D7D6D9D6E0D6E4D6E8D6F0
+D6F5D6FCD6FDD700D704D711D718D719D71CD720D728D729D72BD72DD734D735
+D738D73CD744D747D749D750D751D754D756D757D758D759D760D761D763D765
+D769D76CD770D774D77CD77DD781D788D789D78CD790D798D799D79BD79D0000
+CA
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00004F3D4F73504750F952A053EF547554E556095AC15BB6668767B667B767EF
+6B4C73C275C27A3C82DB8304885788888A368CC88DCF8EFB8FE699D5523B5374
+5404606A61646BBC73CF811A89BA89D295A34F83520A58BE597859E65E725E79
+61C763C0674667EC687F6F97764E770B78F57A087AFF7C21809D826E82718AEB
+95934E6B559D66F76E3478A37AED845B8910874E97A852D8574E582A5D4C611F
+61BE6221656267D16A446E1B751875B376E377B07D3A90AF945194529F950000
+CB
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000053235CAC753280DB92409598525B580859DC5CA15D175EB75F3A5F4A6177
+6C5F757A75867CE07D737DB17F8C81548221859189418B1B92FC964D9C474ECB
+4EF7500B51F1584F6137613E6168653969EA6F1175A5768676D67B8782A584CB
+F90093A7958B55805BA25751F9017CB37FB991B5502853BB5C455DE862D2636E
+64DA64E76E2070AC795B8DDD8E1EF902907D924592F84E7E4EF650655DFE5EFA
+61066957817186548E4793759A2B4E5E5091677068405109528D52926AA20000
+CC
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000077BC92109ED452AB602F8FF2504861A963ED64CA683C6A846FC0818889A1
+96945805727D72AC75047D797E6D80A9898B8B7490639D5162896C7A6F547D50
+7F3A8A23517C614A7B9D8B199257938C4EAC4FD3501E50BE510652C152CD537F
+577058835E9A5F91617661AC64CE656C666F66BB66F468976D87708570F1749F
+74A574CA75D9786C78EC7ADF7AF67D457D938015803F811B83968B668F159015
+93E1980398389A5A9BE84FC25553583A59515B635C4660B86212684268B00000
+CD
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000068E86EAA754C767878CE7A3D7CFB7E6B7E7C8A088AA18C3F968E9DC453E4
+53E9544A547156FA59D15B645C3B5EAB62F765376545657266A067AF69C16CBD
+75FC7690777E7A3F7F94800380A1818F82E682FD83F085C1883188B48AA5F903
+8F9C932E96C798679AD89F1354ED659B66F2688F7A408C379D6056F057645D11
+660668B168CD6EFE7428889E9BE46C68F9049AA84F9B516C5171529F5B545DE5
+6050606D62F163A7653B73D97A7A86A38CA2978F4E325BE16208679C74DC0000
+CE
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000079D183D38A878AB28DE8904E934B98465ED369E885FF90EDF90551A05B98
+5BEC616368FA6B3E704C742F74D87BA17F5083C589C08CAB95DC9928522E605D
+62EC90024F8A5149532158D95EE366E06D38709A72C273D67B5080F1945B5366
+639B7F6B4E565080584A58DE602A612762D069D09B415B8F7D1880B18F5F4EA4
+50D154AC55AC5B0C5DA05DE7652A654E68216A4B72E1768E77EF7D5E7FF981A0
+854E86DF8F038F4E90CA99039A559BAB4E184E454E5D4EC74FF1517752FE0000
+CF
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000534053E353E5548E5614577557A25BC75D875ED061FC62D8655167B867E9
+69CB6B506BC66BEC6C426E9D707872D77396740377BF77E97A767D7F800981FC
+8205820A82DF88628B338CFC8EC0901190B1926492B699D29A459CE99DD79F9C
+570B5C4083CA97A097AB9EB4541B7A987FA488D98ECD90E158005C4863987A9F
+5BAE5F137A797AAE828E8EAC5026523852F85377570862F363726B0A6DC37737
+53A5735785688E7695D5673A6AC36F708A6D8ECC994BF90666776B788CB40000
+D0
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00009B3CF90753EB572D594E63C669FB73EA78457ABA7AC57CFE8475898F8D73
+903595A852FB574775477B6083CC921EF9086A58514B524B5287621F68D86975
+969950C552A452E461C365A4683969FF747E7B4B82B983EB89B28B398FD19949
+F9094ECA599764D266116A8E7434798179BD82A9887E887F895FF90A93264F0B
+53CA602562716C727D1A7D664E98516277DC80AF4F014F0E5176518055DC5668
+573B57FA57FC5914594759935BC45C905D0E5DF15E7E5FCC628065D765E30000
+D1
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000671E671F675E68CB68C46A5F6B3A6C236C7D6C826DC773987426742A7482
+74A37578757F788178EF794179477948797A7B957D007DBA7F888006802D808C
+8A188B4F8C488D779321932498E299519A0E9A0F9A659E927DCA4F76540962EE
+685491D155AB513AF90BF90C5A1C61E6F90D62CF62FFF90EF90FF910F911F912
+F91390A3F914F915F916F917F9188AFEF919F91AF91BF91C6696F91D7156F91E
+F91F96E3F920634F637A5357F921678F69606E73F9227537F923F924F9250000
+D2
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00007D0DF926F927887256CA5A18F928F929F92AF92BF92C4E43F92D51675948
+67F08010F92E59735E74649A79CA5FF5606C62C8637B5BE75BD752AAF92F5974
+5F296012F930F931F9327459F933F934F935F936F937F93899D1F939F93AF93B
+F93CF93DF93EF93FF940F941F942F9436FC3F944F94581BF8FB260F1F946F947
+8166F948F9495C3FF94AF94BF94CF94DF94EF94FF950F9515AE98A25677B7D10
+F952F953F954F955F956F95780FDF958F9595C3C6CE5533F6EBA591A83360000
+D3
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00004E394EB64F4655AE571858C75F5665B765E66A806BB56E4D77ED7AEF7C1E
+7DDE86CB88929132935B64BB6FBE737A75B890545556574D61BA64D466C76DE1
+6E5B6F6D6FB975F0804381BD854189838AC78B5A931F6C9375537B548E0F905D
+5510580258585E626207649E68E075767CD687B39EE84EE35788576E59275C0D
+5CB15E365F85623464E173B381FA888B8CB8968A9EDB5B855FB760B350125200
+52305716583558575C0E5C605CF65D8B5EA65F9260BC63116389641768430000
+D4
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000068F96AC26DD86E216ED46FE471FE76DC777979B17A3B840489A98CED8DF3
+8E4890039014905390FD934D967697DC6BD27006725872A27368776379BF7BE4
+7E9B8B8058A960C7656665FD66BE6C8C711E71C98C5A98134E6D7A814EDD51AC
+51CD52D5540C61A76771685068DF6D1E6F7C75BC77B37AE580F484639285515C
+6597675C679375D87AC78373F95A8C469017982D5C6F81C0829A9041906F920D
+5F975D9D6A5971C8767B7B4985E48B0491279A30558761F6F95B76697F850000
+D5
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000863F87BA88F8908FF95C6D1B70D973DE7D61843DF95D916A99F1F95E4E82
+53756B046B12703E721B862D9E1E524C8FA35D5064E5652C6B166FEB7C437E9C
+85CD896489BD62C981D8881F5ECA67176D6A72FC7405746F878290DE4F865D0D
+5FA0840A51B763A075654EAE5006516951C968816A117CAE7CB17CE7826F8AD2
+8F1B91CF4FB6513752F554425EEC616E623E65C56ADA6FFE792A85DC882395AD
+9A629A6A9E979ECE529B66C66B77701D792B8F6297426190620065236F230000
+D6
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000714974897DF4806F84EE8F269023934A51BD521752A36D0C70C888C25EC9
+65826BAE6FC27C3E73754EE44F3656F9F95F5CBA5DBA601C73B27B2D7F9A7FCE
+8046901E923496F6974898189F614F8B6FA779AE91B496B752DEF960648864C4
+6AD36F5E7018721076E780018606865C8DEF8F0597329B6F9DFA9E75788C797F
+7DA083C993049E7F9E938AD658DF5F046727702774CF7C60807E512170287262
+78CA8CC28CDA8CF496F74E8650DA5BEE5ED6659971CE764277AD804A84FC0000
+D7
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000907C9B279F8D58D85A415C626A136DDA6F0F763B7D2F7E37851E893893E4
+964B528965D267F369B46D416E9C700F7409746075597624786B8B2C985E516D
+622E96784F96502B5D196DEA7DB88F2A5F8B61446817F961968652D2808B51DC
+51CC695E7A1C7DBE83F196754FDA52295398540F550E5C6560A7674E68A86D6C
+728172F874067483F96275E27C6C7F797FB8838988CF88E191CC91D096E29BC9
+541D6F7E71D0749885FA8EAA96A39C579E9F67976DCB743381E89716782C0000
+D8
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00007ACB7B207C926469746A75F278BC78E899AC9B549EBB5BDE5E556F20819C
+83AB90884E07534D5A295DD25F4E6162633D666966FC6EFF6F2B7063779E842C
+8513883B8F1399459C3B551C62B9672B6CAB8309896A977A4EA159845FD85FD9
+671B7DB27F548292832B83BD8F1E909957CB59B95A925BD06627679A68856BCF
+71647F758CB78CE390819B4581088C8A964C9A409EA55B5F6C13731B76F276DF
+840C51AA8993514D519552C968C96C94770477207DBF7DEC97629EB56EC50000
+D9
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000851151A5540D547D660E669D69276E9F76BF7791831784C2879F91699298
+9CF488824FAE519252DF59C65E3D61556478647966AE67D06A216BCD6BDB725F
+72617441773877DB801782BC83058B008B288C8C67286C90726776EE77667A46
+9DA96B7F6C92592267268499536F589359995EDF63CF663467736E3A732B7AD7
+82D7932852D95DEB61AE61CB620A62C764AB65E069596B666BCB712173F7755D
+7E46821E8302856A8AA38CBF97279D6158A89ED85011520E543B554F65870000
+DA
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00006C767D0A7D0B805E868A958096EF52FF6C95726954735A9A5C3E5D4B5F4C
+5FAE672A68B669636E3C6E4477097C737F8E85878B0E8FF797619EF45CB760B6
+610D61AB654F65FB65FC6C116CEF739F73C97DE195945BC6871C8B10525D535A
+62CD640F64B267346A386CCA73C0749E7B947C957E1B818A823685848FEB96F9
+99C14F34534A53CD53DB62CC642C6500659169C36CEE6F5873ED7554762276E4
+76FC78D078FB792C7D46822C87E08FD4981298EF52C362D464A56E246F510000
+DB
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000767C8DCB91B192629AEE9B435023508D574A59A85C285E475F77623F653E
+65B965C16609678B699C6EC278C57D2180AA8180822B82B384A1868C8A2A8B17
+90A696329F90500D4FF3F96357F95F9862DC6392676F6E43711976C380CC80DA
+88F488F589198CE08F29914D966A4F2F4F705E1B67CF6822767D767E9B445E61
+6A0A716971D4756AF9647E41854385E998DC4F107B4F7F7095A551E15E0668B5
+6C3E6C4E6CDB72AF7BC483036CD5743A50FB528858C164D86A9774A776560000
+DC
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000078A7861795E29739F965535E5F018B8A8FA88FAF908A522577A59C499F08
+4E19500251755C5B5E77661E663A67C468C570B3750175C579C97ADD8F279920
+9A084FDD582158315BF6666E6B656D116E7A6F7D73E4752B83E988DC89138B5C
+8F144F0F50D55310535C5B935FA9670D798F8179832F8514890789868F398F3B
+99A59C12672C4E764FF859495C015CEF5CF0636768D270FD71A2742B7E2B84EC
+8702902292D29CF34E0D4ED84FEF50855256526F5426549057E0592B5A660000
+DD
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00005B5A5B755BCC5E9CF9666276657765A76D6E6EA572367B267C3F7F368150
+8151819A8240829983A98A038CA08CE68CFB8D748DBA90E891DC961C964499D9
+9CE7531752065429567458B35954596E5FFF61A4626E66106C7E711A76C67C89
+7CDE7D1B82AC8CC196F0F9674F5B5F175F7F62C25D29670B68DA787C7E439D6C
+4E1550995315532A535159835A625E8760B2618A624962796590678769A76BD4
+6BD66BD76BD86CB8F968743575FA7812789179D579D87C837DCB7FE180A50000
+DE
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000813E81C283F2871A88E88AB98B6C8CBB9119975E98DB9F3B56AC5B2A5F6C
+658C6AB36BAF6D5C6FF17015725D73AD8CA78CD3983B61916C3780589A014E4D
+4E8B4E9B4ED54F3A4F3C4F7F4FDF50FF53F253F8550655E356DB58EB59625A11
+5BEB5BFA5C045DF35E2B5F99601D6368659C65AF67F667FB68AD6B7B6C996CD7
+6E23700973457802793E7940796079C17BE97D177D728086820D838E84D186C7
+88DF8A508A5E8B1D8CDC8D668FAD90AA98FC99DF9E9D524AF9696714F96A0000
+DF
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00005098522A5C7165636C5573CA7523759D7B97849C917897304E7764926BBA
+715E85A94E09F96B674968EE6E17829F8518886B63F76F81921298AF4E0A50B7
+50CF511F554655AA56175B405C195CE05E385E8A5EA05EC260F368516A616E58
+723D724072C076F879657BB17FD488F389F48A738C618CDE971C585E74BD8CFD
+55C7F96C7A617D2282727272751F7525F96D7B19588558FB5DBC5E8F5EB65F90
+60556292637F654D669166D966F8681668F27280745E7B6E7D6E7DD67F720000
+E0
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000080E5821285AF897F8A93901D92E49ECD9F205915596D5E2D60DC66146673
+67906C506DC56F5F77F378A984C691CB932B4ED950CA514855845B0B5BA36247
+657E65CB6E32717D74017444748774BF766C79AA7DDA7E557FA8817A81B38239
+861A87EC8A758DE3907892919425994D9BAE53685C5169546CC46D296E2B820C
+859B893B8A2D8AAA96EA9F67526166B96BB27E9687FE8D0D9583965D651D6D89
+71EEF96E57CE59D35BAC602760FA6210661F665F732973F976DB77017B6C0000
+E1
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00008056807281658AA091924E1652E26B726D177A057B397D30F96F8CB053EC
+562F58515BB55C0F5C115DE2624063836414662D68B36CBC6D886EAF701F70A4
+71D27526758F758E76197B117BE07C2B7D207D39852C856D86078A34900D9061
+90B592B797F69A374FD75C6C675F6D917C9F7E8C8B168D16901F5B6B5DFD640D
+84C0905C98E173875B8B609A677E6DDE8A1F8AA69001980C5237F9707051788E
+9396887091D74FEE53D755FD56DA578258FD5AC25B885CAB5CC05E2561010000
+E2
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000620D624B6388641C653665786A396B8A6C346D196F3171E772E973787407
+74B27626776179C07A577AEA7CB97D8F7DAC7E617F9E81298331849084DA85EA
+88968AB08B908F3890429083916C929692B9968B96A796A896D6970098089996
+9AD39B1A53D4587E59195B705BBF6DD16F5A719F742174B9808583FD5DE15F87
+5FAA604265EC6812696F6A536B896D356DF373E376FE77AC7B4D7D148123821C
+834084F485638A628AC49187931E980699B4620C88538FF092655D075D270000
+E3
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00005D69745F819D87686FD562FE7FD2893689724E1E4E5850E752DD5347627F
+66077E698805965E4F8D5319563659CB5AA45C385C4E5C4D5E025F11604365BD
+662F664267BE67F4731C77E2793A7FC5849484CD89968A668A698AE18C558C7A
+57F45BD45F0F606F62ED690D6B966E5C71847BD287558B588EFE98DF98FE4F38
+4F814FE1547B5A205BB8613C65B0666871FC7533795E7D33814E81E3839885AA
+85CE87038A0A8EAB8F9BF9718FC559315BA45BE660895BE95C0B5FC36C810000
+E4
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000F9726DF1700B751A82AF8AF64EC05341F97396D96C0F4E9E4FC45152555E
+5A255CE86211725982BD83AA86FE88598A1D963F96C599139D099D5D580A5CB3
+5DBD5E4460E1611563E16A026E2591029354984E9C109F775B895CB86309664F
+6848773C96C1978D98549B9F65A18B018ECB95BC55355CA95DD65EB56697764C
+83F495C758D362BC72CE9D284EF0592E600F663B6B8379E79D26539354C057C3
+5D16611B66D66DAF788D827E969897445384627C63966DB27E0A814B984D0000
+E5
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00006AFB7F4C9DAF9E1A4E5F503B51B6591C60F963F66930723A8036F97491CE
+5F31F975F9767D0482E5846F84BB85E58E8DF9774F6FF978F97958E45B436059
+63DA6518656D6698F97A694A6A236D0B7001716C75D2760D79B37A70F97B7F8A
+F97C8944F97D8B9391C0967DF97E990A57045FA165BC6F01760079A68A9E99AD
+9B5A9F6C510461B662916A8D81C6504358305F6671098A008AFA5B7C86164FFA
+513C56B4594463A96DF95DAA696D51864E884F59F97FF980F9815982F9820000
+E6
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000F9836B5F6C5DF98474B57916F9858207824583398F3F8F5DF9869918F987
+F988F9894EA6F98A57DF5F796613F98BF98C75AB7E798B6FF98D90069A5B56A5
+582759F85A1F5BB4F98E5EF6F98FF9906350633BF991693D6C876CBF6D8E6D93
+6DF56F14F99270DF71367159F99371C371D5F994784F786FF9957B757DE3F996
+7E2FF997884D8EDFF998F999F99A925BF99B9CF6F99CF99DF99E60856D85F99F
+71B1F9A0F9A195B153ADF9A2F9A3F9A467D3F9A5708E71307430827682D20000
+E7
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000F9A695BB9AE59E7D66C4F9A771C18449F9A8F9A9584BF9AAF9AB5DB85F71
+F9AC6620668E697969AE6C386CF36E366F416FDA701B702F715071DF7370F9AD
+745BF9AE74D476C87A4E7E93F9AFF9B082F18A608FCEF9B19348F9B29719F9B3
+F9B44E42502AF9B5520853E166F36C6D6FCA730A777F7A6282AE85DD8602F9B6
+88D48A638B7D8C6BF9B792B3F9B8971398104E944F0D4FC950B25348543E5433
+55DA586258BA59675A1B5BE4609FF9B961CA655665FF666468A76C5A6FB30000
+E8
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000070CF71AC73527B7D87088AA49C329F075C4B6C8373447389923A6EAB7465
+761F7A697E15860A514058C564C174EE751576707FC1909596CD99546E2674E6
+7AA97AAA81E586D987788A1B5A495B8C5B9B68A169006D6373A97413742C7897
+7DE97FEB81188155839E8C4C962E981166F05F8065FA67896C6A738B502D5A03
+6B6A77EE59165D6C5DCD7325754FF9BAF9BB50E551F9582F592D599659DA5BE5
+F9BCF9BD5DA262D76416649364FEF9BE66DCF9BF6A48F9C071FF7464F9C10000
+E9
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00007A887AAF7E477E5E80008170F9C287EF89818B209059F9C390809952617E
+6B326D747E1F89258FB14FD150AD519752C757C758895BB95EB8614269956D8C
+6E676EB6719474627528752C8073833884C98E0A939493DEF9C44E8E4F515076
+512A53C853CB53F35B875BD35C24611A618265F4725B7397744076C279507991
+79B97D067FBD828B85D5865E8FC2904790F591EA968596E896E952D65F6765ED
+6631682F715C7A3690C1980A4E91F9C56A526B9E6F907189801882B885530000
+EA
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000904B969596F297FB851A9B314E90718A96C45143539F54E15713571257A3
+5A9B5AC45BC36028613F63F46C856D396E726E907230733F745782D188818F45
+9060F9C6966298589D1B67088D8A925E4F4D504950DE5371570D59D45A015C09
+617066906E2D7232744B7DEF80C3840E8466853F875F885B89188B02905597CB
+9B4F4E734F915112516AF9C7552F55A95B7A5BA55E7C5E7D5EBE60A060DF6108
+610963C465386709F9C867D467DAF9C9696169626CB96D27F9CA6E38F9CB0000
+EB
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00006FE173367337F9CC745C7531F9CD7652F9CEF9CF7DAD81FE843888D58A98
+8ADB8AED8E308E42904A903E907A914991C9936EF9D0F9D15809F9D26BD38089
+80B2F9D3F9D45141596B5C39F9D5F9D66F6473A780E48D07F9D79217958FF9D8
+F9D9F9DAF9DB807F620E701C7D68878DF9DC57A0606961476BB78ABE928096B1
+4E59541F6DEB852D967097F398EE63D66CE3909151DD61C981BA9DF94F9D501A
+51005B9C610F61FF64EC69056BC5759177E37FA98264858F87FB88638ABC0000
+EC
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00008B7091AB4E8C4EE54F0AF9DDF9DE593759E8F9DF5DF25F1B5F5B6021F9E0
+F9E1F9E2F9E3723E73E5F9E4757075CDF9E579FBF9E6800C8033808482E18351
+F9E7F9E88CBD8CB39087F9E9F9EA98F4990CF9EBF9EC703776CA7FCA7FCC7FFC
+8B1A4EBA4EC152035370F9ED54BD56E059FB5BC55F155FCD6E6EF9EEF9EF7D6A
+8335F9F086938A8DF9F1976D9777F9F2F9F34E004F5A4F7E58F965E56EA29038
+93B099B94EFB58EC598A59D96041F9F4F9F57A14F9F6834F8CC3516553440000
+ED
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000F9F7F9F8F9F94ECD52695B5582BF4ED4523A54A859C959FF5B505B575B5C
+606361486ECB7099716E738674F775B578C17D2B800581EA8328851785C98AEE
+8CC796CC4F5C52FA56BC65AB6628707C70B872357DBD828D914C96C09D725B71
+68E76B986F7A76DE5C9166AB6F5B7BB47C2A883696DC4E084ED75320583458BB
+58EF596C5C075E335E845F35638C66B267566A1F6AA36B0C6F3F7246F9FA7350
+748B7AE07CA7817881DF81E7838A846C8523859485CF88DD8D1391AC95770000
+EE
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000969C518D54C957285BB0624D6750683D68936E3D6ED3707D7E2188C18CA1
+8F099F4B9F4E722D7B8F8ACD931A4F474F4E5132548059D05E9562B56775696E
+6A176CAE6E1A72D9732A75BD7BB87D3582E783F9845785F78A5B8CAF8E879019
+90B896CE9F5F52E3540A5AE15BC2645865756EF472C4F9FB76847A4D7B1B7C4D
+7E3E7FDF837B8B2B8CCA8D648DE18E5F8FEA8FF9906993D14F434F7A50B35168
+5178524D526A5861587C59605C085C555EDB609B623068136BBF6C086FB10000
+EF
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000714E742075307538755176727B4C7B8B7BAD7BC67E8F8A6E8F3E8F49923F
+92939322942B96FB985A986B991E5207622A62986D5976647ACA7BC07D765360
+5CBE5E976F3870B97C9897119B8E9EDE63A5647A87764E014E954EAD505C5075
+544859C35B9A5E405EAD5EF75F8160C5633A653F657465CC6676667867FE6968
+6A896B636C406DC06DE86E1F6E5E701E70A1738E73FD753A775B7887798E7A0B
+7A7D7CBE7D8E82478A028AEA8C9E912D914A91D8926692CC9320970697560000
+F0
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000975C98029F0E52365291557C58245E1D5F1F608C63D068AF6FDF796D7B2C
+81CD85BA88FD8AF88E44918D9664969B973D984C9F4A4FCE514651CB52A95632
+5F145F6B63AA64CD65E9664166FA66F9671D689D68D769FD6F156F6E716771E5
+722A74AA773A7956795A79DF7A207A957C977CDF7D447E70808785FB86A48A54
+8ABF8D998E819020906D91E3963B96D59CE565CF7C078DB393C35B585C0A5352
+62D9731D50275B975F9E60B0616B68D56DD9742E7A2E7D427D9C7E31816B0000
+F1
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00008E2A8E35937E94184F5057505DE65EA7632B7F6A4E3B4F4F4F8F505A59DD
+80C4546A546855FE594F5B995DDE5EDA665D673167F1682A6CE86D326E4A6F8D
+70B773E075877C4C7D027D2C7DA2821F86DB8A3B8A858D708E8A8F339031914E
+9152944499D07AF97CA54FCA510151C657C85BEF5CFB66596A3D6D5A6E966FEC
+710C756F7AE388229021907596CB99FF83014E2D4EF2884691CD537D6ADB696B
+6C41847A589E618E66FE62EF70DD751175C77E5284B88B498D084E4B53EA0000
+F2
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000054AB573057405FD763016307646F652F65E8667A679D67B36B626C606C9A
+6F2C77E57825794979577D1980A2810281F3829D82B787188A8CF9FC8D048DBE
+907276F47A197A377E548077550755D45875632F64226649664B686D699B6B84
+6D256EB173CD746874A1755B75B976E1771E778B79E67E097E1D81FB852F8897
+8A3A8CD18EEB8FB0903293AD9663967397074F8453F159EA5AC95E19684E74C6
+75BE79E97A9281A386ED8CEA8DCC8FED659F6715F9FD57F76F577DDD8F2F0000
+F3
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000093F696C65FB561F26F844E144F98501F53C955DF5D6F5DEE6B216B6478CB
+7B9AF9FE8E498ECA906E6349643E77407A84932F947F9F6A64B06FAF71E674A8
+74DA7AC47C127E827CB27E988B9A8D0A947D9910994C52395BDF64E6672D7D2E
+50ED53C358796158615961FA65AC7AD98B928B9650095021527555315A3C5EE0
+5F706134655E660C663666A269CD6EC46F32731676217A938139825983D684BC
+50B557F05BC05BE85F6963A178267DB583DC852191C791F5518A67F57B560000
+F4
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00008CAC51C459BB60BD8655501CF9FF52545C3A617D621A62D364F265A56ECC
+7620810A8E60965F96BB4EDF5343559859295DDD64C56CC96DFA73947A7F821B
+85A68CE48E10907791E795E1962197C651F854F255865FB964A46F887DB48F1F
+8F4D943550C95C166CBE6DFB751B77BB7C3D7C648A798AC2581E59BE5E166377
+7252758A776B8ADC8CBC8F125EF366746DF8807D83C18ACB97519BD6FA005243
+66FF6D956EEF7DE08AE6902E905E9AD4521D527F54E86194628462DB68A20000
+F5
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00006912695A6A3570927126785D7901790E79D27A0D8096827882D583498549
+8C828D859162918B91AE4FC356D171ED77D7870089F85BF85FD6675190A853E2
+585A5BF560A4618164607E3D80708525928364AE50AC5D146700589C62BD63A8
+690E69786A1E6E6B76BA79CB82BB84298ACF8DA88FFD9112914B919C93109318
+939A96DB9A369C0D4E11755C795D7AFA7B517BC97E2E84C48E598E748EF89010
+6625693F744351FA672E9EDC51455FE06C9687F2885D887760B481B584030000
+F6
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00008D0553D6543956345A365C31708A7FE0805A810681ED8DA391899A5F9DF2
+50744EC453A060FB6E2C5C644F88502455E45CD95E5F606568946CBB6DC471BE
+75D475F476617A1A7A497DC77DFB7F6E81F486A98F1C96C999B39F52524752C5
+98ED89AA4E0367D26F064FB55BE267956C886D78741B782791DD937C87C479E4
+7A315FEB4ED654A4553E58AE59A560F0625362D6673669558235964099B199DD
+502C53535544577CFA016258FA0264E2666B67DD6FC16FEF742274388A170000
+F7
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000094385451560657665F48619A6B4E705870AD7DBB8A95596A812B63A27708
+803D8CAA5854642D69BB5B955E116E6FFA038569514C53F0592A6020614B6B86
+6C706CF07B1E80CE82D48DC690B098B1FA0464C76FA464916504514E5410571F
+8A0E615F6876FA0575DB7B527D71901A580669CC817F892A9000983950785957
+59AC6295900F9B2A615D727995D657615A465DF4628A64AD64FA67776CE26D3E
+722C743678347F7782AD8DDB981752245742677F724874E38CA98FA692110000
+F8
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000962A516B53ED634C4F695504609665576C9B6D7F724C72FD7A1789878C9D
+5F6D6F8E70F981A8610E4FBF504F624172477BC77DE87FE9904D97AD9A198CB6
+576A5E7367B0840D8A5554205B165E635EE25F0A658380BA853D9589965B4F48
+5305530D530F548654FA57035E036016629B62B16355FA066CE16D6675B17832
+80DE812F82DE846184B2888D8912900B92EA98FD9B915E4566B466DD70117206
+FA074FF5527D5F6A615367536A196F0274E2796888688C7998C798C49A430000
+F9
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000054C17A1F69538AF78C4A98A899AE5F7C62AB75B276AE88AB907F96425339
+5F3C5FC56CCC73CC7562758B7B4682FE999D4E4F903C4E0B4F5553A6590F5EC8
+66306CB37455837787668CC09050971E9C1558D15B7886508B149DB45BD26068
+608D65F16C576F226FA3701A7F557FF095919592965097D352728F4451FD542B
+54B85563558A6ABB6DB57DD88266929C96779E79540854C876D286E495A495D4
+965C4EA24F0959EE5AE65DF760526297676D68416C866E2F7F38809B822A0000
+FA
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000FA08FA0998054EA5505554B35793595A5B695BB361C869776D77702387F9
+89E38A728AE7908299ED9AB852BE683850165E78674F8347884C4EAB541156AE
+73E6911597FF9909995799995653589F865B8A3161B26AF6737B8ED26B4796AA
+9A57595572008D6B97694FD45CF45F2661F8665B6CEB70AB738473B973FE7729
+774D7D437D627E2382378852FA0A8CE29249986F5B517A74884098015ACC4FE0
+5354593E5CFD633E6D7972F98105810783A292CF98304EA851445211578B0000
+FB
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00005F626CC26ECE7005705070AF719273E97469834A87A28861900890A293A3
+99A8516E5F5760E0616766B385598E4A91AF978B4E4E4E92547C58D558FA597D
+5CB55F2762366248660A66676BEB6D696DCF6E566EF86F946FE06FE9705D72D0
+7425745A74E07693795C7CCA7E1E80E182A6846B84BF864E865F87748B778C6A
+93AC9800986560D1621691775A5A660F6DF76E3E743F9B425FFD60DA7B0F54C4
+5F186C5E6CD36D2A70D87D0586798A0C9D3B5316548C5B056A3A706B75750000
+FC
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000798D79BE82B183EF8A718B418CA89774FA0B64F4652B78BA78BB7A6B4E38
+559A59505BA65E7B60A363DB6B61666568536E19716574B07D0890849A699C25
+6D3B6ED1733E8C4195CA51F05E4C5FA8604D60F66130614C6643664469A56CC1
+6E5F6EC96F62714C749C76877BC17C27835287579051968D9EC3532F56DE5EFB
+5F8A6062609461F7666667036A9C6DEE6FAE7070736A7E6A81BE833486D48AA8
+8CC4528373725B966A6B940454EE56865B5D6548658566C9689F6D8D6DC60000
+FD
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000723B80B491759A4D4FAF5019539A540E543C558955C55E3F5F8C673D7166
+73DD900552DB52F3586458CE7104718F71FB85B08A13668885A855A76684714A
+8431534955996BC15F595FBD63EE668971478AF18F1D9EBE4F11643A70CB7566
+866760648B4E9DF8514751F653086D3680F89ED166156B23709875D554035C79
+7D078A166B206B3D6B46543860706D3D7FD5820850D651DE559C566B56CD59EC
+5B095E0C619961986231665E66E6719971B971BA72A779A77A007FB28A700000


Property changes on: trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp949.enc
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp950.enc
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp950.enc	                        (rev 0)
+++ trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp950.enc	2020-03-17 20:46:21 UTC (rev 54375)
@@ -0,0 +1,1499 @@
+# Encoding file: cp950, multi-byte
+M
+003F 0 88
+00
+0000000100020003000400050006000700080009000A000B000C000D000E000F
+0010001100120013001400150016001700180019001A001B001C001D001E001F
+0020002100220023002400250026002700280029002A002B002C002D002E002F
+0030003100320033003400350036003700380039003A003B003C003D003E003F
+0040004100420043004400450046004700480049004A004B004C004D004E004F
+0050005100520053005400550056005700580059005A005B005C005D005E005F
+0060006100620063006400650066006700680069006A006B006C006D006E006F
+0070007100720073007400750076007700780079007A007B007C007D007E007F
+0080008100820083008400850086008700880089008A008B008C008D008E008F
+0090009100920093009400950096009700980099009A009B009C009D009E009F
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+A1
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+3000FF0C30013002FF0E2027FF1BFF1AFF1FFF01FE3020262025FE50FE51FE52
+00B7FE54FE55FE56FE57FF5C2013FE312014FE332574FE34FE4FFF08FF09FE35
+FE36FF5BFF5DFE37FE3830143015FE39FE3A30103011FE3BFE3C300A300BFE3D
+FE3E30083009FE3FFE40300C300DFE41FE42300E300FFE43FE44FE59FE5A0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000FE5BFE5CFE5DFE5E20182019201C201D301D301E20352032FF03FF06FF0A
+203B00A7300325CB25CF25B325B225CE2606260525C725C625A125A025BD25BC
+32A3210500AFFFE3FF3F02CDFE49FE4AFE4DFE4EFE4BFE4CFE5FFE60FE61FF0B
+FF0D00D700F700B1221AFF1CFF1EFF1D226622672260221E22522261FE62FE63
+FE64FE65FE66FF5E2229222A22A52220221F22BF33D233D1222B222E22352234
+26402642229522992191219321902192219621972199219822252223FF0F0000
+A2
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+FF3C2215FE68FF04FFE53012FFE0FFE1FF05FF2021032109FE69FE6AFE6B33D5
+339C339D339E33CE33A1338E338F33C400B05159515B515E515D5161516355E7
+74E97CCE25812582258325842585258625872588258F258E258D258C258B258A
+2589253C2534252C2524251C2594250025022595250C251025142518256D0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000256E2570256F2550255E256A256125E225E325E525E4257125722573FF10
+FF11FF12FF13FF14FF15FF16FF17FF18FF192160216121622163216421652166
+216721682169302130223023302430253026302730283029534153445345FF21
+FF22FF23FF24FF25FF26FF27FF28FF29FF2AFF2BFF2CFF2DFF2EFF2FFF30FF31
+FF32FF33FF34FF35FF36FF37FF38FF39FF3AFF41FF42FF43FF44FF45FF46FF47
+FF48FF49FF4AFF4BFF4CFF4DFF4EFF4FFF50FF51FF52FF53FF54FF55FF560000
+A3
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+FF57FF58FF59FF5A039103920393039403950396039703980399039A039B039C
+039D039E039F03A003A103A303A403A503A603A703A803A903B103B203B303B4
+03B503B603B703B803B903BA03BB03BC03BD03BE03BF03C003C103C303C403C5
+03C603C703C803C931053106310731083109310A310B310C310D310E310F0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00003110311131123113311431153116311731183119311A311B311C311D311E
+311F312031213122312331243125312631273128312902D902C902CA02C702CB
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000020AC00000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+A4
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+4E004E594E014E034E434E5D4E864E8C4EBA513F5165516B51E052005201529B
+53155341535C53C84E094E0B4E084E0A4E2B4E3851E14E454E484E5F4E5E4E8E
+4EA15140520352FA534353C953E3571F58EB5915592759735B505B515B535BF8
+5C0F5C225C385C715DDD5DE55DF15DF25DF35DFE5E725EFE5F0B5F13624D0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00004E114E104E0D4E2D4E304E394E4B5C394E884E914E954E924E944EA24EC1
+4EC04EC34EC64EC74ECD4ECA4ECB4EC4514351415167516D516E516C519751F6
+52065207520852FB52FE52FF53165339534853475345535E538453CB53CA53CD
+58EC5929592B592A592D5B545C115C245C3A5C6F5DF45E7B5EFF5F145F155FC3
+62086236624B624E652F6587659765A465B965E566F0670867286B206B626B79
+6BCB6BD46BDB6C0F6C34706B722A7236723B72477259725B72AC738B4E190000
+A5
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+4E164E154E144E184E3B4E4D4E4F4E4E4EE54ED84ED44ED54ED64ED74EE34EE4
+4ED94EDE514551445189518A51AC51F951FA51F8520A52A0529F530553065317
+531D4EDF534A534953615360536F536E53BB53EF53E453F353EC53EE53E953E8
+53FC53F853F553EB53E653EA53F253F153F053E553ED53FB56DB56DA59160000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000592E5931597459765B555B835C3C5DE85DE75DE65E025E035E735E7C5F01
+5F185F175FC5620A625362546252625165A565E6672E672C672A672B672D6B63
+6BCD6C116C106C386C416C406C3E72AF7384738974DC74E67518751F75287529
+7530753175327533758B767D76AE76BF76EE77DB77E277F3793A79BE7A747ACB
+4E1E4E1F4E524E534E694E994EA44EA64EA54EFF4F094F194F0A4F154F0D4F10
+4F114F0F4EF24EF64EFB4EF04EF34EFD4F014F0B514951475146514851680000
+A6
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+5171518D51B0521752115212520E521652A3530853215320537053715409540F
+540C540A54105401540B54045411540D54085403540E5406541256E056DE56DD
+573357305728572D572C572F57295919591A59375938598459785983597D5979
+598259815B575B585B875B885B855B895BFA5C165C795DDE5E065E765E740000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00005F0F5F1B5FD95FD6620E620C620D62106263625B6258653665E965E865EC
+65ED66F266F36709673D6734673167356B216B646B7B6C166C5D6C576C596C5F
+6C606C506C556C616C5B6C4D6C4E7070725F725D767E7AF97C737CF87F367F8A
+7FBD80018003800C80128033807F8089808B808C81E381EA81F381FC820C821B
+821F826E8272827E866B8840884C8863897F96214E324EA84F4D4F4F4F474F57
+4F5E4F344F5B4F554F304F504F514F3D4F3A4F384F434F544F3C4F464F630000
+A7
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+4F5C4F604F2F4F4E4F364F594F5D4F484F5A514C514B514D517551B651B75225
+52245229522A522852AB52A952AA52AC532353735375541D542D541E543E5426
+544E542754465443543354485442541B5429544A5439543B5438542E54355436
+5420543C54405431542B541F542C56EA56F056E456EB574A57515740574D0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00005747574E573E5750574F573B58EF593E599D599259A8599E59A359995996
+598D59A45993598A59A55B5D5B5C5B5A5B5B5B8C5B8B5B8F5C2C5C405C415C3F
+5C3E5C905C915C945C8C5DEB5E0C5E8F5E875E8A5EF75F045F1F5F645F625F77
+5F795FD85FCC5FD75FCD5FF15FEB5FF85FEA6212621162846297629662806276
+6289626D628A627C627E627962736292626F6298626E62956293629162866539
+653B653865F166F4675F674E674F67506751675C6756675E6749674667600000
+A8
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+675367576B656BCF6C426C5E6C996C816C886C896C856C9B6C6A6C7A6C906C70
+6C8C6C686C966C926C7D6C836C726C7E6C746C866C766C8D6C946C986C827076
+707C707D707872627261726072C472C27396752C752B75377538768276EF77E3
+79C179C079BF7A767CFB7F5580968093809D8098809B809A80B2826F82920000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000828B828D898B89D28A008C378C468C558C9D8D648D708DB38EAB8ECA8F9B
+8FB08FC28FC68FC58FC45DE1909190A290AA90A690A3914991C691CC9632962E
+9631962A962C4E264E564E734E8B4E9B4E9E4EAB4EAC4F6F4F9D4F8D4F734F7F
+4F6C4F9B4F8B4F864F834F704F754F884F694F7B4F964F7E4F8F4F914F7A5154
+51525155516951775176517851BD51FD523B52385237523A5230522E52365241
+52BE52BB5352535453535351536653775378537953D653D453D7547354750000
+A9
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+5496547854955480547B5477548454925486547C549054715476548C549A5462
+5468548B547D548E56FA57835777576A5769576157665764577C591C59495947
+59485944595459BE59BB59D459B959AE59D159C659D059CD59CB59D359CA59AF
+59B359D259C55B5F5B645B635B975B9A5B985B9C5B995B9B5C1A5C485C450000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00005C465CB75CA15CB85CA95CAB5CB15CB35E185E1A5E165E155E1B5E115E78
+5E9A5E975E9C5E955E965EF65F265F275F295F805F815F7F5F7C5FDD5FE05FFD
+5FF55FFF600F6014602F60356016602A6015602160276029602B601B62166215
+623F623E6240627F62C962CC62C462BF62C262B962D262DB62AB62D362D462CB
+62C862A862BD62BC62D062D962C762CD62B562DA62B162D862D662D762C662AC
+62CE653E65A765BC65FA66146613660C66066602660E6600660F6615660A0000
+AA
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+6607670D670B676D678B67956771679C677367776787679D6797676F6770677F
+6789677E67906775679A6793677C676A67726B236B666B676B7F6C136C1B6CE3
+6CE86CF36CB16CCC6CE56CB36CBD6CBE6CBC6CE26CAB6CD56CD36CB86CC46CB9
+6CC16CAE6CD76CC56CF16CBF6CBB6CE16CDB6CCA6CAC6CEF6CDC6CD66CE00000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00007095708E7092708A7099722C722D723872487267726972C072CE72D972D7
+72D073A973A8739F73AB73A5753D759D7599759A768476C276F276F477E577FD
+793E7940794179C979C87A7A7A797AFA7CFE7F547F8C7F8B800580BA80A580A2
+80B180A180AB80A980B480AA80AF81E581FE820D82B3829D829982AD82BD829F
+82B982B182AC82A582AF82B882A382B082BE82B7864E8671521D88688ECB8FCE
+8FD48FD190B590B890B190B691C791D195779580961C9640963F963B96440000
+AB
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+964296B996E89752975E4E9F4EAD4EAE4FE14FB54FAF4FBF4FE04FD14FCF4FDD
+4FC34FB64FD84FDF4FCA4FD74FAE4FD04FC44FC24FDA4FCE4FDE4FB751575192
+519151A0524E5243524A524D524C524B524752C752C952C352C1530D5357537B
+539A53DB54AC54C054A854CE54C954B854A654B354C754C254BD54AA54C10000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000054C454C854AF54AB54B154BB54A954A754BF56FF5782578B57A057A357A2
+57CE57AE579359555951594F594E595059DC59D859FF59E359E85A0359E559EA
+59DA59E65A0159FB5B695BA35BA65BA45BA25BA55C015C4E5C4F5C4D5C4B5CD9
+5CD25DF75E1D5E255E1F5E7D5EA05EA65EFA5F085F2D5F655F885F855F8A5F8B
+5F875F8C5F896012601D60206025600E6028604D60706068606260466043606C
+606B606A6064624162DC6316630962FC62ED630162EE62FD630762F162F70000
+AC
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+62EF62EC62FE62F463116302653F654565AB65BD65E26625662D66206627662F
+661F66286631662466F767FF67D367F167D467D067EC67B667AF67F567E967EF
+67C467D167B467DA67E567B867CF67DE67F367B067D967E267DD67D26B6A6B83
+6B866BB56BD26BD76C1F6CC96D0B6D326D2A6D416D256D0C6D316D1E6D170000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00006D3B6D3D6D3E6D366D1B6CF56D396D276D386D296D2E6D356D0E6D2B70AB
+70BA70B370AC70AF70AD70B870AE70A472307272726F727472E972E072E173B7
+73CA73BB73B273CD73C073B3751A752D754F754C754E754B75AB75A475A575A2
+75A3767876867687768876C876C676C376C5770176F976F87709770B76FE76FC
+770777DC78027814780C780D794679497948794779B979BA79D179D279CB7A7F
+7A817AFF7AFD7C7D7D027D057D007D097D077D047D067F387F8E7FBF80040000
+AD
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+8010800D8011803680D680E580DA80C380C480CC80E180DB80CE80DE80E480DD
+81F4822282E78303830582E382DB82E6830482E58302830982D282D782F18301
+82DC82D482D182DE82D382DF82EF830686508679867B867A884D886B898189D4
+8A088A028A038C9E8CA08D748D738DB48ECD8ECC8FF08FE68FE28FEA8FE50000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00008FED8FEB8FE48FE890CA90CE90C190C3914B914A91CD95829650964B964C
+964D9762976997CB97ED97F3980198A898DB98DF999699994E584EB3500C500D
+50234FEF502650254FF8502950165006503C501F501A501250114FFA50005014
+50284FF15021500B501950184FF34FEE502D502A4FFE502B5009517C51A451A5
+51A251CD51CC51C651CB5256525C5254525B525D532A537F539F539D53DF54E8
+55105501553754FC54E554F2550654FA551454E954ED54E1550954EE54EA0000
+AE
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+54E65527550754FD550F5703570457C257D457CB57C35809590F59575958595A
+5A115A185A1C5A1F5A1B5A1359EC5A205A235A295A255A0C5A095B6B5C585BB0
+5BB35BB65BB45BAE5BB55BB95BB85C045C515C555C505CED5CFD5CFB5CEA5CE8
+5CF05CF65D015CF45DEE5E2D5E2B5EAB5EAD5EA75F315F925F915F9060590000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00006063606560506055606D6069606F6084609F609A608D6094608C60856096
+624762F3630862FF634E633E632F635563426346634F6349633A6350633D632A
+632B6328634D634C65486549659965C165C566426649664F66436652664C6645
+664166F867146715671768216838684868466853683968426854682968B36817
+684C6851683D67F468506840683C6843682A68456813681868416B8A6B896BB7
+6C236C276C286C266C246CF06D6A6D956D886D876D666D786D776D596D930000
+AF
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+6D6C6D896D6E6D5A6D746D696D8C6D8A6D796D856D656D9470CA70D870E470D9
+70C870CF7239727972FC72F972FD72F872F7738673ED740973EE73E073EA73DE
+7554755D755C755A755975BE75C575C775B275B375BD75BC75B975C275B8768B
+76B076CA76CD76CE7729771F7720772877E9783078277838781D783478370000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00007825782D7820781F7832795579507960795F7956795E795D7957795A79E4
+79E379E779DF79E679E979D87A847A887AD97B067B117C897D217D177D0B7D0A
+7D207D227D147D107D157D1A7D1C7D0D7D197D1B7F3A7F5F7F947FC57FC18006
+8018801580198017803D803F80F1810280F0810580ED80F4810680F880F38108
+80FD810A80FC80EF81ED81EC82008210822A822B8228822C82BB832B83528354
+834A83388350834983358334834F833283398336831783408331832883430000
+B0
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+8654868A86AA869386A486A9868C86A3869C8870887788818882887D88798A18
+8A108A0E8A0C8A158A0A8A178A138A168A0F8A118C488C7A8C798CA18CA28D77
+8EAC8ED28ED48ECF8FB1900190068FF790008FFA8FF490038FFD90058FF89095
+90E190DD90E29152914D914C91D891DD91D791DC91D995839662966396610000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000965B965D96649658965E96BB98E299AC9AA89AD89B259B329B3C4E7E507A
+507D505C50475043504C505A504950655076504E5055507550745077504F500F
+506F506D515C519551F0526A526F52D252D952D852D55310530F5319533F5340
+533E53C366FC5546556A55665544555E55615543554A55315556554F5555552F
+55645538552E555C552C55635533554155575708570B570957DF5805580A5806
+57E057E457FA5802583557F757F9592059625A365A415A495A665A6A5A400000
+B1
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+5A3C5A625A5A5A465A4A5B705BC75BC55BC45BC25BBF5BC65C095C085C075C60
+5C5C5C5D5D075D065D0E5D1B5D165D225D115D295D145D195D245D275D175DE2
+5E385E365E335E375EB75EB85EB65EB55EBE5F355F375F575F6C5F695F6B5F97
+5F995F9E5F985FA15FA05F9C607F60A3608960A060A860CB60B460E660BD0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000060C560BB60B560DC60BC60D860D560C660DF60B860DA60C7621A621B6248
+63A063A76372639663A263A563776367639863AA637163A963896383639B636B
+63A863846388639963A163AC6392638F6380637B63696368637A655D65566551
+65596557555F654F655865556554659C659B65AC65CF65CB65CC65CE665D665A
+666466686666665E66F952D7671B688168AF68A2689368B5687F687668B168A7
+689768B0688368C468AD688668856894689D68A8689F68A168826B326BBA0000
+B2
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+6BEB6BEC6C2B6D8E6DBC6DF36DD96DB26DE16DCC6DE46DFB6DFA6E056DC76DCB
+6DAF6DD16DAE6DDE6DF96DB86DF76DF56DC56DD26E1A6DB56DDA6DEB6DD86DEA
+6DF16DEE6DE86DC66DC46DAA6DEC6DBF6DE670F97109710A70FD70EF723D727D
+7281731C731B73167313731973877405740A7403740673FE740D74E074F60000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000074F7751C75227565756675627570758F75D475D575B575CA75CD768E76D4
+76D276DB7737773E773C77367738773A786B7843784E79657968796D79FB7A92
+7A957B207B287B1B7B2C7B267B197B1E7B2E7C927C977C957D467D437D717D2E
+7D397D3C7D407D307D337D447D2F7D427D327D317F3D7F9E7F9A7FCC7FCE7FD2
+801C804A8046812F81168123812B81298130812482028235823782368239838E
+839E8398837883A2839683BD83AB8392838A8393838983A08377837B837C0000
+B3
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+838683A786555F6A86C786C086B686C486B586C686CB86B186AF86C98853889E
+888888AB88928896888D888B8993898F8A2A8A1D8A238A258A318A2D8A1F8A1B
+8A228C498C5A8CA98CAC8CAB8CA88CAA8CA78D678D668DBE8DBA8EDB8EDF9019
+900D901A90179023901F901D90109015901E9020900F90229016901B90140000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000090E890ED90FD915791CE91F591E691E391E791ED91E99589966A96759673
+96789670967496769677966C96C096EA96E97AE07ADF980298039B5A9CE59E75
+9E7F9EA59EBB50A2508D508550995091508050965098509A670051F152725274
+5275526952DE52DD52DB535A53A5557B558055A7557C558A559D55985582559C
+55AA55945587558B558355B355AE559F553E55B2559A55BB55AC55B1557E5589
+55AB5599570D582F582A58345824583058315821581D582058F958FA59600000
+B4
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+5A775A9A5A7F5A925A9B5AA75B735B715BD25BCC5BD35BD05C0A5C0B5C315D4C
+5D505D345D475DFD5E455E3D5E405E435E7E5ECA5EC15EC25EC45F3C5F6D5FA9
+5FAA5FA860D160E160B260B660E0611C612360FA611560F060FB60F4616860F1
+610E60F6610961006112621F624963A3638C63CF63C063E963C963C663CD0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000063D263E363D063E163D663ED63EE637663F463EA63DB645263DA63F9655E
+6566656265636591659065AF666E667066746676666F6691667A667E667766FE
+66FF671F671D68FA68D568E068D868D7690568DF68F568EE68E768F968D268F2
+68E368CB68CD690D6912690E68C968DA696E68FB6B3E6B3A6B3D6B986B966BBC
+6BEF6C2E6C2F6C2C6E2F6E386E546E216E326E676E4A6E206E256E236E1B6E5B
+6E586E246E566E6E6E2D6E266E6F6E346E4D6E3A6E2C6E436E1D6E3E6ECB0000
+B5
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+6E896E196E4E6E636E446E726E696E5F7119711A7126713071217136716E711C
+724C728472807336732573347329743A742A743374227425743574367434742F
+741B7426742875257526756B756A75E275DB75E375D975D875DE75E0767B767C
+7696769376B476DC774F77ED785D786C786F7A0D7A087A0B7A057A007A980000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00007A977A967AE57AE37B497B567B467B507B527B547B4D7B4B7B4F7B517C9F
+7CA57D5E7D507D687D557D2B7D6E7D727D617D667D627D707D7355847FD47FD5
+800B8052808581558154814B8151814E81398146813E814C815381748212821C
+83E9840383F8840D83E083C5840B83C183EF83F183F48457840A83F0840C83CC
+83FD83F283CA8438840E840483DC840783D483DF865B86DF86D986ED86D486DB
+86E486D086DE885788C188C288B1898389968A3B8A608A558A5E8A3C8A410000
+B6
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+8A548A5B8A508A468A348A3A8A368A568C618C828CAF8CBC8CB38CBD8CC18CBB
+8CC08CB48CB78CB68CBF8CB88D8A8D858D818DCE8DDD8DCB8DDA8DD18DCC8DDB
+8DC68EFB8EF88EFC8F9C902E90359031903890329036910290F5910990FE9163
+916591CF9214921592239209921E920D9210920792119594958F958B95910000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000095939592958E968A968E968B967D96859686968D9672968496C196C596C4
+96C696C796EF96F297CC98059806980898E798EA98EF98E998F298ED99AE99AD
+9EC39ECD9ED14E8250AD50B550B250B350C550BE50AC50B750BB50AF50C7527F
+5277527D52DF52E652E452E252E3532F55DF55E855D355E655CE55DC55C755D1
+55E355E455EF55DA55E155C555C655E555C957125713585E585158585857585A
+5854586B584C586D584A58625852584B59675AC15AC95ACC5ABE5ABD5ABC0000
+B7
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+5AB35AC25AB25D695D6F5E4C5E795EC95EC85F125F595FAC5FAE611A610F6148
+611F60F3611B60F961016108614E614C6144614D613E61346127610D61066137
+622162226413643E641E642A642D643D642C640F641C6414640D643664166417
+6406656C659F65B06697668966876688669666846698668D67036994696D0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000695A697769606954697569306982694A6968696B695E695369796986695D
+6963695B6B476B726BC06BBF6BD36BFD6EA26EAF6ED36EB66EC26E906E9D6EC7
+6EC56EA56E986EBC6EBA6EAB6ED16E966E9C6EC46ED46EAA6EA76EB4714E7159
+7169716471497167715C716C7166714C7165715E714671687156723A72527337
+7345733F733E746F745A7455745F745E7441743F7459745B745C757675787600
+75F0760175F275F175FA75FF75F475F376DE76DF775B776B7766775E77630000
+B8
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+7779776A776C775C77657768776277EE788E78B078977898788C7889787C7891
+7893787F797A797F7981842C79BD7A1C7A1A7A207A147A1F7A1E7A9F7AA07B77
+7BC07B607B6E7B677CB17CB37CB57D937D797D917D817D8F7D5B7F6E7F697F6A
+7F727FA97FA87FA480568058808680848171817081788165816E8173816B0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00008179817A81668205824784828477843D843184758466846B8449846C845B
+843C8435846184638469846D8446865E865C865F86F9871387088707870086FE
+86FB870287038706870A885988DF88D488D988DC88D888DD88E188CA88D588D2
+899C89E38A6B8A728A738A668A698A708A878A7C8A638AA08A718A858A6D8A62
+8A6E8A6C8A798A7B8A3E8A688C628C8A8C898CCA8CC78CC88CC48CB28CC38CC2
+8CC58DE18DDF8DE88DEF8DF38DFA8DEA8DE48DE68EB28F038F098EFE8F0A0000
+B9
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+8F9F8FB2904B904A905390429054903C905590509047904F904E904D9051903E
+904191129117916C916A916991C9923792579238923D9240923E925B924B9264
+925192349249924D92459239923F925A959896989694969596CD96CB96C996CA
+96F796FB96F996F6975697749776981098119813980A9812980C98FC98F40000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000098FD98FE99B399B199B49AE19CE99E829F0E9F139F2050E750EE50E550D6
+50ED50DA50D550CF50D150F150CE50E9516251F352835282533153AD55FE5600
+561B561755FD561456065609560D560E55F75616561F5608561055F657185716
+5875587E58835893588A58795885587D58FD592559225924596A59695AE15AE6
+5AE95AD75AD65AD85AE35B755BDE5BE75BE15BE55BE65BE85BE25BE45BDF5C0D
+5C625D845D875E5B5E635E555E575E545ED35ED65F0A5F465F705FB961470000
+BA
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+613F614B617761626163615F615A61586175622A64876458645464A46478645F
+647A645164676434646D647B657265A165D765D666A266A8669D699C69A86995
+69C169AE69D369CB699B69B769BB69AB69B469D069CD69AD69CC69A669C369A3
+6B496B4C6C336F336F146EFE6F136EF46F296F3E6F206F2C6F0F6F026F220000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00006EFF6EEF6F066F316F386F326F236F156F2B6F2F6F886F2A6EEC6F016EF2
+6ECC6EF771947199717D718A71847192723E729272967344735074647463746A
+7470746D750475917627760D760B7609761376E176E37784777D777F776178C1
+789F78A778B378A978A3798E798F798D7A2E7A317AAA7AA97AED7AEF7BA17B95
+7B8B7B757B977B9D7B947B8F7BB87B877B847CB97CBD7CBE7DBB7DB07D9C7DBD
+7DBE7DA07DCA7DB47DB27DB17DBA7DA27DBF7DB57DB87DAD7DD27DC77DAC0000
+BB
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+7F707FE07FE17FDF805E805A808781508180818F8188818A817F818281E781FA
+82078214821E824B84C984BF84C684C48499849E84B2849C84CB84B884C084D3
+849084BC84D184CA873F871C873B872287258734871887558737872988F38902
+88F488F988F888FD88E8891A88EF8AA68A8C8A9E8AA38A8D8AA18A938AA40000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00008AAA8AA58AA88A988A918A9A8AA78C6A8C8D8C8C8CD38CD18CD28D6B8D99
+8D958DFC8F148F128F158F138FA390609058905C90639059905E9062905D905B
+91199118911E917591789177917492789280928592989296927B9293929C92A8
+927C929195A195A895A995A395A595A49699969C969B96CC96D29700977C9785
+97F69817981898AF98B199039905990C990999C19AAF9AB09AE69B419B429CF4
+9CF69CF39EBC9F3B9F4A5104510050FB50F550F9510251085109510551DC0000
+BC
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+528752885289528D528A52F053B2562E563B56395632563F563456295653564E
+565756745636562F56305880589F589E58B3589C58AE58A958A6596D5B095AFB
+5B0B5AF55B0C5B085BEE5BEC5BE95BEB5C645C655D9D5D945E625E5F5E615EE2
+5EDA5EDF5EDD5EE35EE05F485F715FB75FB561766167616E615D615561820000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000617C6170616B617E61A7619061AB618E61AC619A61A4619461AE622E6469
+646F6479649E64B26488649064B064A56493649564A9649264AE64AD64AB649A
+64AC649964A264B365756577657866AE66AB66B466B16A236A1F69E86A016A1E
+6A1969FD6A216A136A0A69F36A026A0569ED6A116B506B4E6BA46BC56BC66F3F
+6F7C6F846F516F666F546F866F6D6F5B6F786F6E6F8E6F7A6F706F646F976F58
+6ED56F6F6F606F5F719F71AC71B171A87256729B734E73577469748B74830000
+BD
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+747E7480757F76207629761F7624762676217622769A76BA76E4778E7787778C
+7791778B78CB78C578BA78CA78BE78D578BC78D07A3F7A3C7A407A3D7A377A3B
+7AAF7AAE7BAD7BB17BC47BB47BC67BC77BC17BA07BCC7CCA7DE07DF47DEF7DFB
+7DD87DEC7DDD7DE87DE37DDA7DDE7DE97D9E7DD97DF27DF97F757F777FAF0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00007FE98026819B819C819D81A0819A81988517853D851A84EE852C852D8513
+851185238521851484EC852584FF850687828774877687608766877887688759
+8757874C8753885B885D89108907891289138915890A8ABC8AD28AC78AC48A95
+8ACB8AF88AB28AC98AC28ABF8AB08AD68ACD8AB68AB98ADB8C4C8C4E8C6C8CE0
+8CDE8CE68CE48CEC8CED8CE28CE38CDC8CEA8CE18D6D8D9F8DA38E2B8E108E1D
+8E228E0F8E298E1F8E218E1E8EBA8F1D8F1B8F1F8F298F268F2A8F1C8F1E0000
+BE
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+8F259069906E9068906D90779130912D9127913191879189918B918392C592BB
+92B792EA92AC92E492C192B392BC92D292C792F092B295AD95B1970497069707
+97099760978D978B978F9821982B981C98B3990A99139912991899DD99D099DF
+99DB99D199D599D299D99AB79AEE9AEF9B279B459B449B779B6F9D069D090000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00009D039EA99EBE9ECE58A89F5251125118511451105115518051AA51DD5291
+529352F35659566B5679566956645678566A566856655671566F566C56625676
+58C158BE58C758C5596E5B1D5B345B785BF05C0E5F4A61B2619161A9618A61CD
+61B661BE61CA61C8623064C564C164CB64BB64BC64DA64C464C764C264CD64BF
+64D264D464BE657466C666C966B966C466C766B86A3D6A386A3A6A596A6B6A58
+6A396A446A626A616A4B6A476A356A5F6A486B596B776C056FC26FB16FA10000
+BF
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+6FC36FA46FC16FA76FB36FC06FB96FB66FA66FA06FB471BE71C971D071D271C8
+71D571B971CE71D971DC71C371C47368749C74A37498749F749E74E2750C750D
+76347638763A76E776E577A0779E779F77A578E878DA78EC78E779A67A4D7A4E
+7A467A4C7A4B7ABA7BD97C117BC97BE47BDB7BE17BE97BE67CD57CD67E0A0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00007E117E087E1B7E237E1E7E1D7E097E107F797FB27FF07FF17FEE802881B3
+81A981A881FB820882588259854A855985488568856985438549856D856A855E
+8783879F879E87A2878D8861892A89328925892B892189AA89A68AE68AFA8AEB
+8AF18B008ADC8AE78AEE8AFE8B018B028AF78AED8AF38AF68AFC8C6B8C6D8C93
+8CF48E448E318E348E428E398E358F3B8F2F8F388F338FA88FA6907590749078
+9072907C907A913491929320933692F89333932F932292FC932B9304931A0000
+C0
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+9310932693219315932E931995BB96A796A896AA96D5970E97119716970D9713
+970F975B975C9766979898309838983B9837982D9839982499109928991E991B
+9921991A99ED99E299F19AB89ABC9AFB9AED9B289B919D159D239D269D289D12
+9D1B9ED89ED49F8D9F9C512A511F5121513252F5568E56805690568556870000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000568F58D558D358D158CE5B305B2A5B245B7A5C375C685DBC5DBA5DBD5DB8
+5E6B5F4C5FBD61C961C261C761E661CB6232623464CE64CA64D864E064F064E6
+64EC64F164E264ED6582658366D966D66A806A946A846AA26A9C6ADB6AA36A7E
+6A976A906AA06B5C6BAE6BDA6C086FD86FF16FDF6FE06FDB6FE46FEB6FEF6F80
+6FEC6FE16FE96FD56FEE6FF071E771DF71EE71E671E571ED71EC71F471E07235
+72467370737274A974B074A674A876467642764C76EA77B377AA77B077AC0000
+C1
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+77A777AD77EF78F778FA78F478EF790179A779AA7A577ABF7C077C0D7BFE7BF7
+7C0C7BE07CE07CDC7CDE7CE27CDF7CD97CDD7E2E7E3E7E467E377E327E437E2B
+7E3D7E317E457E417E347E397E487E357E3F7E2F7F447FF37FFC807180728070
+806F807381C681C381BA81C281C081BF81BD81C981BE81E88209827185AA0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00008584857E859C8591859485AF859B858785A8858A866787C087D187B387D2
+87C687AB87BB87BA87C887CB893B893689448938893D89AC8B0E8B178B198B1B
+8B0A8B208B1D8B048B108C418C3F8C738CFA8CFD8CFC8CF88CFB8DA88E498E4B
+8E488E4A8F448F3E8F428F458F3F907F907D9084908190829080913991A3919E
+919C934D938293289375934A9365934B9318937E936C935B9370935A935495CA
+95CB95CC95C895C696B196B896D6971C971E97A097D3984698B699359A010000
+C2
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+99FF9BAE9BAB9BAA9BAD9D3B9D3F9E8B9ECF9EDE9EDC9EDD9EDB9F3E9F4B53E2
+569556AE58D958D85B385F5D61E3623364F464F264FE650664FA64FB64F765B7
+66DC67266AB36AAC6AC36ABB6AB86AC26AAE6AAF6B5F6B786BAF7009700B6FFE
+70066FFA7011700F71FB71FC71FE71F87377737574A774BF7515765676580000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000765277BD77BF77BB77BC790E79AE7A617A627A607AC47AC57C2B7C277C2A
+7C1E7C237C217CE77E547E557E5E7E5A7E617E527E597F487FF97FFB80778076
+81CD81CF820A85CF85A985CD85D085C985B085BA85B985A687EF87EC87F287E0
+898689B289F48B288B398B2C8B2B8C508D058E598E638E668E648E5F8E558EC0
+8F498F4D90879083908891AB91AC91D09394938A939693A293B393AE93AC93B0
+9398939A939795D495D695D095D596E296DC96D996DB96DE972497A397A60000
+C3
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+97AD97F9984D984F984C984E985398BA993E993F993D992E99A59A0E9AC19B03
+9B069B4F9B4E9B4D9BCA9BC99BFD9BC89BC09D519D5D9D609EE09F159F2C5133
+56A558DE58DF58E25BF59F905EEC61F261F761F661F56500650F66E066DD6AE5
+6ADD6ADA6AD3701B701F7028701A701D701570187206720D725872A273780000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000737A74BD74CA74E375877586765F766177C7791979B17A6B7A697C3E7C3F
+7C387C3D7C377C407E6B7E6D7E797E697E6A7F857E737FB67FB97FB881D885E9
+85DD85EA85D585E485E585F787FB8805880D87F987FE8960895F8956895E8B41
+8B5C8B588B498B5A8B4E8B4F8B468B598D088D0A8E7C8E728E878E768E6C8E7A
+8E748F548F4E8FAD908A908B91B191AE93E193D193DF93C393C893DC93DD93D6
+93E293CD93D893E493D793E895DC96B496E3972A9727976197DC97FB985E0000
+C4
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+9858985B98BC994599499A169A199B0D9BE89BE79BD69BDB9D899D619D729D6A
+9D6C9E929E979E939EB452F856A856B756B656B456BC58E45B405B435B7D5BF6
+5DC961F861FA65186514651966E667276AEC703E703070327210737B74CF7662
+76657926792A792C792B7AC77AF67C4C7C437C4D7CEF7CF08FAE7E7D7E7C0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00007E827F4C800081DA826685FB85F9861185FA8606860B8607860A88148815
+896489BA89F88B708B6C8B668B6F8B5F8B6B8D0F8D0D8E898E818E858E8291B4
+91CB9418940393FD95E1973098C49952995199A89A2B9A309A379A359C139C0D
+9E799EB59EE89F2F9F5F9F639F615137513856C156C056C259145C6C5DCD61FC
+61FE651D651C659566E96AFB6B046AFA6BB2704C721B72A774D674D4766977D3
+7C507E8F7E8C7FBC8617862D861A882388228821881F896A896C89BD8B740000
+C5
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+8B778B7D8D138E8A8E8D8E8B8F5F8FAF91BA942E94339435943A94389432942B
+95E297389739973297FF9867986599579A459A439A409A3E9ACF9B549B519C2D
+9C259DAF9DB49DC29DB89E9D9EEF9F199F5C9F669F67513C513B56C856CA56C9
+5B7F5DD45DD25F4E61FF65246B0A6B6170517058738074E4758A766E766C0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000079B37C607C5F807E807D81DF8972896F89FC8B808D168D178E918E938F61
+9148944494519452973D973E97C397C1986B99559A559A4D9AD29B1A9C499C31
+9C3E9C3B9DD39DD79F349F6C9F6A9F9456CC5DD662006523652B652A66EC6B10
+74DA7ACA7C647C637C657E937E967E9481E28638863F88318B8A9090908F9463
+946094649768986F995C9A5A9A5B9A579AD39AD49AD19C549C579C569DE59E9F
+9EF456D158E9652C705E7671767277D77F507F888836883988628B938B920000
+C6
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+8B9682778D1B91C0946A97429748974497C698709A5F9B229B589C5F9DF99DFA
+9E7C9E7D9F079F779F725EF36B1670637C6C7C6E883B89C08EA191C194729470
+9871995E9AD69B239ECC706477DA8B9A947797C99A629A657E9C8B9C8EAA91C5
+947D947E947C9C779C789EF78C54947F9E1A72289A6A9B319E1B9E1E7C720000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+C9
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+4E424E5C51F5531A53824E074E0C4E474E8D56D7FA0C5C6E5F734E0F51874E0E
+4E2E4E934EC24EC94EC8519852FC536C53B957205903592C5C105DFF65E16BB3
+6BCC6C14723F4E314E3C4EE84EDC4EE94EE14EDD4EDA520C531C534C57225723
+5917592F5B815B845C125C3B5C745C735E045E805E825FC9620962506C150000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00006C366C436C3F6C3B72AE72B0738A79B8808A961E4F0E4F184F2C4EF54F14
+4EF14F004EF74F084F1D4F024F054F224F134F044EF44F1251B1521352095210
+52A65322531F534D538A540756E156DF572E572A5734593C5980597C5985597B
+597E5977597F5B565C155C255C7C5C7A5C7B5C7E5DDF5E755E845F025F1A5F74
+5FD55FD45FCF625C625E626462616266626262596260625A626565EF65EE673E
+67396738673B673A673F673C67336C186C466C526C5C6C4F6C4A6C546C4B0000
+CA
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+6C4C7071725E72B472B5738E752A767F7A757F518278827C8280827D827F864D
+897E909990979098909B909496229624962096234F564F3B4F624F494F534F64
+4F3E4F674F524F5F4F414F584F2D4F334F3F4F61518F51B9521C521E522152AD
+52AE530953635372538E538F54305437542A545454455419541C542554180000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000543D544F544154285424544756EE56E756E557415745574C5749574B5752
+5906594059A6599859A05997598E59A25990598F59A759A15B8E5B925C285C2A
+5C8D5C8F5C885C8B5C895C925C8A5C865C935C955DE05E0A5E0E5E8B5E895E8C
+5E885E8D5F055F1D5F785F765FD25FD15FD05FED5FE85FEE5FF35FE15FE45FE3
+5FFA5FEF5FF75FFB60005FF4623A6283628C628E628F629462876271627B627A
+6270628162886277627D62726274653765F065F465F365F265F5674567470000
+CB
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+67596755674C6748675D674D675A674B6BD06C196C1A6C786C676C6B6C846C8B
+6C8F6C716C6F6C696C9A6C6D6C876C956C9C6C666C736C656C7B6C8E7074707A
+726372BF72BD72C372C672C172BA72C573957397739373947392753A75397594
+75957681793D80348095809980908092809C8290828F8285828E829182930000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000828A828382848C788FC98FBF909F90A190A5909E90A790A096309628962F
+962D4E334F984F7C4F854F7D4F804F874F764F744F894F844F774F4C4F974F6A
+4F9A4F794F814F784F904F9C4F944F9E4F924F824F954F6B4F6E519E51BC51BE
+5235523252335246523152BC530A530B533C539253945487547F548154915482
+5488546B547A547E5465546C54745466548D546F546154605498546354675464
+56F756F9576F5772576D576B57715770577657805775577B5773577457620000
+CC
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+5768577D590C594559B559BA59CF59CE59B259CC59C159B659BC59C359D659B1
+59BD59C059C859B459C75B625B655B935B955C445C475CAE5CA45CA05CB55CAF
+5CA85CAC5C9F5CA35CAD5CA25CAA5CA75C9D5CA55CB65CB05CA65E175E145E19
+5F285F225F235F245F545F825F7E5F7D5FDE5FE5602D602660196032600B0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00006034600A60176033601A601E602C6022600D6010602E60136011600C6009
+601C6214623D62AD62B462D162BE62AA62B662CA62AE62B362AF62BB62A962B0
+62B8653D65A865BB660965FC66046612660865FB6603660B660D660565FD6611
+661066F6670A6785676C678E67926776677B6798678667846774678D678C677A
+679F679167996783677D67816778677967946B256B806B7E6BDE6C1D6C936CEC
+6CEB6CEE6CD96CB66CD46CAD6CE76CB76CD06CC26CBA6CC36CC66CED6CF20000
+CD
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+6CD26CDD6CB46C8A6C9D6C806CDE6CC06D306CCD6CC76CB06CF96CCF6CE96CD1
+709470987085709370867084709170967082709A7083726A72D672CB72D872C9
+72DC72D272D472DA72CC72D173A473A173AD73A673A273A073AC739D74DD74E8
+753F7540753E758C759876AF76F376F176F076F577F877FC77F977FB77FA0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000077F77942793F79C57A787A7B7AFB7C757CFD8035808F80AE80A380B880B5
+80AD822082A082C082AB829A8298829B82B582A782AE82BC829E82BA82B482A8
+82A182A982C282A482C382B682A28670866F866D866E8C568FD28FCB8FD38FCD
+8FD68FD58FD790B290B490AF90B390B09639963D963C963A96434FCD4FC54FD3
+4FB24FC94FCB4FC14FD44FDC4FD94FBB4FB34FDB4FC74FD64FBA4FC04FB94FEC
+5244524952C052C2533D537C539753965399539854BA54A154AD54A554CF0000
+CE
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+54C3830D54B754AE54D654B654C554C654A0547054BC54A254BE547254DE54B0
+57B5579E579F57A4578C5797579D579B57945798578F579957A5579A579558F4
+590D595359E159DE59EE5A0059F159DD59FA59FD59FC59F659E459F259F759DB
+59E959F359F559E059FE59F459ED5BA85C4C5CD05CD85CCC5CD75CCB5CDB0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00005CDE5CDA5CC95CC75CCA5CD65CD35CD45CCF5CC85CC65CCE5CDF5CF85DF9
+5E215E225E235E205E245EB05EA45EA25E9B5EA35EA55F075F2E5F565F866037
+603960546072605E6045605360476049605B604C60406042605F602460446058
+6066606E6242624362CF630D630B62F5630E630362EB62F9630F630C62F862F6
+63006313631462FA631562FB62F06541654365AA65BF6636662166326635661C
+662666226633662B663A661D66346639662E670F671067C167F267C867BA0000
+CF
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+67DC67BB67F867D867C067B767C567EB67E467DF67B567CD67B367F767F667EE
+67E367C267B967CE67E767F067B267FC67C667ED67CC67AE67E667DB67FA67C9
+67CA67C367EA67CB6B286B826B846BB66BD66BD86BE06C206C216D286D346D2D
+6D1F6D3C6D3F6D126D0A6CDA6D336D046D196D3A6D1A6D116D006D1D6D420000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00006D016D186D376D036D0F6D406D076D206D2C6D086D226D096D1070B7709F
+70BE70B170B070A170B470B570A972417249724A726C72707273726E72CA72E4
+72E872EB72DF72EA72E672E3738573CC73C273C873C573B973B673B573B473EB
+73BF73C773BE73C373C673B873CB74EC74EE752E7547754875A775AA767976C4
+7708770377047705770A76F776FB76FA77E777E878067811781278057810780F
+780E780978037813794A794C794B7945794479D579CD79CF79D679CE7A800000
+D0
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+7A7E7AD17B007B017C7A7C787C797C7F7C807C817D037D087D017F587F917F8D
+7FBE8007800E800F8014803780D880C780E080D180C880C280D080C580E380D9
+80DC80CA80D580C980CF80D780E680CD81FF8221829482D982FE82F9830782E8
+830082D5833A82EB82D682F482EC82E182F282F5830C82FB82F682F082EA0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000082E482E082FA82F382ED86778674867C86738841884E8867886A886989D3
+8A048A078D728FE38FE18FEE8FE090F190BD90BF90D590C590BE90C790CB90C8
+91D491D39654964F96519653964A964E501E50055007501350225030501B4FF5
+4FF450335037502C4FF64FF75017501C502050275035502F5031500E515A5194
+519351CA51C451C551C851CE5261525A5252525E525F5255526252CD530E539E
+552654E25517551254E754F354E4551A54FF5504550854EB5511550554F10000
+D1
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+550A54FB54F754F854E0550E5503550B5701570257CC583257D557D257BA57C6
+57BD57BC57B857B657BF57C757D057B957C1590E594A5A195A165A2D5A2E5A15
+5A0F5A175A0A5A1E5A335B6C5BA75BAD5BAC5C035C565C545CEC5CFF5CEE5CF1
+5CF75D005CF95E295E285EA85EAE5EAA5EAC5F335F305F67605D605A60670000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000604160A26088608060926081609D60836095609B60976087609C608E6219
+624662F263106356632C634463456336634363E46339634B634A633C63296341
+6334635863546359632D63476333635A63516338635763406348654A654665C6
+65C365C465C2664A665F6647665167126713681F681A684968326833683B684B
+684F68166831681C6835682B682D682F684E68446834681D6812681468266828
+682E684D683A682568206B2C6B2F6B2D6B316B346B6D80826B886BE66BE40000
+D2
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+6BE86BE36BE26BE76C256D7A6D636D646D766D0D6D616D926D586D626D6D6D6F
+6D916D8D6DEF6D7F6D866D5E6D676D606D976D706D7C6D5F6D826D986D2F6D68
+6D8B6D7E6D806D846D166D836D7B6D7D6D756D9070DC70D370D170DD70CB7F39
+70E270D770D270DE70E070D470CD70C570C670C770DA70CE70E1724272780000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000072777276730072FA72F472FE72F672F372FB730173D373D973E573D673BC
+73E773E373E973DC73D273DB73D473DD73DA73D773D873E874DE74DF74F474F5
+7521755B755F75B075C175BB75C475C075BF75B675BA768A76C9771D771B7710
+771377127723771177157719771A772277277823782C78227835782F7828782E
+782B782178297833782A78317954795B794F795C79537952795179EB79EC79E0
+79EE79ED79EA79DC79DE79DD7A867A897A857A8B7A8C7A8A7A877AD87B100000
+D3
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+7B047B137B057B0F7B087B0A7B0E7B097B127C847C917C8A7C8C7C887C8D7C85
+7D1E7D1D7D117D0E7D187D167D137D1F7D127D0F7D0C7F5C7F617F5E7F607F5D
+7F5B7F967F927FC37FC27FC08016803E803980FA80F280F980F5810180FB8100
+8201822F82258333832D83448319835183258356833F83418326831C83220000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00008342834E831B832A8308833C834D8316832483208337832F832983478345
+834C8353831E832C834B832783488653865286A286A88696868D8691869E8687
+86978686868B869A868586A5869986A186A786958698868E869D869086948843
+8844886D88758876887288808871887F886F8883887E8874887C8A128C478C57
+8C7B8CA48CA38D768D788DB58DB78DB68ED18ED38FFE8FF590028FFF8FFB9004
+8FFC8FF690D690E090D990DA90E390DF90E590D890DB90D790DC90E491500000
+D4
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+914E914F91D591E291DA965C965F96BC98E39ADF9B2F4E7F5070506A5061505E
+50605053504B505D50725048504D5041505B504A506250155045505F5069506B
+5063506450465040506E50735057505151D0526B526D526C526E52D652D3532D
+539C55755576553C554D55505534552A55515562553655355530555255450000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000550C55325565554E55395548552D553B5540554B570A570757FB581457E2
+57F657DC57F4580057ED57FD580857F8580B57F357CF580757EE57E357F257E5
+57EC57E1580E57FC581057E75801580C57F157E957F0580D5804595C5A605A58
+5A555A675A5E5A385A355A6D5A505A5F5A655A6C5A535A645A575A435A5D5A52
+5A445A5B5A485A8E5A3E5A4D5A395A4C5A705A695A475A515A565A425A5C5B72
+5B6E5BC15BC05C595D1E5D0B5D1D5D1A5D205D0C5D285D0D5D265D255D0F0000
+D5
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+5D305D125D235D1F5D2E5E3E5E345EB15EB45EB95EB25EB35F365F385F9B5F96
+5F9F608A6090608660BE60B060BA60D360D460CF60E460D960DD60C860B160DB
+60B760CA60BF60C360CD60C063326365638A6382637D63BD639E63AD639D6397
+63AB638E636F63876390636E63AF6375639C636D63AE637C63A4633B639F0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00006378638563816391638D6370655365CD66656661665B6659665C66626718
+687968876890689C686D686E68AE68AB6956686F68A368AC68A96875687468B2
+688F68776892687C686B687268AA68806871687E689B6896688B68A0688968A4
+6878687B6891688C688A687D6B366B336B376B386B916B8F6B8D6B8E6B8C6C2A
+6DC06DAB6DB46DB36E746DAC6DE96DE26DB76DF66DD46E006DC86DE06DDF6DD6
+6DBE6DE56DDC6DDD6DDB6DF46DCA6DBD6DED6DF06DBA6DD56DC26DCF6DC90000
+D6
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+6DD06DF26DD36DFD6DD76DCD6DE36DBB70FA710D70F7711770F4710C70F07104
+70F3711070FC70FF71067113710070F870F6710B7102710E727E727B727C727F
+731D7317730773117318730A730872FF730F731E738873F673F873F574047401
+73FD7407740073FA73FC73FF740C740B73F474087564756375CE75D275CF0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000075CB75CC75D175D0768F768976D37739772F772D7731773277347733773D
+7725773B7735784878527849784D784A784C782678457850796479677969796A
+7963796B796179BB79FA79F879F679F77A8F7A947A907B357B477B347B257B30
+7B227B247B337B187B2A7B1D7B317B2B7B2D7B2F7B327B387B1A7B237C947C98
+7C967CA37D357D3D7D387D367D3A7D457D2C7D297D417D477D3E7D3F7D4A7D3B
+7D287F637F957F9C7F9D7F9B7FCA7FCB7FCD7FD07FD17FC77FCF7FC9801F0000
+D7
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+801E801B804780438048811881258119811B812D811F812C811E812181158127
+811D8122821182388233823A823482328274839083A383A8838D837A837383A4
+8374838F8381839583998375839483A9837D8383838C839D839B83AA838B837E
+83A583AF8388839783B0837F83A6838783AE8376839A8659865686BF86B70000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000086C286C186C586BA86B086C886B986B386B886CC86B486BB86BC86C386BD
+86BE88528889889588A888A288AA889A889188A1889F889888A78899889B8897
+88A488AC888C8893888E898289D689D989D58A308A278A2C8A1E8C398C3B8C5C
+8C5D8C7D8CA58D7D8D7B8D798DBC8DC28DB98DBF8DC18ED88EDE8EDD8EDC8ED7
+8EE08EE19024900B9011901C900C902190EF90EA90F090F490F290F390D490EB
+90EC90E991569158915A9153915591EC91F491F191F391F891E491F991EA0000
+D8
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+91EB91F791E891EE957A95869588967C966D966B9671966F96BF976A980498E5
+9997509B50955094509E508B50A35083508C508E509D5068509C509250825087
+515F51D45312531153A453A7559155A855A555AD5577564555A255935588558F
+55B5558155A3559255A4557D558C55A6557F559555A1558E570C582958370000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00005819581E58275823582857F558485825581C581B5833583F5836582E5839
+5838582D582C583B59615AAF5A945A9F5A7A5AA25A9E5A785AA65A7C5AA55AAC
+5A955AAE5A375A845A8A5A975A835A8B5AA95A7B5A7D5A8C5A9C5A8F5A935A9D
+5BEA5BCD5BCB5BD45BD15BCA5BCE5C0C5C305D375D435D6B5D415D4B5D3F5D35
+5D515D4E5D555D335D3A5D525D3D5D315D595D425D395D495D385D3C5D325D36
+5D405D455E445E415F585FA65FA55FAB60C960B960CC60E260CE60C461140000
+D9
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+60F2610A6116610560F5611360F860FC60FE60C161036118611D611060FF6104
+610B624A639463B163B063CE63E563E863EF63C3649D63F363CA63E063F663D5
+63F263F5646163DF63BE63DD63DC63C463D863D363C263C763CC63CB63C863F0
+63D763D965326567656A6564655C65686565658C659D659E65AE65D065D20000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000667C666C667B668066716679666A66726701690C68D3690468DC692A68EC
+68EA68F1690F68D668F768EB68E468F66913691068F368E1690768CC69086970
+68B4691168EF68C6691468F868D068FD68FC68E8690B690A691768CE68C868DD
+68DE68E668F468D1690668D468E96915692568C76B396B3B6B3F6B3C6B946B97
+6B996B956BBD6BF06BF26BF36C306DFC6E466E476E1F6E496E886E3C6E3D6E45
+6E626E2B6E3F6E416E5D6E736E1C6E336E4B6E406E516E3B6E036E2E6E5E0000
+DA
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+6E686E5C6E616E316E286E606E716E6B6E396E226E306E536E656E276E786E64
+6E776E556E796E526E666E356E366E5A7120711E712F70FB712E713171237125
+71227132711F7128713A711B724B725A7288728972867285728B7312730B7330
+73227331733373277332732D732673237335730C742E742C7430742B74160000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000741A7421742D743174247423741D74297420743274FB752F756F756C75E7
+75DA75E175E675DD75DF75E475D77695769276DA774677477744774D7745774A
+774E774B774C77DE77EC786078647865785C786D7871786A786E787078697868
+785E786279747973797279707A027A0A7A037A0C7A047A997AE67AE47B4A7B3B
+7B447B487B4C7B4E7B407B587B457CA27C9E7CA87CA17D587D6F7D637D537D56
+7D677D6A7D4F7D6D7D5C7D6B7D527D547D697D517D5F7D4E7F3E7F3F7F650000
+DB
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+7F667FA27FA07FA17FD78051804F805080FE80D48143814A8152814F8147813D
+814D813A81E681EE81F781F881F98204823C823D823F8275833B83CF83F98423
+83C083E8841283E783E483FC83F6841083C683C883EB83E383BF840183DD83E5
+83D883FF83E183CB83CE83D683F583C98409840F83DE8411840683C283F30000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000083D583FA83C783D183EA841383C383EC83EE83C483FB83D783E2841B83DB
+83FE86D886E286E686D386E386DA86EA86DD86EB86DC86EC86E986D786E886D1
+88488856885588BA88D788B988B888C088BE88B688BC88B788BD88B2890188C9
+89958998899789DD89DA89DB8A4E8A4D8A398A598A408A578A588A448A458A52
+8A488A518A4A8A4C8A4F8C5F8C818C808CBA8CBE8CB08CB98CB58D848D808D89
+8DD88DD38DCD8DC78DD68DDC8DCF8DD58DD98DC88DD78DC58EEF8EF78EFA0000
+DC
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+8EF98EE68EEE8EE58EF58EE78EE88EF68EEB8EF18EEC8EF48EE9902D9034902F
+9106912C910490FF90FC910890F990FB9101910091079105910391619164915F
+916291609201920A92259203921A9226920F920C9200921291FF91FD92069204
+92279202921C92249219921792059216957B958D958C95909687967E96880000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000096899683968096C296C896C396F196F0976C9770976E980798A998EB9CE6
+9EF94E834E844EB650BD50BF50C650AE50C450CA50B450C850C250B050C150BA
+50B150CB50C950B650B851D7527A5278527B527C55C355DB55CC55D055CB55CA
+55DD55C055D455C455E955BF55D2558D55CF55D555E255D655C855F255CD55D9
+55C25714585358685864584F584D5849586F5855584E585D58595865585B583D
+5863587158FC5AC75AC45ACB5ABA5AB85AB15AB55AB05ABF5AC85ABB5AC60000
+DD
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+5AB75AC05ACA5AB45AB65ACD5AB95A905BD65BD85BD95C1F5C335D715D635D4A
+5D655D725D6C5D5E5D685D675D625DF05E4F5E4E5E4A5E4D5E4B5EC55ECC5EC6
+5ECB5EC75F405FAF5FAD60F76149614A612B614561366132612E6146612F614F
+612961406220916862236225622463C563F163EB641064126409642064240000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000064336443641F641564186439643764226423640C64266430642864416435
+642F640A641A644064256427640B63E7641B642E6421640E656F659265D36686
+668C66956690668B668A66996694667867206966695F6938694E69626971693F
+6945696A6939694269576959697A694869496935696C6933693D696568F06978
+693469696940696F69446976695869416974694C693B694B6937695C694F6951
+69326952692F697B693C6B466B456B436B426B486B416B9BFA0D6BFB6BFC0000
+DE
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+6BF96BF76BF86E9B6ED66EC86E8F6EC06E9F6E936E946EA06EB16EB96EC66ED2
+6EBD6EC16E9E6EC96EB76EB06ECD6EA66ECF6EB26EBE6EC36EDC6ED86E996E92
+6E8E6E8D6EA46EA16EBF6EB36ED06ECA6E976EAE6EA371477154715271637160
+7141715D716271727178716A7161714271587143714B7170715F715071530000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00007144714D715A724F728D728C72917290728E733C7342733B733A7340734A
+73497444744A744B7452745174577440744F7450744E74427446744D745474E1
+74FF74FE74FD751D75797577698375EF760F760375F775FE75FC75F975F87610
+75FB75F675ED75F575FD769976B576DD7755775F776077527756775A77697767
+77547759776D77E07887789A7894788F788478957885788678A1788378797899
+78807896787B797C7982797D79797A117A187A197A127A177A157A227A130000
+DF
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+7A1B7A107AA37AA27A9E7AEB7B667B647B6D7B747B697B727B657B737B717B70
+7B617B787B767B637CB27CB47CAF7D887D867D807D8D7D7F7D857D7A7D8E7D7B
+7D837D7C7D8C7D947D847D7D7D927F6D7F6B7F677F687F6C7FA67FA57FA77FDB
+7FDC8021816481608177815C8169815B816281726721815E81768167816F0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000081448161821D8249824482408242824584F1843F845684768479848F848D
+846584518440848684678430844D847D845A845984748473845D8507845E8437
+843A8434847A8443847884328445842983D9844B842F8442842D845F84708439
+844E844C8452846F84C5848E843B8447843684338468847E8444842B84608454
+846E8450870B870486F7870C86FA86D686F5874D86F8870E8709870186F6870D
+870588D688CB88CD88CE88DE88DB88DA88CC88D08985899B89DF89E589E40000
+E0
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+89E189E089E289DC89E68A768A868A7F8A618A3F8A778A828A848A758A838A81
+8A748A7A8C3C8C4B8C4A8C658C648C668C868C848C858CCC8D688D698D918D8C
+8D8E8D8F8D8D8D938D948D908D928DF08DE08DEC8DF18DEE8DD08DE98DE38DE2
+8DE78DF28DEB8DF48F068EFF8F018F008F058F078F088F028F0B9052903F0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000090449049903D9110910D910F911191169114910B910E916E916F92489252
+9230923A926692339265925E9283922E924A9246926D926C924F92609267926F
+92369261927092319254926392509272924E9253924C92569232959F959C959E
+959B969296939691969796CE96FA96FD96F896F59773977797789772980F980D
+980E98AC98F698F999AF99B299B099B59AAD9AAB9B5B9CEA9CED9CE79E809EFD
+50E650D450D750E850F350DB50EA50DD50E450D350EC50F050EF50E350E00000
+E1
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+51D85280528152E952EB533053AC56275615560C561255FC560F561C56015613
+560255FA561D560455FF55F95889587C5890589858865881587F5874588B587A
+58875891588E587658825888587B5894588F58FE596B5ADC5AEE5AE55AD55AEA
+5ADA5AED5AEB5AF35AE25AE05ADB5AEC5ADE5ADD5AD95AE85ADF5B775BE00000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00005BE35C635D825D805D7D5D865D7A5D815D775D8A5D895D885D7E5D7C5D8D
+5D795D7F5E585E595E535ED85ED15ED75ECE5EDC5ED55ED95ED25ED45F445F43
+5F6F5FB6612C61286141615E61716173615261536172616C618061746154617A
+615B6165613B616A6161615662296227622B642B644D645B645D647464766472
+6473647D6475646664A6644E6482645E645C644B645364606450647F643F646C
+646B645964656477657365A066A166A0669F67056704672269B169B669C90000
+E2
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+69A069CE699669B069AC69BC69916999698E69A7698D69A969BE69AF69BF69C4
+69BD69A469D469B969CA699A69CF69B3699369AA69A1699E69D96997699069C2
+69B569A569C66B4A6B4D6B4B6B9E6B9F6BA06BC36BC46BFE6ECE6EF56EF16F03
+6F256EF86F376EFB6F2E6F096F4E6F196F1A6F276F186F3B6F126EED6F0A0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00006F366F736EF96EEE6F2D6F406F306F3C6F356EEB6F076F0E6F436F056EFD
+6EF66F396F1C6EFC6F3A6F1F6F0D6F1E6F086F21718771907189718071857182
+718F717B718671817197724472537297729572937343734D7351734C74627473
+7471747574727467746E750075027503757D759076167608760C76157611760A
+761476B87781777C77857782776E7780776F777E778378B278AA78B478AD78A8
+787E78AB789E78A578A078AC78A278A47998798A798B79967995799479930000
+E3
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+79977988799279907A2B7A4A7A307A2F7A287A267AA87AAB7AAC7AEE7B887B9C
+7B8A7B917B907B967B8D7B8C7B9B7B8E7B857B9852847B997BA47B827CBB7CBF
+7CBC7CBA7DA77DB77DC27DA37DAA7DC17DC07DC57D9D7DCE7DC47DC67DCB7DCC
+7DAF7DB97D967DBC7D9F7DA67DAE7DA97DA17DC97F737FE27FE37FE57FDE0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00008024805D805C8189818681838187818D818C818B8215849784A484A1849F
+84BA84CE84C284AC84AE84AB84B984B484C184CD84AA849A84B184D0849D84A7
+84BB84A2849484C784CC849B84A984AF84A884D6849884B684CF84A084D784D4
+84D284DB84B084918661873387238728876B8740872E871E87218719871B8743
+872C8741873E874687208732872A872D873C8712873A87318735874287268727
+87388724871A8730871188F788E788F188F288FA88FE88EE88FC88F688FB0000
+E4
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+88F088EC88EB899D89A1899F899E89E989EB89E88AAB8A998A8B8A928A8F8A96
+8C3D8C688C698CD58CCF8CD78D968E098E028DFF8E0D8DFD8E0A8E038E078E06
+8E058DFE8E008E048F108F118F0E8F0D9123911C91209122911F911D911A9124
+9121911B917A91729179917392A592A49276929B927A92A0929492AA928D0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000092A6929A92AB92799297927F92A392EE928E9282929592A2927D928892A1
+928A9286928C929992A7927E928792A9929D928B922D969E96A196FF9758977D
+977A977E978397809782977B97849781977F97CE97CD981698AD98AE99029900
+9907999D999C99C399B999BB99BA99C299BD99C79AB19AE39AE79B3E9B3F9B60
+9B619B5F9CF19CF29CF59EA750FF5103513050F85106510750F650FE510B510C
+50FD510A528B528C52F152EF56485642564C56355641564A5649564656580000
+E5
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+565A56405633563D562C563E5638562A563A571A58AB589D58B158A058A358AF
+58AC58A558A158FF5AFF5AF45AFD5AF75AF65B035AF85B025AF95B015B075B05
+5B0F5C675D995D975D9F5D925DA25D935D955DA05D9C5DA15D9A5D9E5E695E5D
+5E605E5C7DF35EDB5EDE5EE15F495FB2618B6183617961B161B061A261890000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000619B619361AF61AD619F619261AA61A1618D616661B3622D646E64706496
+64A064856497649C648F648B648A648C64A3649F646864B164986576657A6579
+657B65B265B366B566B066A966B266B766AA66AF6A006A066A1769E569F86A15
+69F169E46A2069FF69EC69E26A1B6A1D69FE6A2769F269EE6A1469F769E76A40
+6A0869E669FB6A0D69FC69EB6A096A046A186A256A0F69F66A266A0769F46A16
+6B516BA56BA36BA26BA66C016C006BFF6C026F416F266F7E6F876FC66F920000
+E6
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+6F8D6F896F8C6F626F4F6F856F5A6F966F766F6C6F826F556F726F526F506F57
+6F946F936F5D6F006F616F6B6F7D6F676F906F536F8B6F696F7F6F956F636F77
+6F6A6F7B71B271AF719B71B071A0719A71A971B5719D71A5719E71A471A171AA
+719C71A771B37298729A73587352735E735F7360735D735B7361735A73590000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000736274877489748A74867481747D74857488747C747975087507757E7625
+761E7619761D761C7623761A7628761B769C769D769E769B778D778F77897788
+78CD78BB78CF78CC78D178CE78D478C878C378C478C9799A79A179A0799C79A2
+799B6B767A397AB27AB47AB37BB77BCB7BBE7BAC7BCE7BAF7BB97BCA7BB57CC5
+7CC87CCC7CCB7DF77DDB7DEA7DE77DD77DE17E037DFA7DE67DF67DF17DF07DEE
+7DDF7F767FAC7FB07FAD7FED7FEB7FEA7FEC7FE67FE88064806781A3819F0000
+E7
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+819E819581A2819981978216824F825382528250824E82518524853B850F8500
+8529850E8509850D851F850A8527851C84FB852B84FA8508850C84F4852A84F2
+851584F784EB84F384FC851284EA84E9851684FE8528851D852E850284FD851E
+84F68531852684E784E884F084EF84F9851885208530850B8519852F86620000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000875687638764877787E1877387588754875B87528761875A8751875E876D
+876A8750874E875F875D876F876C877A876E875C8765874F877B877587628767
+8769885A8905890C8914890B891789188919890689168911890E890989A289A4
+89A389ED89F089EC8ACF8AC68AB88AD38AD18AD48AD58ABB8AD78ABE8AC08AC5
+8AD88AC38ABA8ABD8AD98C3E8C4D8C8F8CE58CDF8CD98CE88CDA8CDD8CE78DA0
+8D9C8DA18D9B8E208E238E258E248E2E8E158E1B8E168E118E198E268E270000
+E8
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+8E148E128E188E138E1C8E178E1A8F2C8F248F188F1A8F208F238F168F179073
+9070906F9067906B912F912B9129912A91329126912E91859186918A91819182
+9184918092D092C392C492C092D992B692CF92F192DF92D892E992D792DD92CC
+92EF92C292E892CA92C892CE92E692CD92D592C992E092DE92E792D192D30000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000092B592E192C692B4957C95AC95AB95AE95B096A496A296D3970597089702
+975A978A978E978897D097CF981E981D9826982998289820981B982798B29908
+98FA9911991499169917991599DC99CD99CF99D399D499CE99C999D699D899CB
+99D799CC9AB39AEC9AEB9AF39AF29AF19B469B439B679B749B719B669B769B75
+9B709B689B649B6C9CFC9CFA9CFD9CFF9CF79D079D009CF99CFB9D089D059D04
+9E839ED39F0F9F10511C51135117511A511151DE533453E156705660566E0000
+E9
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+567356665663566D5672565E5677571C571B58C858BD58C958BF58BA58C258BC
+58C65B175B195B1B5B215B145B135B105B165B285B1A5B205B1E5BEF5DAC5DB1
+5DA95DA75DB55DB05DAE5DAA5DA85DB25DAD5DAF5DB45E675E685E665E6F5EE9
+5EE75EE65EE85EE55F4B5FBC619D61A8619661C561B461C661C161CC61BA0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000061BF61B8618C64D764D664D064CF64C964BD648964C364DB64F364D96533
+657F657C65A266C866BE66C066CA66CB66CF66BD66BB66BA66CC67236A346A66
+6A496A676A326A686A3E6A5D6A6D6A766A5B6A516A286A5A6A3B6A3F6A416A6A
+6A646A506A4F6A546A6F6A696A606A3C6A5E6A566A556A4D6A4E6A466B556B54
+6B566BA76BAA6BAB6BC86BC76C046C036C066FAD6FCB6FA36FC76FBC6FCE6FC8
+6F5E6FC46FBD6F9E6FCA6FA870046FA56FAE6FBA6FAC6FAA6FCF6FBF6FB80000
+EA
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+6FA26FC96FAB6FCD6FAF6FB26FB071C571C271BF71B871D671C071C171CB71D4
+71CA71C771CF71BD71D871BC71C671DA71DB729D729E736973667367736C7365
+736B736A747F749A74A074947492749574A1750B7580762F762D7631763D7633
+763C76357632763076BB76E6779A779D77A1779C779B77A277A3779577990000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000779778DD78E978E578EA78DE78E378DB78E178E278ED78DF78E079A47A44
+7A487A477AB67AB87AB57AB17AB77BDE7BE37BE77BDD7BD57BE57BDA7BE87BF9
+7BD47BEA7BE27BDC7BEB7BD87BDF7CD27CD47CD77CD07CD17E127E217E177E0C
+7E1F7E207E137E0E7E1C7E157E1A7E227E0B7E0F7E167E0D7E147E257E247F43
+7F7B7F7C7F7A7FB17FEF802A8029806C81B181A681AE81B981B581AB81B081AC
+81B481B281B781A781F282558256825785568545856B854D8553856185580000
+EB
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+854085468564854185628544855185478563853E855B8571854E856E85758555
+85678560858C8566855D85548565856C866386658664879B878F879787938792
+87888781879687988779878787A3878587908791879D87848794879C879A8789
+891E89268930892D892E89278931892289298923892F892C891F89F18AE00000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00008AE28AF28AF48AF58ADD8B148AE48ADF8AF08AC88ADE8AE18AE88AFF8AEF
+8AFB8C918C928C908CF58CEE8CF18CF08CF38D6C8D6E8DA58DA78E338E3E8E38
+8E408E458E368E3C8E3D8E418E308E3F8EBD8F368F2E8F358F328F398F378F34
+90769079907B908690FA913391359136919391909191918D918F9327931E9308
+931F9306930F937A9338933C931B9323931293019346932D930E930D92CB931D
+92FA9325931392F992F793349302932492FF932993399335932A9314930C0000
+EC
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+930B92FE9309930092FB931695BC95CD95BE95B995BA95B695BF95B595BD96A9
+96D4970B9712971097999797979497F097F89835982F98329924991F99279929
+999E99EE99EC99E599E499F099E399EA99E999E79AB99ABF9AB49ABB9AF69AFA
+9AF99AF79B339B809B859B879B7C9B7E9B7B9B829B939B929B909B7A9B950000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00009B7D9B889D259D179D209D1E9D149D299D1D9D189D229D109D199D1F9E88
+9E869E879EAE9EAD9ED59ED69EFA9F129F3D51265125512251245120512952F4
+5693568C568D568656845683567E5682567F568158D658D458CF58D25B2D5B25
+5B325B235B2C5B275B265B2F5B2E5B7B5BF15BF25DB75E6C5E6A5FBE5FBB61C3
+61B561BC61E761E061E561E461E861DE64EF64E964E364EB64E464E865816580
+65B665DA66D26A8D6A966A816AA56A896A9F6A9B6AA16A9E6A876A936A8E0000
+ED
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+6A956A836AA86AA46A916A7F6AA66A9A6A856A8C6A926B5B6BAD6C096FCC6FA9
+6FF46FD46FE36FDC6FED6FE76FE66FDE6FF26FDD6FE26FE871E171F171E871F2
+71E471F071E27373736E736F749774B274AB749074AA74AD74B174A574AF7510
+75117512750F7584764376487649764776A476E977B577AB77B277B777B60000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000077B477B177A877F078F378FD790278FB78FC78F2790578F978FE790479AB
+79A87A5C7A5B7A567A587A547A5A7ABE7AC07AC17C057C0F7BF27C007BFF7BFB
+7C0E7BF47C0B7BF37C027C097C037C017BF87BFD7C067BF07BF17C107C0A7CE8
+7E2D7E3C7E427E3398487E387E2A7E497E407E477E297E4C7E307E3B7E367E44
+7E3A7F457F7F7F7E7F7D7FF47FF2802C81BB81C481CC81CA81C581C781BC81E9
+825B825A825C85838580858F85A7859585A0858B85A3857B85A4859A859E0000
+EE
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+8577857C858985A1857A85788557858E85968586858D8599859D858185A28582
+858885858579857685988590859F866887BE87AA87AD87C587B087AC87B987B5
+87BC87AE87C987C387C287CC87B787AF87C487CA87B487B687BF87B887BD87DE
+87B289358933893C893E894189528937894289AD89AF89AE89F289F38B1E0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00008B188B168B118B058B0B8B228B0F8B128B158B078B0D8B088B068B1C8B13
+8B1A8C4F8C708C728C718C6F8C958C948CF98D6F8E4E8E4D8E538E508E4C8E47
+8F438F409085907E9138919A91A2919B9199919F91A1919D91A093A1938393AF
+936493569347937C9358935C93769349935093519360936D938F934C936A9379
+935793559352934F93719377937B9361935E936393679380934E935995C795C0
+95C995C395C595B796AE96B096AC9720971F9718971D9719979A97A1979C0000
+EF
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+979E979D97D597D497F198419844984A9849984598439925992B992C992A9933
+9932992F992D99319930999899A399A19A0299FA99F499F799F999F899F699FB
+99FD99FE99FC9A039ABE9AFE9AFD9B019AFC9B489B9A9BA89B9E9B9B9BA69BA1
+9BA59BA49B869BA29BA09BAF9D339D419D679D369D2E9D2F9D319D389D300000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00009D459D429D439D3E9D379D409D3D7FF59D2D9E8A9E899E8D9EB09EC89EDA
+9EFB9EFF9F249F239F229F549FA05131512D512E5698569C5697569A569D5699
+59705B3C5C695C6A5DC05E6D5E6E61D861DF61ED61EE61F161EA61F061EB61D6
+61E964FF650464FD64F86501650364FC659465DB66DA66DB66D86AC56AB96ABD
+6AE16AC66ABA6AB66AB76AC76AB46AAD6B5E6BC96C0B7007700C700D70017005
+7014700E6FFF70006FFB70266FFC6FF7700A720171FF71F9720371FD73760000
+F0
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+74B874C074B574C174BE74B674BB74C275147513765C76647659765076537657
+765A76A676BD76EC77C277BA78FF790C79137914790979107912791179AD79AC
+7A5F7C1C7C297C197C207C1F7C2D7C1D7C267C287C227C257C307E5C7E507E56
+7E637E587E627E5F7E517E607E577E537FB57FB37FF77FF8807581D181D20000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000081D0825F825E85B485C685C085C385C285B385B585BD85C785C485BF85CB
+85CE85C885C585B185B685D2862485B885B785BE866987E787E687E287DB87EB
+87EA87E587DF87F387E487D487DC87D387ED87D887E387A487D787D9880187F4
+87E887DD8953894B894F894C89468950895189498B2A8B278B238B338B308B35
+8B478B2F8B3C8B3E8B318B258B378B268B368B2E8B248B3B8B3D8B3A8C428C75
+8C998C988C978CFE8D048D028D008E5C8E628E608E578E568E5E8E658E670000
+F1
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+8E5B8E5A8E618E5D8E698E548F468F478F488F4B9128913A913B913E91A891A5
+91A791AF91AA93B5938C939293B7939B939D938993A7938E93AA939E93A69395
+93889399939F938D93B1939193B293A493A893B493A393A595D295D395D196B3
+96D796DA5DC296DF96D896DD97239722972597AC97AE97A897AB97A497AA0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000097A297A597D797D997D697D897FA98509851985298B89941993C993A9A0F
+9A0B9A099A0D9A049A119A0A9A059A079A069AC09ADC9B089B049B059B299B35
+9B4A9B4C9B4B9BC79BC69BC39BBF9BC19BB59BB89BD39BB69BC49BB99BBD9D5C
+9D539D4F9D4A9D5B9D4B9D599D569D4C9D579D529D549D5F9D589D5A9E8E9E8C
+9EDF9F019F009F169F259F2B9F2A9F299F289F4C9F5551345135529652F753B4
+56AB56AD56A656A756AA56AC58DA58DD58DB59125B3D5B3E5B3F5DC35E700000
+F2
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+5FBF61FB65076510650D6509650C650E658465DE65DD66DE6AE76AE06ACC6AD1
+6AD96ACB6ADF6ADC6AD06AEB6ACF6ACD6ADE6B606BB06C0C7019702770207016
+702B702170227023702970177024701C702A720C720A72077202720572A572A6
+72A472A372A174CB74C574B774C37516766077C977CA77C477F1791D791B0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00007921791C7917791E79B07A677A687C337C3C7C397C2C7C3B7CEC7CEA7E76
+7E757E787E707E777E6F7E7A7E727E747E687F4B7F4A7F837F867FB77FFD7FFE
+807881D781D582648261826385EB85F185ED85D985E185E885DA85D785EC85F2
+85F885D885DF85E385DC85D185F085E685EF85DE85E2880087FA880387F687F7
+8809880C880B880687FC880887FF880A88028962895A895B89578961895C8958
+895D8959898889B789B689F68B508B488B4A8B408B538B568B548B4B8B550000
+F3
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+8B518B428B528B578C438C778C768C9A8D068D078D098DAC8DAA8DAD8DAB8E6D
+8E788E738E6A8E6F8E7B8EC28F528F518F4F8F508F538FB49140913F91B091AD
+93DE93C793CF93C293DA93D093F993EC93CC93D993A993E693CA93D493EE93E3
+93D593C493CE93C093D293E7957D95DA95DB96E19729972B972C972897260000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000097B397B797B697DD97DE97DF985C9859985D985798BF98BD98BB98BE9948
+9947994399A699A79A1A9A159A259A1D9A249A1B9A229A209A279A239A1E9A1C
+9A149AC29B0B9B0A9B0E9B0C9B379BEA9BEB9BE09BDE9BE49BE69BE29BF09BD4
+9BD79BEC9BDC9BD99BE59BD59BE19BDA9D779D819D8A9D849D889D719D809D78
+9D869D8B9D8C9D7D9D6B9D749D759D709D699D859D739D7B9D829D6F9D799D7F
+9D879D689E949E919EC09EFC9F2D9F409F419F4D9F569F579F58533756B20000
+F4
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+56B556B358E35B455DC65DC75EEE5EEF5FC05FC161F9651765166515651365DF
+66E866E366E46AF36AF06AEA6AE86AF96AF16AEE6AEF703C7035702F70377034
+703170427038703F703A70397040703B703370417213721472A8737D737C74BA
+76AB76AA76BE76ED77CC77CE77CF77CD77F27925792379277928792479290000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000079B27A6E7A6C7A6D7AF77C497C487C4A7C477C457CEE7E7B7E7E7E817E80
+7FBA7FFF807981DB81D9820B82688269862285FF860185FE861B860085F68604
+86098605860C85FD8819881088118817881388168963896689B989F78B608B6A
+8B5D8B688B638B658B678B6D8DAE8E868E888E848F598F568F578F558F588F5A
+908D9143914191B791B591B291B3940B941393FB9420940F941493FE94159410
+94289419940D93F5940093F79407940E9416941293FA940993F8940A93FF0000
+F5
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+93FC940C93F69411940695DE95E095DF972E972F97B997BB97FD97FE98609862
+9863985F98C198C29950994E9959994C994B99539A329A349A319A2C9A2A9A36
+9A299A2E9A389A2D9AC79ACA9AC69B109B129B119C0B9C089BF79C059C129BF8
+9C409C079C0E9C069C179C149C099D9F9D999DA49D9D9D929D989D909D9B0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00009DA09D949D9C9DAA9D979DA19D9A9DA29DA89D9E9DA39DBF9DA99D969DA6
+9DA79E999E9B9E9A9EE59EE49EE79EE69F309F2E9F5B9F609F5E9F5D9F599F91
+513A51395298529756C356BD56BE5B485B475DCB5DCF5EF161FD651B6B026AFC
+6B036AF86B0070437044704A7048704970457046721D721A7219737E7517766A
+77D0792D7931792F7C547C537CF27E8A7E877E887E8B7E867E8D7F4D7FBB8030
+81DD8618862A8626861F8623861C86198627862E862186208629861E86250000
+F6
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+8829881D881B88208824881C882B884A896D8969896E896B89FA8B798B788B45
+8B7A8B7B8D108D148DAF8E8E8E8C8F5E8F5B8F5D91469144914591B9943F943B
+94369429943D943C94309439942A9437942C9440943195E595E495E39735973A
+97BF97E1986498C998C698C0995899569A399A3D9A469A449A429A419A3A0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00009A3F9ACD9B159B179B189B169B3A9B529C2B9C1D9C1C9C2C9C239C289C29
+9C249C219DB79DB69DBC9DC19DC79DCA9DCF9DBE9DC59DC39DBB9DB59DCE9DB9
+9DBA9DAC9DC89DB19DAD9DCC9DB39DCD9DB29E7A9E9C9EEB9EEE9EED9F1B9F18
+9F1A9F319F4E9F659F649F924EB956C656C556CB59715B4B5B4C5DD55DD15EF2
+65216520652665226B0B6B086B096C0D7055705670577052721E721F72A9737F
+74D874D574D974D7766D76AD793579B47A707A717C577C5C7C597C5B7C5A0000
+F7
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+7CF47CF17E917F4F7F8781DE826B863486358633862C86328636882C88288826
+882A8825897189BF89BE89FB8B7E8B848B828B868B858B7F8D158E958E948E9A
+8E928E908E968E978F608F629147944C9450944A944B944F9447944594489449
+9446973F97E3986A986998CB9954995B9A4E9A539A549A4C9A4F9A489A4A0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00009A499A529A509AD09B199B2B9B3B9B569B559C469C489C3F9C449C399C33
+9C419C3C9C379C349C329C3D9C369DDB9DD29DDE9DDA9DCB9DD09DDC9DD19DDF
+9DE99DD99DD89DD69DF59DD59DDD9EB69EF09F359F339F329F429F6B9F959FA2
+513D529958E858E759725B4D5DD8882F5F4F62016203620465296525659666EB
+6B116B126B0F6BCA705B705A7222738273817383767077D47C677C667E95826C
+863A86408639863C8631863B863E88308832882E883389768974897389FE0000
+F8
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+8B8C8B8E8B8B8B888C458D198E988F648F6391BC94629455945D9457945E97C4
+97C598009A569A599B1E9B1F9B209C529C589C509C4A9C4D9C4B9C559C599C4C
+9C4E9DFB9DF79DEF9DE39DEB9DF89DE49DF69DE19DEE9DE69DF29DF09DE29DEC
+9DF49DF39DE89DED9EC29ED09EF29EF39F069F1C9F389F379F369F439F4F0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00009F719F709F6E9F6F56D356CD5B4E5C6D652D66ED66EE6B13705F7061705D
+7060722374DB74E577D5793879B779B67C6A7E977F89826D8643883888378835
+884B8B948B958E9E8E9F8EA08E9D91BE91BD91C2946B9468946996E597469743
+974797C797E59A5E9AD59B599C639C679C669C629C5E9C609E029DFE9E079E03
+9E069E059E009E019E099DFF9DFD9E049EA09F1E9F469F749F759F7656D4652E
+65B86B186B196B176B1A7062722672AA77D877D979397C697C6B7CF67E9A0000
+F9
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+7E987E9B7E9981E081E18646864786488979897A897C897B89FF8B988B998EA5
+8EA48EA3946E946D946F9471947397499872995F9C689C6E9C6D9E0B9E0D9E10
+9E0F9E129E119EA19EF59F099F479F789F7B9F7A9F79571E70667C6F883C8DB2
+8EA691C394749478947694759A609C749C739C719C759E149E139EF69F0A0000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00009FA4706870657CF7866A883E883D883F8B9E8C9C8EA98EC9974B98739874
+98CC996199AB9A649A669A679B249E159E179F4862076B1E7227864C8EA89482
+948094819A699A689B2E9E197229864B8B9F94839C799EB776759A6B9C7A9E1D
+7069706A9EA49F7E9F499F98788192B988CF58BB60527CA75AFA255425662557
+2560256C2563255A2569255D255225642555255E256A256125582567255B2553
+25652556255F256B256225592568255C25512550256D256E2570256F25930000


Property changes on: trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/cp950.enc
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/dingbats.enc
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/dingbats.enc	                        (rev 0)
+++ trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/dingbats.enc	2020-03-17 20:46:21 UTC (rev 54375)
@@ -0,0 +1,20 @@
+# Encoding file: dingbats, single-byte
+S
+003F 1 1
+00
+0000000100020003000400050006000700080009000A000B000C000D000E000F
+0010001100120013001400150016001700180019001A001B001C001D001E001F
+00202701270227032704260E2706270727082709261B261E270C270D270E270F
+2710271127122713271427152716271727182719271A271B271C271D271E271F
+2720272127222723272427252726272726052729272A272B272C272D272E272F
+2730273127322733273427352736273727382739273A273B273C273D273E273F
+2740274127422743274427452746274727482749274A274B25CF274D25A0274F
+27502751275225B225BC25C6275625D727582759275A275B275C275D275E007F
+0080008100820083008400850086008700880089008A008B008C008D008E008F
+0090009100920093009400950096009700980099009A009B009C009D009E009F
+0000276127622763276427652766276726632666266526602460246124622463
+2464246524662467246824692776277727782779277A277B277C277D277E277F
+2780278127822783278427852786278727882789278A278B278C278D278E278F
+2790279127922793279421922194219527982799279A279B279C279D279E279F
+27A027A127A227A327A427A527A627A727A827A927AA27AB27AC27AD27AE27AF
+000027B127B227B327B427B527B627B727B827B927BA27BB27BC27BD27BE0000


Property changes on: trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/dingbats.enc
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/ebcdic.enc
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/ebcdic.enc	                        (rev 0)
+++ trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/ebcdic.enc	2020-03-17 20:46:21 UTC (rev 54375)
@@ -0,0 +1,19 @@
+S
+006F 0 1
+00
+0000000100020003008500090086007F0087008D008E000B000C000D000E000F
+0010001100120013008F000A0008009700180019009C009D001C001D001E001F
+0080008100820083008400920017001B00880089008A008B008C000500060007
+0090009100160093009400950096000400980099009A009B00140015009E001A
+002000A000E200E400E000E100E300E500E700F10060002E003C0028002B007C
+002600E900EA00EB00E800ED00EE00EF00EC00DF00210024002A0029003B009F
+002D002F00C200C400C000C100C300C500C700D1005E002C0025005F003E003F
+00F800C900CA00CB00C800CD00CE00CF00CC00A8003A002300400027003D0022
+00D800610062006300640065006600670068006900AB00BB00F000FD00FE00B1
+00B0006A006B006C006D006E006F00700071007200AA00BA00E600B800C600A4
+00B500AF0073007400750076007700780079007A00A100BF00D000DD00DE00AE
+00A200A300A500B700A900A700B600BC00BD00BE00AC005B005C005D00B400D7
+00F900410042004300440045004600470048004900AD00F400F600F200F300F5
+00A6004A004B004C004D004E004F00500051005200B900FB00FC00DB00FA00FF
+00D900F70053005400550056005700580059005A00B200D400D600D200D300D5
+003000310032003300340035003600370038003900B3007B00DC007D00DA007E


Property changes on: trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/ebcdic.enc
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/euc-cn.enc
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/euc-cn.enc	                        (rev 0)
+++ trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/euc-cn.enc	2020-03-17 20:46:21 UTC (rev 54375)
@@ -0,0 +1,1397 @@
+# Encoding file: euc-cn, multi-byte
+M
+003F 0 82
+00
+0000000100020003000400050006000700080009000A000B000C000D000E000F
+0010001100120013001400150016001700180019001A001B001C001D001E001F
+0020002100220023002400250026002700280029002A002B002C002D002E002F
+0030003100320033003400350036003700380039003A003B003C003D003E003F
+0040004100420043004400450046004700480049004A004B004C004D004E004F
+0050005100520053005400550056005700580059005A005B005C005D005E005F
+0060006100620063006400650066006700680069006A006B006C006D006E006F
+0070007100720073007400750076007700780079007A007B007C007D007E007F
+0080008100820083008400850086008700880089008A008B008C008D008E008F
+0090009100920093009400950096009700980099009A009B009C009D009E009F
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+A1
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000030003001300230FB02C902C700A8300330052015FF5E2225202620182019
+201C201D3014301530083009300A300B300C300D300E300F3016301730103011
+00B100D700F72236222722282211220F222A222922082237221A22A522252220
+23122299222B222E2261224C2248223D221D2260226E226F22642265221E2235
+22342642264000B0203220332103FF0400A4FFE0FFE1203000A7211626062605
+25CB25CF25CE25C725C625A125A025B325B2203B219221902191219330130000
+A2
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000024882489248A248B248C248D248E248F2490249124922493249424952496
+249724982499249A249B247424752476247724782479247A247B247C247D247E
+247F248024812482248324842485248624872460246124622463246424652466
+2467246824690000000032203221322232233224322532263227322832290000
+00002160216121622163216421652166216721682169216A216B000000000000
+A3
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000FF01FF02FF03FFE5FF05FF06FF07FF08FF09FF0AFF0BFF0CFF0DFF0EFF0F
+FF10FF11FF12FF13FF14FF15FF16FF17FF18FF19FF1AFF1BFF1CFF1DFF1EFF1F
+FF20FF21FF22FF23FF24FF25FF26FF27FF28FF29FF2AFF2BFF2CFF2DFF2EFF2F
+FF30FF31FF32FF33FF34FF35FF36FF37FF38FF39FF3AFF3BFF3CFF3DFF3EFF3F
+FF40FF41FF42FF43FF44FF45FF46FF47FF48FF49FF4AFF4BFF4CFF4DFF4EFF4F
+FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
+A4
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000304130423043304430453046304730483049304A304B304C304D304E304F
+3050305130523053305430553056305730583059305A305B305C305D305E305F
+3060306130623063306430653066306730683069306A306B306C306D306E306F
+3070307130723073307430753076307730783079307A307B307C307D307E307F
+3080308130823083308430853086308730883089308A308B308C308D308E308F
+3090309130923093000000000000000000000000000000000000000000000000
+A5
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000030A130A230A330A430A530A630A730A830A930AA30AB30AC30AD30AE30AF
+30B030B130B230B330B430B530B630B730B830B930BA30BB30BC30BD30BE30BF
+30C030C130C230C330C430C530C630C730C830C930CA30CB30CC30CD30CE30CF
+30D030D130D230D330D430D530D630D730D830D930DA30DB30DC30DD30DE30DF
+30E030E130E230E330E430E530E630E730E830E930EA30EB30EC30ED30EE30EF
+30F030F130F230F330F430F530F6000000000000000000000000000000000000
+A6
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000039103920393039403950396039703980399039A039B039C039D039E039F
+03A003A103A303A403A503A603A703A803A90000000000000000000000000000
+000003B103B203B303B403B503B603B703B803B903BA03BB03BC03BD03BE03BF
+03C003C103C303C403C503C603C703C803C90000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+A7
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000004100411041204130414041504010416041704180419041A041B041C041D
+041E041F0420042104220423042404250426042704280429042A042B042C042D
+042E042F00000000000000000000000000000000000000000000000000000000
+000004300431043204330434043504510436043704380439043A043B043C043D
+043E043F0440044104420443044404450446044704480449044A044B044C044D
+044E044F00000000000000000000000000000000000000000000000000000000
+A8
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000010100E101CE00E0011300E9011B00E8012B00ED01D000EC014D00F301D2
+00F2016B00FA01D400F901D601D801DA01DC00FC00EA00000000000000000000
+0000000000000000000031053106310731083109310A310B310C310D310E310F
+3110311131123113311431153116311731183119311A311B311C311D311E311F
+3120312131223123312431253126312731283129000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+A9
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00000000000000002500250125022503250425052506250725082509250A250B
+250C250D250E250F2510251125122513251425152516251725182519251A251B
+251C251D251E251F2520252125222523252425252526252725282529252A252B
+252C252D252E252F2530253125322533253425352536253725382539253A253B
+253C253D253E253F2540254125422543254425452546254725482549254A254B
+0000000000000000000000000000000000000000000000000000000000000000
+B0
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000554A963F57C3632854CE550954C07691764C853C77EE827E788D72319698
+978D6C285B894FFA630966975CB880FA684880AE660276CE51F9655671AC7FF1
+888450B2596561CA6FB382AD634C625253ED54277B06516B75A45DF462D48DCB
+9776628A8019575D97387F627238767D67CF767E64464F708D2562DC7A176591
+73ED642C6273822C9881677F7248626E62CC4F3474E3534A529E7ECA90A65E2E
+6886699C81807ED168D278C5868C9551508D8C2482DE80DE5305891252650000
+B1
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000858496F94FDD582199715B9D62B162A566B48C799C8D7206676F789160B2
+535153178F8880CC8D1D94A1500D72C8590760EB711988AB595482EF672C7B28
+5D297EF7752D6CF58E668FF8903C9F3B6BD491197B145F7C78A784D6853D6BD5
+6BD96BD65E015E8775F995ED655D5F0A5FC58F9F58C181C2907F965B97AD8FB9
+7F168D2C62414FBF53D8535E8FA88FA98FAB904D68075F6A819888689CD6618B
+522B762A5F6C658C6FD26EE85BBE6448517551B067C44E1979C9997C70B30000
+B2
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000075C55E7673BB83E064AD62E894B56CE2535A52C3640F94C27B944F2F5E1B
+82368116818A6E246CCA9A736355535C54FA886557E04E0D5E036B657C3F90E8
+601664E6731C88C16750624D8D22776C8E2991C75F6983DC8521991053C28695
+6B8B60ED60E8707F82CD82314ED36CA785CF64CD7CD969FD66F9834953957B56
+4FA7518C6D4B5C428E6D63D253C9832C833667E578B4643D5BDF5C945DEE8BE7
+62C667F48C7A640063BA8749998B8C177F2094F24EA7961098A4660C73160000
+B3
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000573A5C1D5E38957F507F80A05382655E7545553150218D856284949E671D
+56326F6E5DE2543570928F66626F64A463A35F7B6F8890F481E38FB05C186668
+5FF16C8996488D81886C649179F057CE6A59621054484E587A0B60E96F848BDA
+627F901E9A8B79E4540375F4630153196C608FDF5F1B9A70803B9F7F4F885C3A
+8D647FC565A570BD514551B2866B5D075BA062BD916C75748E0C7A2061017B79
+4EC77EF877854E1181ED521D51FA6A7153A88E87950496CF6EC19664695A0000
+B4
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000784050A877D7641089E6590463E35DDD7A7F693D4F20823955984E3275AE
+7A975E625E8A95EF521B5439708A6376952457826625693F918755076DF37EAF
+882262337EF075B5832878C196CC8F9E614874F78BCD6B64523A8D506B21806A
+847156F153064ECE4E1B51D17C97918B7C074FC38E7F7BE17A9C64675D1450AC
+810676017CB96DEC7FE067515B585BF878CB64AE641363AA632B9519642D8FBE
+7B5476296253592754466B7950A362345E266B864EE38D37888B5F85902E0000
+B5
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00006020803D62C54E39535590F863B880C665E66C2E4F4660EE6DE18BDE5F39
+86CB5F536321515A83616863520063638E4850125C9B79775BFC52307A3B60BC
+905376D75FB75F9776848E6C706F767B7B4977AA51F3909358244F4E6EF48FEA
+654C7B1B72C46DA47FDF5AE162B55E95573084827B2C5E1D5F1F90127F1498A0
+63826EC7789870B95178975B57AB75354F4375385E9760E659606DC06BBF7889
+53FC96D551CB52016389540A94938C038DCC7239789F87768FED8C0D53E00000
+B6
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00004E0176EF53EE948998769F0E952D5B9A8BA24E224E1C51AC846361C252A8
+680B4F97606B51BB6D1E515C6296659796618C46901775D890FD77636BD2728A
+72EC8BFB583577798D4C675C9540809A5EA66E2159927AEF77ED953B6BB565AD
+7F0E58065151961F5BF958A954288E726566987F56E4949D76FE9041638754C6
+591A593A579B8EB267358DFA8235524160F0581586FE5CE89E454FC4989D8BB9
+5A2560765384627C904F9102997F6069800C513F80335C1499756D314E8C0000
+B7
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00008D3053D17F5A7B4F4F104E4F96006CD573D085E95E06756A7FFB6A0A77FE
+94927E4151E170E653CD8FD483038D2972AF996D6CDB574A82B365B980AA623F
+963259A84EFF8BBF7EBA653E83F2975E556198DE80A5532A8BFD542080BA5E9F
+6CB88D3982AC915A54296C1B52067EB7575F711A6C7E7C89594B4EFD5FFF6124
+7CAA4E305C0167AB87025CF0950B98CE75AF70FD902251AF7F1D8BBD594951E4
+4F5B5426592B657780A45B75627662C28F905E456C1F7B264F0F4FD8670D0000
+B8
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00006D6E6DAA798F88B15F17752B629A8F854FEF91DC65A7812F81515E9C8150
+8D74526F89868D4B590D50854ED8961C723681798D1F5BCC8BA3964459877F1A
+54905676560E8BE565396982949976D66E895E727518674667D17AFF809D8D76
+611F79C665628D635188521A94A27F38809B7EB25C976E2F67607BD9768B9AD8
+818F7F947CD5641E95507A3F544A54E56B4C640162089E3D80F3759952729769
+845B683C86E49601969494EC4E2A54047ED968398DDF801566F45E9A7FB90000
+B9
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000057C2803F68975DE5653B529F606D9F9A4F9B8EAC516C5BAB5F135DE96C5E
+62F18D21517194A952FE6C9F82DF72D757A267848D2D591F8F9C83C754957B8D
+4F306CBD5B6459D19F1353E486CA9AA88C3780A16545987E56FA96C7522E74DC
+52505BE1630289024E5662D0602A68FA51735B9851A089C27BA199867F5060EF
+704C8D2F51495E7F901B747089C4572D78455F529F9F95FA8F689B3C8BE17678
+684267DC8DEA8D35523D8F8A6EDA68CD950590ED56FD679C88F98FC754C80000
+BA
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00009AB85B696D776C264EA55BB39A87916361A890AF97E9542B6DB55BD251FD
+558A7F557FF064BC634D65F161BE608D710A6C576C49592F676D822A58D5568E
+8C6A6BEB90DD597D801753F76D695475559D837783CF683879BE548C4F555408
+76D28C8996026CB36DB88D6B89109E648D3A563F9ED175D55F8872E0606854FC
+4EA86A2A886160528F7054C470D886799E3F6D2A5B8F5F187EA255894FAF7334
+543C539A5019540E547C4E4E5FFD745A58F6846B80E1877472D07CCA6E560000
+BB
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00005F27864E552C62A44E926CAA623782B154D7534E733E6ED1753B52125316
+8BDD69D05F8A60006DEE574F6B2273AF68538FD87F13636260A3552475EA8C62
+71156DA35BA65E7B8352614C9EC478FA87577C27768751F060F6714C66435E4C
+604D8C0E707063258F895FBD606286D456DE6BC160946167534960E066668D3F
+79FD4F1A70E96C478BB38BF27ED88364660F5A5A9B426D516DF78C416D3B4F19
+706B83B7621660D1970D8D27797851FB573E57FA673A75787A3D79EF7B950000
+BC
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000808C99658FF96FC08BA59E2159EC7EE97F095409678168D88F917C4D96C6
+53CA602575BE6C7253735AC97EA7632451E0810A5DF184DF628051805B634F0E
+796D524260B86D4E5BC45BC28BA18BB065E25FCC964559937EE77EAA560967B7
+59394F735BB652A0835A988A8D3E753294BE50477A3C4EF767B69A7E5AC16B7C
+76D1575A5C167B3A95F4714E517C80A9827059787F04832768C067EC78B17877
+62E363617B804FED526A51CF835069DB92748DF58D3189C1952E7BAD4EF60000
+BD
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000506582305251996F6E106E856DA75EFA50F559DC5C066D466C5F7586848B
+686859568BB253209171964D854969127901712680F64EA490CA6D479A845A07
+56BC640594F077EB4FA5811A72E189D2997A7F347EDE527F655991758F7F8F83
+53EB7A9663ED63A5768679F888579636622A52AB8282685467706377776B7AED
+6D017ED389E359D0621285C982A5754C501F4ECB75A58BEB5C4A5DFE7B4B65A4
+91D14ECA6D25895F7D2795264EC58C288FDB9773664B79818FD170EC6D780000
+BE
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00005C3D52B283465162830E775B66769CB84EAC60CA7CBE7CB37ECF4E958B66
+666F988897595883656C955C5F8475C997567ADF7ADE51C070AF7A9863EA7A76
+7EA0739697ED4E4570784E5D915253A9655165E781FC8205548E5C31759A97A0
+62D872D975BD5C459A7983CA5C40548077E94E3E6CAE805A62D2636E5DE85177
+8DDD8E1E952F4FF153E560E770AC526763509E435A1F5026773753777EE26485
+652B628963985014723589C951B38BC07EDD574783CC94A7519B541B5CFB0000
+BF
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00004FCA7AE36D5A90E19A8F55805496536154AF5F0063E9697751EF6168520A
+582A52D8574E780D770B5EB761777CE0625B62974EA27095800362F770E49760
+577782DB67EF68F578D5989779D158F354B353EF6E34514B523B5BA28BFE80AF
+554357A660735751542D7A7A60505B5463A762A053E362635BC767AF54ED7A9F
+82E691775E9388E4593857AE630E8DE880EF57577B774FA95FEB5BBD6B3E5321
+7B5072C2684677FF773665F751B54E8F76D45CBF7AA58475594E9B4150800000
+C0
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000998861276E8357646606634656F062EC62695ED39614578362C955878721
+814A8FA3556683B167658D5684DD5A6A680F62E67BEE961151706F9C8C3063FD
+89C861D27F0670C26EE57405699472FC5ECA90CE67176D6A635E52B372628001
+4F6C59E5916A70D96D9D52D24E5096F7956D857E78CA7D2F5121579264C2808B
+7C7B6CEA68F1695E51B7539868A872819ECE7BF172F879BB6F137406674E91CC
+9CA4793C83898354540F68174E3D538952B1783E5386522950884F8B4FD00000
+C1
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000075E27ACB7C926CA596B6529B748354E94FE9805483B28FDE95705EC9601C
+6D9F5E18655B813894FE604B70BC7EC37CAE51C968817CB1826F4E248F8691CF
+667E4EAE8C0564A9804A50DA759771CE5BE58FBD6F664E86648295635ED66599
+521788C270C852A3730E7433679778F797164E3490BB9CDE6DCB51DB8D41541D
+62CE73B283F196F69F8494C34F367F9A51CC707596755CAD988653E64EE46E9C
+740969B4786B998F7559521876246D4167F3516D9F99804B54997B3C7ABF0000
+C2
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00009686578462E29647697C5A0464027BD36F0F964B82A6536298855E907089
+63B35364864F9C819E93788C97328DEF8D429E7F6F5E79845F559646622E9A74
+541594DD4FA365C55C655C617F1586516C2F5F8B73876EE47EFF5CE6631B5B6A
+6EE653754E7163A0756562A18F6E4F264ED16CA67EB68BBA841D87BA7F57903B
+95237BA99AA188F8843D6D1B9A867EDC59889EBB739B780186829A6C9A82561B
+541757CB4E709EA653568FC881097792999286EE6EE1851366FC61626F2B0000
+C3
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00008C298292832B76F26C135FD983BD732B8305951A6BDB77DB94C6536F8302
+51925E3D8C8C8D384E4873AB679A68859176970971646CA177095A9295416BCF
+7F8E66275BD059B95A9A95E895F74EEC840C84996AAC76DF9530731B68A65B5F
+772F919A97617CDC8FF78C1C5F257C7379D889C56CCC871C5BC65E4268C97720
+7EF55195514D52C95A297F05976282D763CF778485D079D26E3A5E9959998511
+706D6C1162BF76BF654F60AF95FD660E879F9E2394ED540D547D8C2C64780000
+C4
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000647986116A21819C78E864699B5462B9672B83AB58A89ED86CAB6F205BDE
+964C8C0B725F67D062C772614EA959C66BCD589366AE5E5552DF6155672876EE
+776672677A4662FF54EA545094A090A35A1C7EB36C164E435976801059485357
+753796BE56CA63208111607C95F96DD65462998151855AE980FD59AE9713502A
+6CE55C3C62DF4F60533F817B90066EBA852B62C85E7478BE64B5637B5FF55A18
+917F9E1F5C3F634F80425B7D556E954A954D6D8560A867E072DE51DD5B810000
+C5
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000062E76CDE725B626D94AE7EBD81136D53519C5F04597452AA601259736696
+8650759F632A61E67CEF8BFA54E66B279E256BB485D5545550766CA4556A8DB4
+722C5E156015743662CD6392724C5F986E436D3E65006F5876D878D076FC7554
+522453DB4E535E9E65C1802A80D6629B5486522870AE888D8DD16CE1547880DA
+57F988F48D54966A914D4F696C9B55B776C6783062A870F96F8E5F6D84EC68DA
+787C7BF781A8670B9E4F636778B0576F78129739627962AB528874356BD70000
+C6
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00005564813E75B276AE533975DE50FB5C418B6C7BC7504F72479A9798D86F02
+74E27968648777A562FC98918D2B54C180584E52576A82F9840D5E7351ED74F6
+8BC45C4F57616CFC98875A4678349B448FEB7C955256625194FA4EC683868461
+83E984B257D467345703666E6D668C3166DD7011671F6B3A6816621A59BB4E03
+51C46F0667D26C8F517668CB59476B6775665D0E81109F5065D7794879419A91
+8D775C824E5E4F01542F5951780C56686C148FC45F036C7D6CE38BAB63900000
+C7
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000060706D3D72756266948E94C553438FC17B7E4EDF8C264E7E9ED494B194B3
+524D6F5C90636D458C3458115D4C6B206B4967AA545B81547F8C589985375F3A
+62A26A47953965726084686577A74E544FA85DE7979864AC7FD85CED4FCF7A8D
+520783044E14602F7A8394A64FB54EB279E6743452E482B964D279BD5BDD6C81
+97528F7B6C22503E537F6E0564CE66746C3060C598778BF75E86743C7A7779CB
+4E1890B174036C4256DA914B6CC58D8B533A86C666F28EAF5C489A716E200000
+C8
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000053D65A369F8B8DA353BB570898A76743919B6CC9516875CA62F372AC5238
+529D7F3A7094763853749E4A69B7786E96C088D97FA4713671C3518967D374E4
+58E4651856B78BA9997662707ED560F970ED58EC4EC14EBA5FCD97E74EFB8BA4
+5203598A7EAB62544ECD65E5620E833884C98363878D71946EB65BB97ED25197
+63C967D480898339881551125B7A59828FB14E736C5D516589258F6F962E854A
+745E951095F06DA682E55F3164926D128428816E9CC3585E8D5B4E0953C10000
+C9
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00004F1E6563685155D34E2764149A9A626B5AC2745F82726DA968EE50E7838E
+7802674052396C997EB150BB5565715E7B5B665273CA82EB67495C715220717D
+886B95EA965564C58D6181B355846C5562477F2E58924F2455468D4F664C4E0A
+5C1A88F368A2634E7A0D70E7828D52FA97F65C1154E890B57ECD59628D4A86C7
+820C820D8D6664445C0461516D89793E8BBE78377533547B4F388EAB6DF15A20
+7EC5795E6C885BA15A76751A80BE614E6E1758F0751F7525727253477EF30000
+CA
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000770176DB526980DC57235E08593172EE65BD6E7F8BD75C388671534177F3
+62FE65F64EC098DF86805B9E8BC653F277E24F7F5C4E9A7659CB5F0F793A58EB
+4E1667FF4E8B62ED8A93901D52BF662F55DC566C90024ED54F8D91CA99706C0F
+5E0260435BA489C68BD56536624B99965B885BFF6388552E53D77626517D852C
+67A268B36B8A62928F9353D482126DD1758F4E668D4E5B70719F85AF669166D9
+7F7287009ECD9F205C5E672F8FF06811675F620D7AD658855EB665706F310000
+CB
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000060555237800D6454887075295E05681362F4971C53CC723D8C016C347761
+7A0E542E77AC987A821C8BF47855671470C165AF64955636601D79C153F84E1D
+6B7B80865BFA55E356DB4F3A4F3C99725DF3677E80386002988290015B8B8BBC
+8BF5641C825864DE55FD82CF91654FD77D20901F7C9F50F358516EAF5BBF8BC9
+80839178849C7B97867D968B968F7EE59AD3788E5C817A57904296A7795F5B59
+635F7B0B84D168AD55067F2974107D2295016240584C4ED65B83597958540000
+CC
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000736D631E8E4B8E0F80CE82D462AC53F06CF0915E592A60016C70574D644A
+8D2A762B6EE9575B6A8075F06F6D8C2D8C0857666BEF889278B363A253F970AD
+6C645858642A580268E0819B55107CD650188EBA6DCC8D9F70EB638F6D9B6ED4
+7EE68404684390036DD896768BA85957727985E4817E75BC8A8A68AF52548E22
+951163D098988E44557C4F5366FF568F60D56D9552435C4959296DFB586B7530
+751C606C82148146631167618FE2773A8DF38D3494C15E165385542C70C30000
+CD
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00006C405EF7505C4EAD5EAD633A8247901A6850916E77B3540C94DC5F647AE5
+687663457B527EDF75DB507762955934900F51F879C37A8156FE5F9290146D82
+5C60571F541051546E4D56E263A89893817F8715892A9000541E5C6F81C062D6
+625881319E3596409A6E9A7C692D59A562D3553E631654C786D96D3C5A0374E6
+889C6B6A59168C4C5F2F6E7E73A9987D4E3870F75B8C7897633D665A769660CB
+5B9B5A494E0781556C6A738B4EA167897F515F8065FA671B5FD859845A010000
+CE
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00005DCD5FAE537197E68FDD684556F4552F60DF4E3A6F4D7EF482C7840E59D4
+4F1F4F2A5C3E7EAC672A851A5473754F80C355829B4F4F4D6E2D8C135C096170
+536B761F6E29868A658795FB7EB9543B7A337D0A95EE55E17FC174EE631D8717
+6DA17A9D621165A1536763E16C835DEB545C94A84E4C6C618BEC5C4B65E0829C
+68A7543E54346BCB6B664E9463425348821E4F0D4FAE575E620A96FE66647269
+52FF52A1609F8BEF661471996790897F785277FD6670563B54389521727A0000
+CF
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00007A00606F5E0C6089819D591560DC718470EF6EAA6C5072806A8488AD5E2D
+4E605AB3559C94E36D177CFB9699620F7EC6778E867E5323971E8F9666875CE1
+4FA072ED4E0B53A6590F54136380952851484ED99C9C7EA454B88D2488548237
+95F26D8E5F265ACC663E966973B0732E53BF817A99857FA15BAA967796507EBF
+76F853A2957699997BB189446E584E617FD479658BE660F354CD4EAB98795DF7
+6A6150CF54118C618427785D9704524A54EE56A395006D885BB56DC666530000
+D0
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00005C0F5B5D6821809655787B11654869544E9B6B47874E978B534F631F643A
+90AA659C80C18C10519968B0537887F961C86CC46CFB8C225C5185AA82AF950C
+6B238F9B65B05FFB5FC34FE18845661F8165732960FA51745211578B5F6290A2
+884C91925E78674F602759D3514451F680F853086C7996C4718A4F114FEE7F9E
+673D55C5950879C088967EE3589F620C9700865A5618987B5F908BB884C49157
+53D965ED5E8F755C60647D6E5A7F7EEA7EED8F6955A75BA360AC65CB73840000
+D1
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00009009766377297EDA9774859B5B667A7496EA884052CB718F5FAA65EC8BE2
+5BFB9A6F5DE16B896C5B8BAD8BAF900A8FC5538B62BC9E269E2D54404E2B82BD
+7259869C5D1688596DAF96C554D14E9A8BB6710954BD960970DF6DF976D04E25
+781487125CA95EF68A00989C960E708E6CBF594463A9773C884D6F1482735830
+71D5538C781A96C155015F6671305BB48C1A9A8C6B83592E9E2F79E76768626C
+4F6F75A17F8A6D0B96336C274EF075D2517B68376F3E90808170599674760000
+D2
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000064475C2790657A918C2359DA54AC8200836F898180006930564E80367237
+91CE51B64E5F987563964E1A53F666F3814B591C6DB24E0058F9533B63D694F1
+4F9D4F0A886398905937905779FB4EEA80F075916C825B9C59E85F5D69058681
+501A5DF24E5977E34EE5827A6291661390915C794EBF5F7981C69038808475AB
+4EA688D4610F6BC55FC64E4976CA6EA28BE38BAE8C0A8BD15F027FFC7FCC7ECE
+8335836B56E06BB797F3963459FB541F94F66DEB5BC5996E5C395F1596900000
+D3
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000537082F16A315A749E705E947F2883B984248425836787478FCE8D6276C8
+5F719896786C662054DF62E54F6381C375C85EB896CD8E0A86F9548F6CF36D8C
+6C38607F52C775285E7D4F1860A05FE75C24753190AE94C072B96CB96E389149
+670953CB53F34F5191C98BF153C85E7C8FC26DE44E8E76C26986865E611A8206
+4F594FDE903E9C7C61096E1D6E1496854E885A3196E84E0E5C7F79B95B878BED
+7FBD738957DF828B90C15401904755BB5CEA5FA161086B3272F180B28A890000
+D4
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00006D745BD388D598848C6B9A6D9E336E0A51A4514357A38881539F63F48F95
+56ED54585706733F6E907F188FDC82D1613F6028966266F07EA68D8A8DC394A5
+5CB37CA4670860A6960580184E9190E75300966851418FD08574915D665597F5
+5B55531D78386742683D54C9707E5BB08F7D518D572854B1651266828D5E8D43
+810F846C906D7CDF51FF85FB67A365E96FA186A48E81566A90207682707671E5
+8D2362E952196CFD8D3C600E589E618E66FE8D60624E55B36E23672D8F670000
+D5
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000094E195F87728680569A8548B4E4D70B88BC86458658B5B857A84503A5BE8
+77BB6BE18A797C986CBE76CF65A98F975D2D5C5586386808536062187AD96E5B
+7EFD6A1F7AE05F706F335F20638C6DA867564E085E108D264ED780C07634969C
+62DB662D627E6CBC8D7571677F695146808753EC906E629854F286F08F998005
+951785178FD96D5973CD659F771F7504782781FB8D1E94884FA6679575B98BCA
+9707632F9547963584B8632377415F8172F04E896014657462EF6B63653F0000
+D6
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00005E2775C790D18BC1829D679D652F5431871877E580A281026C414E4B7EC7
+804C76F4690D6B966267503C4F84574063076B628DBE53EA65E87EB85FD7631A
+63B781F381F47F6E5E1C5CD95236667A79E97A1A8D28709975D46EDE6CBB7A92
+4E2D76C55FE0949F88777EC879CD80BF91CD4EF24F17821F54685DDE6D328BCC
+7CA58F7480985E1A549276B15B99663C9AA473E0682A86DB6731732A8BF88BDB
+90107AF970DB716E62C477A956314E3B845767F152A986C08D2E94F87B510000
+D7
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00004F4F6CE8795D9A7B6293722A62FD4E1378168F6C64B08D5A7BC668695E84
+88C55986649E58EE72B6690E95258FFD8D5857607F008C0651C6634962D95353
+684C74228301914C55447740707C6D4A517954A88D4459FF6ECB6DC45B5C7D2B
+4ED47C7D6ED35B5081EA6E0D5B579B0368D58E2A5B977EFC603B7EB590B98D70
+594F63CD79DF8DB3535265CF79568BC5963B7EC494BB7E825634918967007F6A
+5C0A907566285DE64F5067DE505A4F5C57505EA7000000000000000000000000
+D8
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00004E8D4E0C51404E105EFF53454E154E984E1E9B325B6C56694E2879BA4E3F
+53154E47592D723B536E6C1056DF80E499976BD3777E9F174E364E9F9F104E5C
+4E694E9382885B5B556C560F4EC4538D539D53A353A553AE97658D5D531A53F5
+5326532E533E8D5C5366536352025208520E522D5233523F5240524C525E5261
+525C84AF527D528252815290529351827F544EBB4EC34EC94EC24EE84EE14EEB
+4EDE4F1B4EF34F224F644EF54F254F274F094F2B4F5E4F6765384F5A4F5D0000
+D9
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00004F5F4F574F324F3D4F764F744F914F894F834F8F4F7E4F7B4FAA4F7C4FAC
+4F944FE64FE84FEA4FC54FDA4FE34FDC4FD14FDF4FF85029504C4FF3502C500F
+502E502D4FFE501C500C50255028507E504350555048504E506C507B50A550A7
+50A950BA50D6510650ED50EC50E650EE5107510B4EDD6C3D4F584F654FCE9FA0
+6C467C74516E5DFD9EC999985181591452F9530D8A07531051EB591951554EA0
+51564EB3886E88A44EB5811488D279805B3488037FB851AB51B151BD51BC0000
+DA
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000051C7519651A251A58BA08BA68BA78BAA8BB48BB58BB78BC28BC38BCB8BCF
+8BCE8BD28BD38BD48BD68BD88BD98BDC8BDF8BE08BE48BE88BE98BEE8BF08BF3
+8BF68BF98BFC8BFF8C008C028C048C078C0C8C0F8C118C128C148C158C168C19
+8C1B8C188C1D8C1F8C208C218C258C278C2A8C2B8C2E8C2F8C328C338C358C36
+5369537A961D962296219631962A963D963C964296499654965F9667966C9672
+96749688968D969796B09097909B909D909990AC90A190B490B390B690BA0000
+DB
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000090B890B090CF90C590BE90D090C490C790D390E690E290DC90D790DB90EB
+90EF90FE91049122911E91239131912F913991439146520D594252A252AC52AD
+52BE54FF52D052D652F053DF71EE77CD5EF451F551FC9B2F53B65F01755A5DEF
+574C57A957A1587E58BC58C558D15729572C572A57335739572E572F575C573B
+574257695785576B5786577C577B5768576D5776577357AD57A4578C57B257CF
+57A757B4579357A057D557D857DA57D957D257B857F457EF57F857E457DD0000
+DC
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000580B580D57FD57ED5800581E5819584458205865586C58815889589A5880
+99A89F1961FF8279827D827F828F828A82A88284828E82918297829982AB82B8
+82BE82B082C882CA82E3829882B782AE82CB82CC82C182A982B482A182AA829F
+82C482CE82A482E1830982F782E4830F830782DC82F482D282D8830C82FB82D3
+8311831A83068314831582E082D5831C8351835B835C83088392833C83348331
+839B835E832F834F83478343835F834083178360832D833A8333836683650000
+DD
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00008368831B8369836C836A836D836E83B0837883B383B483A083AA8393839C
+8385837C83B683A9837D83B8837B8398839E83A883BA83BC83C1840183E583D8
+58078418840B83DD83FD83D6841C84388411840683D483DF840F840383F883F9
+83EA83C583C0842683F083E1845C8451845A8459847384878488847A84898478
+843C844684698476848C848E8431846D84C184CD84D084E684BD84D384CA84BF
+84BA84E084A184B984B4849784E584E3850C750D853884F08539851F853A0000
+DE
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00008556853B84FF84FC8559854885688564855E857A77A285438572857B85A4
+85A88587858F857985AE859C858585B985B785B085D385C185DC85FF86278605
+86298616863C5EFE5F08593C594180375955595A5958530F5C225C255C2C5C34
+624C626A629F62BB62CA62DA62D762EE632262F66339634B634363AD63F66371
+637A638E63B4636D63AC638A636963AE63BC63F263F863E063FF63C463DE63CE
+645263C663BE64456441640B641B6420640C64266421645E6484646D64960000
+DF
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000647A64B764B8649964BA64C064D064D764E464E265096525652E5F0B5FD2
+75195F11535F53F153FD53E953E853FB541254165406544B5452545354545456
+54435421545754595423543254825494547754715464549A549B548454765466
+549D54D054AD54C254B454D254A754A654D354D4547254A354D554BB54BF54CC
+54D954DA54DC54A954AA54A454DD54CF54DE551B54E7552054FD551454F35522
+5523550F55115527552A5567558F55B55549556D55415555553F5550553C0000
+E0
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00005537555655755576557755335530555C558B55D2558355B155B955885581
+559F557E55D65591557B55DF55BD55BE5594559955EA55F755C9561F55D155EB
+55EC55D455E655DD55C455EF55E555F255F355CC55CD55E855F555E48F94561E
+5608560C56015624562355FE56005627562D565856395657562C564D56625659
+565C564C5654568656645671566B567B567C5685569356AF56D456D756DD56E1
+56F556EB56F956FF5704570A5709571C5E0F5E195E145E115E315E3B5E3C0000
+E1
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00005E375E445E545E5B5E5E5E615C8C5C7A5C8D5C905C965C885C985C995C91
+5C9A5C9C5CB55CA25CBD5CAC5CAB5CB15CA35CC15CB75CC45CD25CE45CCB5CE5
+5D025D035D275D265D2E5D245D1E5D065D1B5D585D3E5D345D3D5D6C5D5B5D6F
+5D5D5D6B5D4B5D4A5D695D745D825D995D9D8C735DB75DC55F735F775F825F87
+5F895F8C5F955F995F9C5FA85FAD5FB55FBC88625F6172AD72B072B472B772B8
+72C372C172CE72CD72D272E872EF72E972F272F472F7730172F3730372FA0000
+E2
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000072FB731773137321730A731E731D7315732273397325732C733873317350
+734D73577360736C736F737E821B592598E7592459029963996799689969996A
+996B996C99749977997D998099849987998A998D999099919993999499955E80
+5E915E8B5E965EA55EA05EB95EB55EBE5EB38D535ED25ED15EDB5EE85EEA81BA
+5FC45FC95FD65FCF60035FEE60045FE15FE45FFE600560065FEA5FED5FF86019
+60356026601B600F600D6029602B600A603F602160786079607B607A60420000
+E3
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000606A607D6096609A60AD609D60836092608C609B60EC60BB60B160DD60D8
+60C660DA60B4612061266115612360F46100610E612B614A617561AC619461A7
+61B761D461F55FDD96B395E995EB95F195F395F595F695FC95FE960396049606
+9608960A960B960C960D960F96129615961696179619961A4E2C723F62156C35
+6C546C5C6C4A6CA36C856C906C946C8C6C686C696C746C766C866CA96CD06CD4
+6CAD6CF76CF86CF16CD76CB26CE06CD66CFA6CEB6CEE6CB16CD36CEF6CFE0000
+E4
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00006D396D276D0C6D436D486D076D046D196D0E6D2B6D4D6D2E6D356D1A6D4F
+6D526D546D336D916D6F6D9E6DA06D5E6D936D946D5C6D606D7C6D636E1A6DC7
+6DC56DDE6E0E6DBF6DE06E116DE66DDD6DD96E166DAB6E0C6DAE6E2B6E6E6E4E
+6E6B6EB26E5F6E866E536E546E326E256E446EDF6EB16E986EE06F2D6EE26EA5
+6EA76EBD6EBB6EB76ED76EB46ECF6E8F6EC26E9F6F626F466F476F246F156EF9
+6F2F6F366F4B6F746F2A6F096F296F896F8D6F8C6F786F726F7C6F7A6FD10000
+E5
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00006FC96FA76FB96FB66FC26FE16FEE6FDE6FE06FEF701A7023701B70397035
+704F705E5B805B845B955B935BA55BB8752F9A9E64345BE45BEE89305BF08E47
+8B078FB68FD38FD58FE58FEE8FE48FE98FE68FF38FE890059004900B90269011
+900D9016902190359036902D902F9044905190529050906890589062905B66B9
+9074907D908290889083908B5F505F575F565F585C3B54AB5C505C595B715C63
+5C667FBC5F2A5F295F2D82745F3C9B3B5C6E59815983598D59A959AA59A30000
+E6
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000599759CA59AB599E59A459D259B259AF59D759BE5A055A0659DD5A0859E3
+59D859F95A0C5A095A325A345A115A235A135A405A675A4A5A555A3C5A625A75
+80EC5AAA5A9B5A775A7A5ABE5AEB5AB25AD25AD45AB85AE05AE35AF15AD65AE6
+5AD85ADC5B095B175B165B325B375B405C155C1C5B5A5B655B735B515B535B62
+9A759A779A789A7A9A7F9A7D9A809A819A859A889A8A9A909A929A939A969A98
+9A9B9A9C9A9D9A9F9AA09AA29AA39AA59AA77E9F7EA17EA37EA57EA87EA90000
+E7
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00007EAD7EB07EBE7EC07EC17EC27EC97ECB7ECC7ED07ED47ED77EDB7EE07EE1
+7EE87EEB7EEE7EEF7EF17EF27F0D7EF67EFA7EFB7EFE7F017F027F037F077F08
+7F0B7F0C7F0F7F117F127F177F197F1C7F1B7F1F7F217F227F237F247F257F26
+7F277F2A7F2B7F2C7F2D7F2F7F307F317F327F337F355E7A757F5DDB753E9095
+738E739173AE73A2739F73CF73C273D173B773B373C073C973C873E573D9987C
+740A73E973E773DE73BA73F2740F742A745B7426742574287430742E742C0000
+E8
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000741B741A7441745C7457745574597477746D747E749C748E748074817487
+748B749E74A874A9749074A774D274BA97EA97EB97EC674C6753675E67486769
+67A56787676A6773679867A7677567A8679E67AD678B6777677C67F0680967D8
+680A67E967B0680C67D967B567DA67B367DD680067C367B867E2680E67C167FD
+6832683368606861684E6862684468646883681D68556866684168676840683E
+684A6849682968B5688F687468776893686B68C2696E68FC691F692068F90000
+E9
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000692468F0690B6901695768E369106971693969606942695D6984696B6980
+69986978693469CC6987698869CE6989696669636979699B69A769BB69AB69AD
+69D469B169C169CA69DF699569E0698D69FF6A2F69ED6A176A186A6569F26A44
+6A3E6AA06A506A5B6A356A8E6A796A3D6A286A586A7C6A916A906AA96A976AAB
+733773526B816B826B876B846B926B936B8D6B9A6B9B6BA16BAA8F6B8F6D8F71
+8F728F738F758F768F788F778F798F7A8F7C8F7E8F818F828F848F878F8B0000
+EA
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00008F8D8F8E8F8F8F988F9A8ECE620B6217621B621F6222622162256224622C
+81E774EF74F474FF750F75117513653465EE65EF65F0660A6619677266036615
+6600708566F7661D66346631663666358006665F66546641664F665666616657
+66776684668C66A7669D66BE66DB66DC66E666E98D328D338D368D3B8D3D8D40
+8D458D468D488D498D478D4D8D558D5989C789CA89CB89CC89CE89CF89D089D1
+726E729F725D7266726F727E727F7284728B728D728F72926308633263B00000
+EB
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000643F64D880046BEA6BF36BFD6BF56BF96C056C076C066C0D6C156C186C19
+6C1A6C216C296C246C2A6C3265356555656B724D72527256723086625216809F
+809C809380BC670A80BD80B180AB80AD80B480B780E780E880E980EA80DB80C2
+80C480D980CD80D7671080DD80EB80F180F480ED810D810E80F280FC67158112
+8C5A8136811E812C811881328148814C815381748159815A817181608169817C
+817D816D8167584D5AB58188818281916ED581A381AA81CC672681CA81BB0000
+EC
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000081C181A66B246B376B396B436B466B5998D198D298D398D598D998DA6BB3
+5F406BC289F365909F51659365BC65C665C465C365CC65CE65D265D67080709C
+7096709D70BB70C070B770AB70B170E870CA711071137116712F71317173715C
+716871457172714A7178717A719871B371B571A871A071E071D471E771F9721D
+7228706C7118716671B9623E623D624362486249793B794079467949795B795C
+7953795A796279577960796F7967797A7985798A799A79A779B35FD15FD00000
+ED
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000603C605D605A606760416059606360AB6106610D615D61A9619D61CB61D1
+62068080807F6C936CF66DFC77F677F87800780978177818781165AB782D781C
+781D7839783A783B781F783C7825782C78237829784E786D7856785778267850
+7847784C786A789B7893789A7887789C78A178A378B278B978A578D478D978C9
+78EC78F2790578F479137924791E79349F9B9EF99EFB9EFC76F17704770D76F9
+77077708771A77227719772D7726773577387750775177477743775A77680000
+EE
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000077627765777F778D777D7780778C7791779F77A077B077B577BD753A7540
+754E754B7548755B7572757975837F587F617F5F8A487F687F747F717F797F81
+7F7E76CD76E58832948594869487948B948A948C948D948F9490949494979495
+949A949B949C94A394A494AB94AA94AD94AC94AF94B094B294B494B694B794B8
+94B994BA94BC94BD94BF94C494C894C994CA94CB94CC94CD94CE94D094D194D2
+94D594D694D794D994D894DB94DE94DF94E094E294E494E594E794E894EA0000
+EF
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000094E994EB94EE94EF94F394F494F594F794F994FC94FD94FF950395029506
+95079509950A950D950E950F951295139514951595169518951B951D951E951F
+9522952A952B9529952C953195329534953695379538953C953E953F95429535
+9544954595469549954C954E954F9552955395549556955795589559955B955E
+955F955D95619562956495659566956795689569956A956B956C956F95719572
+9573953A77E777EC96C979D579ED79E379EB7A065D477A037A027A1E7A140000
+F0
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00007A397A377A519ECF99A57A707688768E7693769976A474DE74E0752C9E20
+9E229E289E299E2A9E2B9E2C9E329E319E369E389E379E399E3A9E3E9E419E42
+9E449E469E479E489E499E4B9E4C9E4E9E519E559E579E5A9E5B9E5C9E5E9E63
+9E669E679E689E699E6A9E6B9E6C9E719E6D9E7375927594759675A0759D75AC
+75A375B375B475B875C475B175B075C375C275D675CD75E375E875E675E475EB
+75E7760375F175FC75FF761076007605760C7617760A76257618761576190000
+F1
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000761B763C762276207640762D7630763F76357643763E7633764D765E7654
+765C7656766B766F7FCA7AE67A787A797A807A867A887A957AA67AA07AAC7AA8
+7AAD7AB3886488698872887D887F888288A288C688B788BC88C988E288CE88E3
+88E588F1891A88FC88E888FE88F0892189198913891B890A8934892B89368941
+8966897B758B80E576B276B477DC801280148016801C80208022802580268027
+802980288031800B803580438046804D80528069807189839878988098830000
+F2
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00009889988C988D988F9894989A989B989E989F98A198A298A598A6864D8654
+866C866E867F867A867C867B86A8868D868B86AC869D86A786A386AA869386A9
+86B686C486B586CE86B086BA86B186AF86C986CF86B486E986F186F286ED86F3
+86D0871386DE86F486DF86D886D18703870786F88708870A870D87098723873B
+871E8725872E871A873E87488734873187298737873F87828722877D877E877B
+87608770874C876E878B87538763877C876487598765879387AF87A887D20000
+F3
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000087C68788878587AD8797878387AB87E587AC87B587B387CB87D387BD87D1
+87C087CA87DB87EA87E087EE8816881387FE880A881B88218839883C7F367F42
+7F447F4582107AFA7AFD7B087B037B047B157B0A7B2B7B0F7B477B387B2A7B19
+7B2E7B317B207B257B247B337B3E7B1E7B587B5A7B457B757B4C7B5D7B607B6E
+7B7B7B627B727B717B907BA67BA77BB87BAC7B9D7BA87B857BAA7B9C7BA27BAB
+7BB47BD17BC17BCC7BDD7BDA7BE57BE67BEA7C0C7BFE7BFC7C0F7C167C0B0000
+F4
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00007C1F7C2A7C267C387C417C4081FE82018202820481EC8844822182228223
+822D822F8228822B8238823B82338234823E82448249824B824F825A825F8268
+887E8885888888D888DF895E7F9D7F9F7FA77FAF7FB07FB27C7C65497C917C9D
+7C9C7C9E7CA27CB27CBC7CBD7CC17CC77CCC7CCD7CC87CC57CD77CE8826E66A8
+7FBF7FCE7FD57FE57FE17FE67FE97FEE7FF37CF87D777DA67DAE7E477E9B9EB8
+9EB48D738D848D948D918DB18D678D6D8C478C49914A9150914E914F91640000
+F5
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00009162916191709169916F917D917E917291749179918C91859190918D9191
+91A291A391AA91AD91AE91AF91B591B491BA8C559E7E8DB88DEB8E058E598E69
+8DB58DBF8DBC8DBA8DC48DD68DD78DDA8DDE8DCE8DCF8DDB8DC68DEC8DF78DF8
+8DE38DF98DFB8DE48E098DFD8E148E1D8E1F8E2C8E2E8E238E2F8E3A8E408E39
+8E358E3D8E318E498E418E428E518E528E4A8E708E768E7C8E6F8E748E858E8F
+8E948E908E9C8E9E8C788C828C8A8C858C988C94659B89D689DE89DA89DC0000
+F6
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000089E589EB89EF8A3E8B26975396E996F396EF970697019708970F970E972A
+972D9730973E9F809F839F859F869F879F889F899F8A9F8C9EFE9F0B9F0D96B9
+96BC96BD96CE96D277BF96E0928E92AE92C8933E936A93CA938F943E946B9C7F
+9C829C859C869C879C887A239C8B9C8E9C909C919C929C949C959C9A9C9B9C9E
+9C9F9CA09CA19CA29CA39CA59CA69CA79CA89CA99CAB9CAD9CAE9CB09CB19CB2
+9CB39CB49CB59CB69CB79CBA9CBB9CBC9CBD9CC49CC59CC69CC79CCA9CCB0000
+F7
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00009CCC9CCD9CCE9CCF9CD09CD39CD49CD59CD79CD89CD99CDC9CDD9CDF9CE2
+977C978597919792979497AF97AB97A397B297B49AB19AB09AB79E589AB69ABA
+9ABC9AC19AC09AC59AC29ACB9ACC9AD19B459B439B479B499B489B4D9B5198E8
+990D992E995599549ADF9AE19AE69AEF9AEB9AFB9AED9AF99B089B0F9B139B1F
+9B239EBD9EBE7E3B9E829E879E889E8B9E9293D69E9D9E9F9EDB9EDC9EDD9EE0
+9EDF9EE29EE99EE79EE59EEA9EEF9F229F2C9F2F9F399F379F3D9F3E9F440000


Property changes on: trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/euc-cn.enc
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/euc-jp.enc
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/euc-jp.enc	                        (rev 0)
+++ trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/euc-jp.enc	2020-03-17 20:46:21 UTC (rev 54375)
@@ -0,0 +1,1353 @@
+# Encoding file: euc-jp, multi-byte
+M
+003F 0 79
+00
+0000000100020003000400050006000700080009000A000B000C000D000E000F
+0010001100120013001400150016001700180019001A001B001C001D001E001F
+0020002100220023002400250026002700280029002A002B002C002D002E002F
+0030003100320033003400350036003700380039003A003B003C003D003E003F
+0040004100420043004400450046004700480049004A004B004C004D004E004F
+0050005100520053005400550056005700580059005A005B005C005D005E005F
+0060006100620063006400650066006700680069006A006B006C006D006E006F
+0070007100720073007400750076007700780079007A007B007C007D007E007F
+0080008100820083008400850086008700880089008A008B008C008D0000008F
+0090009100920093009400950096009700980099009A009B009C009D009E009F
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+8E
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000FF61FF62FF63FF64FF65FF66FF67FF68FF69FF6AFF6BFF6CFF6DFF6EFF6F
+FF70FF71FF72FF73FF74FF75FF76FF77FF78FF79FF7AFF7BFF7CFF7DFF7EFF7F
+FF80FF81FF82FF83FF84FF85FF86FF87FF88FF89FF8AFF8BFF8CFF8DFF8EFF8F
+FF90FF91FF92FF93FF94FF95FF96FF97FF98FF99FF9AFF9BFF9CFF9DFF9EFF9F
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+A1
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000300030013002FF0CFF0E30FBFF1AFF1BFF1FFF01309B309C00B4FF4000A8
+FF3EFFE3FF3F30FD30FE309D309E30034EDD30053006300730FC20152010FF0F
+FF3C301C2016FF5C2026202520182019201C201DFF08FF0930143015FF3BFF3D
+FF5BFF5D30083009300A300B300C300D300E300F30103011FF0B221200B100D7
+00F7FF1D2260FF1CFF1E22662267221E22342642264000B0203220332103FFE5
+FF0400A200A3FF05FF03FF06FF0AFF2000A72606260525CB25CF25CE25C70000
+A2
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000025C625A125A025B325B225BD25BC203B3012219221902191219330130000
+00000000000000000000000000000000000000002208220B2286228722822283
+222A2229000000000000000000000000000000002227222800AC21D221D42200
+220300000000000000000000000000000000000000000000222022A523122202
+220722612252226A226B221A223D221D2235222B222C00000000000000000000
+00000000212B2030266F266D266A2020202100B6000000000000000025EF0000
+A3
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+FF10FF11FF12FF13FF14FF15FF16FF17FF18FF19000000000000000000000000
+0000FF21FF22FF23FF24FF25FF26FF27FF28FF29FF2AFF2BFF2CFF2DFF2EFF2F
+FF30FF31FF32FF33FF34FF35FF36FF37FF38FF39FF3A00000000000000000000
+0000FF41FF42FF43FF44FF45FF46FF47FF48FF49FF4AFF4BFF4CFF4DFF4EFF4F
+FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5A00000000000000000000
+A4
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000304130423043304430453046304730483049304A304B304C304D304E304F
+3050305130523053305430553056305730583059305A305B305C305D305E305F
+3060306130623063306430653066306730683069306A306B306C306D306E306F
+3070307130723073307430753076307730783079307A307B307C307D307E307F
+3080308130823083308430853086308730883089308A308B308C308D308E308F
+3090309130923093000000000000000000000000000000000000000000000000
+A5
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000030A130A230A330A430A530A630A730A830A930AA30AB30AC30AD30AE30AF
+30B030B130B230B330B430B530B630B730B830B930BA30BB30BC30BD30BE30BF
+30C030C130C230C330C430C530C630C730C830C930CA30CB30CC30CD30CE30CF
+30D030D130D230D330D430D530D630D730D830D930DA30DB30DC30DD30DE30DF
+30E030E130E230E330E430E530E630E730E830E930EA30EB30EC30ED30EE30EF
+30F030F130F230F330F430F530F6000000000000000000000000000000000000
+A6
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000039103920393039403950396039703980399039A039B039C039D039E039F
+03A003A103A303A403A503A603A703A803A90000000000000000000000000000
+000003B103B203B303B403B503B603B703B803B903BA03BB03BC03BD03BE03BF
+03C003C103C303C403C503C603C703C803C90000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+A7
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000004100411041204130414041504010416041704180419041A041B041C041D
+041E041F0420042104220423042404250426042704280429042A042B042C042D
+042E042F00000000000000000000000000000000000000000000000000000000
+000004300431043204330434043504510436043704380439043A043B043C043D
+043E043F0440044104420443044404450446044704480449044A044B044C044D
+044E044F00000000000000000000000000000000000000000000000000000000
+A8
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000025002502250C251025182514251C252C25242534253C25012503250F2513
+251B251725232533252B253B254B2520252F25282537253F251D253025252538
+2542000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+B0
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00004E9C55165A03963F54C0611B632859F690228475831C7A5060AA63E16E25
+65ED846682A69BF56893572765A162715B9B59D0867B98F47D627DBE9B8E6216
+7C9F88B75B895EB563096697684895C7978D674F4EE54F0A4F4D4F9D504956F2
+593759D45A015C0960DF610F61706613690570BA754F757079FB7DAD7DEF80C3
+840E88638B029055907A533B4E954EA557DF80B290C178EF4E0058F16EA29038
+7A328328828B9C2F5141537054BD54E156E059FB5F1598F26DEB80E4852D0000
+B1
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00009662967096A097FB540B53F35B8770CF7FBD8FC296E8536F9D5C7ABA4E11
+789381FC6E26561855046B1D851A9C3B59E553A96D6674DC958F56424E91904B
+96F2834F990C53E155B65B305F71662066F368046C386CF36D29745B76C87A4E
+983482F1885B8A6092ED6DB275AB76CA99C560A68B018D8A95B2698E53AD5186
+5712583059445BB45EF6602863A963F46CBF6F14708E7114715971D5733F7E01
+827682D185979060925B9D1B586965BC6C5A752551F9592E59655F805FDC0000
+B2
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000062BC65FA6A2A6B276BB4738B7FC189569D2C9D0E9EC45CA16C96837B5104
+5C4B61B681C6687672614E594FFA537860696E297A4F97F34E0B53164EEE4F55
+4F3D4FA14F7352A053EF5609590F5AC15BB65BE179D16687679C67B66B4C6CB3
+706B73C2798D79BE7A3C7B8782B182DB8304837783EF83D387668AB256298CA8
+8FE6904E971E868A4FC45CE862117259753B81E582BD86FE8CC096C5991399D5
+4ECB4F1A89E356DE584A58CA5EFB5FEB602A6094606261D0621262D065390000
+B3
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00009B41666668B06D777070754C76867D7582A587F9958B968E8C9D51F152BE
+591654B35BB35D16616869826DAF788D84CB88578A7293A79AB86D6C99A886D9
+57A367FF86CE920E5283568754045ED362E164B9683C68386BBB737278BA7A6B
+899A89D28D6B8F0390ED95A3969497695B665CB3697D984D984E639B7B206A2B
+6A7F68B69C0D6F5F5272559D607062EC6D3B6E076ED1845B89108F444E149C39
+53F6691B6A3A9784682A515C7AC384B291DC938C565B9D286822830584310000
+B4
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00007CA5520882C574E64E7E4F8351A05BD2520A52D852E75DFB559A582A59E6
+5B8C5B985BDB5E725E7960A3611F616361BE63DB656267D1685368FA6B3E6B53
+6C576F226F976F4574B0751876E3770B7AFF7BA17C217DE97F367FF0809D8266
+839E89B38ACC8CAB908494519593959195A2966597D3992882184E38542B5CB8
+5DCC73A9764C773C5CA97FEB8D0B96C19811985498584F014F0E5371559C5668
+57FA59475B095BC45C905E0C5E7E5FCC63EE673A65D765E2671F68CB68C40000
+B5
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00006A5F5E306BC56C176C7D757F79485B637A007D005FBD898F8A188CB48D77
+8ECC8F1D98E29A0E9B3C4E80507D510059935B9C622F628064EC6B3A72A07591
+79477FA987FB8ABC8B7063AC83CA97A05409540355AB68546A588A7078276775
+9ECD53745BA2811A865090064E184E454EC74F1153CA54385BAE5F1360256551
+673D6C426C726CE3707874037A767AAE7B087D1A7CFE7D6665E7725B53BB5C45
+5DE862D262E063196E20865A8A318DDD92F86F0179A69B5A4EA84EAB4EAC0000
+B6
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00004F9B4FA050D151477AF6517151F653545321537F53EB55AC58835CE15F37
+5F4A602F6050606D631F65596A4B6CC172C272ED77EF80F881058208854E90F7
+93E197FF99579A5A4EF051DD5C2D6681696D5C4066F26975738968507C8150C5
+52E457475DFE932665A46B236B3D7434798179BD7B4B7DCA82B983CC887F895F
+8B398FD191D1541F92804E5D503653E5533A72D7739677E982E68EAF99C699C8
+99D25177611A865E55B07A7A50765BD3904796854E326ADB91E75C515C480000
+B7
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000063987A9F6C9397748F617AAA718A96887C8268177E706851936C52F2541B
+85AB8A137FA48ECD90E15366888879414FC250BE521151445553572D73EA578B
+59515F625F8460756176616761A963B2643A656C666F68426E1375667A3D7CFB
+7D4C7D997E4B7F6B830E834A86CD8A088A638B668EFD981A9D8F82B88FCE9BE8
+5287621F64836FC09699684150916B206C7A6F547A747D5088408A2367084EF6
+503950265065517C5238526355A7570F58055ACC5EFA61B261F862F363720000
+B8
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000691C6A29727D72AC732E7814786F7D79770C80A9898B8B198CE28ED29063
+9375967A98559A139E785143539F53B35E7B5F266E1B6E90738473FE7D438237
+8A008AFA96504E4E500B53E4547C56FA59D15B645DF15EAB5F276238654567AF
+6E5672D07CCA88B480A180E183F0864E8A878DE8923796C798679F134E944E92
+4F0D53485449543E5A2F5F8C5FA1609F68A76A8E745A78818A9E8AA48B779190
+4E5E9BC94EA44F7C4FAF501950165149516C529F52B952FE539A53E354110000
+B9
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000540E5589575157A2597D5B545B5D5B8F5DE55DE75DF75E785E835E9A5EB7
+5F186052614C629762D863A7653B6602664366F4676D6821689769CB6C5F6D2A
+6D696E2F6E9D75327687786C7A3F7CE07D057D187D5E7DB18015800380AF80B1
+8154818F822A8352884C88618B1B8CA28CFC90CA91759271783F92FC95A4964D
+980599999AD89D3B525B52AB53F7540858D562F76FE08C6A8F5F9EB9514B523B
+544A56FD7A4091779D609ED273446F09817075115FFD60DA9AA872DB8FBC0000
+BA
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00006B6498034ECA56F0576458BE5A5A606861C7660F6606683968B16DF775D5
+7D3A826E9B424E9B4F5053C955065D6F5DE65DEE67FB6C99747378028A509396
+88DF57505EA7632B50B550AC518D670054C9585E59BB5BB05F69624D63A1683D
+6B736E08707D91C7728078157826796D658E7D3083DC88C18F09969B52645728
+67507F6A8CA151B45742962A583A698A80B454B25D0E57FC78959DFA4F5C524A
+548B643E6628671467F57A847B567D22932F685C9BAD7B395319518A52370000
+BB
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00005BDF62F664AE64E6672D6BBA85A996D176909BD6634C93069BAB76BF6652
+4E09509853C25C7160E864926563685F71E673CA75237B977E8286958B838CDB
+9178991065AC66AB6B8B4ED54ED44F3A4F7F523A53F853F255E356DB58EB59CB
+59C959FF5B505C4D5E025E2B5FD7601D6307652F5B5C65AF65BD65E8679D6B62
+6B7B6C0F7345794979C17CF87D197D2B80A2810281F389968A5E8A698A668A8C
+8AEE8CC78CDC96CC98FC6B6F4E8B4F3C4F8D51505B575BFA6148630166420000
+BC
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00006B216ECB6CBB723E74BD75D478C1793A800C803381EA84948F9E6C509E7F
+5F0F8B589D2B7AFA8EF85B8D96EB4E0353F157F759315AC95BA460896E7F6F06
+75BE8CEA5B9F85007BE0507267F4829D5C61854A7E1E820E51995C0463688D66
+659C716E793E7D1780058B1D8ECA906E86C790AA501F52FA5C3A6753707C7235
+914C91C8932B82E55BC25F3160F94E3B53D65B88624B67316B8A72E973E07A2E
+816B8DA391529996511253D7546A5BFF63886A397DAC970056DA53CE54680000
+BD
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00005B975C315DDE4FEE610162FE6D3279C079CB7D427E4D7FD281ED821F8490
+884689728B908E748F2F9031914B916C96C6919C4EC04F4F514553415F93620E
+67D46C416E0B73637E2691CD928353D459195BBF6DD1795D7E2E7C9B587E719F
+51FA88538FF04FCA5CFB662577AC7AE3821C99FF51C65FAA65EC696F6B896DF3
+6E966F6476FE7D145DE190759187980651E6521D6240669166D96E1A5EB67DD2
+7F7266F885AF85F78AF852A953D959735E8F5F90605592E4966450B7511F0000
+BE
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000052DD5320534753EC54E8554655315617596859BE5A3C5BB55C065C0F5C11
+5C1A5E845E8A5EE05F70627F628462DB638C63776607660C662D6676677E68A2
+6A1F6A356CBC6D886E096E58713C7126716775C77701785D7901796579F07AE0
+7B117CA77D39809683D6848B8549885D88F38A1F8A3C8A548A738C618CDE91A4
+9266937E9418969C97984E0A4E084E1E4E575197527057CE583458CC5B225E38
+60C564FE676167566D4472B675737A6384B88B7291B89320563157F498FE0000
+BF
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000062ED690D6B9671ED7E548077827289E698DF87558FB15C3B4F384FE14FB5
+55075A205BDD5BE95FC3614E632F65B0664B68EE699B6D786DF1753375B9771F
+795E79E67D3381E382AF85AA89AA8A3A8EAB8F9B903291DD97074EBA4EC15203
+587558EC5C0B751A5C3D814E8A0A8FC59663976D7B258ACF9808916256F353A8
+9017543957825E2563A86C34708A77617C8B7FE088709042915493109318968F
+745E9AC45D075D69657067A28DA896DB636E6749691983C5981796C088FE0000
+C0
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00006F84647A5BF84E16702C755D662F51C4523652E259D35F8160276210653F
+6574661F667468F268166B636E057272751F76DB7CBE805658F088FD897F8AA0
+8A938ACB901D91929752975965897A0E810696BB5E2D60DC621A65A566146790
+77F37A4D7C4D7E3E810A8CAC8D648DE18E5F78A9520762D963A5644262988A2D
+7A837BC08AAC96EA7D76820C87494ED95148534353605BA35C025C165DDD6226
+624764B0681368346CC96D456D1767D36F5C714E717D65CB7A7F7BAD7DDA0000
+C1
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00007E4A7FA8817A821B823985A68A6E8CCE8DF59078907792AD929195839BAE
+524D55846F387136516879857E5581B37CCE564C58515CA863AA66FE66FD695A
+72D9758F758E790E795679DF7C977D207D4486078A34963B90619F2050E75275
+53CC53E2500955AA58EE594F723D5B8B5C64531D60E360F3635C6383633F63BB
+64CD65E966F95DE369CD69FD6F1571E54E8975E976F87A937CDF7DCF7D9C8061
+83498358846C84BC85FB88C58D709001906D9397971C9A1250CF5897618E0000
+C2
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000081D385358D0890204FC3507452475373606F6349675F6E2C8DB3901F4FD7
+5C5E8CCA65CF7D9A53528896517663C35B585B6B5C0A640D6751905C4ED6591A
+592A6C708A51553E581559A560F0625367C182356955964099C49A284F535806
+5BFE80105CB15E2F5F856020614B623466FF6CF06EDE80CE817F82D4888B8CB8
+9000902E968A9EDB9BDB4EE353F059277B2C918D984C9DF96EDD702753535544
+5B856258629E62D36CA26FEF74228A1794386FC18AFE833851E786F853EA0000
+C3
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000053E94F4690548FB0596A81315DFD7AEA8FBF68DA8C3772F89C486A3D8AB0
+4E3953585606576662C563A265E66B4E6DE16E5B70AD77ED7AEF7BAA7DBB803D
+80C686CB8A95935B56E358C75F3E65AD66966A806BB575378AC7502477E55730
+5F1B6065667A6C6075F47A1A7F6E81F48718904599B37BC9755C7AF97B5184C4
+901079E97A9283365AE177404E2D4EF25B995FE062BD663C67F16CE8866B8877
+8A3B914E92F399D06A177026732A82E784578CAF4E01514651CB558B5BF50000
+C4
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00005E165E335E815F145F355F6B5FB461F2631166A2671D6F6E7252753A773A
+80748139817887768ABF8ADC8D858DF3929A957798029CE552C5635776F46715
+6C8873CD8CC393AE96736D25589C690E69CC8FFD939A75DB901A585A680263B4
+69FB4F436F2C67D88FBB85267DB49354693F6F70576A58F75B2C7D2C722A540A
+91E39DB44EAD4F4E505C507552438C9E544858245B9A5E1D5E955EAD5EF75F1F
+608C62B5633A63D068AF6C407887798E7A0B7DE082478A028AE68E4490130000
+C5
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000090B8912D91D89F0E6CE5645864E265756EF476847B1B906993D16EBA54F2
+5FB964A48F4D8FED92445178586B59295C555E976DFB7E8F751C8CBC8EE2985B
+70B94F1D6BBF6FB1753096FB514E54105835585759AC5C605F926597675C6E21
+767B83DF8CED901490FD934D7825783A52AA5EA6571F597460125012515A51AC
+51CD520055105854585859575B955CF65D8B60BC6295642D6771684368BC68DF
+76D76DD86E6F6D9B706F71C85F5375D879777B497B547B527CD67D7152300000
+C6
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00008463856985E48A0E8B048C468E0F9003900F94199676982D9A3095D850CD
+52D5540C58025C0E61A7649E6D1E77B37AE580F48404905392855CE09D07533F
+5F975FB36D9C7279776379BF7BE46BD272EC8AAD68036A6151F87A8169345C4A
+9CF682EB5BC59149701E56785C6F60C765666C8C8C5A90419813545166C7920D
+594890A351854E4D51EA85998B0E7058637A934B696299B47E04757753576960
+8EDF96E36C5D4E8C5C3C5F108FE953028CD1808986795EFF65E54E7351650000
+C7
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000059825C3F97EE4EFB598A5FCD8A8D6FE179B079625BE78471732B71B15E74
+5FF5637B649A71C37C984E435EFC4E4B57DC56A260A96FC37D0D80FD813381BF
+8FB2899786A45DF4628A64AD898767776CE26D3E743678345A467F7582AD99AC
+4FF35EC362DD63926557676F76C3724C80CC80BA8F29914D500D57F95A926885
+6973716472FD8CB758F28CE0966A9019877F79E477E784294F2F5265535A62CD
+67CF6CCA767D7B947C95823685848FEB66DD6F2072067E1B83AB99C19EA60000
+C8
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000051FD7BB178727BB880877B486AE85E61808C75517560516B92626E8C767A
+91979AEA4F107F70629C7B4F95A59CE9567A585986E496BC4F345224534A53CD
+53DB5E06642C6591677F6C3E6C4E724872AF73ED75547E41822C85E98CA97BC4
+91C67169981298EF633D6669756A76E478D0854386EE532A5351542659835E87
+5F7C60B26249627962AB65906BD46CCC75B276AE789179D87DCB7F7780A588AB
+8AB98CBB907F975E98DB6A0B7C3850995C3E5FAE67876BD8743577097F8E0000
+C9
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00009F3B67CA7A175339758B9AED5F66819D83F180985F3C5FC575627B46903C
+686759EB5A9B7D10767E8B2C4FF55F6A6A196C376F0274E2796888688A558C79
+5EDF63CF75C579D282D7932892F2849C86ED9C2D54C15F6C658C6D5C70158CA7
+8CD3983B654F74F64E0D4ED857E0592B5A665BCC51A85E035E9C601662766577
+65A7666E6D6E72367B268150819A82998B5C8CA08CE68D74961C96444FAE64AB
+6B66821E8461856A90E85C01695398A8847A85574F0F526F5FA95E45670D0000
+CA
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000798F8179890789866DF55F1762556CB84ECF72699B925206543B567458B3
+61A4626E711A596E7C897CDE7D1B96F06587805E4E194F75517558405E635E73
+5F0A67C44E26853D9589965B7C73980150FB58C1765678A7522577A585117B86
+504F590972477BC77DE88FBA8FD4904D4FBF52C95A295F0197AD4FDD821792EA
+570363556B69752B88DC8F147A4252DF58936155620A66AE6BCD7C3F83E95023
+4FF853055446583159495B9D5CF05CEF5D295E9662B16367653E65B9670B0000
+CB
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00006CD56CE170F978327E2B80DE82B3840C84EC870289128A2A8C4A90A692D2
+98FD9CF39D6C4E4F4EA1508D5256574A59A85E3D5FD85FD9623F66B4671B67D0
+68D251927D2180AA81A88B008C8C8CBF927E96325420982C531750D5535C58A8
+64B26734726777667A4691E652C36CA16B8658005E4C5954672C7FFB51E176C6
+646978E89B549EBB57CB59B96627679A6BCE54E969D95E55819C67959BAA67FE
+9C52685D4EA64FE353C862B9672B6CAB8FC44FAD7E6D9EBF4E0761626E800000
+CC
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00006F2B85135473672A9B455DF37B955CAC5BC6871C6E4A84D17A1481085999
+7C8D6C11772052D959227121725F77DB97279D61690B5A7F5A1851A5540D547D
+660E76DF8FF792989CF459EA725D6EC5514D68C97DBF7DEC97629EBA64786A21
+830259845B5F6BDB731B76F27DB280178499513267289ED976EE676252FF9905
+5C24623B7C7E8CB0554F60B67D0B958053014E5F51B6591C723A803691CE5F25
+77E253845F797D0485AC8A338E8D975667F385AE9453610961086CB976520000
+CD
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00008AED8F38552F4F51512A52C753CB5BA55E7D60A0618263D6670967DA6E67
+6D8C733673377531795088D58A98904A909190F596C4878D59154E884F594E0E
+8A898F3F981050AD5E7C59965BB95EB863DA63FA64C166DC694A69D86D0B6EB6
+719475287AAF7F8A8000844984C989818B218E0A9065967D990A617E62916B32
+6C836D747FCC7FFC6DC07F8587BA88F8676583B1983C96F76D1B7D61843D916A
+4E7153755D506B046FEB85CD862D89A75229540F5C65674E68A8740674830000
+CE
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000075E288CF88E191CC96E296785F8B73877ACB844E63A0756552896D416E9C
+74097559786B7C9296867ADC9F8D4FB6616E65C5865C4E864EAE50DA4E2151CC
+5BEE659968816DBC731F764277AD7A1C7CE7826F8AD2907C91CF96759818529B
+7DD1502B539867976DCB71D0743381E88F2A96A39C579E9F746058416D997D2F
+985E4EE44F364F8B51B752B15DBA601C73B2793C82D3923496B796F6970A9E97
+9F6266A66B74521752A370C888C25EC9604B61906F2371497C3E7DF4806F0000
+CF
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000084EE9023932C54429B6F6AD370898CC28DEF973252B45A415ECA5F046717
+697C69946D6A6F0F726272FC7BED8001807E874B90CE516D9E937984808B9332
+8AD6502D548C8A716B6A8CC4810760D167A09DF24E994E989C108A6B85C18568
+69006E7E78978155000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+D0
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00005F0C4E104E154E2A4E314E364E3C4E3F4E424E564E584E824E858C6B4E8A
+82125F0D4E8E4E9E4E9F4EA04EA24EB04EB34EB64ECE4ECD4EC44EC64EC24ED7
+4EDE4EED4EDF4EF74F094F5A4F304F5B4F5D4F574F474F764F884F8F4F984F7B
+4F694F704F914F6F4F864F9651184FD44FDF4FCE4FD84FDB4FD14FDA4FD04FE4
+4FE5501A50285014502A502550054F1C4FF650215029502C4FFE4FEF50115006
+504350476703505550505048505A5056506C50785080509A508550B450B20000
+D1
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000050C950CA50B350C250D650DE50E550ED50E350EE50F950F5510951015102
+511651155114511A5121513A5137513C513B513F51405152514C515451627AF8
+5169516A516E5180518256D8518C5189518F519151935195519651A451A651A2
+51A951AA51AB51B351B151B251B051B551BD51C551C951DB51E0865551E951ED
+51F051F551FE5204520B5214520E5227522A522E52335239524F5244524B524C
+525E5254526A527452695273527F527D528D529452925271528852918FA80000
+D2
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00008FA752AC52AD52BC52B552C152CD52D752DE52E352E698ED52E052F352F5
+52F852F9530653087538530D5310530F5315531A5323532F5331533353385340
+534653454E175349534D51D6535E5369536E5918537B53775382539653A053A6
+53A553AE53B053B653C37C1296D953DF66FC71EE53EE53E853ED53FA5401543D
+5440542C542D543C542E54365429541D544E548F5475548E545F547154775470
+5492547B5480547654845490548654C754A254B854A554AC54C454C854A80000
+D3
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000054AB54C254A454BE54BC54D854E554E6550F551454FD54EE54ED54FA54E2
+553955405563554C552E555C55455556555755385533555D5599558054AF558A
+559F557B557E5598559E55AE557C558355A9558755A855DA55C555DF55C455DC
+55E455D4561455F7561655FE55FD561B55F9564E565071DF5634563656325638
+566B5664562F566C566A56865680568A56A05694568F56A556AE56B656B456C2
+56BC56C156C356C056C856CE56D156D356D756EE56F9570056FF570457090000
+D4
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00005708570B570D57135718571655C7571C572657375738574E573B5740574F
+576957C057885761577F5789579357A057B357A457AA57B057C357C657D457D2
+57D3580A57D657E3580B5819581D587258215862584B58706BC05852583D5879
+588558B9589F58AB58BA58DE58BB58B858AE58C558D358D158D758D958D858E5
+58DC58E458DF58EF58FA58F958FB58FC58FD5902590A5910591B68A65925592C
+592D59325938593E7AD259555950594E595A5958596259605967596C59690000
+D5
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000059785981599D4F5E4FAB59A359B259C659E859DC598D59D959DA5A255A1F
+5A115A1C5A095A1A5A405A6C5A495A355A365A625A6A5A9A5ABC5ABE5ACB5AC2
+5ABD5AE35AD75AE65AE95AD65AFA5AFB5B0C5B0B5B165B325AD05B2A5B365B3E
+5B435B455B405B515B555B5A5B5B5B655B695B705B735B755B7865885B7A5B80
+5B835BA65BB85BC35BC75BC95BD45BD05BE45BE65BE25BDE5BE55BEB5BF05BF6
+5BF35C055C075C085C0D5C135C205C225C285C385C395C415C465C4E5C530000
+D6
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00005C505C4F5B715C6C5C6E4E625C765C795C8C5C915C94599B5CAB5CBB5CB6
+5CBC5CB75CC55CBE5CC75CD95CE95CFD5CFA5CED5D8C5CEA5D0B5D155D175D5C
+5D1F5D1B5D115D145D225D1A5D195D185D4C5D525D4E5D4B5D6C5D735D765D87
+5D845D825DA25D9D5DAC5DAE5DBD5D905DB75DBC5DC95DCD5DD35DD25DD65DDB
+5DEB5DF25DF55E0B5E1A5E195E115E1B5E365E375E445E435E405E4E5E575E54
+5E5F5E625E645E475E755E765E7A9EBC5E7F5EA05EC15EC25EC85ED05ECF0000
+D7
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00005ED65EE35EDD5EDA5EDB5EE25EE15EE85EE95EEC5EF15EF35EF05EF45EF8
+5EFE5F035F095F5D5F5C5F0B5F115F165F295F2D5F385F415F485F4C5F4E5F2F
+5F515F565F575F595F615F6D5F735F775F835F825F7F5F8A5F885F915F875F9E
+5F995F985FA05FA85FAD5FBC5FD65FFB5FE45FF85FF15FDD60B35FFF60216060
+601960106029600E6031601B6015602B6026600F603A605A6041606A6077605F
+604A6046604D6063604360646042606C606B60596081608D60E76083609A0000
+D8
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00006084609B60966097609260A7608B60E160B860E060D360B45FF060BD60C6
+60B560D8614D6115610660F660F7610060F460FA6103612160FB60F1610D610E
+6147613E61286127614A613F613C612C6134613D614261446173617761586159
+615A616B6174616F61656171615F615D6153617561996196618761AC6194619A
+618A619161AB61AE61CC61CA61C961F761C861C361C661BA61CB7F7961CD61E6
+61E361F661FA61F461FF61FD61FC61FE620062086209620D620C6214621B0000
+D9
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000621E6221622A622E6230623262336241624E625E6263625B62606268627C
+62826289627E62926293629662D46283629462D762D162BB62CF62FF62C664D4
+62C862DC62CC62CA62C262C7629B62C9630C62EE62F163276302630862EF62F5
+6350633E634D641C634F6396638E638063AB637663A3638F6389639F63B5636B
+636963BE63E963C063C663E363C963D263F663C4641664346406641364266436
+651D64176428640F6467646F6476644E652A6495649364A564A9648864BC0000
+DA
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000064DA64D264C564C764BB64D864C264F164E7820964E064E162AC64E364EF
+652C64F664F464F264FA650064FD6518651C650565246523652B653465356537
+65366538754B654865566555654D6558655E655D65726578658265838B8A659B
+659F65AB65B765C365C665C165C465CC65D265DB65D965E065E165F16772660A
+660365FB6773663566366634661C664F664466496641665E665D666466676668
+665F6662667066836688668E668966846698669D66C166B966C966BE66BC0000
+DB
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000066C466B866D666DA66E0663F66E666E966F066F566F7670F6716671E6726
+67279738672E673F67366741673867376746675E676067596763676467896770
+67A9677C676A678C678B67A667A1678567B767EF67B467EC67B367E967B867E4
+67DE67DD67E267EE67B967CE67C667E76A9C681E684668296840684D6832684E
+68B3682B685968636877687F689F688F68AD6894689D689B68836AAE68B96874
+68B568A068BA690F688D687E690168CA690868D86922692668E1690C68CD0000
+DC
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000068D468E768D569366912690468D768E3692568F968E068EF6928692A691A
+6923692168C669796977695C6978696B6954697E696E69396974693D69596930
+6961695E695D6981696A69B269AE69D069BF69C169D369BE69CE5BE869CA69DD
+69BB69C369A76A2E699169A0699C699569B469DE69E86A026A1B69FF6B0A69F9
+69F269E76A0569B16A1E69ED6A1469EB6A0A6A126AC16A236A136A446A0C6A72
+6A366A786A476A626A596A666A486A386A226A906A8D6AA06A846AA26AA30000
+DD
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00006A9786176ABB6AC36AC26AB86AB36AAC6ADE6AD16ADF6AAA6ADA6AEA6AFB
+6B0586166AFA6B126B169B316B1F6B386B3776DC6B3998EE6B476B436B496B50
+6B596B546B5B6B5F6B616B786B796B7F6B806B846B836B8D6B986B956B9E6BA4
+6BAA6BAB6BAF6BB26BB16BB36BB76BBC6BC66BCB6BD36BDF6BEC6BEB6BF36BEF
+9EBE6C086C136C146C1B6C246C236C5E6C556C626C6A6C826C8D6C9A6C816C9B
+6C7E6C686C736C926C906CC46CF16CD36CBD6CD76CC56CDD6CAE6CB16CBE0000
+DE
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00006CBA6CDB6CEF6CD96CEA6D1F884D6D366D2B6D3D6D386D196D356D336D12
+6D0C6D636D936D646D5A6D796D596D8E6D956FE46D856DF96E156E0A6DB56DC7
+6DE66DB86DC66DEC6DDE6DCC6DE86DD26DC56DFA6DD96DE46DD56DEA6DEE6E2D
+6E6E6E2E6E196E726E5F6E3E6E236E6B6E2B6E766E4D6E1F6E436E3A6E4E6E24
+6EFF6E1D6E386E826EAA6E986EC96EB76ED36EBD6EAF6EC46EB26ED46ED56E8F
+6EA56EC26E9F6F416F11704C6EEC6EF86EFE6F3F6EF26F316EEF6F326ECC0000
+DF
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00006F3E6F136EF76F866F7A6F786F816F806F6F6F5B6FF36F6D6F826F7C6F58
+6F8E6F916FC26F666FB36FA36FA16FA46FB96FC66FAA6FDF6FD56FEC6FD46FD8
+6FF16FEE6FDB7009700B6FFA70117001700F6FFE701B701A6F74701D7018701F
+7030703E7032705170637099709270AF70F170AC70B870B370AE70DF70CB70DD
+70D9710970FD711C711971657155718871667162714C7156716C718F71FB7184
+719571A871AC71D771B971BE71D271C971D471CE71E071EC71E771F571FC0000
+E0
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000071F971FF720D7210721B7228722D722C72307232723B723C723F72407246
+724B72587274727E7282728172877292729672A272A772B972B272C372C672C4
+72CE72D272E272E072E172F972F7500F7317730A731C7316731D7334732F7329
+7325733E734E734F9ED87357736A7368737073787375737B737A73C873B373CE
+73BB73C073E573EE73DE74A27405746F742573F87432743A7455743F745F7459
+7441745C746974707463746A7476747E748B749E74A774CA74CF74D473F10000
+E1
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000074E074E374E774E974EE74F274F074F174F874F7750475037505750C750E
+750D75157513751E7526752C753C7544754D754A7549755B7546755A75697564
+7567756B756D75787576758675877574758A758975827594759A759D75A575A3
+75C275B375C375B575BD75B875BC75B175CD75CA75D275D975E375DE75FE75FF
+75FC760175F075FA75F275F3760B760D7609761F762776207621762276247634
+7630763B764776487646765C76587661766276687669766A7667766C76700000
+E2
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000767276767678767C768076837688768B768E769676937699769A76B076B4
+76B876B976BA76C276CD76D676D276DE76E176E576E776EA862F76FB77087707
+770477297724771E77257726771B773777387747775A7768776B775B7765777F
+777E7779778E778B779177A0779E77B077B677B977BF77BC77BD77BB77C777CD
+77D777DA77DC77E377EE77FC780C781279267820792A7845788E78747886787C
+789A788C78A378B578AA78AF78D178C678CB78D478BE78BC78C578CA78EC0000
+E3
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000078E778DA78FD78F47907791279117919792C792B794079607957795F795A
+79557953797A797F798A799D79A79F4B79AA79AE79B379B979BA79C979D579E7
+79EC79E179E37A087A0D7A187A197A207A1F79807A317A3B7A3E7A377A437A57
+7A497A617A627A699F9D7A707A797A7D7A887A977A957A987A967AA97AC87AB0
+7AB67AC57AC47ABF90837AC77ACA7ACD7ACF7AD57AD37AD97ADA7ADD7AE17AE2
+7AE67AED7AF07B027B0F7B0A7B067B337B187B197B1E7B357B287B367B500000
+E4
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00007B7A7B047B4D7B0B7B4C7B457B757B657B747B677B707B717B6C7B6E7B9D
+7B987B9F7B8D7B9C7B9A7B8B7B927B8F7B5D7B997BCB7BC17BCC7BCF7BB47BC6
+7BDD7BE97C117C147BE67BE57C607C007C077C137BF37BF77C177C0D7BF67C23
+7C277C2A7C1F7C377C2B7C3D7C4C7C437C547C4F7C407C507C587C5F7C647C56
+7C657C6C7C757C837C907CA47CAD7CA27CAB7CA17CA87CB37CB27CB17CAE7CB9
+7CBD7CC07CC57CC27CD87CD27CDC7CE29B3B7CEF7CF27CF47CF67CFA7D060000
+E5
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00007D027D1C7D157D0A7D457D4B7D2E7D327D3F7D357D467D737D567D4E7D72
+7D687D6E7D4F7D637D937D897D5B7D8F7D7D7D9B7DBA7DAE7DA37DB57DC77DBD
+7DAB7E3D7DA27DAF7DDC7DB87D9F7DB07DD87DDD7DE47DDE7DFB7DF27DE17E05
+7E0A7E237E217E127E317E1F7E097E0B7E227E467E667E3B7E357E397E437E37
+7E327E3A7E677E5D7E567E5E7E597E5A7E797E6A7E697E7C7E7B7E837DD57E7D
+8FAE7E7F7E887E897E8C7E927E907E937E947E967E8E7E9B7E9C7F387F3A0000
+E6
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00007F457F4C7F4D7F4E7F507F517F557F547F587F5F7F607F687F697F677F78
+7F827F867F837F887F877F8C7F947F9E7F9D7F9A7FA37FAF7FB27FB97FAE7FB6
+7FB88B717FC57FC67FCA7FD57FD47FE17FE67FE97FF37FF998DC80068004800B
+801280188019801C80218028803F803B804A804680528058805A805F80628068
+80738072807080768079807D807F808480868085809B8093809A80AD519080AC
+80DB80E580D980DD80C480DA80D6810980EF80F1811B81298123812F814B0000
+E7
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000968B8146813E8153815180FC8171816E81658166817481838188818A8180
+818281A0819581A481A3815F819381A981B081B581BE81B881BD81C081C281BA
+81C981CD81D181D981D881C881DA81DF81E081E781FA81FB81FE820182028205
+8207820A820D821082168229822B82388233824082598258825D825A825F8264
+82628268826A826B822E827182778278827E828D829282AB829F82BB82AC82E1
+82E382DF82D282F482F382FA8393830382FB82F982DE830682DC830982D90000
+E8
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000833583348316833283318340833983508345832F832B831783188385839A
+83AA839F83A283968323838E8387838A837C83B58373837583A0838983A883F4
+841383EB83CE83FD840383D8840B83C183F7840783E083F2840D8422842083BD
+8438850683FB846D842A843C855A84848477846B84AD846E848284698446842C
+846F8479843584CA846284B984BF849F84D984CD84BB84DA84D084C184C684D6
+84A1852184FF84F485178518852C851F8515851484FC85408563855885480000
+E9
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000085418602854B8555858085A485888591858A85A8856D8594859B85EA8587
+859C8577857E859085C985BA85CF85B985D085D585DD85E585DC85F9860A8613
+860B85FE85FA86068622861A8630863F864D4E558654865F86678671869386A3
+86A986AA868B868C86B686AF86C486C686B086C9882386AB86D486DE86E986EC
+86DF86DB86EF8712870687088700870386FB87118709870D86F9870A8734873F
+8737873B87258729871A8760875F8778874C874E877487578768876E87590000
+EA
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000087538763876A880587A2879F878287AF87CB87BD87C087D096D687AB87C4
+87B387C787C687BB87EF87F287E0880F880D87FE87F687F7880E87D288118816
+8815882288218831883688398827883B8844884288528859885E8862886B8881
+887E889E8875887D88B5887288828897889288AE889988A2888D88A488B088BF
+88B188C388C488D488D888D988DD88F9890288FC88F488E888F28904890C890A
+89138943891E8925892A892B89418944893B89368938894C891D8960895E0000
+EB
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000089668964896D896A896F89748977897E89838988898A8993899889A189A9
+89A689AC89AF89B289BA89BD89BF89C089DA89DC89DD89E789F489F88A038A16
+8A108A0C8A1B8A1D8A258A368A418A5B8A528A468A488A7C8A6D8A6C8A628A85
+8A828A848AA88AA18A918AA58AA68A9A8AA38AC48ACD8AC28ADA8AEB8AF38AE7
+8AE48AF18B148AE08AE28AF78ADE8ADB8B0C8B078B1A8AE18B168B108B178B20
+8B3397AB8B268B2B8B3E8B288B418B4C8B4F8B4E8B498B568B5B8B5A8B6B0000
+EC
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00008B5F8B6C8B6F8B748B7D8B808B8C8B8E8B928B938B968B998B9A8C3A8C41
+8C3F8C488C4C8C4E8C508C558C628C6C8C788C7A8C828C898C858C8A8C8D8C8E
+8C948C7C8C98621D8CAD8CAA8CBD8CB28CB38CAE8CB68CC88CC18CE48CE38CDA
+8CFD8CFA8CFB8D048D058D0A8D078D0F8D0D8D109F4E8D138CCD8D148D168D67
+8D6D8D718D738D818D998DC28DBE8DBA8DCF8DDA8DD68DCC8DDB8DCB8DEA8DEB
+8DDF8DE38DFC8E088E098DFF8E1D8E1E8E108E1F8E428E358E308E348E4A0000
+ED
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00008E478E498E4C8E508E488E598E648E608E2A8E638E558E768E728E7C8E81
+8E878E858E848E8B8E8A8E938E918E948E998EAA8EA18EAC8EB08EC68EB18EBE
+8EC58EC88ECB8EDB8EE38EFC8EFB8EEB8EFE8F0A8F058F158F128F198F138F1C
+8F1F8F1B8F0C8F268F338F3B8F398F458F428F3E8F4C8F498F468F4E8F578F5C
+8F628F638F648F9C8F9F8FA38FAD8FAF8FB78FDA8FE58FE28FEA8FEF90878FF4
+90058FF98FFA901190159021900D901E9016900B90279036903590398FF80000
+EE
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000904F905090519052900E9049903E90569058905E9068906F907696A89072
+9082907D90819080908A9089908F90A890AF90B190B590E290E4624890DB9102
+9112911991329130914A9156915891639165916991739172918B9189918291A2
+91AB91AF91AA91B591B491BA91C091C191C991CB91D091D691DF91E191DB91FC
+91F591F6921E91FF9214922C92159211925E925792459249926492489295923F
+924B9250929C92969293929B925A92CF92B992B792E9930F92FA9344932E0000
+EF
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000093199322931A9323933A9335933B935C9360937C936E935693B093AC93AD
+939493B993D693D793E893E593D893C393DD93D093C893E4941A941494139403
+940794109436942B94359421943A944194529444945B94609462945E946A9229
+947094759477947D945A947C947E9481947F95829587958A9594959695989599
+95A095A895A795AD95BC95BB95B995BE95CA6FF695C395CD95CC95D595D495D6
+95DC95E195E595E296219628962E962F9642964C964F964B9677965C965E0000
+F0
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000965D965F96669672966C968D96989695969796AA96A796B196B296B096B4
+96B696B896B996CE96CB96C996CD894D96DC970D96D596F99704970697089713
+970E9711970F971697199724972A97309739973D973E97449746974897429749
+975C976097649766976852D2976B977197799785977C9781977A9786978B978F
+9790979C97A897A697A397B397B497C397C697C897CB97DC97ED9F4F97F27ADF
+97F697F5980F980C9838982498219837983D9846984F984B986B986F98700000
+F1
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000098719874987398AA98AF98B198B698C498C398C698E998EB990399099912
+991499189921991D991E99249920992C992E993D993E9942994999459950994B
+99519952994C99559997999899A599AD99AE99BC99DF99DB99DD99D899D199ED
+99EE99F199F299FB99F89A019A0F9A0599E29A199A2B9A379A459A429A409A43
+9A3E9A559A4D9A5B9A579A5F9A629A659A649A699A6B9A6A9AAD9AB09ABC9AC0
+9ACF9AD19AD39AD49ADE9ADF9AE29AE39AE69AEF9AEB9AEE9AF49AF19AF70000
+F2
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00009AFB9B069B189B1A9B1F9B229B239B259B279B289B299B2A9B2E9B2F9B32
+9B449B439B4F9B4D9B4E9B519B589B749B939B839B919B969B979B9F9BA09BA8
+9BB49BC09BCA9BB99BC69BCF9BD19BD29BE39BE29BE49BD49BE19C3A9BF29BF1
+9BF09C159C149C099C139C0C9C069C089C129C0A9C049C2E9C1B9C259C249C21
+9C309C479C329C469C3E9C5A9C609C679C769C789CE79CEC9CF09D099D089CEB
+9D039D069D2A9D269DAF9D239D1F9D449D159D129D419D3F9D3E9D469D480000
+F3
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00009D5D9D5E9D649D519D509D599D729D899D879DAB9D6F9D7A9D9A9DA49DA9
+9DB29DC49DC19DBB9DB89DBA9DC69DCF9DC29DD99DD39DF89DE69DED9DEF9DFD
+9E1A9E1B9E1E9E759E799E7D9E819E889E8B9E8C9E929E959E919E9D9EA59EA9
+9EB89EAA9EAD97619ECC9ECE9ECF9ED09ED49EDC9EDE9EDD9EE09EE59EE89EEF
+9EF49EF69EF79EF99EFB9EFC9EFD9F079F0876B79F159F219F2C9F3E9F4A9F52
+9F549F639F5F9F609F619F669F679F6C9F6A9F779F729F769F959F9C9FA00000
+F4
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000582F69C79059746451DC7199000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+R
+A1C1 301C FF5E
+A1C2 2016 2225
+A1DD 2212 FF0D
+A1F1 00A2 FFE0
+A1F2 00A3 FFE1
+A2CC 00AC FFE2


Property changes on: trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/euc-jp.enc
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/euc-kr.enc
===================================================================
--- trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/euc-kr.enc	                        (rev 0)
+++ trunk/Master/tlpkg/tltcl/lib/tcl8.6/encoding/euc-kr.enc	2020-03-17 20:46:21 UTC (rev 54375)
@@ -0,0 +1,1533 @@
+# Encoding file: euc-kr, multi-byte
+M
+003F 0 90
+00
+0000000100020003000400050006000700080009000A000B000C000D000E000F
+0010001100120013001400150016001700180019001A001B001C001D001E001F
+0020002100220023002400250026002700280029002A002B002C002D002E002F
+0030003100320033003400350036003700380039003A003B003C003D003E003F
+0040004100420043004400450046004700480049004A004B004C004D004E004F
+0050005100520053005400550056005700580059005A005B005C005D005E005F
+0060006100620063006400650066006700680069006A006B006C006D006E006F
+0070007100720073007400750076007700780079007A007B007C007D007E007F
+0080008100820083008400850086008700880089008A008B008C008D008E008F
+0090009100920093009400950096009700980099009A009B009C009D009E009F
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+A1
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000030003001300200B72025202600A8300300AD20152225FF3C223C20182019
+201C201D3014301530083009300A300B300C300D300E300F3010301100B100D7
+00F7226022642265221E223400B0203220332103212BFFE0FFE1FFE526422640
+222022A52312220222072261225200A7203B2606260525CB25CF25CE25C725C6
+25A125A025B325B225BD25BC219221902191219321943013226A226B221A223D
+221D2235222B222C2208220B2286228722822283222A222922272228FFE20000
+A2
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000021D221D42200220300B4FF5E02C702D802DD02DA02D900B802DB00A100BF
+02D0222E2211220F00A42109203025C125C025B725B626642660266126652667
+2663229925C825A325D025D1259225A425A525A825A725A625A92668260F260E
+261C261E00B62020202121952197219921962198266D2669266A266C327F321C
+211633C7212233C233D821210000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+A3
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000FF01FF02FF03FF04FF05FF06FF07FF08FF09FF0AFF0BFF0CFF0DFF0EFF0F
+FF10FF11FF12FF13FF14FF15FF16FF17FF18FF19FF1AFF1BFF1CFF1DFF1EFF1F
+FF20FF21FF22FF23FF24FF25FF26FF27FF28FF29FF2AFF2BFF2CFF2DFF2EFF2F
+FF30FF31FF32FF33FF34FF35FF36FF37FF38FF39FF3AFF3BFFE6FF3DFF3EFF3F
+FF40FF41FF42FF43FF44FF45FF46FF47FF48FF49FF4AFF4BFF4CFF4DFF4EFF4F
+FF50FF51FF52FF53FF54FF55FF56FF57FF58FF59FF5AFF5BFF5CFF5DFFE30000
+A4
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000313131323133313431353136313731383139313A313B313C313D313E313F
+3140314131423143314431453146314731483149314A314B314C314D314E314F
+3150315131523153315431553156315731583159315A315B315C315D315E315F
+3160316131623163316431653166316731683169316A316B316C316D316E316F
+3170317131723173317431753176317731783179317A317B317C317D317E317F
+3180318131823183318431853186318731883189318A318B318C318D318E0000
+A5
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000217021712172217321742175217621772178217900000000000000000000
+2160216121622163216421652166216721682169000000000000000000000000
+0000039103920393039403950396039703980399039A039B039C039D039E039F
+03A003A103A303A403A503A603A703A803A90000000000000000000000000000
+000003B103B203B303B403B503B603B703B803B903BA03BB03BC03BD03BE03BF
+03C003C103C303C403C503C603C703C803C90000000000000000000000000000
+A6
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000025002502250C251025182514251C252C25242534253C25012503250F2513
+251B251725232533252B253B254B2520252F25282537253F251D253025252538
+254225122511251A251925162515250E250D251E251F25212522252625272529
+252A252D252E25312532253525362539253A253D253E25402541254325442545
+2546254725482549254A00000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+A7
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+00003395339633972113339833C433A333A433A533A63399339A339B339C339D
+339E339F33A033A133A233CA338D338E338F33CF3388338933C833A733A833B0
+33B133B233B333B433B533B633B733B833B93380338133823383338433BA33BB
+33BC33BD33BE33BF33903391339233933394212633C033C1338A338B338C33D6
+33C533AD33AE33AF33DB33A933AA33AB33AC33DD33D033D333C333C933DC33C6
+0000000000000000000000000000000000000000000000000000000000000000
+A8
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000000C600D000AA0126000001320000013F014100D8015200BA00DE0166014A
+00003260326132623263326432653266326732683269326A326B326C326D326E
+326F3270327132723273327432753276327732783279327A327B24D024D124D2
+24D324D424D524D624D724D824D924DA24DB24DC24DD24DE24DF24E024E124E2
+24E324E424E524E624E724E824E9246024612462246324642465246624672468
+2469246A246B246C246D246E00BD2153215400BC00BE215B215C215D215E0000
+A9
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000000E6011100F001270131013301380140014200F8015300DF00FE0167014B
+01493200320132023203320432053206320732083209320A320B320C320D320E
+320F3210321132123213321432153216321732183219321A321B249C249D249E
+249F24A024A124A224A324A424A524A624A724A824A924AA24AB24AC24AD24AE
+24AF24B024B124B224B324B424B5247424752476247724782479247A247B247C
+247D247E247F24802481248200B900B200B32074207F20812082208320840000
+AA
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000304130423043304430453046304730483049304A304B304C304D304E304F
+3050305130523053305430553056305730583059305A305B305C305D305E305F
+3060306130623063306430653066306730683069306A306B306C306D306E306F
+3070307130723073307430753076307730783079307A307B307C307D307E307F
+3080308130823083308430853086308730883089308A308B308C308D308E308F
+3090309130923093000000000000000000000000000000000000000000000000
+AB
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000030A130A230A330A430A530A630A730A830A930AA30AB30AC30AD30AE30AF
+30B030B130B230B330B430B530B630B730B830B930BA30BB30BC30BD30BE30BF
+30C030C130C230C330C430C530C630C730C830C930CA30CB30CC30CD30CE30CF
+30D030D130D230D330D430D530D630D730D830D930DA30DB30DC30DD30DE30DF
+30E030E130E230E330E430E530E630E730E830E930EA30EB30EC30ED30EE30EF
+30F030F130F230F330F430F530F6000000000000000000000000000000000000
+AC
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+000004100411041204130414041504010416041704180419041A041B041C041D
+041E041F0420042104220423042404250426042704280429042A042B042C042D
+042E042F00000000000000000000000000000000000000000000000000000000
+000004300431043204330434043504510436043704380439043A043B043C043D
+043E043F0440044104420443044404450446044704480449044A044B044C044D
+044E044F00000000000000000000000000000000000000000000000000000000
+B0
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000AC00AC01AC04AC07AC08AC09AC0AAC10AC11AC12AC13AC14AC15AC16AC17
+AC19AC1AAC1BAC1CAC1DAC20AC24AC2CAC2DAC2FAC30AC31AC38AC39AC3CAC40
+AC4BAC4DAC54AC58AC5CAC70AC71AC74AC77AC78AC7AAC80AC81AC83AC84AC85
+AC86AC89AC8AAC8BAC8CAC90AC94AC9CAC9DAC9FACA0ACA1ACA8ACA9ACAAACAC
+ACAFACB0ACB8ACB9ACBBACBCACBDACC1ACC4ACC8ACCCACD5ACD7ACE0ACE1ACE4
+ACE7ACE8ACEAACECACEFACF0ACF1ACF3ACF5ACF6ACFCACFDAD00AD04AD060000
+B1
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000AD0CAD0DAD0FAD11AD18AD1CAD20AD29AD2CAD2DAD34AD35AD38AD3CAD44
+AD45AD47AD49AD50AD54AD58AD61AD63AD6CAD6DAD70AD73AD74AD75AD76AD7B
+AD7CAD7DAD7FAD81AD82AD88AD89AD8CAD90AD9CAD9DADA4ADB7ADC0ADC1ADC4
+ADC8ADD0ADD1ADD3ADDCADE0ADE4ADF8ADF9ADFCADFFAE00AE01AE08AE09AE0B
+AE0DAE14AE30AE31AE34AE37AE38AE3AAE40AE41AE43AE45AE46AE4AAE4CAE4D
+AE4EAE50AE54AE56AE5CAE5DAE5FAE60AE61AE65AE68AE69AE6CAE70AE780000
+B2
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000AE79AE7BAE7CAE7DAE84AE85AE8CAEBCAEBDAEBEAEC0AEC4AECCAECDAECF
+AED0AED1AED8AED9AEDCAEE8AEEBAEEDAEF4AEF8AEFCAF07AF08AF0DAF10AF2C
+AF2DAF30AF32AF34AF3CAF3DAF3FAF41AF42AF43AF48AF49AF50AF5CAF5DAF64
+AF65AF79AF80AF84AF88AF90AF91AF95AF9CAFB8AFB9AFBCAFC0AFC7AFC8AFC9
+AFCBAFCDAFCEAFD4AFDCAFE8AFE9AFF0AFF1AFF4AFF8B000B001B004B00CB010
+B014B01CB01DB028B044B045B048B04AB04CB04EB053B054B055B057B0590000
+B3
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000B05DB07CB07DB080B084B08CB08DB08FB091B098B099B09AB09CB09FB0A0
+B0A1B0A2B0A8B0A9B0ABB0ACB0ADB0AEB0AFB0B1B0B3B0B4B0B5B0B8B0BCB0C4
+B0C5B0C7B0C8B0C9B0D0B0D1B0D4B0D8B0E0B0E5B108B109B10BB10CB110B112
+B113B118B119B11BB11CB11DB123B124B125B128B12CB134B135B137B138B139
+B140B141B144B148B150B151B154B155B158B15CB160B178B179B17CB180B182
+B188B189B18BB18DB192B193B194B198B19CB1A8B1CCB1D0B1D4B1DCB1DD0000
+B4
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000

@@ Diff output truncated at 1234567 characters. @@


More information about the tex-live-commits mailing list.