Bug 1261841 part 3 - Remove uconv files. r=emk.
authorHenri Sivonen <hsivonen@hsivonen.fi>
Thu, 27 Apr 2017 13:26:24 +0300
changeset 412435 4c8a154bf1436e74120d58e935bdaa9dc290bdc4
parent 412434 e155fa765af299f0e8cfb42e0a1709e5b04928b9
child 412436 d87b44248f105de606ace2c35f99ebf9be70e91f
push id7566
push usermtabara@mozilla.com
push dateWed, 02 Aug 2017 08:25:16 +0000
treeherdermozilla-beta@86913f512c3c [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersemk
bugs1261841
milestone56.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1261841 part 3 - Remove uconv files. r=emk. MozReview-Commit-ID: Hf7MGstvwKe
intl/uconv/8859-1.uf
intl/uconv/cp1252.uf
intl/uconv/cp1252.ut
intl/uconv/macroman.uf
intl/uconv/macroman.ut
intl/uconv/nsCP1252ToUnicode.cpp
intl/uconv/nsCP1252ToUnicode.h
intl/uconv/nsEncoderDecoderUtils.h
intl/uconv/nsISO88591ToUnicode.h
intl/uconv/nsIUnicodeDecoder.h
intl/uconv/nsIUnicodeEncoder.h
intl/uconv/nsMacRomanToUnicode.cpp
intl/uconv/nsMacRomanToUnicode.h
intl/uconv/nsNCRFallbackEncoderWrapper.cpp
intl/uconv/nsNCRFallbackEncoderWrapper.h
intl/uconv/nsReplacementToUnicode.cpp
intl/uconv/nsReplacementToUnicode.h
intl/uconv/nsUCSupport.h
intl/uconv/nsUTF8ToUnicode.cpp
intl/uconv/nsUTF8ToUnicode.h
intl/uconv/nsUTF8ToUnicodeSSE2.cpp
intl/uconv/nsUnicodeToCP1252.cpp
intl/uconv/nsUnicodeToCP1252.h
intl/uconv/nsUnicodeToISO88591.cpp
intl/uconv/nsUnicodeToISO88591.h
intl/uconv/nsUnicodeToMacRoman.cpp
intl/uconv/nsUnicodeToMacRoman.h
intl/uconv/nsUnicodeToUTF8.cpp
intl/uconv/nsUnicodeToUTF8.h
intl/uconv/tests/TestUConv.cpp
intl/uconv/tests/convperf.cpp
intl/uconv/tests/nsTestUConv.cpp
intl/uconv/tests/nsconv.cpp
intl/uconv/tools/adobe.pl
intl/uconv/tools/cns.sh
intl/uconv/tools/cp936tocdx.pl
intl/uconv/tools/gen-big5-data.py
intl/uconv/tools/gengb18030tables.pl
intl/uconv/tools/genimpldefine.pl
intl/uconv/tools/indexes.json
intl/uconv/tools/jamap.pl
intl/uconv/tools/jis0212tojdx.pl
intl/uconv/tools/mkjpconv.pl
intl/uconv/tools/moz.build
intl/uconv/tools/nonhan.txt
intl/uconv/tools/parse-mozilla-encoding-table.pl
intl/uconv/tools/umaptable.c
intl/uconv/tools/unihan2cns.pl
intl/uconv/uconvutil.h
intl/uconv/ucvcn/cp936invmap.h
intl/uconv/ucvcn/cp936map.h
intl/uconv/ucvcn/gb180304bytes.uf
intl/uconv/ucvcn/gb180304bytes.ut
intl/uconv/ucvcn/gb18030uniq2b.uf
intl/uconv/ucvcn/gb18030uniq2b.ut
intl/uconv/ucvcn/gbku.h
intl/uconv/ucvcn/gbkuniq.uf
intl/uconv/ucvcn/nsGBKConvUtil.cpp
intl/uconv/ucvcn/nsGBKConvUtil.h
intl/uconv/ucvcn/nsGBKToUnicode.cpp
intl/uconv/ucvcn/nsGBKToUnicode.h
intl/uconv/ucvcn/nsUCvCnCID.h
intl/uconv/ucvcn/nsUnicodeToGBK.cpp
intl/uconv/ucvcn/nsUnicodeToGBK.h
intl/uconv/ucvcn/readme.txt
intl/uconv/ucvja/japanese.map
intl/uconv/ucvja/jis0201.uf
intl/uconv/ucvja/jis0201gl.uf
intl/uconv/ucvja/jis0208.uf
intl/uconv/ucvja/jis0208ext.uf
intl/uconv/ucvja/nsJapaneseToUnicode.cpp
intl/uconv/ucvja/nsJapaneseToUnicode.h
intl/uconv/ucvja/nsUCVJA2CID.h
intl/uconv/ucvja/nsUCVJACID.h
intl/uconv/ucvja/nsUCVJADll.h
intl/uconv/ucvja/nsUnicodeToEUCJP.cpp
intl/uconv/ucvja/nsUnicodeToEUCJP.h
intl/uconv/ucvja/nsUnicodeToISO2022JP.cpp
intl/uconv/ucvja/nsUnicodeToISO2022JP.h
intl/uconv/ucvja/nsUnicodeToSJIS.cpp
intl/uconv/ucvja/nsUnicodeToSJIS.h
intl/uconv/ucvja/sjis.uf
intl/uconv/ucvko/jamoclusters.h
intl/uconv/ucvko/nsCP949ToUnicode.cpp
intl/uconv/ucvko/nsCP949ToUnicode.h
intl/uconv/ucvko/nsUCvKOCID.h
intl/uconv/ucvko/nsUCvKODll.h
intl/uconv/ucvko/nsUnicodeToCP949.cpp
intl/uconv/ucvko/nsUnicodeToCP949.h
intl/uconv/ucvko/readme.txt
intl/uconv/ucvko/u20cp949hangul.uf
intl/uconv/ucvko/u20cp949hangul.ut
intl/uconv/ucvko/u20kscgl.uf
intl/uconv/ucvko/u20kscgl.ut
intl/uconv/ucvlatin/8859-10.uf
intl/uconv/ucvlatin/8859-10.ut
intl/uconv/ucvlatin/8859-13.uf
intl/uconv/ucvlatin/8859-13.ut
intl/uconv/ucvlatin/8859-14.uf
intl/uconv/ucvlatin/8859-14.ut
intl/uconv/ucvlatin/8859-15.uf
intl/uconv/ucvlatin/8859-15.ut
intl/uconv/ucvlatin/8859-16.uf
intl/uconv/ucvlatin/8859-16.ut
intl/uconv/ucvlatin/8859-2.uf
intl/uconv/ucvlatin/8859-2.ut
intl/uconv/ucvlatin/8859-3.uf
intl/uconv/ucvlatin/8859-3.ut
intl/uconv/ucvlatin/8859-4.uf
intl/uconv/ucvlatin/8859-4.ut
intl/uconv/ucvlatin/8859-5.uf
intl/uconv/ucvlatin/8859-5.ut
intl/uconv/ucvlatin/8859-6.uf
intl/uconv/ucvlatin/8859-6.ut
intl/uconv/ucvlatin/8859-7.uf
intl/uconv/ucvlatin/8859-7.ut
intl/uconv/ucvlatin/8859-8.uf
intl/uconv/ucvlatin/8859-8.ut
intl/uconv/ucvlatin/cp1250.uf
intl/uconv/ucvlatin/cp1250.ut
intl/uconv/ucvlatin/cp1251.uf
intl/uconv/ucvlatin/cp1251.ut
intl/uconv/ucvlatin/cp1253.uf
intl/uconv/ucvlatin/cp1253.ut
intl/uconv/ucvlatin/cp1254.uf
intl/uconv/ucvlatin/cp1254.ut
intl/uconv/ucvlatin/cp1255.uf
intl/uconv/ucvlatin/cp1255.ut
intl/uconv/ucvlatin/cp1256.uf
intl/uconv/ucvlatin/cp1256.ut
intl/uconv/ucvlatin/cp1257.uf
intl/uconv/ucvlatin/cp1257.ut
intl/uconv/ucvlatin/cp1258.uf
intl/uconv/ucvlatin/cp1258.ut
intl/uconv/ucvlatin/cp866.uf
intl/uconv/ucvlatin/cp866.ut
intl/uconv/ucvlatin/cp874.uf
intl/uconv/ucvlatin/cp874.ut
intl/uconv/ucvlatin/koi8r.uf
intl/uconv/ucvlatin/koi8r.ut
intl/uconv/ucvlatin/koi8u.uf
intl/uconv/ucvlatin/koi8u.ut
intl/uconv/ucvlatin/macarabic.ut
intl/uconv/ucvlatin/macce.ut
intl/uconv/ucvlatin/maccroat.ut
intl/uconv/ucvlatin/maccyril.uf
intl/uconv/ucvlatin/maccyril.ut
intl/uconv/ucvlatin/macdevanaga.ut
intl/uconv/ucvlatin/macfarsi.ut
intl/uconv/ucvlatin/macgreek.ut
intl/uconv/ucvlatin/macgujarati.ut
intl/uconv/ucvlatin/macgurmukhi.ut
intl/uconv/ucvlatin/machebrew.ut
intl/uconv/ucvlatin/macicela.ut
intl/uconv/ucvlatin/macro.ut
intl/uconv/ucvlatin/macturki.ut
intl/uconv/ucvlatin/nsCP1250ToUnicode.cpp
intl/uconv/ucvlatin/nsCP1250ToUnicode.h
intl/uconv/ucvlatin/nsCP1251ToUnicode.cpp
intl/uconv/ucvlatin/nsCP1251ToUnicode.h
intl/uconv/ucvlatin/nsCP1253ToUnicode.cpp
intl/uconv/ucvlatin/nsCP1253ToUnicode.h
intl/uconv/ucvlatin/nsCP1254ToUnicode.cpp
intl/uconv/ucvlatin/nsCP1254ToUnicode.h
intl/uconv/ucvlatin/nsCP1255ToUnicode.cpp
intl/uconv/ucvlatin/nsCP1255ToUnicode.h
intl/uconv/ucvlatin/nsCP1256ToUnicode.cpp
intl/uconv/ucvlatin/nsCP1256ToUnicode.h
intl/uconv/ucvlatin/nsCP1257ToUnicode.cpp
intl/uconv/ucvlatin/nsCP1257ToUnicode.h
intl/uconv/ucvlatin/nsCP1258ToUnicode.cpp
intl/uconv/ucvlatin/nsCP1258ToUnicode.h
intl/uconv/ucvlatin/nsCP866ToUnicode.cpp
intl/uconv/ucvlatin/nsCP866ToUnicode.h
intl/uconv/ucvlatin/nsCP874ToUnicode.cpp
intl/uconv/ucvlatin/nsCP874ToUnicode.h
intl/uconv/ucvlatin/nsISO885910ToUnicode.cpp
intl/uconv/ucvlatin/nsISO885910ToUnicode.h
intl/uconv/ucvlatin/nsISO885913ToUnicode.cpp
intl/uconv/ucvlatin/nsISO885913ToUnicode.h
intl/uconv/ucvlatin/nsISO885914ToUnicode.cpp
intl/uconv/ucvlatin/nsISO885914ToUnicode.h
intl/uconv/ucvlatin/nsISO885915ToUnicode.cpp
intl/uconv/ucvlatin/nsISO885915ToUnicode.h
intl/uconv/ucvlatin/nsISO885916ToUnicode.cpp
intl/uconv/ucvlatin/nsISO885916ToUnicode.h
intl/uconv/ucvlatin/nsISO88592ToUnicode.cpp
intl/uconv/ucvlatin/nsISO88592ToUnicode.h
intl/uconv/ucvlatin/nsISO88593ToUnicode.cpp
intl/uconv/ucvlatin/nsISO88593ToUnicode.h
intl/uconv/ucvlatin/nsISO88594ToUnicode.cpp
intl/uconv/ucvlatin/nsISO88594ToUnicode.h
intl/uconv/ucvlatin/nsISO88595ToUnicode.cpp
intl/uconv/ucvlatin/nsISO88595ToUnicode.h
intl/uconv/ucvlatin/nsISO88596ToUnicode.cpp
intl/uconv/ucvlatin/nsISO88596ToUnicode.h
intl/uconv/ucvlatin/nsISO88597ToUnicode.cpp
intl/uconv/ucvlatin/nsISO88597ToUnicode.h
intl/uconv/ucvlatin/nsISO88598IToUnicode.cpp
intl/uconv/ucvlatin/nsISO88598IToUnicode.h
intl/uconv/ucvlatin/nsISO88598ToUnicode.cpp
intl/uconv/ucvlatin/nsISO88598ToUnicode.h
intl/uconv/ucvlatin/nsKOI8RToUnicode.cpp
intl/uconv/ucvlatin/nsKOI8RToUnicode.h
intl/uconv/ucvlatin/nsKOI8UToUnicode.cpp
intl/uconv/ucvlatin/nsKOI8UToUnicode.h
intl/uconv/ucvlatin/nsMacArabicToUnicode.cpp
intl/uconv/ucvlatin/nsMacArabicToUnicode.h
intl/uconv/ucvlatin/nsMacCEToUnicode.cpp
intl/uconv/ucvlatin/nsMacCEToUnicode.h
intl/uconv/ucvlatin/nsMacCroatianToUnicode.cpp
intl/uconv/ucvlatin/nsMacCroatianToUnicode.h
intl/uconv/ucvlatin/nsMacCyrillicToUnicode.cpp
intl/uconv/ucvlatin/nsMacCyrillicToUnicode.h
intl/uconv/ucvlatin/nsMacDevanagariToUnicode.cpp
intl/uconv/ucvlatin/nsMacDevanagariToUnicode.h
intl/uconv/ucvlatin/nsMacFarsiToUnicode.cpp
intl/uconv/ucvlatin/nsMacFarsiToUnicode.h
intl/uconv/ucvlatin/nsMacGreekToUnicode.cpp
intl/uconv/ucvlatin/nsMacGreekToUnicode.h
intl/uconv/ucvlatin/nsMacGujaratiToUnicode.cpp
intl/uconv/ucvlatin/nsMacGujaratiToUnicode.h
intl/uconv/ucvlatin/nsMacGurmukhiToUnicode.cpp
intl/uconv/ucvlatin/nsMacGurmukhiToUnicode.h
intl/uconv/ucvlatin/nsMacHebrewToUnicode.cpp
intl/uconv/ucvlatin/nsMacHebrewToUnicode.h
intl/uconv/ucvlatin/nsMacIcelandicToUnicode.cpp
intl/uconv/ucvlatin/nsMacIcelandicToUnicode.h
intl/uconv/ucvlatin/nsMacRomanianToUnicode.cpp
intl/uconv/ucvlatin/nsMacRomanianToUnicode.h
intl/uconv/ucvlatin/nsMacTurkishToUnicode.cpp
intl/uconv/ucvlatin/nsMacTurkishToUnicode.h
intl/uconv/ucvlatin/nsUCvLatinCID.h
intl/uconv/ucvlatin/nsUTF16ToUnicode.cpp
intl/uconv/ucvlatin/nsUTF16ToUnicode.h
intl/uconv/ucvlatin/nsUnicodeToCP1250.cpp
intl/uconv/ucvlatin/nsUnicodeToCP1250.h
intl/uconv/ucvlatin/nsUnicodeToCP1251.cpp
intl/uconv/ucvlatin/nsUnicodeToCP1251.h
intl/uconv/ucvlatin/nsUnicodeToCP1253.cpp
intl/uconv/ucvlatin/nsUnicodeToCP1253.h
intl/uconv/ucvlatin/nsUnicodeToCP1254.cpp
intl/uconv/ucvlatin/nsUnicodeToCP1254.h
intl/uconv/ucvlatin/nsUnicodeToCP1255.cpp
intl/uconv/ucvlatin/nsUnicodeToCP1255.h
intl/uconv/ucvlatin/nsUnicodeToCP1256.cpp
intl/uconv/ucvlatin/nsUnicodeToCP1256.h
intl/uconv/ucvlatin/nsUnicodeToCP1257.cpp
intl/uconv/ucvlatin/nsUnicodeToCP1257.h
intl/uconv/ucvlatin/nsUnicodeToCP1258.cpp
intl/uconv/ucvlatin/nsUnicodeToCP1258.h
intl/uconv/ucvlatin/nsUnicodeToCP866.cpp
intl/uconv/ucvlatin/nsUnicodeToCP866.h
intl/uconv/ucvlatin/nsUnicodeToCP874.cpp
intl/uconv/ucvlatin/nsUnicodeToCP874.h
intl/uconv/ucvlatin/nsUnicodeToISO885910.cpp
intl/uconv/ucvlatin/nsUnicodeToISO885910.h
intl/uconv/ucvlatin/nsUnicodeToISO885913.cpp
intl/uconv/ucvlatin/nsUnicodeToISO885913.h
intl/uconv/ucvlatin/nsUnicodeToISO885914.cpp
intl/uconv/ucvlatin/nsUnicodeToISO885914.h
intl/uconv/ucvlatin/nsUnicodeToISO885915.cpp
intl/uconv/ucvlatin/nsUnicodeToISO885915.h
intl/uconv/ucvlatin/nsUnicodeToISO885916.cpp
intl/uconv/ucvlatin/nsUnicodeToISO885916.h
intl/uconv/ucvlatin/nsUnicodeToISO88592.cpp
intl/uconv/ucvlatin/nsUnicodeToISO88592.h
intl/uconv/ucvlatin/nsUnicodeToISO88593.cpp
intl/uconv/ucvlatin/nsUnicodeToISO88593.h
intl/uconv/ucvlatin/nsUnicodeToISO88594.cpp
intl/uconv/ucvlatin/nsUnicodeToISO88594.h
intl/uconv/ucvlatin/nsUnicodeToISO88595.cpp
intl/uconv/ucvlatin/nsUnicodeToISO88595.h
intl/uconv/ucvlatin/nsUnicodeToISO88596.cpp
intl/uconv/ucvlatin/nsUnicodeToISO88596.h
intl/uconv/ucvlatin/nsUnicodeToISO88597.cpp
intl/uconv/ucvlatin/nsUnicodeToISO88597.h
intl/uconv/ucvlatin/nsUnicodeToISO88598.cpp
intl/uconv/ucvlatin/nsUnicodeToISO88598.h
intl/uconv/ucvlatin/nsUnicodeToISO88598I.cpp
intl/uconv/ucvlatin/nsUnicodeToISO88598I.h
intl/uconv/ucvlatin/nsUnicodeToKOI8R.cpp
intl/uconv/ucvlatin/nsUnicodeToKOI8R.h
intl/uconv/ucvlatin/nsUnicodeToKOI8U.cpp
intl/uconv/ucvlatin/nsUnicodeToKOI8U.h
intl/uconv/ucvlatin/nsUnicodeToMacCyrillic.cpp
intl/uconv/ucvlatin/nsUnicodeToMacCyrillic.h
intl/uconv/ucvlatin/nsUnicodeToUTF16.cpp
intl/uconv/ucvlatin/nsUnicodeToUTF16.h
intl/uconv/ucvlatin/nsUnicodeToUserDefined.cpp
intl/uconv/ucvlatin/nsUnicodeToUserDefined.h
intl/uconv/ucvlatin/nsUserDefinedToUnicode.cpp
intl/uconv/ucvlatin/nsUserDefinedToUnicode.h
intl/uconv/ucvlatin/userdefined.uf
intl/uconv/ucvlatin/userdefined.ut
intl/uconv/ucvth/readme.txt
intl/uconv/ucvtw/nsBIG5Data.cpp
intl/uconv/ucvtw/nsBIG5Data.h
intl/uconv/ucvtw/nsBIG5ToUnicode.cpp
intl/uconv/ucvtw/nsBIG5ToUnicode.h
intl/uconv/ucvtw/nsUnicodeToBIG5.cpp
intl/uconv/ucvtw/nsUnicodeToBIG5.h
intl/uconv/util/nsUCConstructors.cpp
intl/uconv/util/nsUCConstructors.h
intl/uconv/util/nsUCSupport.cpp
intl/uconv/util/nsUnicodeDecodeHelper.cpp
intl/uconv/util/nsUnicodeDecodeHelper.h
intl/uconv/util/nsUnicodeEncodeHelper.cpp
intl/uconv/util/nsUnicodeEncodeHelper.h
intl/uconv/util/ugen.c
intl/uconv/util/umap.c
intl/uconv/util/umap.h
intl/uconv/util/unicpriv.h
intl/uconv/util/uscan.c
deleted file mode 100644
--- a/intl/uconv/8859-1.uf
+++ /dev/null
@@ -1,55 +0,0 @@
-/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-/*========================================================
-  This is a Generated file. Please don't edit it.
-
-  The tool which used to generate this file is called fromu.
-  If you have any problem of this file. Please contact 
-  Netscape Client International Team or 
-  ftang@netscape <Frank Tang> 
-
-              Table in Debug form 
-Begin of Item 0000
- Format 0
-  srcBegin = 0000
-  srcEnd = 007E
-  destBegin = 0000
-End of Item 0000 
-
-Begin of Item 0001
- Format 0
-  srcBegin = 00A0
-  srcEnd = 00FF
-  destBegin = 00A0
-End of Item 0001 
-
-========================================================*/
-/* Offset=0x0000  ItemOfList */
-  0x0002,
-/*-------------------------------------------------------*/
-/* Offset=0x0001  offsetToFormatArray */
-  0x0004,
-/*-------------------------------------------------------*/
-/* Offset=0x0002  offsetToMapCellArray */ 
-  0x0005,
-/*-------------------------------------------------------*/
-/* Offset=0x0003  offsetToMappingTable */ 
-  0x000B,
-/*-------------------------------------------------------*/
-/*       Offset=0x0004   Start of Format Array */ 
-/*	Total of Format 0 : 0x0002			 */
-/*	Total of Format 1 : 0x0000			 */
-/*	Total of Format 2 : 0x0000			 */
-/*	Total of Format 3 : 0x0000			 */
-
-0x0000, 
-/*-------------------------------------------------------*/
-/*       Offset=0x0005   Start of MapCell Array */ 
-/* 0000 */    0x0000, 0x007E, 0x0000, 
-/* 0001 */    0x00A0, 0x00FF, 0x00A0, 
-/*-------------------------------------------------------*/
-/*       Offset=0x000B   Start of MappingTable */ 
-
-/*	End of table Total Length = 0x000B * 2 */
deleted file mode 100644
--- a/intl/uconv/cp1252.uf
+++ /dev/null
@@ -1,165 +0,0 @@
-/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-/*========================================================
-  This is a Generated file. Please don't edit it.
-
-  The tool which used to generate this file is called fromu.
-  If you have any problem of this file. Please contact 
-  Netscape Client International Team or 
-  ftang@netscape <Frank Tang> 
-
-              Table in Debug form 
-Begin of Item 0000
- Format 0
-  srcBegin = 0000
-  srcEnd = 007F
-  destBegin = 0000
-End of Item 0000 
-
-Begin of Item 0001
- Format 0
-  srcBegin = 00A0
-  srcEnd = 00FF
-  destBegin = 00A0
-End of Item 0001 
-
-Begin of Item 0002
- Format 2
-  srcBegin = 0081
-  destBegin = 0081
-End of Item 0002 
-
-Begin of Item 0003
- Format 1
-  srcBegin = 008D
-  srcEnd = 0090
-  mappingOffset = 0000
- Mapping  = 
-  008D FFFD 008F 0090 
-End of Item 0003 
-
-Begin of Item 0004
- Format 2
-  srcBegin = 009D
-  destBegin = 009D
-End of Item 0004 
-
-Begin of Item 0005
- Format 1
-  srcBegin = 0152
-  srcEnd = 0153
-  mappingOffset = 0004
- Mapping  = 
-  008C 009C 
-End of Item 0005 
-
-Begin of Item 0006
- Format 1
-  srcBegin = 0160
-  srcEnd = 0161
-  mappingOffset = 0006
- Mapping  = 
-  008A 009A 
-End of Item 0006 
-
-Begin of Item 0007
- Format 1
-  srcBegin = 0178
-  srcEnd = 017E
-  mappingOffset = 0008
- Mapping  = 
-  009F FFFD FFFD FFFD FFFD 008E 009E 
-End of Item 0007 
-
-Begin of Item 0008
- Format 2
-  srcBegin = 0192
-  destBegin = 0083
-End of Item 0008 
-
-Begin of Item 0009
- Format 2
-  srcBegin = 02C6
-  destBegin = 0088
-End of Item 0009 
-
-Begin of Item 000A
- Format 2
-  srcBegin = 02DC
-  destBegin = 0098
-End of Item 000A 
-
-Begin of Item 000B
- Format 1
-  srcBegin = 2013
-  srcEnd = 203A
-  mappingOffset = 000F
- Mapping  = 
-  0096 0097 FFFD FFFD FFFD 0091 0092 0082 
-  FFFD 0093 0094 0084 FFFD 0086 0087 0095 
-  FFFD FFFD FFFD 0085 FFFD FFFD FFFD FFFD 
-  FFFD FFFD FFFD FFFD FFFD 0089 FFFD FFFD 
-  FFFD FFFD FFFD FFFD FFFD FFFD 008B 009B 
-End of Item 000B 
-
-Begin of Item 000C
- Format 2
-  srcBegin = 20AC
-  destBegin = 0080
-End of Item 000C 
-
-Begin of Item 000D
- Format 2
-  srcBegin = 2122
-  destBegin = 0099
-End of Item 000D 
-
-========================================================*/
-/* Offset=0x0000  ItemOfList */
-  0x000E,
-/*-------------------------------------------------------*/
-/* Offset=0x0001  offsetToFormatArray */
-  0x0004,
-/*-------------------------------------------------------*/
-/* Offset=0x0002  offsetToMapCellArray */ 
-  0x0008,
-/*-------------------------------------------------------*/
-/* Offset=0x0003  offsetToMappingTable */ 
-  0x0032,
-/*-------------------------------------------------------*/
-/*       Offset=0x0004   Start of Format Array */ 
-/*	Total of Format 0 : 0x0002			 */
-/*	Total of Format 1 : 0x0005			 */
-/*	Total of Format 2 : 0x0007			 */
-/*	Total of Format 3 : 0x0000			 */
-
-0x1200, 0x1112, 0x1222, 0x0022, 
-/*-------------------------------------------------------*/
-/*       Offset=0x0008   Start of MapCell Array */ 
-/* 0000 */    0x0000, 0x007F, 0x0000, 
-/* 0001 */    0x00A0, 0x00FF, 0x00A0, 
-/* 0002 */    0x0081, 0x0000, 0x0081, 
-/* 0003 */    0x008D, 0x0090, 0x0000, 
-/* 0004 */    0x009D, 0x0000, 0x009D, 
-/* 0005 */    0x0152, 0x0153, 0x0004, 
-/* 0006 */    0x0160, 0x0161, 0x0006, 
-/* 0007 */    0x0178, 0x017E, 0x0008, 
-/* 0008 */    0x0192, 0x0000, 0x0083, 
-/* 0009 */    0x02C6, 0x0000, 0x0088, 
-/* 000A */    0x02DC, 0x0000, 0x0098, 
-/* 000B */    0x2013, 0x203A, 0x000F, 
-/* 000C */    0x20AC, 0x0000, 0x0080, 
-/* 000D */    0x2122, 0x0000, 0x0099, 
-/*-------------------------------------------------------*/
-/*       Offset=0x0032   Start of MappingTable */ 
-
-/* 0000 */    0x008D, 0xFFFD, 0x008F, 0x0090, 0x008C, 0x009C, 0x008A, 0x009A, 
-/* 0008 */    0x009F, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x008E, 0x009E, 0x0096, 
-/* 0010 */    0x0097, 0xFFFD, 0xFFFD, 0xFFFD, 0x0091, 0x0092, 0x0082, 0xFFFD, 
-/* 0018 */    0x0093, 0x0094, 0x0084, 0xFFFD, 0x0086, 0x0087, 0x0095, 0xFFFD, 
-/* 0020 */    0xFFFD, 0xFFFD, 0x0085, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 
-/* 0028 */    0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x0089, 0xFFFD, 0xFFFD, 0xFFFD, 
-/* 0030 */    0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x008B, 0x009B, 
-/*	End of table Total Length = 0x0069 * 2 */
deleted file mode 100644
--- a/intl/uconv/cp1252.ut
+++ /dev/null
@@ -1,72 +0,0 @@
-/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-/*========================================================
-  This is a Generated file. Please don't edit it.
-
-  The tool which used to generate this file is called fromu.
-  If you have any problem of this file. Please contact 
-  Netscape Client International Team or 
-  ftang@netscape <Frank Tang> 
-
-              Table in Debug form 
-Begin of Item 0000
- Format 0
-  srcBegin = 0000
-  srcEnd = 007F
-  destBegin = 0000
-End of Item 0000 
-
-Begin of Item 0001
- Format 0
-  srcBegin = 00A0
-  srcEnd = 00FF
-  destBegin = 00A0
-End of Item 0001 
-
-Begin of Item 0002
- Format 1
-  srcBegin = 0080
-  srcEnd = 009F
-  mappingOffset = 0000
- Mapping  = 
-  20AC 0081 201A 0192 201E 2026 2020 2021 
-  02C6 2030 0160 2039 0152 008D 017D 008F 
-  0090 2018 2019 201C 201D 2022 2013 2014 
-  02DC 2122 0161 203A 0153 009D 017E 0178 
-End of Item 0002 
-
-========================================================*/
-/* Offset=0x0000  ItemOfList */
-  0x0003,
-/*-------------------------------------------------------*/
-/* Offset=0x0001  offsetToFormatArray */
-  0x0004,
-/*-------------------------------------------------------*/
-/* Offset=0x0002  offsetToMapCellArray */ 
-  0x0005,
-/*-------------------------------------------------------*/
-/* Offset=0x0003  offsetToMappingTable */ 
-  0x000E,
-/*-------------------------------------------------------*/
-/*       Offset=0x0004   Start of Format Array */ 
-/*	Total of Format 0 : 0x0002			 */
-/*	Total of Format 1 : 0x0001			 */
-/*	Total of Format 2 : 0x0000			 */
-/*	Total of Format 3 : 0x0000			 */
-
-0x0100, 
-/*-------------------------------------------------------*/
-/*       Offset=0x0005   Start of MapCell Array */ 
-/* 0000 */    0x0000, 0x007F, 0x0000, 
-/* 0001 */    0x00A0, 0x00FF, 0x00A0, 
-/* 0002 */    0x0080, 0x009F, 0x0000, 
-/*-------------------------------------------------------*/
-/*       Offset=0x000E   Start of MappingTable */ 
-
-/* 0000 */    0x20AC, 0x0081, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021, 
-/* 0008 */    0x02C6, 0x2030, 0x0160, 0x2039, 0x0152, 0x008D, 0x017D, 0x008F, 
-/* 0010 */    0x0090, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014, 
-/* 0018 */    0x02DC, 0x2122, 0x0161, 0x203A, 0x0153, 0x009D, 0x017E, 0x0178, 
-/*	End of table Total Length = 0x002E * 2 */
deleted file mode 100644
--- a/intl/uconv/macroman.uf
+++ /dev/null
@@ -1,250 +0,0 @@
-/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-/*========================================================
-  This is a Generated file. Please don't edit it.
-
-  The tool which used to generate this file is called umaptable.
-  You can find this tool under mozilla/intl/uconv/tools/umaptable.c.
-  If you have any problem of this file. Please contact 
-  Netscape Client International Team or 
-  ftang@netscape <Frank Tang> 
-
-              Table in Debug form 
-Begin of Item 0000
- Format 0
-  srcBegin = 0020
-  srcEnd = 007F
-  destBegin = 0020
-End of Item 0000 
-
-Begin of Item 0001
- Format 1
-  srcBegin = 00A0
-  srcEnd = 00FF
-  mappingOffset = 0000
- Mapping  = 
-  00CA 00C1 00A2 00A3 FFFD 00B4 FFFD 00A4 
-  00AC 00A9 00BB 00C7 00C2 FFFD 00A8 00F8 
-  00A1 00B1 FFFD FFFD 00AB 00B5 00A6 00E1 
-  00FC FFFD 00BC 00C8 FFFD FFFD FFFD 00C0 
-  00CB 00E7 00E5 00CC 0080 0081 00AE 0082 
-  00E9 0083 00E6 00E8 00ED 00EA 00EB 00EC 
-  FFFD 0084 00F1 00EE 00EF 00CD 0085 FFFD 
-  00AF 00F4 00F2 00F3 0086 FFFD FFFD 00A7 
-  0088 0087 0089 008B 008A 008C 00BE 008D 
-  008F 008E 0090 0091 0093 0092 0094 0095 
-  FFFD 0096 0098 0097 0099 009B 009A 00D6 
-  00BF 009D 009C 009E 009F FFFD FFFD 00D8 
-End of Item 0001 
-
-Begin of Item 0002
- Format 2
-  srcBegin = 0131
-  destBegin = 00F5
-End of Item 0002 
-
-Begin of Item 0003
- Format 1
-  srcBegin = 0152
-  srcEnd = 0153
-  mappingOffset = 0060
- Mapping  = 
-  00CE 00CF 
-End of Item 0003 
-
-Begin of Item 0004
- Format 2
-  srcBegin = 0178
-  destBegin = 00D9
-End of Item 0004 
-
-Begin of Item 0005
- Format 2
-  srcBegin = 0192
-  destBegin = 00C4
-End of Item 0005 
-
-Begin of Item 0006
- Format 1
-  srcBegin = 02C6
-  srcEnd = 02C7
-  mappingOffset = 0062
- Mapping  = 
-  00F6 00FF 
-End of Item 0006 
-
-Begin of Item 0007
- Format 1
-  srcBegin = 02D8
-  srcEnd = 02DD
-  mappingOffset = 0064
- Mapping  = 
-  00F9 00FA 00FB 00FE 00F7 00FD 
-End of Item 0007 
-
-Begin of Item 0008
- Format 2
-  srcBegin = 03A9
-  destBegin = 00BD
-End of Item 0008 
-
-Begin of Item 0009
- Format 2
-  srcBegin = 03C0
-  destBegin = 00B9
-End of Item 0009 
-
-Begin of Item 000A
- Format 1
-  srcBegin = 2013
-  srcEnd = 2044
-  mappingOffset = 006A
- Mapping  = 
-  00D0 00D1 FFFD FFFD FFFD 00D4 00D5 00E2 
-  FFFD 00D2 00D3 00E3 FFFD 00A0 00E0 00A5 
-  FFFD FFFD FFFD 00C9 FFFD FFFD FFFD FFFD 
-  FFFD FFFD FFFD FFFD FFFD 00E4 FFFD FFFD 
-  FFFD FFFD FFFD FFFD FFFD FFFD 00DC 00DD 
-  FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD 
-  FFFD 00DA 
-End of Item 000A 
-
-Begin of Item 000B
- Format 2
-  srcBegin = 20AC
-  destBegin = 00DB
-End of Item 000B 
-
-Begin of Item 000C
- Format 2
-  srcBegin = 2122
-  destBegin = 00AA
-End of Item 000C 
-
-Begin of Item 000D
- Format 1
-  srcBegin = 2202
-  srcEnd = 221E
-  mappingOffset = 009C
- Mapping  = 
-  00B6 FFFD FFFD FFFD 00C6 FFFD FFFD FFFD 
-  FFFD FFFD FFFD FFFD FFFD 00B8 FFFD 00B7 
-  FFFD FFFD FFFD FFFD FFFD FFFD FFFD FFFD 
-  00C3 FFFD FFFD FFFD 00B0 
-End of Item 000D 
-
-Begin of Item 000E
- Format 2
-  srcBegin = 222B
-  destBegin = 00BA
-End of Item 000E 
-
-Begin of Item 000F
- Format 2
-  srcBegin = 2248
-  destBegin = 00C5
-End of Item 000F 
-
-Begin of Item 0010
- Format 1
-  srcBegin = 2260
-  srcEnd = 2265
-  mappingOffset = 00B9
- Mapping  = 
-  00AD FFFD FFFD FFFD 00B2 00B3 
-End of Item 0010 
-
-Begin of Item 0011
- Format 2
-  srcBegin = 25CA
-  destBegin = 00D7
-End of Item 0011 
-
-Begin of Item 0012
- Format 2
-  srcBegin = F8FF
-  destBegin = 00F0
-End of Item 0012 
-
-Begin of Item 0013
- Format 1
-  srcBegin = FB01
-  srcEnd = FB02
-  mappingOffset = 00BF
- Mapping  = 
-  00DE 00DF 
-End of Item 0013 
-
-========================================================*/
-/* Offset=0x0000  ItemOfList */
-  0x0014,
-/*-------------------------------------------------------*/
-/* Offset=0x0001  offsetToFormatArray */
-  0x0004,
-/*-------------------------------------------------------*/
-/* Offset=0x0002  offsetToMapCellArray */ 
-  0x000A,
-/*-------------------------------------------------------*/
-/* Offset=0x0003  offsetToMappingTable */ 
-  0x0046,
-/*-------------------------------------------------------*/
-/*       Offset=0x0004   Start of Format Array */ 
-/*	Total of Format 0 : 0x0001			 */
-/*	Total of Format 1 : 0x0008			 */
-/*	Total of Format 2 : 0x000B			 */
-/*	Total of Format 3 : 0x0000			 */
-
-0x1210, 0x1122, 0x2122, 0x2212, 0x1221, 0x0000, 
-/*-------------------------------------------------------*/
-/*       Offset=0x000A   Start of MapCell Array */ 
-/* 0000 */    0x0020, 0x007F, 0x0020, 
-/* 0001 */    0x00A0, 0x00FF, 0x0000, 
-/* 0002 */    0x0131, 0x0000, 0x00F5, 
-/* 0003 */    0x0152, 0x0153, 0x0060, 
-/* 0004 */    0x0178, 0x0000, 0x00D9, 
-/* 0005 */    0x0192, 0x0000, 0x00C4, 
-/* 0006 */    0x02C6, 0x02C7, 0x0062, 
-/* 0007 */    0x02D8, 0x02DD, 0x0064, 
-/* 0008 */    0x03A9, 0x0000, 0x00BD, 
-/* 0009 */    0x03C0, 0x0000, 0x00B9, 
-/* 000A */    0x2013, 0x2044, 0x006A, 
-/* 000B */    0x20AC, 0x0000, 0x00DB, 
-/* 000C */    0x2122, 0x0000, 0x00AA, 
-/* 000D */    0x2202, 0x221E, 0x009C, 
-/* 000E */    0x222B, 0x0000, 0x00BA, 
-/* 000F */    0x2248, 0x0000, 0x00C5, 
-/* 0010 */    0x2260, 0x2265, 0x00B9, 
-/* 0011 */    0x25CA, 0x0000, 0x00D7, 
-/* 0012 */    0xF8FF, 0x0000, 0x00F0, 
-/* 0013 */    0xFB01, 0xFB02, 0x00BF, 
-/*-------------------------------------------------------*/
-/*       Offset=0x0046   Start of MappingTable */ 
-
-/* 0000 */    0x00CA, 0x00C1, 0x00A2, 0x00A3, 0xFFFD, 0x00B4, 0xFFFD, 0x00A4, 
-/* 0008 */    0x00AC, 0x00A9, 0x00BB, 0x00C7, 0x00C2, 0xFFFD, 0x00A8, 0x00F8, 
-/* 0010 */    0x00A1, 0x00B1, 0xFFFD, 0xFFFD, 0x00AB, 0x00B5, 0x00A6, 0x00E1, 
-/* 0018 */    0x00FC, 0xFFFD, 0x00BC, 0x00C8, 0xFFFD, 0xFFFD, 0xFFFD, 0x00C0, 
-/* 0020 */    0x00CB, 0x00E7, 0x00E5, 0x00CC, 0x0080, 0x0081, 0x00AE, 0x0082, 
-/* 0028 */    0x00E9, 0x0083, 0x00E6, 0x00E8, 0x00ED, 0x00EA, 0x00EB, 0x00EC, 
-/* 0030 */    0xFFFD, 0x0084, 0x00F1, 0x00EE, 0x00EF, 0x00CD, 0x0085, 0xFFFD, 
-/* 0038 */    0x00AF, 0x00F4, 0x00F2, 0x00F3, 0x0086, 0xFFFD, 0xFFFD, 0x00A7, 
-/* 0040 */    0x0088, 0x0087, 0x0089, 0x008B, 0x008A, 0x008C, 0x00BE, 0x008D, 
-/* 0048 */    0x008F, 0x008E, 0x0090, 0x0091, 0x0093, 0x0092, 0x0094, 0x0095, 
-/* 0050 */    0xFFFD, 0x0096, 0x0098, 0x0097, 0x0099, 0x009B, 0x009A, 0x00D6, 
-/* 0058 */    0x00BF, 0x009D, 0x009C, 0x009E, 0x009F, 0xFFFD, 0xFFFD, 0x00D8, 
-/* 0060 */    0x00CE, 0x00CF, 0x00F6, 0x00FF, 0x00F9, 0x00FA, 0x00FB, 0x00FE, 
-/* 0068 */    0x00F7, 0x00FD, 0x00D0, 0x00D1, 0xFFFD, 0xFFFD, 0xFFFD, 0x00D4, 
-/* 0070 */    0x00D5, 0x00E2, 0xFFFD, 0x00D2, 0x00D3, 0x00E3, 0xFFFD, 0x00A0, 
-/* 0078 */    0x00E0, 0x00A5, 0xFFFD, 0xFFFD, 0xFFFD, 0x00C9, 0xFFFD, 0xFFFD, 
-/* 0080 */    0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00E4, 
-/* 0088 */    0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 
-/* 0090 */    0x00DC, 0x00DD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 
-/* 0098 */    0xFFFD, 0xFFFD, 0xFFFD, 0x00DA, 0x00B6, 0xFFFD, 0xFFFD, 0xFFFD, 
-/* 00A0 */    0x00C6, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 
-/* 00A8 */    0xFFFD, 0x00B8, 0xFFFD, 0x00B7, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 
-/* 00B0 */    0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00C3, 0xFFFD, 0xFFFD, 0xFFFD, 
-/* 00B8 */    0x00B0, 0x00AD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00B2, 0x00B3, 0x00DE, 
-/* 00C0 */    0x00DF, 
-/*	End of table Total Length = 0x0107 * 2 */
deleted file mode 100644
--- a/intl/uconv/macroman.ut
+++ /dev/null
@@ -1,89 +0,0 @@
-/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-/*========================================================
-  This is a Generated file. Please don't edit it.
-
-  The tool which used to generate this file is called umaptable.
-  You can find this tool under mozilla/intl/uconv/tools/umaptable.c.
-  If you have any problem of this file. Please contact 
-  Netscape Client International Team or 
-  ftang@netscape <Frank Tang> 
-
-              Table in Debug form 
-Begin of Item 0000
- Format 0
-  srcBegin = 0020
-  srcEnd = 007F
-  destBegin = 0020
-End of Item 0000 
-
-Begin of Item 0001
- Format 1
-  srcBegin = 0080
-  srcEnd = 00FF
-  mappingOffset = 0000
- Mapping  = 
-  00C4 00C5 00C7 00C9 00D1 00D6 00DC 00E1 
-  00E0 00E2 00E4 00E3 00E5 00E7 00E9 00E8 
-  00EA 00EB 00ED 00EC 00EE 00EF 00F1 00F3 
-  00F2 00F4 00F6 00F5 00FA 00F9 00FB 00FC 
-  2020 00B0 00A2 00A3 00A7 2022 00B6 00DF 
-  00AE 00A9 2122 00B4 00A8 2260 00C6 00D8 
-  221E 00B1 2264 2265 00A5 00B5 2202 2211 
-  220F 03C0 222B 00AA 00BA 03A9 00E6 00F8 
-  00BF 00A1 00AC 221A 0192 2248 2206 00AB 
-  00BB 2026 00A0 00C0 00C3 00D5 0152 0153 
-  2013 2014 201C 201D 2018 2019 00F7 25CA 
-  00FF 0178 2044 20AC 2039 203A FB01 FB02 
-  2021 00B7 201A 201E 2030 00C2 00CA 00C1 
-  00CB 00C8 00CD 00CE 00CF 00CC 00D3 00D4 
-  F8FF 00D2 00DA 00DB 00D9 0131 02C6 02DC 
-  00AF 02D8 02D9 02DA 00B8 02DD 02DB 02C7 
-End of Item 0001 
-
-========================================================*/
-/* Offset=0x0000  ItemOfList */
-  0x0002,
-/*-------------------------------------------------------*/
-/* Offset=0x0001  offsetToFormatArray */
-  0x0004,
-/*-------------------------------------------------------*/
-/* Offset=0x0002  offsetToMapCellArray */ 
-  0x0005,
-/*-------------------------------------------------------*/
-/* Offset=0x0003  offsetToMappingTable */ 
-  0x000B,
-/*-------------------------------------------------------*/
-/*       Offset=0x0004   Start of Format Array */ 
-/*	Total of Format 0 : 0x0001			 */
-/*	Total of Format 1 : 0x0001			 */
-/*	Total of Format 2 : 0x0000			 */
-/*	Total of Format 3 : 0x0000			 */
-
-0x0010, 
-/*-------------------------------------------------------*/
-/*       Offset=0x0005   Start of MapCell Array */ 
-/* 0000 */    0x0020, 0x007F, 0x0020, 
-/* 0001 */    0x0080, 0x00FF, 0x0000, 
-/*-------------------------------------------------------*/
-/*       Offset=0x000B   Start of MappingTable */ 
-
-/* 0000 */    0x00C4, 0x00C5, 0x00C7, 0x00C9, 0x00D1, 0x00D6, 0x00DC, 0x00E1, 
-/* 0008 */    0x00E0, 0x00E2, 0x00E4, 0x00E3, 0x00E5, 0x00E7, 0x00E9, 0x00E8, 
-/* 0010 */    0x00EA, 0x00EB, 0x00ED, 0x00EC, 0x00EE, 0x00EF, 0x00F1, 0x00F3, 
-/* 0018 */    0x00F2, 0x00F4, 0x00F6, 0x00F5, 0x00FA, 0x00F9, 0x00FB, 0x00FC, 
-/* 0020 */    0x2020, 0x00B0, 0x00A2, 0x00A3, 0x00A7, 0x2022, 0x00B6, 0x00DF, 
-/* 0028 */    0x00AE, 0x00A9, 0x2122, 0x00B4, 0x00A8, 0x2260, 0x00C6, 0x00D8, 
-/* 0030 */    0x221E, 0x00B1, 0x2264, 0x2265, 0x00A5, 0x00B5, 0x2202, 0x2211, 
-/* 0038 */    0x220F, 0x03C0, 0x222B, 0x00AA, 0x00BA, 0x03A9, 0x00E6, 0x00F8, 
-/* 0040 */    0x00BF, 0x00A1, 0x00AC, 0x221A, 0x0192, 0x2248, 0x2206, 0x00AB, 
-/* 0048 */    0x00BB, 0x2026, 0x00A0, 0x00C0, 0x00C3, 0x00D5, 0x0152, 0x0153, 
-/* 0050 */    0x2013, 0x2014, 0x201C, 0x201D, 0x2018, 0x2019, 0x00F7, 0x25CA, 
-/* 0058 */    0x00FF, 0x0178, 0x2044, 0x20AC, 0x2039, 0x203A, 0xFB01, 0xFB02, 
-/* 0060 */    0x2021, 0x00B7, 0x201A, 0x201E, 0x2030, 0x00C2, 0x00CA, 0x00C1, 
-/* 0068 */    0x00CB, 0x00C8, 0x00CD, 0x00CE, 0x00CF, 0x00CC, 0x00D3, 0x00D4, 
-/* 0070 */    0xF8FF, 0x00D2, 0x00DA, 0x00DB, 0x00D9, 0x0131, 0x02C6, 0x02DC, 
-/* 0078 */    0x00AF, 0x02D8, 0x02D9, 0x02DA, 0x00B8, 0x02DD, 0x02DB, 0x02C7, 
-/*	End of table Total Length = 0x008B * 2 */
deleted file mode 100644
--- a/intl/uconv/nsCP1252ToUnicode.cpp
+++ /dev/null
@@ -1,22 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#include "nsUCConstructors.h"
-#include "nsCP1252ToUnicode.h"
-
-//----------------------------------------------------------------------
-// Global functions and data [declaration]
-
-nsresult
-nsCP1252ToUnicodeConstructor(nsISupports *aOuter, REFNSIID aIID,
-                             void **aResult) 
-{
-  static const uint16_t g_utMappingTable[] = {
-#include "cp1252.ut"
-  };
-
-  return CreateOneByteDecoder((uMappingTable*) &g_utMappingTable,
-                              aOuter, aIID, aResult);
-}
deleted file mode 100644
--- a/intl/uconv/nsCP1252ToUnicode.h
+++ /dev/null
@@ -1,30 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#ifndef nsCP1252ToUnicode_h___
-#define nsCP1252ToUnicode_h___
-
-#include "nsID.h"
-
-class nsISupports;
-
-// Class ID for our CP1252ToUnicode charset converter
-// {7C657D15-EC5E-11d2-8AAC-00600811A836}
-#define NS_CP1252TOUNICODE_CID \
-  { 0x7c657d15, 0xec5e, 0x11d2, {0x8a, 0xac, 0x0, 0x60, 0x8, 0x11, 0xa8, 0x36}}
-
-#define NS_CP1252TOUNICODE_CONTRACTID "@mozilla.org/intl/unicode/decoder;1?charset=windows-1252"
-
-/**
- * A character set converter from CP1252 to Unicode.
- *
- * @created         20/Apr/1999
- * @author  Catalin Rotaru [CATA]
- */
-nsresult
-nsCP1252ToUnicodeConstructor(nsISupports *aOuter, REFNSIID aIID,
-                             void **aResult);
-
-#endif /* nsCP1252ToUnicode_h___ */
deleted file mode 100644
--- a/intl/uconv/nsEncoderDecoderUtils.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#ifndef nsEncoderDecoderUtils_h__
-#define nsEncoderDecoderUtils_h__
-
-#define NS_UNICODEDECODER_NAME "Charset Decoders"
-#define NS_UNICODEENCODER_NAME "Charset Encoders"
-
-#define NS_CONVERTER_REGISTRY_START \
-  static const mozilla::Module::CategoryEntry kUConvCategories[] = {
-
-#define NS_CONVERTER_REGISTRY_END \
-  { nullptr } \
-  };
-
-#define NS_UCONV_REG_UNREG_DECODER(_Charset, _CID)          \
-  { NS_UNICODEDECODER_NAME, _Charset, "" },
-  
-#define NS_UCONV_REG_UNREG_ENCODER(_Charset, _CID)          \
-  { NS_UNICODEENCODER_NAME, _Charset, "" },
-
-#define NS_UCONV_REG_UNREG(_Charset, _DecoderCID, _EncoderCID) \
-  NS_UCONV_REG_UNREG_DECODER(_Charset, *) \
-  NS_UCONV_REG_UNREG_ENCODER(_Charset, *)
-
-#endif
deleted file mode 100644
--- a/intl/uconv/nsISO88591ToUnicode.h
+++ /dev/null
@@ -1,16 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#ifndef nsISO88591ToUnicode_h___
-#define nsISO88591ToUnicode_h___
-
-// Class ID for our ISO88591ToUnicode charset converter
-// {A3254CB0-8E20-11d2-8A98-00600811A836}
-#define NS_ISO88591TOUNICODE_CID \
-  { 0xa3254cb0, 0x8e20, 0x11d2, {0x8a, 0x98, 0x0, 0x60, 0x8, 0x11, 0xa8, 0x36}}
-
-#define NS_ISO88591TOUNICODE_CONTRACTID "@mozilla.org/intl/unicode/decoder;1?charset=ISO-8859-1"
-
-#endif /* nsISO88591ToUnicode_h___ */
deleted file mode 100644
--- a/intl/uconv/nsIUnicodeDecoder.h
+++ /dev/null
@@ -1,140 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#ifndef nsIUnicodeDecoder_h___
-#define nsIUnicodeDecoder_h___
-
-#include "nscore.h"
-#include "nsISupports.h"
-
-// Interface ID for our Unicode Decoder interface
-// {25359602-FC70-4d13-A9AB-8086D3827C0D}
-//NS_DECLARE_ID(kIUnicodeDecoderIID,
-//  0x25359602, 0xfc70, 0x4d13, 0xa9, 0xab, 0x80, 0x86, 0xd3, 0x82, 0x7c, 0xd);
-
-#define NS_IUNICODEDECODER_IID	\
-	{ 0x25359602, 0xfc70, 0x4d13,	\
-		{ 0xa9, 0xab, 0x80, 0x86, 0xd3, 0x82, 0x7c, 0xd }}
-
-
-#define NS_UNICODEDECODER_CONTRACTID_BASE "@mozilla.org/intl/unicode/decoder;1?charset="
-
-/**
- * Interface for a Converter from a Charset into Unicode.
- *
- * @created         23/Nov/1998
- * @author  Catalin Rotaru [CATA]
- */
-class nsIUnicodeDecoder : public nsISupports
-{
-public:
-  NS_DECLARE_STATIC_IID_ACCESSOR(NS_IUNICODEDECODER_IID)
-
-  enum {
-    kOnError_Recover,       // on an error, recover and continue
-    kOnError_Signal         // on an error, stop and signal
-  };
-
-  /**
-   * Converts the data from one Charset to Unicode.
-   *
-   * About the byte ordering:
-   * - For input, if the converter cares (that depends of the charset, for 
-   * example a singlebyte will ignore the byte ordering) it should assume 
-   * network order. If necessary and requested, we can add a method 
-   * SetInputByteOrder() so that the reverse order can be used, too. That 
-   * method would have as default the assumed network order.
-   * - The output stream is Unicode, having the byte order which is internal
-   * for the machine on which the converter is running on.
-   *
-   * Unless there is not enough output space, this method must consume all the
-   * available input data! The eventual incomplete final character data will be
-   * stored internally in the converter and used when the method is called 
-   * again for continuing the conversion. This way, the caller will not have to
-   * worry about managing incomplete input data by mergeing it with the next 
-   * buffer.
-   *
-   * Error conditions: 
-   * If the read value does not belong to this character set, one should 
-   * replace it with the Unicode special 0xFFFD. When an actual input error is 
-   * encountered, like a format error, the converter stop and return error.
-   * However, we should keep in mind that we need to be lax in decoding. When
-   * a decoding error is returned to the caller, it is the caller's
-   * responsibility to advance over the bad byte (unless aSrcLength is -1 in
-   * which case the caller should call the decoder with 0 offset again) and
-   * reset the decoder before trying to call the decoder again.
-   *
-   * Converter required behavior:
-   * In this order: when output space is full - return right away. When input
-   * data is wrong, return input pointer right after the wrong byte. When 
-   * partial input, it will be consumed and cached. All the time input pointer
-   * will show how much was actually consumed and how much was actually 
-   * written.
-   *
-   * @param aSrc        [IN] the source data buffer
-   * @param aSrcLength  [IN/OUT] the length of source data buffer; after
-   *                    conversion will contain the number of bytes read or
-   *                    -1 on error to indicate that the caller should re-push
-   *                    the same buffer after resetting the decoder
-   * @param aDest       [OUT] the destination data buffer
-   * @param aDestLength [IN/OUT] the length of the destination data buffer;
-   *                    after conversion will contain the number of Unicode
-   *                    characters written
-   * @return            NS_ERROR_UDEC_ILLEGALINPUT if an illegal input sequence
-   *                    was encountered and the behavior was set to "signal";
-   *                    the caller must skip over one byte, reset the decoder
-   *                    and retry.
-   *                    NS_OK_UDEC_MOREOUTPUT if only a partial conversion
-   *                    was done; more output space is needed to continue
-   *                    NS_OK_UDEC_MOREINPUT if the input ended in the middle
-   *                    of an input code unit sequence. If this is the last
-   *                    result the caller has at the end of the stream, the
-   *                    caller must append one U+FFFD to the output.
-   *                    NS_OK if the input ended after a complete input code
-   *                    unit sequence.
-   */
-  NS_IMETHOD Convert(const char * aSrc, int32_t * aSrcLength, 
-      char16_t * aDest, int32_t * aDestLength) = 0;
-
-  /**
-   * Returns a quick estimation of the size of the buffer needed to hold the
-   * converted data. Remember: this estimation is >= with the actual size of 
-   * the buffer needed. It will be computed for the "worst case"
-   *
-   * @param aSrc        [IN] the source data buffer
-   * @param aSrcLength  [IN] the length of source data buffer
-   * @param aDestLength [OUT] the needed size of the destination buffer
-   * @return            NS_EXACT_LENGTH if an exact length was computed
-   *                    NS_ERROR_OUT_OF_MEMORY if OOM
-   *                    NS_OK is all we have is an approximation
-   */
-   MOZ_MUST_USE NS_IMETHOD GetMaxLength(const char* aSrc,
-                                        int32_t aSrcLength,
-                                        int32_t* aDestLength) = 0;
-
-  /**
-   * Resets the charset converter so it may be recycled for a completely 
-   * different and urelated buffer of data.
-   */
-  NS_IMETHOD Reset() = 0;
-
-  /**
-   * Specify what to do when a character cannot be mapped into unicode
-   *
-   * @param aBehavior [IN] the desired behavior
-   * @see kOnError_Recover
-   * @see kOnError_Signal
-   */
-  virtual void SetInputErrorBehavior(int32_t aBehavior) = 0;
-
-  /**
-   * return the UNICODE character for unmapped character
-   */
-  virtual char16_t GetCharacterForUnMapped() = 0;
-};
-
-NS_DEFINE_STATIC_IID_ACCESSOR(nsIUnicodeDecoder, NS_IUNICODEDECODER_IID)
-
-#endif /* nsIUnicodeDecoder_h___ */
deleted file mode 100644
--- a/intl/uconv/nsIUnicodeEncoder.h
+++ /dev/null
@@ -1,159 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#ifndef nsIUnicodeEncoder_h___
-#define nsIUnicodeEncoder_h___
-
-#include "nscore.h"
-#include "nsError.h"
-#include "nsISupports.h"
-
-// Interface ID for our Unicode Encoder interface
-// {2B2CA3D0-A4C9-11d2-8AA1-00600811A836}
-#define NS_IUNICODEENCODER_IID \
-	{ 0x2b2ca3d0, 0xa4c9, 0x11d2, \
-		{ 0x8a, 0xa1, 0x0, 0x60, 0x8, 0x11, 0xa8, 0x36 }}  
-
-// Interface ID for our Unicode Character Encoder interface
-// {299BCCD0-C6DF-11d2-8AA8-00600811A836}
-#define NS_IUNICHARENCODER_IID	\
-	{ 0x299bccd0, 0xc6df, 0x11d2, \
-		{0x8a, 0xa8, 0x0, 0x60, 0x8, 0x11, 0xa8, 0x36 }}
-
-
-#define NS_UNICODEENCODER_CONTRACTID_BASE "@mozilla.org/intl/unicode/encoder;1?charset="
-
-/**
- * Interface which converts a single character from Unicode into a given 
- * charset.
- *
- * @created         17/Feb/1999
- * @author  Catalin Rotaru [CATA]
- */
-class nsIUnicharEncoder : public nsISupports
-{
-public:
-  NS_DECLARE_STATIC_IID_ACCESSOR(NS_IUNICHARENCODER_IID)
-
-  /**
-   * Converts a character from Unicode to a Charset.
-   */
-  NS_IMETHOD Convert(char16_t aChar, char * aDest, int32_t * aDestLength) = 0;
-};
-
-NS_DEFINE_STATIC_IID_ACCESSOR(nsIUnicharEncoder, NS_IUNICHARENCODER_IID)
-
-/**
- * Interface for a Converter from Unicode into a Charset.
- *
- * @created         23/Nov/1998
- * @author  Catalin Rotaru [CATA]
- */
-class nsIUnicodeEncoder : public nsISupports
-{
-public:
-  NS_DECLARE_STATIC_IID_ACCESSOR(NS_IUNICODEENCODER_IID)
-
-  enum {
-    kOnError_Signal,        // on an error, stop and signal
-    kOnError_CallBack,      // on an error, call the error handler
-    kOnError_Replace       // on an error, replace with a different character
-  };
-
-  /**
-   * Converts the data from Unicode to a Charset.
-   *
-   * About the byte ordering:
-   * - The input stream is Unicode, having the byte order which is internal
-   * for the machine on which the converter is running on.
-   * - For output, if the converter cares (that depends of the charset, for 
-   * example a singlebyte will ignore the byte ordering) it should assume 
-   * network order. If necessary and requested, we can add a method 
-   * SetOutputByteOrder() so that the reverse order can be used, too. That 
-   * method would have as default the assumed network order.
-   *
-   * For the last converted char, even if there is not enough output 
-   * space, a partial output must be done until all available space will be 
-   * used. The rest of the output should be buffered until more space becomes
-   * available. But this is not also true about the error handling method!!!
-   * So be very, very careful...
-   *
-   * @param aSrc        [IN] the source data buffer
-   * @param aSrcLength  [IN/OUT] the length of source data buffer; after
-   *                    conversion will contain the number of Unicode 
-   *                    characters read
-   * @param aDest       [OUT] the destination data buffer
-   * @param aDestLength [IN/OUT] the length of the destination data buffer;
-   *                    after conversion will contain the number of bytes
-   *                    written
-   * @return            NS_OK_UENC_MOREOUTPUT if only  a partial conversion
-   *                    was done; more output space is needed to continue
-   *                    NS_OK_UENC_MOREINPUT if only a partial conversion
-   *                    was done; more input is needed to continue. This can
-   *                    occur when the last UTF-16 code point in the input is
-   *                    the first of a surrogate pair.
-   *                    NS_ERROR_UENC_NOMAPPING if character without mapping
-   *                    was encountered and the behavior was set to "signal".
-   *                    In the case of an unmappable BMP character, aDestLength
-   *                    must indicate that the unmappable character was
-   *                    consumed by the encoder (unlike in the decode API!).
-   *                    In the case of an unmappable astral character,
-   *                    aDestLength must indicate that the high surrogate was
-   *                    consumed by the encoder but the low surrogate was not.
-   *                    NS_OK otherwise.
-   */
-  NS_IMETHOD Convert(const char16_t * aSrc, int32_t * aSrcLength, 
-      char * aDest, int32_t * aDestLength) = 0;
-
-  /**
-   * Finishes the conversion. The converter has the possibility to write some 
-   * extra data and flush its final state.
-   *
-   * @param aDest       [OUT] the destination data buffer
-   * @param aDestLength [IN/OUT] the length of destination data buffer; after
-   *                    conversion it will contain the number of bytes written
-   * @return            NS_OK_UENC_MOREOUTPUT if only  a partial conversion
-   *                    was done; more output space is needed to continue.
-   *                    NS_ERROR_UENC_NOMAPPING if input ended with an unpaired
-   *                    high surrogate, the behavior was "signal" and the
-   *                    encoding can't represent U+FFFD.
-   *                    NS_OK otherwise.
-   */
-  NS_IMETHOD Finish(char * aDest, int32_t * aDestLength) = 0;
-
-  /**
-   * Returns a quick estimation of the size of the buffer needed to hold the
-   * converted data. Remember: this estimation is >= with the actual size of 
-   * the buffer needed. It will be computed for the "worst case"
-   *
-   * @param aSrc        [IN] the source data buffer
-   * @param aSrcLength  [IN] the length of source data buffer
-   * @param aDestLength [OUT] the needed size of the destination buffer
-   * @return            NS_OK_UENC_EXACTLENGTH if an exact length was computed
-   *                    NS_ERROR_OUT_OF_MEMORY if OOM
-   *                    NS_OK if all we have is an approximation
-   */
-  MOZ_MUST_USE NS_IMETHOD GetMaxLength(const char16_t* aSrc,
-                                       int32_t aSrcLength,
-                                       int32_t* aDestLength) = 0;
-
-  /**
-   * Resets the charset converter so it may be recycled for a completely 
-   * different and urelated buffer of data.
-   */
-  NS_IMETHOD Reset() = 0;
-
-  /**
-   * Specify what to do when a character cannot be mapped into the dest charset
-   *
-   * @param aOrder      [IN] the behavior; taken from the enum
-   */
-  NS_IMETHOD SetOutputErrorBehavior(int32_t aBehavior, 
-      nsIUnicharEncoder * aEncoder, char16_t aChar) = 0;
-};
-
-NS_DEFINE_STATIC_IID_ACCESSOR(nsIUnicodeEncoder, NS_IUNICODEENCODER_IID)
-
-#endif /* nsIUnicodeEncoder_h___ */
deleted file mode 100644
--- a/intl/uconv/nsMacRomanToUnicode.cpp
+++ /dev/null
@@ -1,23 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#include "nsUCConstructors.h"
-#include "nsMacRomanToUnicode.h"
-
-//----------------------------------------------------------------------
-// Global functions and data [declaration]
-
-nsresult
-nsMacRomanToUnicodeConstructor(nsISupports *aOuter, REFNSIID aIID,
-                               void **aResult)
-{
-  static const uint16_t g_MacRomanMappingTable[] = {
-#include "macroman.ut"
-  };
-
-  return CreateOneByteDecoder((uMappingTable*) &g_MacRomanMappingTable,
-                            aOuter, aIID, aResult);
-}
-
deleted file mode 100644
--- a/intl/uconv/nsMacRomanToUnicode.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#ifndef nsMacRomanToUnicode_h___
-#define nsMacRomanToUnicode_h___
-
-#include "nsID.h"
-
-class nsISupports;
-
-// Class ID for our MacRomanToUnicode charset converter
-// {7B8556A1-EC79-11d2-8AAC-00600811A836}
-#define NS_MACROMANTOUNICODE_CID \
-  { 0x7b8556a1, 0xec79, 0x11d2, {0x8a, 0xac, 0x0, 0x60, 0x8, 0x11, 0xa8, 0x36}}
-
-#define NS_MACROMANTOUNICODE_CONTRACTID "@mozilla.org/intl/unicode/decoder;1?charset=macintosh"
-
-//#define NS_ERROR_UCONV_NOMACROMANTOUNICODE   
-//  NS_ERROR_GENERATE_FAILURE(NS_ERROR_MODULE_UCONV, 0x31)
-
-/**
- * A character set converter from MacRoman to Unicode.
- *
- * @created         05/Apr/1999
- * @author  Catalin Rotaru [CATA]
- */
-nsresult
-nsMacRomanToUnicodeConstructor(nsISupports *aOuter, REFNSIID aIID,
-                               void **aResult);
-
-#endif /* nsMacRomanToUnicode_h___ */
deleted file mode 100644
--- a/intl/uconv/nsNCRFallbackEncoderWrapper.cpp
+++ /dev/null
@@ -1,156 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#include "nsNCRFallbackEncoderWrapper.h"
-
-#include "mozilla/dom/EncodingUtils.h"
-
-nsNCRFallbackEncoderWrapper::nsNCRFallbackEncoderWrapper(const nsACString& aEncoding)
- : mEncoder(mozilla::dom::EncodingUtils::EncoderForEncoding(aEncoding))
-{
-}
-
-nsNCRFallbackEncoderWrapper::~nsNCRFallbackEncoderWrapper()
-{
-}
-
-bool
-nsNCRFallbackEncoderWrapper::WriteNCR(nsACString& aBytes,
-                                      uint32_t& aDstWritten,
-                                      int32_t aUnmappable)
-{
-  // To avoid potentially shrinking aBytes and then growing it back, use
-  // another string for number formatting.
-  nsAutoCString ncr("&#");
-  ncr.AppendInt(aUnmappable);
-  ncr.Append(';');
-  uint32_t ncrLen = ncr.Length();
-  uint32_t needed = aDstWritten + ncrLen;
-  if (needed > INT32_MAX) {
-    return false;
-  }
-  if (needed > aBytes.Length() && !aBytes.SetLength(needed,
-                                                    mozilla::fallible_t())) {
-    return false;
-  }
-  memcpy(aBytes.BeginWriting() + aDstWritten,
-         ncr.BeginReading(),
-         ncrLen);
-  aDstWritten += ncrLen;
-  return true;
-}
-
-bool
-nsNCRFallbackEncoderWrapper::Encode(const nsAString& aUtf16,
-                                    nsACString& aBytes)
-{
-  // mozilla::dom::EncodingUtils::EncoderForEncoding fails during shutdown
-  if (!mEncoder) {
-    return false;
-  }
-  // nsIUnicodeEncoder uses int32_t for sizes :-(
-  if (aUtf16.Length() > INT32_MAX) {
-    return false;
-  }
-  const char16_t* src = aUtf16.BeginReading();
-  const char16_t* srcEnd = aUtf16.EndReading();
-  uint32_t dstWritten = 0;
-  for (;;) {
-    int32_t srcLen = srcEnd - src;
-    int32_t dstLen = 0;
-    nsresult rv = mEncoder->GetMaxLength(src, srcLen, &dstLen);
-    if (NS_FAILED(rv)) {
-      return false;
-    }
-    uint32_t needed = dstWritten + dstLen;
-    if (needed > INT32_MAX) {
-      return false;
-    }
-    // Behind the scenes SetLength() makes the underlying allocation not have
-    // slop, so we don't need to round up here.
-    if (needed > aBytes.Length() && !aBytes.SetLength(needed,
-                                                      mozilla::fallible_t())) {
-      return false;
-    }
-    // We need to re-obtain the destination pointer on every iteration, because
-    // SetLength() invalidates it.
-    char* dst = aBytes.BeginWriting() + dstWritten;
-    dstLen = aBytes.Length() - dstWritten;
-    mEncoder->Reset();
-    rv = mEncoder->Convert(src, &srcLen, dst, &dstLen);
-    // Update state tracking
-    src += srcLen;
-    dstWritten += dstLen;
-    if (rv == NS_OK_UENC_MOREOUTPUT) {
-      MOZ_ASSERT_UNREACHABLE("GetMaxLength must have returned a bogus length.");
-      return false;
-    }
-    if (rv == NS_ERROR_UENC_NOMAPPING) {
-      int32_t unmappable;
-      // The unmappable code unit or the first half of an unmappable surrogate
-      // pair is consumed by the encoder.
-      MOZ_ASSERT(srcLen > 0, "Encoder should have consumed some input.");
-      char16_t codeUnit = src[-1];
-      // Let's see if it is a surrogate
-      size_t highBits = (codeUnit & 0xFC00);
-      if (highBits == 0xD800) {
-        // high surrogate
-        // Let's see if we actually have a surrogate pair.
-        char16_t next;
-        if (src < srcEnd && NS_IS_LOW_SURROGATE((next = *src))) {
-          src++; // consume the low surrogate
-          unmappable = SURROGATE_TO_UCS4(codeUnit, next);
-        } else {
-          // unpaired surrogate.
-          unmappable = 0xFFFD;
-        }
-      } else if (highBits == 0xDC00) {
-        // low surrogate
-        // This must be an unpaired surrogate.
-        unmappable = 0xFFFD;
-      } else {
-        // not a surrogate
-        unmappable = codeUnit;
-      }
-      // If we are encoding to ISO-2022-JP, we need to let the encoder to
-      // generate a transition to the ASCII state if not already there.
-      dst = aBytes.BeginWriting() + dstWritten;
-      dstLen = aBytes.Length() - dstWritten;
-      rv = mEncoder->Finish(dst, &dstLen);
-      dstWritten += dstLen;
-      if (rv != NS_OK) {
-        // Failures should be impossible if GetMaxLength works. Big5 is the
-        // only case where Finish() may return NS_ERROR_UENC_NOMAPPING but
-        // that should never happen right after Convert() has returned it.
-        MOZ_ASSERT_UNREACHABLE("Broken encoder.");
-        return false;
-      }
-      if (!WriteNCR(aBytes, dstWritten, unmappable)) {
-        return false;
-      }
-      continue;
-    }
-    if (!(rv == NS_OK || rv == NS_OK_UENC_MOREINPUT)) {
-      return false;
-    }
-    MOZ_ASSERT(src == srcEnd, "Converter did not consume all input.");
-    dst = aBytes.BeginWriting() + dstWritten;
-    dstLen = aBytes.Length() - dstWritten;
-    rv = mEncoder->Finish(dst, &dstLen);
-    dstWritten += dstLen;
-    if (rv == NS_OK_UENC_MOREOUTPUT) {
-      MOZ_ASSERT_UNREACHABLE("GetMaxLength must have returned a bogus length.");
-      return false;
-    }
-    if (rv == NS_ERROR_UENC_NOMAPPING) {
-      // Big5
-      if (!WriteNCR(aBytes, dstWritten, 0xFFFD)) {
-        return false;
-      }
-    }
-    return aBytes.SetLength(dstWritten, mozilla::fallible_t());
-  }
-}
-
deleted file mode 100644
--- a/intl/uconv/nsNCRFallbackEncoderWrapper.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#ifndef nsNCRFallbackEncoderWrapper_h_
-#define nsNCRFallbackEncoderWrapper_h_
-
-#include "nsIUnicodeEncoder.h"
-
-class nsNCRFallbackEncoderWrapper
-{
-public:
-  explicit nsNCRFallbackEncoderWrapper(const nsACString& aEncoding);
-  ~nsNCRFallbackEncoderWrapper();
-
-  /**
-   * Convert text to bytes with decimal numeric character reference replacement
-   * for unmappables.
-   *
-   * @param aUtf16 UTF-16 input
-   * @param aBytes conversion output
-   * @return true on success and false on failure (OOM)
-   */
-  bool Encode(const nsAString& aUtf16,
-              nsACString& aBytes);
-
-private:
-  bool WriteNCR(nsACString& aBytes, uint32_t& aDstWritten, int32_t aUnmappable);
-
-  nsCOMPtr<nsIUnicodeEncoder> mEncoder;
-};
-
-#endif /* nsNCRFallbackEncoderWrapper_h_ */
deleted file mode 100644
--- a/intl/uconv/nsReplacementToUnicode.cpp
+++ /dev/null
@@ -1,56 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#include "nsReplacementToUnicode.h"
-
-nsReplacementToUnicode::nsReplacementToUnicode()
- : mSeenByte(false)
-{
-}
-
-NS_IMETHODIMP
-nsReplacementToUnicode::Convert(const char* aSrc,
-                                int32_t* aSrcLength,
-                                char16_t* aDest,
-                                int32_t* aDestLength)
-{
-  if (mSeenByte || !(*aSrcLength)) {
-    *aDestLength = 0;
-    return NS_PARTIAL_MORE_INPUT;
-  }
-  if (mErrBehavior == kOnError_Signal) {
-    mSeenByte = true;
-    *aSrcLength = 0;
-    *aDestLength = 0;
-    return NS_ERROR_ILLEGAL_INPUT;
-  }
-  if (!(*aDestLength)) {
-    *aSrcLength = -1;
-    return NS_PARTIAL_MORE_OUTPUT;
-  }
-  mSeenByte = true;
-  *aDest = 0xFFFD;
-  *aDestLength = 1;
-  return NS_PARTIAL_MORE_INPUT;
-}
-
-NS_IMETHODIMP
-nsReplacementToUnicode::GetMaxLength(const char* aSrc,
-                          int32_t aSrcLength,
-                          int32_t* aDestLength)
-{
-  if (!mSeenByte && aSrcLength > 0) {
-    *aDestLength = 1;
-  } else {
-    *aDestLength = 0;
-  }
-  return NS_EXACT_LENGTH;
-}
-
-NS_IMETHODIMP
-nsReplacementToUnicode::Reset()
-{
-  mSeenByte = false;
-  return NS_OK;
-}
deleted file mode 100644
--- a/intl/uconv/nsReplacementToUnicode.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#ifndef nsReplacementToUnicode_h_
-#define nsReplacementToUnicode_h_
-
-#include "nsUCSupport.h"
-
-#define NS_REPLACEMENTTOUNICODE_CID \
-  { 0xd24b24da, 0xc607, 0x489a, \
-    { 0xb5, 0xf0, 0x67, 0x91, 0xf4, 0x45, 0x45, 0x6d } }
-
-#define NS_REPLACEMENTTOUNICODE_CONTRACTID \
-  "@mozilla.org/intl/unicode/decoder;1?charset=replacement"
-
-class nsReplacementToUnicode : public nsBasicDecoderSupport
-{
-public:
-  nsReplacementToUnicode();
-
-  NS_IMETHOD Convert(const char* aSrc,
-                     int32_t* aSrcLength,
-                     char16_t* aDest,
-                     int32_t* aDestLength) override;
-
-  MOZ_MUST_USE NS_IMETHOD GetMaxLength(const char* aSrc,
-                                       int32_t aSrcLength,
-                                       int32_t* aDestLength) override;
-
-  NS_IMETHOD Reset() override;
-
-private:
-  bool mSeenByte;
-};
-
-#endif // nsReplacementToUnicode_h_
deleted file mode 100644
--- a/intl/uconv/nsUCSupport.h
+++ /dev/null
@@ -1,425 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#ifndef nsUCvJaSupport_h___
-#define nsUCvJaSupport_h___
-
-#include "nsCOMPtr.h"
-#include "nsIUnicodeEncoder.h"
-#include "nsIUnicodeDecoder.h"
-#include "uconvutil.h"
-#include "mozilla/Mutex.h"
-
-#define ONE_BYTE_TABLE_SIZE 256
-
-inline bool WillOverrun(char16_t* aDest, char16_t* aDestEnd, uint32_t aLength)
-{
-  NS_ASSERTION(aDest <= aDestEnd, "Pointer overrun even before check");
-  return (uint32_t(aDestEnd - aDest) < aLength);
-}
-#define CHECK_OVERRUN(dest, destEnd, length) (WillOverrun(dest, destEnd, length))
-
-#ifdef DEBUG
-// {7AFC9F0A-CFE1-44ea-A755-E3B86AB1226E}
-#define NS_IBASICDECODER_IID \
-{ 0x7afc9f0a, 0xcfe1, 0x44ea, { 0xa7, 0x55, 0xe3, 0xb8, 0x6a, 0xb1, 0x22, 0x6e } }
-
-// {65968A7B-6467-4c4a-B50A-3E0C97A32F07}
-#define NS_IBASICENCODER_IID \
-{ 0x65968a7b, 0x6467, 0x4c4a, { 0xb5, 0xa, 0x3e, 0xc, 0x97, 0xa3, 0x2f, 0x7 } }
-
-class nsIBasicDecoder : public nsISupports {
-public:
-  NS_DECLARE_STATIC_IID_ACCESSOR(NS_IBASICDECODER_IID)
-};
-
-NS_DEFINE_STATIC_IID_ACCESSOR(nsIBasicDecoder, NS_IBASICDECODER_IID)
-
-class nsIBasicEncoder : public nsISupports {
-public:
-  NS_DECLARE_STATIC_IID_ACCESSOR(NS_IBASICENCODER_IID)
-};
-
-NS_DEFINE_STATIC_IID_ACCESSOR(nsIBasicEncoder, NS_IBASICENCODER_IID)
-
-#endif
-
-//----------------------------------------------------------------------
-// Class nsBasicDecoderSupport [declaration]
-
-/**
- * Support class for the Unicode decoders. 
- *
- * The class source files for this class are in /ucvlatin/nsUCvJaSupport. 
- * However, because these objects requires non-xpcom subclassing, local copies
- * will be made into the other directories using them. Just don't forget to 
- * keep in sync with the master copy!
- * 
- * This class implements:
- * - nsISupports
- * - nsIUnicodeDecoder
- *
- * @created         19/Apr/1999
- * @author  Catalin Rotaru [CATA]
- */
-class nsBasicDecoderSupport : public nsIUnicodeDecoder
-#ifdef DEBUG
-                              ,public nsIBasicDecoder
-#endif
-{
-  NS_DECL_THREADSAFE_ISUPPORTS
-
-public:
-
-  /**
-   * Class constructor.
-   */
-  nsBasicDecoderSupport();
-
-  //--------------------------------------------------------------------
-  // Interface nsIUnicodeDecoder [declaration]
-
-  virtual void SetInputErrorBehavior(int32_t aBehavior) override;
-  virtual char16_t GetCharacterForUnMapped() override;
-
-protected:
-  int32_t   mErrBehavior;
-
-  /**
-   * Class destructor.
-   */
-  virtual ~nsBasicDecoderSupport();
-};
-
-//----------------------------------------------------------------------
-// Class nsBufferDecoderSupport [declaration]
-
-/**
- * Support class for the Unicode decoders. 
- *
- * This class implements:
- * - the buffer management
- *
- * @created         15/Mar/1999
- * @author  Catalin Rotaru [CATA]
- */
-class nsBufferDecoderSupport : public nsBasicDecoderSupport
-{
-protected:
-
-  /**
-   * Internal buffer for partial conversions.
-   */
-  char *    mBuffer;
-  int32_t   mBufferCapacity;
-  int32_t   mBufferLength;
-
-  uint32_t  mMaxLengthFactor;
-  
-  /**
-   * Convert method but *without* the buffer management stuff.
-   */
-  NS_IMETHOD ConvertNoBuff(const char * aSrc, int32_t * aSrcLength, 
-      char16_t * aDest, int32_t * aDestLength) = 0;
-
-  void FillBuffer(const char ** aSrc, int32_t aSrcLength);
-
-public:
-
-  /**
-   * Class constructor.
-   */
-  explicit nsBufferDecoderSupport(uint32_t aMaxLengthFactor);
-
-  /**
-   * Class destructor.
-   */
-  virtual ~nsBufferDecoderSupport();
-
-  //--------------------------------------------------------------------
-  // Interface nsIUnicodeDecoder [declaration]
-
-  NS_IMETHOD Convert(const char * aSrc, int32_t * aSrcLength, 
-      char16_t * aDest, int32_t * aDestLength);
-  NS_IMETHOD Reset();
-  NS_IMETHOD GetMaxLength(const char *aSrc,
-                          int32_t aSrcLength,
-                          int32_t* aDestLength);
-};
-
-//----------------------------------------------------------------------
-// Class nsMultiTableDecoderSupport [declaration]
-
-/**
- * Support class for a multi-table-driven Unicode decoder.
- * 
- * @created         24/Mar/1999
- * @author  Catalin Rotaru [CATA]
- */
-class nsMultiTableDecoderSupport : public nsBufferDecoderSupport
-{
-public:
-
-  /**
-   * Class constructor.
-   */
-  nsMultiTableDecoderSupport(int32_t aTableCount, const uRange * aRangeArray, 
-                             uScanClassID * aScanClassArray,
-                             uMappingTable ** aMappingTable,
-                             uint32_t aMaxLengthFactor);
-
-  /**
-   * Class destructor.
-   */
-  virtual ~nsMultiTableDecoderSupport();
-
-protected:
-
-  int32_t                   mTableCount;
-  const uRange              * mRangeArray;
-  uScanClassID              * mScanClassArray;
-  uMappingTable             ** mMappingTable;
-
-  //--------------------------------------------------------------------
-  // Subclassing of nsBufferDecoderSupport class [declaration]
-
-  NS_IMETHOD ConvertNoBuff(const char * aSrc, int32_t * aSrcLength, 
-      char16_t * aDest, int32_t * aDestLength);
-};
-
-//----------------------------------------------------------------------
-// Class nsBufferDecoderSupport [declaration]
-
-/**
- * Support class for a single-byte Unicode decoder.
- *
- * @created         19/Apr/1999
- * @author  Catalin Rotaru [CATA]
- */
-class nsOneByteDecoderSupport : public nsBasicDecoderSupport
-{
-public:
-
-  /**
-   * Class constructor.
-   */
-  explicit nsOneByteDecoderSupport(uMappingTable * aMappingTable);
-
-  /**
-   * Class destructor.
-   */
-  virtual ~nsOneByteDecoderSupport();
-
-protected:
-
-  uMappingTable             * mMappingTable;
-  char16_t                 mFastTable[ONE_BYTE_TABLE_SIZE];
-  bool                      mFastTableCreated;
-  mozilla::Mutex            mFastTableMutex;
-
-  //--------------------------------------------------------------------
-  // Subclassing of nsBasicDecoderSupport class [declaration]
-
-  NS_IMETHOD Convert(const char * aSrc, int32_t * aSrcLength, 
-      char16_t * aDest, int32_t * aDestLength);
-  NS_IMETHOD GetMaxLength(const char * aSrc, int32_t aSrcLength, 
-      int32_t * aDestLength);
-  NS_IMETHOD Reset();
-};
-
-//----------------------------------------------------------------------
-// Class nsBasicEncoder [declaration]
-
-class nsBasicEncoder : public nsIUnicodeEncoder
-#ifdef DEBUG
-                       ,public nsIBasicEncoder
-#endif
-{
-  NS_DECL_ISUPPORTS
-
-public:
-  /**
-   * Class constructor.
-   */
-  nsBasicEncoder();
-
-protected:
-  /**
-   * Class destructor.
-   */
-  virtual ~nsBasicEncoder();
-
-};
-//----------------------------------------------------------------------
-// Class nsEncoderSupport [declaration]
-
-/**
- * Support class for the Unicode encoders. 
- *
- * This class implements:
- * - nsISupports
- * - the buffer management
- * - error handling procedure(s)
- *
- * @created         17/Feb/1999
- * @author  Catalin Rotaru [CATA]
- */
-class nsEncoderSupport :  public nsBasicEncoder
-{
-
-protected:
-
-  /**
-   * Internal buffer for partial conversions.
-   */
-  char *    mBuffer;
-  int32_t   mBufferCapacity;
-  char *    mBufferStart;
-  char *    mBufferEnd;
-
-  /**
-   * Error handling stuff
-   */
-  int32_t   mErrBehavior;
-  nsCOMPtr<nsIUnicharEncoder> mErrEncoder;
-  char16_t mErrChar;
-  uint32_t  mMaxLengthFactor;
-
-  /**
-   * Convert method but *without* the buffer management stuff and *with* 
-   * error handling stuff.
-   */
-  NS_IMETHOD ConvertNoBuff(const char16_t * aSrc, int32_t * aSrcLength, 
-      char * aDest, int32_t * aDestLength);
-
-  /**
-   * Convert method but *without* the buffer management stuff and *without*
-   * error handling stuff.
-   */
-  NS_IMETHOD ConvertNoBuffNoErr(const char16_t * aSrc, int32_t * aSrcLength, 
-      char * aDest, int32_t * aDestLength) = 0;
-
-  /**
-   * Finish method but *without* the buffer management stuff.
-   */
-  NS_IMETHOD FinishNoBuff(char * aDest, int32_t * aDestLength);
-
-  /**
-   * Copy as much as possible from the internal buffer to the destination.
-   */
-  nsresult FlushBuffer(char ** aDest, const char * aDestEnd);
-
-public:
-
-  /**
-   * Class constructor.
-   */
-  explicit nsEncoderSupport(uint32_t aMaxLengthFactor);
-
-  /**
-   * Class destructor.
-   */
-  virtual ~nsEncoderSupport();
-
-  //--------------------------------------------------------------------
-  // Interface nsIUnicodeEncoder [declaration]
-
-  NS_IMETHOD Convert(const char16_t * aSrc, int32_t * aSrcLength, 
-      char * aDest, int32_t * aDestLength);
-  NS_IMETHOD Finish(char * aDest, int32_t * aDestLength);
-  NS_IMETHOD Reset();
-  NS_IMETHOD SetOutputErrorBehavior(int32_t aBehavior, 
-      nsIUnicharEncoder * aEncoder, char16_t aChar);
-  NS_IMETHOD GetMaxLength(const char16_t * aSrc, 
-                          int32_t aSrcLength, 
-                          int32_t * aDestLength);
-};
-
-//----------------------------------------------------------------------
-// Class nsTableEncoderSupport [declaration]
-
-/**
- * Support class for a single-table-driven Unicode encoder.
- * 
- * @created         17/Feb/1999
- * @author  Catalin Rotaru [CATA]
- */
-class nsTableEncoderSupport : public nsEncoderSupport
-{
-public:
-
-  /**
-   * Class constructors.
-   */
-  nsTableEncoderSupport(uScanClassID  aScanClass,
-                        uShiftOutTable * aShiftOutTable,
-                        uMappingTable  * aMappingTable,
-                        uint32_t aMaxLengthFactor);
-
-  nsTableEncoderSupport(uScanClassID  aScanClass,
-                        uMappingTable  * aMappingTable,
-                        uint32_t aMaxLengthFactor);
-
-  /**
-   * Class destructor.
-   */
-  virtual ~nsTableEncoderSupport();
-
-protected:
-
-  uScanClassID              mScanClass;
-  uShiftOutTable            * mShiftOutTable;
-  uMappingTable             * mMappingTable;
-
-  //--------------------------------------------------------------------
-  // Subclassing of nsEncoderSupport class [declaration]
-
-  NS_IMETHOD ConvertNoBuffNoErr(const char16_t * aSrc, int32_t * aSrcLength, 
-      char * aDest, int32_t * aDestLength);
-};
-
-//----------------------------------------------------------------------
-// Class nsMultiTableEncoderSupport [declaration]
-
-/**
- * Support class for a multi-table-driven Unicode encoder.
- * 
- * @created         11/Mar/1999
- * @author  Catalin Rotaru [CATA]
- */
-class nsMultiTableEncoderSupport : public nsEncoderSupport
-{
-public:
-
-  /**
-   * Class constructor.
-   */
-  nsMultiTableEncoderSupport(int32_t aTableCount,
-                             uScanClassID * aScanClassArray,
-                             uShiftOutTable ** aShiftOutTable,
-                             uMappingTable  ** aMappingTable,
-                             uint32_t aMaxLengthFactor);
-
-  /**
-   * Class destructor.
-   */
-  virtual ~nsMultiTableEncoderSupport();
-
-protected:
-
-  int32_t                   mTableCount;
-  uScanClassID              * mScanClassArray;
-  uShiftOutTable            ** mShiftOutTable;
-  uMappingTable             ** mMappingTable;
-
-  //--------------------------------------------------------------------
-  // Subclassing of nsEncoderSupport class [declaration]
-
-  NS_IMETHOD ConvertNoBuffNoErr(const char16_t * aSrc, int32_t * aSrcLength, 
-      char * aDest, int32_t * aDestLength);
-};
-
-                        
-#endif /* nsUCvJaSupport_h___ */
deleted file mode 100644
--- a/intl/uconv/nsUTF8ToUnicode.cpp
+++ /dev/null
@@ -1,370 +0,0 @@
-/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=2 et sw=2 tw=80: */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#include "nsUCSupport.h"
-#include "nsUTF8ToUnicode.h"
-#include "mozilla/CheckedInt.h"
-#include "mozilla/SSE.h"
-#include "nsCharTraits.h"
-#include <algorithm>
-
-#define UNICODE_BYTE_ORDER_MARK    0xFEFF
-
-static char16_t* EmitSurrogatePair(uint32_t ucs4, char16_t* aDest)
-{
-  NS_ASSERTION(ucs4 > 0xFFFF, "Should be a supplementary character");
-  ucs4 -= 0x00010000;
-  *aDest++ = 0xD800 | (0x000003FF & (ucs4 >> 10));
-  *aDest++ = 0xDC00 | (0x000003FF & ucs4);
-  return aDest;
-}
-
-//----------------------------------------------------------------------
-// Class nsUTF8ToUnicode [implementation]
-
-nsUTF8ToUnicode::nsUTF8ToUnicode()
-: nsBasicDecoderSupport()
-{
-  Reset();
-}
-
-//----------------------------------------------------------------------
-// Subclassing of nsTableDecoderSupport class [implementation]
-
-/**
- * Normally the maximum length of the output of the UTF8 decoder in UTF16
- *  code units is the same as the length of the input in UTF8 code units,
- *  since 1-byte, 2-byte and 3-byte UTF-8 sequences decode to a single
- *  UTF-16 character, and 4-byte UTF-8 sequences decode to a surrogate pair.
- *
- * However, there is an edge case where the output can be longer than the
- *  input: if the previous buffer ended with an incomplete multi-byte
- *  sequence and this buffer does not begin with a valid continuation
- *  byte, we will return NS_ERROR_ILLEGAL_INPUT and the caller may insert a
- *  replacement character in the output buffer which corresponds to no
- *  character in the input buffer. So in the worst case the destination
- *  will need to be one code unit longer than the source.
- *  See bug 301797.
- */
-NS_IMETHODIMP nsUTF8ToUnicode::GetMaxLength(const char * aSrc,
-                                            int32_t aSrcLength,
-                                            int32_t * aDestLength)
-{
-  mozilla::CheckedInt32 length = aSrcLength;
-  length += 1;
-
-  if (!length.isValid()) {
-    return NS_ERROR_OUT_OF_MEMORY;
-  }
-
-  *aDestLength = length.value();
-  return NS_OK;
-}
-
-
-//----------------------------------------------------------------------
-// Subclassing of nsBasicDecoderSupport class [implementation]
-
-NS_IMETHODIMP nsUTF8ToUnicode::Reset()
-{
-
-  mUcs4  = 0;     // cached Unicode character
-  mState = 0;     // cached expected number of octets after the current octet
-                  // until the beginning of the next UTF8 character sequence
-  mBytes = 1;     // cached expected number of octets in the current sequence
-  mFirst = true;
-
-  return NS_OK;
-
-}
-
-//----------------------------------------------------------------------
-// Subclassing of nsBasicDecoderSupport class [implementation]
-
-// Fast ASCII -> UTF16 inner loop implementations
-//
-// Convert_ascii_run will update src and dst to the new values, and
-// len must be the maximum number ascii chars that it would be valid
-// to take from src and place into dst.  (That is, the minimum of the
-// number of bytes left in src and the number of unichars available in
-// dst.)
-
-#if defined(__arm__) || defined(_M_ARM)
-
-// on ARM, do extra work to avoid byte/halfword reads/writes by
-// reading/writing a word at a time for as long as we can
-static inline void
-Convert_ascii_run (const char *&src,
-                   char16_t *&dst,
-                   int32_t len)
-{
-  const uint32_t *src32;
-  uint32_t *dst32;
-
-  // with some alignments, we'd never actually break out of the slow loop, so
-  // check and do the faster slow loop
-  if ((((NS_PTR_TO_UINT32(dst) & 3) == 0) && ((NS_PTR_TO_UINT32(src) & 1) == 0)) ||
-      (((NS_PTR_TO_UINT32(dst) & 3) == 2) && ((NS_PTR_TO_UINT32(src) & 1) == 1)))
-  {
-    while (((NS_PTR_TO_UINT32(src) & 3) ||
-            (NS_PTR_TO_UINT32(dst) & 3)) &&
-           len > 0)
-    {
-      if (*src & 0x80U)
-        return;
-      *dst++ = (char16_t) *src++;
-      len--;
-    }
-  } else {
-    goto finish;
-  }
-
-  // then go 4 bytes at a time
-  src32 = (const uint32_t*) src;
-  dst32 = (uint32_t*) dst;
-
-  while (len > 4) {
-    uint32_t in = *src32++;
-
-    if (in & 0x80808080U) {
-      src32--;
-      break;
-    }
-
-    *dst32++ = ((in & 0x000000ff) >>  0) | ((in & 0x0000ff00) << 8);
-    *dst32++ = ((in & 0x00ff0000) >> 16) | ((in & 0xff000000) >> 8);
-
-    len -= 4;
-  }
-
-  src = (const char *) src32;
-  dst = (char16_t *) dst32;
-
-finish:
-  while (len-- > 0 && (*src & 0x80U) == 0) {
-    *dst++ = (char16_t) *src++;
-  }
-}
-
-#else
-
-#ifdef MOZILLA_MAY_SUPPORT_SSE2
-namespace mozilla {
-namespace SSE2 {
-
-void Convert_ascii_run(const char *&src, char16_t *&dst, int32_t len);
-
-} // namespace SSE2
-} // namespace mozilla
-#endif
-
-static inline void
-Convert_ascii_run (const char *&src,
-                   char16_t *&dst,
-                   int32_t len)
-{
-#ifdef MOZILLA_MAY_SUPPORT_SSE2
-  if (mozilla::supports_sse2()) {
-    mozilla::SSE2::Convert_ascii_run(src, dst, len);
-    return;
-  }
-#endif
-
-  while (len-- > 0 && (*src & 0x80U) == 0) {
-    *dst++ = (char16_t) *src++;
-  }
-}
-
-#endif
-
-NS_IMETHODIMP nsUTF8ToUnicode::Convert(const char * aSrc,
-                                       int32_t * aSrcLength,
-                                       char16_t * aDest,
-                                       int32_t * aDestLength)
-{
-  uint32_t aSrcLen   = (uint32_t) (*aSrcLength);
-  uint32_t aDestLen = (uint32_t) (*aDestLength);
-
-  const char *in, *inend;
-  inend = aSrc + aSrcLen;
-
-  char16_t *out, *outend;
-  outend = aDest + aDestLen;
-
-  nsresult res = NS_OK; // conversion result
-
-  out = aDest;
-  if (mState == 0xFF) {
-    // Emit supplementary character left over from previous iteration. It is
-    // caller's responsibility to keep a sufficient buffer.
-    if (aDestLen < 2) {
-      *aSrcLength = *aDestLength = 0;
-      return NS_OK_UDEC_MOREOUTPUT;
-    }
-    out = EmitSurrogatePair(mUcs4, out);
-    mUcs4 = 0;
-    mState = 0;
-    mBytes = 1;
-    mFirst = false;
-  }
-
-  // alias these locally for speed
-  int32_t mUcs4 = this->mUcs4;
-  uint8_t mState = this->mState;
-  uint8_t mBytes = this->mBytes;
-  bool mFirst = this->mFirst;
-
-  // Set mFirst to false now so we don't have to every time through the ASCII
-  // branch within the loop.
-  if (mFirst && aSrcLen && (0 == (0x80 & (*aSrc))))
-    mFirst = false;
-
-  for (in = aSrc; ((in < inend) && (out < outend)); ++in) {
-    uint8_t c = *in;
-    if (0 == mState) {
-      // When mState is zero we expect either a US-ASCII character or a
-      // multi-octet sequence.
-      if (c < 0x80) {  // 00..7F
-        int32_t max_loops = std::min(inend - in, outend - out);
-        Convert_ascii_run(in, out, max_loops);
-        --in; // match the rest of the cases
-        mBytes = 1;
-      } else if (c < 0xC2) {  // C0/C1
-        // Overlong 2 octet sequence
-        if (mErrBehavior == kOnError_Signal) {
-          res = NS_ERROR_ILLEGAL_INPUT;
-          break;
-        }
-        *out++ = UCS2_REPLACEMENT_CHAR;
-        mFirst = false;
-      } else if (c < 0xE0) {  // C2..DF
-        // First octet of 2 octet sequence
-        mUcs4 = c;
-        mUcs4 = (mUcs4 & 0x1F) << 6;
-        mState = 1;
-        mBytes = 2;
-      } else if (c < 0xF0) {  // E0..EF
-        // First octet of 3 octet sequence
-        mUcs4 = c;
-        mUcs4 = (mUcs4 & 0x0F) << 12;
-        mState = 2;
-        mBytes = 3;
-      } else if (c < 0xF5) {  // F0..F4
-        // First octet of 4 octet sequence
-        mUcs4 = c;
-        mUcs4 = (mUcs4 & 0x07) << 18;
-        mState = 3;
-        mBytes = 4;
-      } else {  // F5..FF
-        /* Current octet is neither in the US-ASCII range nor a legal first
-         * octet of a multi-octet sequence.
-         */
-        if (mErrBehavior == kOnError_Signal) {
-          /* Return an error condition. Caller is responsible for flushing and
-           * refilling the buffer and resetting state.
-           */
-          res = NS_ERROR_ILLEGAL_INPUT;
-          break;
-        }
-        *out++ = UCS2_REPLACEMENT_CHAR;
-        mFirst = false;
-      }
-    } else {
-      // When mState is non-zero, we expect a continuation of the multi-octet
-      // sequence
-      if (0x80 == (0xC0 & c)) {
-        if (mState > 1) {
-          // If we are here, all possibilities are:
-          // mState == 2 && mBytes == 3 ||
-          // mState == 2 && mBytes == 4 ||
-          // mState == 3 && mBytes == 4
-          if ((mBytes == 3 && ((!mUcs4 && c < 0xA0) ||             // E0 80..9F
-                               (mUcs4 == 0xD000 && c > 0x9F))) ||  // ED A0..BF
-              (mState == 3 && ((!mUcs4 && c < 0x90) ||             // F0 80..8F
-                               (mUcs4 == 0x100000 && c > 0x8F)))) {// F4 90..BF
-            // illegal sequences or sequences converted into illegal ranges.
-            in--;
-            if (mErrBehavior == kOnError_Signal) {
-              res = NS_ERROR_ILLEGAL_INPUT;
-              break;
-            }
-            *out++ = UCS2_REPLACEMENT_CHAR;
-            mState = 0;
-            mFirst = false;
-            continue;
-          }
-        }
-
-        // Legal continuation.
-        uint32_t shift = (mState - 1) * 6;
-        uint32_t tmp = c;
-        tmp = (tmp & 0x0000003FL) << shift;
-        mUcs4 |= tmp;
-
-        if (0 == --mState) {
-          /* End of the multi-octet sequence. mUcs4 now contains the final
-           * Unicode codepoint to be output
-           */
-
-          if (mUcs4 > 0xFFFF) {
-            // mUcs4 is in the range 0x10000 - 0x10FFFF. Output a UTF-16 pair
-            if (out + 2 > outend) {
-              // insufficient space left in the buffer. Keep mUcs4 for the
-              // next iteration.
-              mState = 0xFF;
-              ++in;
-              res = NS_OK_UDEC_MOREOUTPUT;
-              break;
-            }
-            out = EmitSurrogatePair(mUcs4, out);
-          } else if (UNICODE_BYTE_ORDER_MARK != mUcs4 || !mFirst) {
-            // Don't output the BOM only if it is the first character
-            *out++ = mUcs4;
-          }
-          //initialize UTF8 cache
-          mUcs4  = 0;
-          mState = 0;
-          mBytes = 1;
-          mFirst = false;
-        }
-      } else {
-        /* ((0xC0 & c != 0x80) && (mState != 0))
-         *
-         * Incomplete multi-octet sequence. Unconsume this
-         * octet and return an error condition. Caller is responsible
-         * for flushing and refilling the buffer and resetting state.
-         */
-        in--;
-        if (mErrBehavior == kOnError_Signal) {
-          res = NS_ERROR_ILLEGAL_INPUT;
-          break;
-        }
-        *out++ = UCS2_REPLACEMENT_CHAR;
-        mState = 0;
-        mFirst = false;
-      }
-    }
-  }
-
-  // output not finished, output buffer too short
-  if ((NS_OK == res) && (in < inend) && (out >= outend))
-    res = NS_OK_UDEC_MOREOUTPUT;
-
-  // last UCS4 is incomplete, make sure the caller
-  // returns with properly aligned continuation of the buffer
-  if ((NS_OK == res) && (mState != 0))
-    res = NS_OK_UDEC_MOREINPUT;
-
-  *aSrcLength = in - aSrc;
-  *aDestLength = out - aDest;
-
-  this->mUcs4 = mUcs4;
-  this->mState = mState;
-  this->mBytes = mBytes;
-  this->mFirst = mFirst;
-
-  return(res);
-}
deleted file mode 100644
--- a/intl/uconv/nsUTF8ToUnicode.h
+++ /dev/null
@@ -1,70 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#ifndef nsUTF8ToUnicode_h___
-#define nsUTF8ToUnicode_h___
-
-#include "nsUCSupport.h"
-
-// Class ID for our UTF8ToUnicode charset converter
-// {5534DDC0-DD96-11d2-8AAC-00600811A836}
-#define NS_UTF8TOUNICODE_CID \
-  { 0x5534ddc0, 0xdd96, 0x11d2, {0x8a, 0xac, 0x0, 0x60, 0x8, 0x11, 0xa8, 0x36}}
-
-#define NS_UTF8TOUNICODE_CONTRACTID "@mozilla.org/intl/unicode/decoder;1?charset=UTF-8"
-
-//#define NS_ERROR_UCONV_NOUTF8TOUNICODE  
-//  NS_ERROR_GENERATE_FAILURE(NS_ERROR_MODULE_UCONV, 0x31)
-
-//----------------------------------------------------------------------
-// Class nsUTF8ToUnicode [declaration]
-
-
-/**
- * A character set converter from UTF8 to Unicode.
- *
- * @created         18/Mar/1998
- * @modified        04/Feb/2000
- * @author  Catalin Rotaru [CATA]
- */
-
-class nsUTF8ToUnicode : public nsBasicDecoderSupport
-{
-public:
-
-  /**
-   * Class constructor.
-   */
-  nsUTF8ToUnicode();
-
-protected:
-
-  uint32_t mUcs4; // cached Unicode character
-  uint8_t mState; // cached expected number of bytes per UTF8 character sequence
-  uint8_t mBytes;
-  bool mFirst;
-
-  //--------------------------------------------------------------------
-  // Subclassing of nsDecoderSupport class [declaration]
-
-  MOZ_MUST_USE NS_IMETHOD GetMaxLength(const char* aSrc,
-                                       int32_t aSrcLength,
-                                       int32_t* aDestLength) override;
-
-  //--------------------------------------------------------------------
-  // Subclassing of nsBasicDecoderSupport class [declaration]
-
-  NS_IMETHOD Convert(const char * aSrc, int32_t * aSrcLength, 
-      char16_t * aDest, int32_t * aDestLength) override;
-
-  //--------------------------------------------------------------------
-  // Subclassing of nsBasicDecoderSupport class [declaration]
-
-  NS_IMETHOD Reset() override;
-
-};
-
-#endif /* nsUTF8ToUnicode_h___ */
-
deleted file mode 100644
--- a/intl/uconv/nsUTF8ToUnicodeSSE2.cpp
+++ /dev/null
@@ -1,96 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-// This file should only be compiled if you're on x86 or x86_64.  Additionally,
-// you'll need to compile this file with -msse2 if you're using gcc.
-
-#include <emmintrin.h>
-#include "nscore.h"
-
-namespace mozilla {
-namespace SSE2 {
-
-void
-Convert_ascii_run(const char *&src,
-                  char16_t  *&dst,
-                  int32_t      len)
-{
-  if (len > 15) {
-    __m128i in, out1, out2;
-    __m128d *outp1, *outp2;
-    __m128i zeroes;
-    uint32_t offset;
-
-    // align input to 16 bytes
-    while ((NS_PTR_TO_UINT32(src) & 15) && len > 0) {
-      if (*src & 0x80U)
-        return;
-      *dst++ = (char16_t) *src++;
-      len--;
-    }
-
-    zeroes = _mm_setzero_si128();
-
-    offset = NS_PTR_TO_UINT32(dst) & 15;
-
-    // Note: all these inner loops have to break, not return; we need
-    // to let the single-char loop below catch any leftover
-    // byte-at-a-time ASCII chars, since this function must consume
-    // all available ASCII chars before it returns
-
-    if (offset == 0) {
-      while (len > 15) {
-        in = _mm_load_si128((__m128i *) src);
-        if (_mm_movemask_epi8(in))
-          break;
-        out1 = _mm_unpacklo_epi8(in, zeroes);
-        out2 = _mm_unpackhi_epi8(in, zeroes);
-        _mm_stream_si128((__m128i *) dst, out1);
-        _mm_stream_si128((__m128i *) (dst + 8), out2);
-        dst += 16;
-        src += 16;
-        len -= 16;
-      }
-    } else if (offset == 8) {
-      outp1 = (__m128d *) &out1;
-      outp2 = (__m128d *) &out2;
-      while (len > 15) {
-        in = _mm_load_si128((__m128i *) src);
-        if (_mm_movemask_epi8(in))
-          break;
-        out1 = _mm_unpacklo_epi8(in, zeroes);
-        out2 = _mm_unpackhi_epi8(in, zeroes);
-        _mm_storel_epi64((__m128i *) dst, out1);
-        _mm_storel_epi64((__m128i *) (dst + 8), out2);
-        _mm_storeh_pd((double *) (dst + 4), *outp1);
-        _mm_storeh_pd((double *) (dst + 12), *outp2);
-        src += 16;
-        dst += 16;
-        len -= 16;
-      }
-    } else {
-      while (len > 15) {
-        in = _mm_load_si128((__m128i *) src);
-        if (_mm_movemask_epi8(in))
-          break;
-        out1 = _mm_unpacklo_epi8(in, zeroes);
-        out2 = _mm_unpackhi_epi8(in, zeroes);
-        _mm_storeu_si128((__m128i *) dst, out1);
-        _mm_storeu_si128((__m128i *) (dst + 8), out2);
-        src += 16;
-        dst += 16;
-        len -= 16;
-      }
-    }
-  }
-
-  // finish off a byte at a time
-
-  while (len-- > 0 && (*src & 0x80U) == 0) {
-    *dst++ = (char16_t) *src++;
-  }
-}
-
-} // namespace SSE2
-} // namespace mozilla
deleted file mode 100644
--- a/intl/uconv/nsUnicodeToCP1252.cpp
+++ /dev/null
@@ -1,24 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#include "nsUCConstructors.h"
-#include "nsUnicodeToCP1252.h"
-
-//----------------------------------------------------------------------
-// Global functions and data [declaration]
-
-nsresult
-nsUnicodeToCP1252Constructor(nsISupports *aOuter, REFNSIID aIID,
-                             void **aResult)
-{
-  static const uint16_t g_ufMappingTable[] = {
-#include "cp1252.uf"
-  };
-
-  return CreateTableEncoder(u1ByteCharset,
-                            (uMappingTable*) &g_ufMappingTable, 1,
-                            aOuter, aIID, aResult);
-}
-
deleted file mode 100644
--- a/intl/uconv/nsUnicodeToCP1252.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#ifndef nsUnicodeToCP1252_h___
-#define nsUnicodeToCP1252_h___
-
-#include "nsID.h"
-
-class nsISupports;
-
-// Class ID for our UnicodeToCP1252 charset converter
-// {7B8556AC-EC79-11d2-8AAC-00600811A836}
-#define NS_UNICODETOCP1252_CID \
-  { 0x7b8556ac, 0xec79, 0x11d2, {0x8a, 0xac, 0x0, 0x60, 0x8, 0x11, 0xa8, 0x36}}
-
-#define NS_UNICODETOCP1252_CONTRACTID "@mozilla.org/intl/unicode/encoder;1?charset=windows-1252"
-
-//#define NS_ERROR_UCONV_NOUNICODETOCP1252  
-//  NS_ERROR_GENERATE_FAILURE(NS_ERROR_MODULE_UCONV, 0x31)
-
-/**
- * A character set converter from Unicode to CP1252.
- *
- * @created         20/Apr/1999
- * @author  Catalin Rotaru [CATA]
- */
-nsresult
-nsUnicodeToCP1252Constructor(nsISupports *aOuter, REFNSIID aIID,
-                             void **aResult);
-
-#endif /* nsUnicodeToCP1252_h___ */
deleted file mode 100644
--- a/intl/uconv/nsUnicodeToISO88591.cpp
+++ /dev/null
@@ -1,24 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#include "nsUCConstructors.h"
-#include "nsUnicodeToISO88591.h"
-
-//----------------------------------------------------------------------
-// Global functions and data [declaration]
-
-nsresult
-nsUnicodeToISO88591Constructor(nsISupports *aOuter, REFNSIID aIID,
-                               void **aResult)
-{
-  static const uint16_t g_ufMappingTable[] = {
-#include "8859-1.uf"
-  };
-
-  return CreateTableEncoder(u1ByteCharset,
-                            (uMappingTable*) &g_ufMappingTable, 1,
-                            aOuter, aIID, aResult);
-}
-
deleted file mode 100644
--- a/intl/uconv/nsUnicodeToISO88591.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#ifndef nsUnicodeToISO88591_h___
-#define nsUnicodeToISO88591_h___
-
-#include "nsID.h"
-
-class nsISupports;
-
-// {920307B0-C6E8-11d2-8AA8-00600811A836}
-#define NS_UNICODETOISO88591_CID \
-  { 0x920307b0, 0xc6e8, 0x11d2, {0x8a, 0xa8, 0x0, 0x60, 0x8, 0x11, 0xa8, 0x36}}
-
-#define NS_UNICODETOISO88591_CONTRACTID "@mozilla.org/intl/unicode/encoder;1?charset=ISO-8859-1"
-
-//#define NS_ERROR_UCONV_NOUNICODETOISO88591  
-//  NS_ERROR_GENERATE_FAILURE(NS_ERROR_MODULE_UCONV, 0x31)
-
-
-/**
- * A character set converter from Unicode to ISO88591.
- *
- * @created         17/Feb/1999
- * @author  Catalin Rotaru [CATA]
- */
-nsresult
-nsUnicodeToISO88591Constructor(nsISupports *aOuter, REFNSIID aIID,
-                               void **aResult);
-
-#endif /* nsUnicodeToISO88591_h___ */
deleted file mode 100644
--- a/intl/uconv/nsUnicodeToMacRoman.cpp
+++ /dev/null
@@ -1,24 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#include "nsUCConstructors.h"
-#include "nsUnicodeToMacRoman.h"
-
-//----------------------------------------------------------------------
-// Global functions and data [declaration]
-
-nsresult
-nsUnicodeToMacRomanConstructor(nsISupports *aOuter, REFNSIID aIID,
-                               void **aResult)
-{
-  static const uint16_t g_MacRomanMappingTable[] = {
-#include "macroman.uf"
-  };
-
-  return CreateTableEncoder(u1ByteCharset,
-                            (uMappingTable*) &g_MacRomanMappingTable, 1,
-                            aOuter, aIID, aResult);
-}
-
deleted file mode 100644
--- a/intl/uconv/nsUnicodeToMacRoman.h
+++ /dev/null
@@ -1,30 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#ifndef nsUnicodeToMacRoman_h___
-#define nsUnicodeToMacRoman_h___
-
-#include "nsID.h"
-
-class nsISupports;
-
-// Class ID for our UnicodeToMacRoman charset converter
-// {7B8556AF-EC79-11d2-8AAC-00600811A836}
-#define NS_UNICODETOMACROMAN_CID \
-  { 0x7b8556af, 0xec79, 0x11d2, {0x8a, 0xac, 0x0, 0x60, 0x8, 0x11, 0xa8, 0x36}}
-
-#define NS_UNICODETOMACROMAN_CONTRACTID "@mozilla.org/intl/unicode/encoder;1?charset=macintosh"
-
-/**
- * A character set converter from Unicode to MacRoman.
- *
- * @created         05/Apr/1999
- * @author  Catalin Rotaru [CATA]
- */
-nsresult
-nsUnicodeToMacRomanConstructor(nsISupports *aOuter, REFNSIID aIID,
-                               void **aResult);
-
-#endif /* nsUnicodeToMacRoman_h___ */
deleted file mode 100644
--- a/intl/uconv/nsUnicodeToUTF8.cpp
+++ /dev/null
@@ -1,165 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-//----------------------------------------------------------------------
-// Global functions and data [declaration]
-#include "nsUnicodeToUTF8.h"
-#include "mozilla/CheckedInt.h"
-
-NS_IMPL_ISUPPORTS(nsUnicodeToUTF8, nsIUnicodeEncoder)
-
-//----------------------------------------------------------------------
-// nsUnicodeToUTF8 class [implementation]
-
-NS_IMETHODIMP nsUnicodeToUTF8::GetMaxLength(const char16_t* aSrc,
-                                            int32_t aSrcLength,
-                                            int32_t* aDestLength)
-{
-  MOZ_ASSERT(aDestLength);
-
-  // aSrc is interpreted as UTF16, 3 is normally enough.
-  // But when previous buffer only contains part of the surrogate pair, we
-  // need to complete it here. If the first word in following buffer is not
-  // in valid surrogate range, we need to convert the remaining of last buffer
-  // to 3 bytes.
-  mozilla::CheckedInt32 length = aSrcLength;
-  length *= 3;
-  length += 3;
-
-  if (!length.isValid()) {
-    return NS_ERROR_OUT_OF_MEMORY;
-  }
-
-  *aDestLength = length.value();
-  return NS_OK;
-}
-
-NS_IMETHODIMP nsUnicodeToUTF8::Convert(const char16_t* aSrc,
-                                       int32_t* aSrcLength,
-                                       char* aDest,
-                                       int32_t* aDestLength)
-{
-  const char16_t* src = aSrc;
-  const char16_t* srcEnd = aSrc + *aSrcLength;
-  char* dest = aDest;
-  int32_t destLen = *aDestLength;
-  uint32_t n;
-
-  //complete remaining of last conversion
-  if (mHighSurrogate) {
-    if (src < srcEnd) {
-      *aDestLength = 0;
-      return NS_OK_UENC_MOREINPUT;
-    }
-    if (*aDestLength < 4) {
-      *aSrcLength = 0;
-      *aDestLength = 0;
-      return NS_OK_UENC_MOREOUTPUT;
-    }
-    if (*src < (char16_t)0xdc00 || *src > (char16_t)0xdfff) { //not a pair
-      *dest++ = (char)0xef; //replacement character
-      *dest++ = (char)0xbf;
-      *dest++ = (char)0xbd;
-      destLen -= 3;
-    } else { 
-      n = ((mHighSurrogate - (char16_t)0xd800) << 10) + 
-              (*src - (char16_t)0xdc00) + 0x10000;
-      *dest++ = (char)0xf0 | (n >> 18);
-      *dest++ = (char)0x80 | ((n >> 12) & 0x3f);
-      *dest++ = (char)0x80 | ((n >> 6) & 0x3f);
-      *dest++ = (char)0x80 | (n & 0x3f);
-      ++src;
-      destLen -= 4;
-    }
-    mHighSurrogate = 0;
-  }
-
-  while (src < srcEnd) {
-    if ( *src <= 0x007f) {
-      if (destLen < 1)
-        goto error_more_output;
-      *dest++ = (char)*src;
-      --destLen;
-    } else if (*src <= 0x07ff) {
-      if (destLen < 2)
-        goto error_more_output;
-      *dest++ = (char)0xc0 | (*src >> 6);
-      *dest++ = (char)0x80 | (*src & 0x003f);
-      destLen -= 2;
-    } else if (*src >= (char16_t)0xd800 && *src <= (char16_t)0xdfff) {
-      if (*src >= (char16_t)0xdc00) { //not a pair
-        if (destLen < 3)
-          goto error_more_output;
-        *dest++ = (char)0xef; //replacement character
-        *dest++ = (char)0xbf;
-        *dest++ = (char)0xbd;
-        destLen -= 3;
-        ++src;
-        continue;
-      }
-      if ((src+1) >= srcEnd) {
-        //we need another surrogate to complete this unicode char
-        mHighSurrogate = *src;
-        *aDestLength = dest - aDest;
-        return NS_OK_UENC_MOREINPUT;
-      }
-      //handle surrogate
-      if (destLen < 4)
-        goto error_more_output;
-      if (*(src+1) < (char16_t)0xdc00 || *(src+1) > 0xdfff) { //not a pair
-        *dest++ = (char)0xef; //replacement character
-        *dest++ = (char)0xbf;
-        *dest++ = (char)0xbd;
-        destLen -= 3;
-      } else {
-        n = ((*src - (char16_t)0xd800) << 10) + (*(src+1) - (char16_t)0xdc00) + (uint32_t)0x10000;
-        *dest++ = (char)0xf0 | (n >> 18);
-        *dest++ = (char)0x80 | ((n >> 12) & 0x3f);
-        *dest++ = (char)0x80 | ((n >> 6) & 0x3f);
-        *dest++ = (char)0x80 | (n & 0x3f);
-        destLen -= 4;
-        ++src;
-      }
-    } else { 
-      if (destLen < 3)
-        goto error_more_output;
-      //treat rest of the character as BMP
-      *dest++ = (char)0xe0 | (*src >> 12);
-      *dest++ = (char)0x80 | ((*src >> 6) & 0x003f);
-      *dest++ = (char)0x80 | (*src & 0x003f);
-      destLen -= 3;
-    }
-    ++src;
-  }
-
-  *aDestLength = dest - aDest;
-  return NS_OK;
-
-error_more_output:
-  *aSrcLength = src - aSrc;
-  *aDestLength = dest - aDest;
-  return NS_OK_UENC_MOREOUTPUT;
-}
-
-NS_IMETHODIMP nsUnicodeToUTF8::Finish(char * aDest, int32_t * aDestLength)
-{
-  char * dest = aDest;
-
-  if (mHighSurrogate) {
-    if (*aDestLength < 3) {
-      *aDestLength = 0;
-      return NS_OK_UENC_MOREOUTPUT;
-    }
-    *dest++ = (char)0xef; //replacement character
-    *dest++ = (char)0xbf;
-    *dest++ = (char)0xbd;
-    mHighSurrogate = 0;
-    *aDestLength = 3;
-    return NS_OK;
-  } 
-
-  *aDestLength  = 0;
-  return NS_OK;
-}
deleted file mode 100644
--- a/intl/uconv/nsUnicodeToUTF8.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#ifndef nsUnicodeToUTF8_h___
-#define nsUnicodeToUTF8_h___
-
-#include "mozilla/Attributes.h"
-#include "nsIUnicodeEncoder.h"
-
-// Class ID for our UnicodeToUTF8 charset converter
-// {7C657D18-EC5E-11d2-8AAC-00600811A836}
-#define NS_UNICODETOUTF8_CID \
-  { 0x7c657d18, 0xec5e, 0x11d2, {0x8a, 0xac, 0x0, 0x60, 0x8, 0x11, 0xa8, 0x36}}
-
-#define NS_UNICODETOUTF8_CONTRACTID "@mozilla.org/intl/unicode/encoder;1?charset=UTF-8"
-
-//#define NS_ERROR_UCONV_NOUNICODETOUTF8
-//  NS_ERROR_GENERATE_FAILURE(NS_ERROR_MODULE_UCONV, 0x31)
-
-//----------------------------------------------------------------------
-// Class nsUnicodeToUTF8 [declaration]
-
-/**
- * A character set converter from Unicode to UTF8.
- *
- * @created         05/Apr/1999
- * @author  Catalin Rotaru [CATA]
- */
-class nsUnicodeToUTF8 final : public nsIUnicodeEncoder
-{
-  ~nsUnicodeToUTF8() {}
-
-  NS_DECL_ISUPPORTS
-
-public:
-
-  /**
-   * Class constructor.
-   */
-  nsUnicodeToUTF8() {mHighSurrogate = 0;}
-
-  NS_IMETHOD Convert(const char16_t*aSrc,
-                     int32_t* aSrcLength,
-                     char* aDest,
-                     int32_t* aDestLength) override;
-
-  NS_IMETHOD Finish(char* aDest, int32_t* aDestLength) override;
-
-  MOZ_MUST_USE NS_IMETHOD GetMaxLength(const char16_t* aSrc,
-                                       int32_t aSrcLength,
-                                       int32_t* aDestLength) override;
-
-  NS_IMETHOD Reset() override {mHighSurrogate = 0; return NS_OK;}
-
-  NS_IMETHOD SetOutputErrorBehavior(int32_t aBehavior,
-    nsIUnicharEncoder* aEncoder, char16_t aChar) override {return NS_OK;}
-
-protected:
-  char16_t mHighSurrogate;
-
-};
-
-#endif /* nsUnicodeToUTF8_h___ */
deleted file mode 100644
--- a/intl/uconv/tests/TestUConv.cpp
+++ /dev/null
@@ -1,531 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#include "nsIServiceManager.h"
-#include "nsICharsetConverterManager.h"
-#include "nsUCSupport.h"
-#include "nsString.h"
-#include "nsIStringEnumerator.h"
-#include "nsTArray.h"
-
-//----------------------------------------------------------------------------
-// Global functions and data [declaration]
-
-#define ARRAY_SIZE(_array)  (sizeof(_array) / sizeof(_array[0]))
-#define SMALL_BUFFER_SIZE   512
-#define MED_BUFFER_SIZE     1024
-#define BIG_BUFFER_SIZE     2048
-
-static NS_DEFINE_CID(kCharsetConverterManagerCID, NS_ICHARSETCONVERTERMANAGER_CID);
-
-//----------------------------------------------------------------------------
-// Class nsTestLog [declaration]
-
-/**
- * A Logging class for test programs.
- *
- * This simple test program will not trigger a component registration. So 
- * Mozilla has to be run once before running this, so that the necessary 
- * components will be registered. Also, please observe that the ContractID's are 
- * case sensitive now!
- *
- * @created         28/Mar/2000
- * @author  Catalin Rotaru [CATA]
- */
-class nsTestLog
-{
-private:
-
-  static const char * kTraceDelimiter;
-
-  nsAutoCString mTrace;
-
-public:
-
-  void AddTrace(const char * aTrace);
-  void DelTrace(const char * aTrace);
-  void PrintError(const char * aCall, const int aError);
-  void PrintError(const char * aCall, const char * aMessage);
-};
-  
-//----------------------------------------------------------------------------
-// Class nsTestUConv [declaration]
-
-/**
- * The main class of the program.
- *
- * XXX Create a very general set of "bug and regression" test cases and the 
- * one in TestTempBug()
- * XXX Apply the new argument style (pointers) to the converters interfaces
- *
- * @created         28/Mar/2000
- * @author  Catalin Rotaru [CATA]
- */
-class nsTestUConv
-{
-private:
-
-  nsTestLog mLog;
-
-  /**
-   * Run the built-in set of self tests for encoders.
-   */
-  nsresult TestEncoders();
-
-  /**
-   * Run the built-in set of self tests for decoders.
-   */
-  nsresult TestDecoders();
-
-  /**
-   * Run the built-in set of self tests for the CharsetManager.
-   */
-  nsresult TestCharsetManager();
-
-  /**
-   * Display charset detectors and their attributes.
-   */
-  nsresult DisplayDetectors();
-
-  /**
-   * Display charsets and their attributes.
-   */
-  nsresult DisplayCharsets();
-
-  /**
-   * Run a temporary debug test. This method is ment as a placeholder when some
-   * quick debugging is needed.
-   */
-  nsresult TestTempBug();
-
-  nsresult Encode(char16_t ** aSrc, char16_t * aSrcEnd, char ** aDest, 
-    char * aDestEnd, const nsAFlatCString& aCharset);
-
-  /**
-   * Bridge methods between the new argument style (poiters) and the old one 
-   * (lengths). To be removed when the converter interfaces will switch to the
-   * new style.
-   *
-   * This wraps an encoder Convert() call.
-   */
-  nsresult ConvertEncode(char16_t ** aSrc, char16_t * aSrcEnd, char ** aDest, 
-    char * aDestEnd, nsIUnicodeEncoder * aEncoder);
-
-  /**
-   * This wraps an encoder Finish() call.
-   */
-  nsresult FinishEncode(char ** aDest, char * aDestEnd, 
-    nsIUnicodeEncoder * aEncoder);
-
-  void PrintSpaces(int aCount);
-
-public:
-
-  /**
-   * Main method of the program.
-   */
-  nsresult Main(int aArgC, char ** aArgV);
-};
-  
-//----------------------------------------------------------------------------
-// Global functions and data [implementation]
-
-int main(int argc, char ** argv)
-{
-  nsTestUConv testObj;
-  nsresult res;
- 
-  res = testObj.Main(argc, argv);
-  return (NS_FAILED(res));
-}
-
-//----------------------------------------------------------------------------
-// Class nsTestLog [implementation]
-
-const char * nsTestLog::kTraceDelimiter = ".";
-
-void nsTestLog::AddTrace(const char * aTrace)
-{
-  mTrace.Append(aTrace);
-  mTrace.Append(kTraceDelimiter);
-}
-
-void nsTestLog::DelTrace(const char * aTrace)
-{
-  mTrace.Truncate(mTrace.Length() - strlen(aTrace) - strlen(kTraceDelimiter));
-}
-
-void nsTestLog::PrintError(const char * aCall, const int aError)
-{
-  const char * trace = mTrace.get();
-  printf("ERROR at %s%s code=0x%x.\n", trace, aCall, aError);
-}
-
-void nsTestLog::PrintError(const char * aCall, const char * aMessage)
-{
-  const char * trace = mTrace.get();
-  printf("ERROR at %s%s reason: %s.\n", trace, aCall, aMessage);
-}
-
-//----------------------------------------------------------------------------
-// Class nsTestUConv [implementation]
-
-nsresult nsTestUConv::TestEncoders()
-{
-  const char * trace = "TestEncoders";
-  mLog.AddTrace(trace);
-  nsresult res = NS_OK;
-
-  nsCOMPtr<nsICharsetConverterManager> ccMan = 
-           do_GetService(kCharsetConverterManagerCID, &res);
-  if (NS_FAILED(res)) return res;
-  
-  nsCOMPtr<nsIUTF8StringEnumerator> encoders;
-  res = ccMan->GetEncoderList(getter_AddRefs(encoders));
-  if (NS_FAILED(res)) return res;
-
-  bool hasMore;
-  encoders->HasMore(&hasMore);
-  
-  nsAutoCString charset;
-  while (hasMore) {
-    encoders->GetNext(charset);
-
-    encoders->HasMore(&hasMore);
-  }
-  
-  mLog.DelTrace(trace);
-  return res;
-}
-
-nsresult nsTestUConv::TestDecoders()
-{
-  const char * trace = "TestDecoders";
-  mLog.AddTrace(trace);
-  nsresult res = NS_OK;
-
-  // XXX write me
-
-  mLog.DelTrace(trace);
-  return res;
-}
-
-nsresult nsTestUConv::TestCharsetManager()
-{
-  const char * trace = "TestCharsetManager";
-  mLog.AddTrace(trace);
-  nsresult res = NS_OK;
-  nsAutoString name;
-  nsCOMPtr<nsIAtom> csAtom;
-
-  nsCOMPtr<nsICharsetConverterManager> ccMan = 
-           do_GetService(kCharsetConverterManagerCID, &res);
-  if (NS_FAILED(res)) {
-    mLog.PrintError("NS_WITH_SERVICE", res);
-    return res;
-  }
-
-  mLog.DelTrace(trace);
-  return res;
-}
-
-nsresult nsTestUConv::DisplayDetectors()
-{
-  const char * trace = "DisplayDetectors";
-  mLog.AddTrace(trace);
-  nsresult res = NS_OK;
-
-  nsCOMPtr<nsICharsetConverterManager> ccMan = 
-           do_GetService(kCharsetConverterManagerCID, &res);
-  if (NS_FAILED(res)) {
-    mLog.PrintError("NS_WITH_SERVICE", res);
-    return res;
-  }
-
-  // charset detectors
-  nsCOMPtr<nsIUTF8StringEnumerator> detectors;
-
-  res = ccMan->GetCharsetDetectorList(getter_AddRefs(detectors));
-  if (NS_FAILED(res)) {
-    mLog.PrintError("GetCharsetDetectorList()", res);
-    return res;
-  }
-
-  printf("***** Character Set Detectors *****\n");
-
-  bool hasMore;
-  detectors->HasMore(&hasMore);
-  while (hasMore) {
-    nsAutoCString detectorName;
-    res = detectors->GetNext(detectorName);
-    if (NS_FAILED(res)) {
-      mLog.PrintError("GetNext()", res);
-      return res;
-    }
-
-    printf("%s", detectorName.get());
-    PrintSpaces(36 - detectorName.Length()); // align to hard coded column number
-
-    nsAutoString title;
-    res = ccMan->GetCharsetTitle(detectorName.get(), title);
-    if (NS_FAILED(res)) title.SetLength(0);
-    printf("\"%s\"\n", NS_LossyConvertUTF16toASCII(title).get());
-
-    detectors->HasMore(&hasMore);
-  }
-  
-  mLog.DelTrace(trace);
-  return NS_OK;
-}
-
-nsresult nsTestUConv::DisplayCharsets()
-{
-  const char * trace = "DisplayCharsets";
-  mLog.AddTrace(trace);
-  nsresult res = NS_OK;
-
-  nsCOMPtr<nsICharsetConverterManager> ccMan = 
-           do_GetService(kCharsetConverterManagerCID, &res);
-  if (NS_FAILED(res)) {
-    mLog.PrintError("NS_WITH_SERVICE", res);
-    return res;
-  }
-
-  nsCOMPtr<nsIUTF8StringEnumerator> decoders;
-  nsCOMPtr<nsIUTF8StringEnumerator> encoders;
-
-  res = ccMan->GetDecoderList(getter_AddRefs(decoders));
-  if (NS_FAILED(res)) {
-    mLog.PrintError("GetDecoderList()", res);
-    return res;
-  }
-
-  res = ccMan->GetEncoderList(getter_AddRefs(encoders));
-  if (NS_FAILED(res)) {
-    mLog.PrintError("GetEncoderList()", res);
-    return res;
-  }
-
-
-  printf("***** Character Sets *****\n");
-
-  uint32_t encCount = 0, decCount = 0;
-  uint32_t basicEncCount = 0, basicDecCount = 0;
-
-  nsTArray<nsCString> allCharsets;
-  
-  nsAutoCString charset;
-  bool hasMore;
-  encoders->HasMore(&hasMore);
-  while (hasMore) {
-    res = encoders->GetNext(charset);
-    if (NS_SUCCEEDED(res))
-      allCharsets.AppendElement(charset);
-
-    encoders->HasMore(&hasMore);
-  }
-
-  nsAutoString prop, str;
-  uint32_t count = allCharsets.Length();
-  for (uint32_t i = 0; i < count; i++) {
-
-    const nsCString& charset = allCharsets[i];
-    printf("%s", charset.get());
-    PrintSpaces(24 - charset.Length());  // align to hard coded column number
-
-
-    nsCOMPtr<nsIUnicodeDecoder> dec;
-    res = ccMan->GetUnicodeDecoder(charset.get(), getter_AddRefs(dec));
-    if (NS_FAILED(res)) printf (" "); 
-    else {
-      printf("D");
-      decCount++;
-    }
-#ifdef DEBUG
-    // show the "basic" decoder classes
-    if (dec) {
-      nsCOMPtr<nsIBasicDecoder> isBasic = do_QueryInterface(dec);
-      if (isBasic) {
-        basicDecCount++;
-        printf("b");
-      }
-      else printf(" ");
-    }
-    else printf(" ");
-#endif
-
-    nsCOMPtr<nsIUnicodeEncoder> enc;
-    res = ccMan->GetUnicodeEncoder(charset.get(), getter_AddRefs(enc));
-    if (NS_FAILED(res)) printf (" "); 
-    else {
-      printf("E");
-      encCount++;
-    }
-
-#ifdef DEBUG
-    if (enc) {
-      nsCOMPtr<nsIBasicEncoder> isBasic = do_QueryInterface(enc);
-      if (isBasic) {
-        basicEncCount++;
-        printf("b");
-      }
-      else printf(" ");
-    }
-    else printf(" ");
-#endif
-    
-    printf(" ");
-
-    prop.AssignLiteral(".notForBrowser");
-    res = ccMan->GetCharsetData(charset.get(), prop.get(), str);
-    if (dec && (NS_FAILED(res))) printf ("B"); 
-    else printf("X");
-
-    prop.AssignLiteral(".notForComposer");
-    res = ccMan->GetCharsetData(charset.get(), prop.get(), str);
-    if (enc && (NS_FAILED(res))) printf ("C"); 
-    else printf("X");
-
-    prop.AssignLiteral(".notForMailView");
-    res = ccMan->GetCharsetData(charset.get(), prop.get(), str);
-    if (dec && (NS_FAILED(res))) printf ("V"); 
-    else printf("X");
-
-    prop.AssignLiteral(".notForMailEdit");
-    res = ccMan->GetCharsetData(charset.get(), prop.get(), str);
-    if (enc && (NS_FAILED(res))) printf ("E"); 
-    else printf("X");
-
-    printf("(%3d, %3d) ", encCount, decCount);
-    res = ccMan->GetCharsetTitle(charset.get(), str);
-    if (NS_FAILED(res)) str.SetLength(0);
-    NS_LossyConvertUTF16toASCII buff2(str);
-    printf(" \"%s\"\n", buff2.get());
-  }
-
-  printf("%u of %u decoders are basic (%d%%)\n",
-         basicDecCount, decCount, (basicDecCount * 100) / decCount);
-
-  printf("%u of %u encoders are basic (%d%%)\n",
-         basicEncCount, encCount, (basicEncCount * 100) / encCount);
-  mLog.DelTrace(trace);
-  return NS_OK;
-}
-
-nsresult nsTestUConv::TestTempBug()
-{
-  const char * trace = "TestTempBug";
-  mLog.AddTrace(trace);
-  nsresult res = NS_OK;
-
-  NS_NAMED_LITERAL_CSTRING(charset, "ISO-2022-JP");
-  char16_t src[] = {0x0043, 0x004e, 0x0045, 0x0054, 0x0020, 0x004A, 0x0061, 
-    0x0070, 0x0061, 0x006E, 0x0020, 0x7DE8, 0x96C6, 0x5C40};
-  char16_t * srcEnd = src + ARRAY_SIZE(src);
-  char dest[BIG_BUFFER_SIZE];
-  char * destEnd = dest + BIG_BUFFER_SIZE;
-
-  char16_t * p = src;
-  char * q = dest;
-  res = Encode(&p, srcEnd, &q, destEnd, charset);
-
-  mLog.DelTrace(trace);
-  return res;
-}
-
-nsresult nsTestUConv::Encode(char16_t ** aSrc, char16_t * aSrcEnd, 
-                             char ** aDest, char * aDestEnd, 
-                             const nsAFlatCString& aCharset)
-{
-  const char * trace = "Encode";
-  mLog.AddTrace(trace);
-  nsresult res = NS_OK;
-
-  nsCOMPtr<nsICharsetConverterManager> ccMan = 
-           do_GetService(kCharsetConverterManagerCID, &res);
-  if (NS_FAILED(res)) {
-    mLog.PrintError("NS_WITH_SERVICE", res);
-    return res;
-  }
-
-  nsCOMPtr<nsIUnicodeEncoder> enc;
-  res = ccMan->GetUnicodeEncoder(aCharset.get(), getter_AddRefs(enc));
-  if (NS_FAILED(res)) {
-    mLog.PrintError("GetUnicodeEncoder()", res);
-    return res;
-  }
-
-  res = ConvertEncode(aSrc, aSrcEnd, aDest, aDestEnd, enc);
-  if (NS_FAILED(res)) {
-    mLog.PrintError("Convert()", res);
-    return res;
-  }
-
-  res = FinishEncode(aDest, aDestEnd, enc);
-  if (NS_FAILED(res)) {
-    mLog.PrintError("Finish()", res);
-    return res;
-  }
-
-  mLog.DelTrace(trace);
-  return res;
-}
-
-nsresult nsTestUConv::ConvertEncode(char16_t ** aSrc, char16_t * aSrcEnd, 
-                                    char ** aDest, char * aDestEnd, 
-                                    nsIUnicodeEncoder * aEncoder)
-{
-  char16_t * src = (*aSrc);
-  char * dest = (*aDest);
-  int32_t srcLen = aSrcEnd - src;
-  int32_t destLen = aDestEnd - dest;
-
-  nsresult res = aEncoder->Convert(src, &srcLen, dest, &destLen);
-
-  (*aSrc) = src + srcLen;
-  (*aDest) = dest + destLen;
-  return res;
-}
-
-nsresult nsTestUConv::FinishEncode(char ** aDest, char * aDestEnd, 
-                                   nsIUnicodeEncoder * aEncoder)
-{
-  char * dest = (*aDest);
-  int32_t destLen = aDestEnd - dest;
-
-  nsresult res = aEncoder->Finish(dest, &destLen);
-
-  (*aDest) = dest + destLen;
-  return res;
-}
-
-void nsTestUConv::PrintSpaces(int aCount)
-{
-  for (int i = 0; i < aCount; i++) printf(" ");
-}
-
-nsresult nsTestUConv::Main(int aArgC, char ** aArgV)
-{
-  const char * trace = "Main";
-  mLog.AddTrace(trace);
-  nsresult res = NS_OK;
-
-  if (aArgC < 2) {
-    // no arguments were passed to the program, so we just run the self tests
-    res = TestCharsetManager();
-    if (NS_SUCCEEDED(res)) res = TestEncoders();
-    if (NS_SUCCEEDED(res)) res = TestDecoders();
-  } else if (!strcmp(aArgV[1], "-tempbug")) {
-    // we are testing a temporary bug
-    res = TestTempBug();
-  } else if (!strcmp(aArgV[1], "-display")) {
-    // display all the available data
-    res = DisplayDetectors();
-    if (NS_SUCCEEDED(res)) res = DisplayCharsets();
-  }
-
-  mLog.DelTrace(trace);
-  return res;
-}
deleted file mode 100644
--- a/intl/uconv/tests/convperf.cpp
+++ /dev/null
@@ -1,172 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-#include <windows.h>
-#include <winnls.h>
-
-#include "nscore.h"
-#include "nsString.h"
-#include "nsIServiceManager.h"
-#include "nsICharsetConverterManager.h"
-#include "nsIUnicodeEncoder.h"
-#include "nsIUnicodeDecoder.h"
-
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-void usage()
-{
-  printf(
-"convperf -f fromcode -t tocode [file]\n"
-  );
-}
-int fromcodeind = 0;
-int tocodeind = 0;
-FILE* infile = 0;
-#define INBUFSIZE (1024*16)
-#define MEDBUFSIZE (1024*16*2)
-#define OUTBUFSIZE (1024*16*8)
-char inbuffer[INBUFSIZE];
-char outbuffer[OUTBUFSIZE];
-char16_t  medbuffer[MEDBUFSIZE];
-nsIUnicodeEncoder* encoder = nullptr;
-nsIUnicodeDecoder* decoder = nullptr;
-UINT incp = 932;
-UINT outcp = 932;
-
-void memcpyDecode(const char* src, int32_t srclen, char* dest)
-{
-   ::memcpy(dest, src, srclen);
-}
-void memcpyEncode(const char* src, int32_t srclen, char* dest)
-{
-   ::memcpy(dest, src, srclen);
-}
-
-void WideDecode(const char* src, 
-              int32_t srclen, char16_t *dest, int32_t *destLen)
-{
-   const char* end = src+srclen ;
-   while(src < end)
-     *dest++ = (char16_t) *src++;
-   *destLen = srclen;
-}
-void NarrowEncode(const char16_t *src, 
-              int32_t srclen, char* dest, int32_t* destLen)
-{
-   const char16_t* end = src+srclen ;
-   while(src < end)
-     *dest++ = (char) *src++;
-   *destLen = srclen;
-}
-void msDecode(UINT cp, const char* src, 
-              int32_t srclen, char16_t *dest, int32_t *destLen)
-{
-   *destLen = ::MultiByteToWideChar(cp, 0,src, srclen, (LPWSTR)dest, *destLen);
-   if(*destLen <= 0)
-      fprintf(stderr, "problem in ::MultiByteToWideChar\n");
-}
-void msEncode(UINT cp, const char16_t *src, 
-              int32_t srcLen, char* dest, int32_t* destLen)
-{
-   *destLen = ::WideCharToMultiByte(cp, 0, src, srcLen, (LPSTR)dest, *destLen, 
-                (LPCSTR)" ", FALSE);
-   if(*destLen <= 0)
-      fprintf(stderr, "problem in ::WideCharToMultiByte\n");
-}
-     
-int main(int argc, const char** argv)
-{
-   nsresult res;
-   nsCOMPtr<nsICharsetConverterManager> ccMain =
-      do_GetService(NS_CHARSETCONVERTERMANAGER_CONTRACTID, &res);
-   if(NS_FAILED(res))
-   {
-	 fprintf(stderr, "Cannot get Character Converter Manager %x\n", res);
-   }
-   int i;
-   if(argc > 5)
-   {
-     for(i =0; i < argc; i++)
-     {
-       if(strcmp(argv[i], "-f") == 0)
-       {
-             tocodeind = i+1;
-             res = ccMain->GetUnicodeDecoder(argv[tocodeind], &decoder);
-             if(NS_FAILED(res)) {
-	     	fprintf(stderr, "Cannot get Unicode decoder %s %x\n", 
-			argv[tocodeind],res);
-  		return -1;
-	     }
-
-       }
-       if(strcmp(argv[i], "-t") == 0)
-       {
-             fromcodeind = i+1;
-             res = ccMain->GetUnicodeEncoderRaw(argv[fromcodeind], &encoder);
-             if(NS_FAILED(res)) {
-	     	fprintf(stderr, "Cannot get Unicode encoder %s %x\n", 
-			argv[fromcodeind],res);
-  		return -1;
-	     }
-       }
-     }
-     if(argc == 6)
-     {
-        infile = fopen(argv[5], "rb");
-        if (!infile) 
-        {  
-           usage();
-           fprintf(stderr,"cannot open file %s\n", argv[5]);
-           return -1; 
-        }
-     }
-     else
-     {
-        infile = stdin;
-     }
-    
-     int32_t insize,medsize,outsize;
-     while((insize=fread(inbuffer, 1,INBUFSIZE,infile)) > 0)
-     {
-        medsize=MEDBUFSIZE;
-        
-	res = decoder->Convert(inbuffer,&insize, medbuffer, &medsize);
-        if(NS_FAILED(res)) {
-            fprintf(stderr, "failed in decoder->Convert %x\n",res);
-	    return -1;
-	}
-        outsize = OUTBUFSIZE;
-	res = encoder->Convert(medbuffer, &medsize, outbuffer,&outsize);
-        if(NS_FAILED(res)) {
-            fprintf(stderr, "failed in encoder->Convert %x\n",res);
-	    return -1;
-	}
-        fwrite(outbuffer, 1, outsize, stdout);
-
-        memcpyDecode(inbuffer, insize, outbuffer);
-
-        memcpyEncode(inbuffer, insize, outbuffer);
-
-        medsize = MEDBUFSIZE;
-        msDecode(incp, inbuffer, insize, medbuffer, &medsize);
-
-        outsize = OUTBUFSIZE;
-        msEncode(outcp, medbuffer, medsize, outbuffer, &outsize);
-
-        medsize = MEDBUFSIZE;
-        WideDecode( inbuffer, insize, medbuffer, &medsize);
-
-        outsize = OUTBUFSIZE;
-        NarrowEncode( medbuffer, medsize, outbuffer, &outsize);
-     }
-     
-     fclose(infile);
-     fclose(stdout);
-     fprintf(stderr, "Done!\n");
-     return 0;
-   }
-   usage();
-   return -1;
-}
deleted file mode 100644
--- a/intl/uconv/tests/nsTestUConv.cpp
+++ /dev/null
@@ -1,985 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#include <stdio.h>
-#include <string.h>
-#include "nsXPCOM.h"
-#include "nsIComponentManager.h"
-#include "nsIServiceManager.h"
-#include "nsISupports.h"
-#include "nsICharsetConverterManager.h"
-#include "nsIPlatformCharset.h"
-#include "nsReadableUtils.h"
-
-
-static NS_DEFINE_CID(kCharsetConverterManagerCID, NS_ICHARSETCONVERTERMANAGER_CID);
-static NS_DEFINE_CID(kPlatformCharsetCID, NS_PLATFORMCHARSET_CID);
-
-/**
- * Test program for the Unicode Converters.
- *
- * Error messages format inside of a test.
- *
- * - silent while all is OK.
- * 
- * - "ERROR at T001.easyConversion.Convert() code=0xfffd.\n"
- * - "ERROR at T001.easyConversion.ConvResLen expected=0x02 result=0x04.\n"
- * 
- * - "Test Passed.\n" for a successful end.
- *
- * @created         01/Dec/1998
- * @author  Catalin Rotaru [CATA]
- */
-
-//----------------------------------------------------------------------
-// Global variables and macros
-
-#define GENERAL_BUFFER 20000 // general purpose buffer; for Unicode divide by 2
-
-#define ARRAY_SIZE(_array)                                      \
-     (sizeof(_array) / sizeof(_array[0]))
-
-nsICharsetConverterManager * ccMan = nullptr;
-
-/**
- * Test data for Latin1 charset.
- */
-
-char bLatin1_d0[] = {
-  "\x00\x0d\x7f\x80\xff"
-};
-
-char16_t cLatin1_d0[] = {
-  0x0000,0x000d,0x007f,0x20ac,0x00ff
-};
-
-int32_t bLatin1_s0 = ARRAY_SIZE(bLatin1_d0)-1;
-int32_t cLatin1_s0 = ARRAY_SIZE(cLatin1_d0);
-
-//----------------------------------------------------------------------
-// Converter Manager test code
-
-nsresult testCharsetConverterManager()
-{
-  printf("\n[T001] CharsetConverterManager\n");
-
-  return NS_OK;
-}
-
-//----------------------------------------------------------------------
-// Helper functions and macros for testing decoders and encoders
-
-#define CREATE_DECODER(_charset)                                \
-    nsIUnicodeDecoder * dec;                                    \
-    nsAutoString str;str.AssignASCII(_charset);                 \
-    nsresult res = ccMan->GetUnicodeDecoder(&str,&dec);         \
-    if (NS_FAILED(res)) {                                       \
-      printf("ERROR at GetUnicodeDecoder() code=0x%x.\n",res);  \
-      return res;                                               \
-    }
-
-#define CREATE_ENCODER(_charset)                                \
-    nsIUnicodeEncoder * enc;                                    \
-    nsAutoString str; str.AssignASCII(_charset);                \
-    nsresult res = ccMan->GetUnicodeEncoder(&str,&enc);         \
-    if (NS_FAILED(res)) {                                       \
-      printf("ERROR at GetUnicodeEncoder() code=0x%x.\n",res);  \
-      return res;                                               \
-    }
-
-/**
- * Decoder test.
- * 
- * This method will test the conversion only.
- */
-nsresult testDecoder(nsIUnicodeDecoder * aDec, 
-                     const char * aSrc, int32_t aSrcLength, 
-                     const char16_t * aRes, int32_t aResLength,
-                     const char * aTestName)
-{
-  nsresult res;
-
-  // prepare for conversion
-  int32_t srcLen = aSrcLength;
-  char16_t dest[GENERAL_BUFFER/2];
-  int32_t destLen = GENERAL_BUFFER/2;
-
-  // conversion
-  res = aDec->Convert(aSrc, &srcLen, dest, &destLen);
-  // we want a perfect result here - the test data should be complete!
-  if (res != NS_OK) {
-    printf("ERROR at %s.easy.Decode() code=0x%x.\n",aTestName,res);
-    return NS_ERROR_UNEXPECTED;
-  }
-
-  // compare results
-  if (aResLength != destLen) {
-      printf("ERROR at %s.easy.DecResLen expected=0x%x result=0x%x.\n", 
-          aTestName, aResLength, destLen);
-      return NS_ERROR_UNEXPECTED;
-  }
-  for (int32_t i=0; i<aResLength; i++) if (aRes[i] != dest[i]) {
-      printf("ERROR at %s.easy.DecResChar[%d] expected=0x%x result=0x%x.\n", 
-          aTestName, i, aRes[i], dest[i]);
-      return NS_ERROR_UNEXPECTED;
-  }
-
-  return NS_OK;
-}
-
-/**
- * Encoder test.
- * 
- * This method will test the conversion only.
- */
-nsresult testEncoder(nsIUnicodeEncoder * aEnc, 
-                     const char16_t * aSrc, int32_t aSrcLength, 
-                     const char * aRes, int32_t aResLength,
-                     const char * aTestName)
-{
-  nsresult res;
-
-  // prepare for conversion
-  int32_t srcLen = 0;
-  char dest[GENERAL_BUFFER];
-  int32_t destLen = 0;
-  int32_t bcr, bcw;
-
-  // conversion
-  bcr = aSrcLength;
-  bcw = GENERAL_BUFFER;
-  res = aEnc->Convert(aSrc, &bcr, dest, &bcw);
-  srcLen += bcr;
-  destLen += bcw;
-  // we want a perfect result here - the test data should be complete!
-  if (res != NS_OK) {
-    printf("ERROR at %s.easy.Encode() code=0x%x.\n",aTestName,res);
-    return NS_ERROR_UNEXPECTED;
-  }
-
-  // finish
-  bcw = GENERAL_BUFFER - destLen;
-  res = aEnc->Finish(dest + destLen, &bcw);
-  destLen += bcw;
-  // we want a perfect result here - the test data should be complete!
-  if (res != NS_OK) {
-    printf("ERROR at %s.easy.Finish() code=0x%x.\n",aTestName,res);
-    return NS_ERROR_UNEXPECTED;
-  }
-
-  // compare results
-  if (aResLength != destLen) {
-      printf("ERROR at %s.easy.EncResLen expected=0x%x result=0x%x.\n", 
-          aTestName, aResLength, destLen);
-      return NS_ERROR_UNEXPECTED;
-  }
-  for (int32_t i=0; i<aResLength; i++) if (aRes[i] != dest[i]) {
-      printf("ERROR at %s.easy.EncResChar[%d] expected=0x%x result=0x%x.\n", 
-          aTestName, i, aRes[i], dest[i]);
-      return NS_ERROR_UNEXPECTED;
-  }
-  
-  return NS_OK;
-}
-
-/**
- * Decoder test.
- * 
- * This method will test a given converter under a given set of data and some 
- * very stressful conditions.
- */
-nsresult testStressDecoder(nsIUnicodeDecoder * aDec, 
-                           const char * aSrc, int32_t aSrcLength, 
-                           const char16_t * aRes, int32_t aResLength,
-                           const char * aTestName)
-{
-  nsresult res;
-
-  // get estimated length
-  int32_t estimatedLength;
-  res = aDec->GetMaxLength(aSrc, aSrcLength, &estimatedLength);
-  if (NS_FAILED(res)) {
-    printf("ERROR at %s.stress.Length() code=0x%x.\n",aTestName,res);
-    return res;
-  }
-  bool exactLength = (res == NS_EXACT_LENGTH);
-
-  // prepare for conversion
-  int32_t srcLen = 0;
-  int32_t srcOff = 0;
-  char16_t dest[1024];
-  int32_t destLen = 0;
-  int32_t destOff = 0;
-
-  // controlled conversion
-  for (;srcOff < aSrcLength;) {
-    res = aDec->Convert(aSrc + srcOff, &srcLen, dest + destOff, &destLen);
-    if (NS_FAILED(res)) {
-      printf("ERROR at %s.stress.Convert() code=0x%x.\n",aTestName,res);
-      return res;
-    }
-
-    srcOff+=srcLen;
-    destOff+=destLen;
-
-    // give a little input each time; it'll be consumed if enough output space
-    srcLen = 1;
-    // give output space only when requested: sadic!
-    if (res == NS_PARTIAL_MORE_OUTPUT) {
-      destLen = 1;
-    } else {
-      destLen = 0;
-    }
-  }
-
-  // we want perfect result here - the test data should be complete!
-  if (res != NS_OK) {
-    printf("ERROR at %s.stress.postConvert() code=0x%x.\n",aTestName,res);
-    return NS_ERROR_UNEXPECTED;
-  }
-
-  // compare lengths
-  if (exactLength) {
-    if (destOff != estimatedLength) {
-      printf("ERROR at %s.stress.EstimatedLen expected=0x%x result=0x%x.\n",
-          aTestName, estimatedLength, destOff);
-      return NS_ERROR_UNEXPECTED;
-    }
-  } else {
-    if (destOff > estimatedLength) {
-      printf("ERROR at %s.stress.EstimatedLen expected<=0x%x result=0x%x.\n",
-          aTestName, estimatedLength, destOff);
-      return NS_ERROR_UNEXPECTED;
-    }
-  }
-
-  // compare results
-  if (aResLength != destOff) {
-      printf("ERROR at %s.stress.ConvResLen expected=0x%x result=0x%x.\n", 
-          aTestName, aResLength, destOff);
-      return NS_ERROR_UNEXPECTED;
-  }
-  for (int32_t i=0; i<aResLength; i++) if (aRes[i] != dest[i]) {
-      printf("ERROR at %s.stress.ConvResChar[%d] expected=0x%x result=0x%x.\n", 
-          aTestName, i, aRes[i], dest[i]);
-      return NS_ERROR_UNEXPECTED;
-  }
-
-  return NS_OK;
-}
-
-/**
- * Encoder test.
- * 
- * This method will test a given converter under a given set of data and some 
- * very stressful conditions.
- */
-nsresult testStressEncoder(nsIUnicodeEncoder * aEnc, 
-                           const char16_t * aSrc, int32_t aSrcLength,
-                           const char * aRes, int32_t aResLength, 
-                           const char * aTestName)
-{
-  nsresult res;
-
-  // get estimated length
-  int32_t estimatedLength;
-  res = aEnc->GetMaxLength(aSrc, aSrcLength, &estimatedLength);
-  if (NS_FAILED(res)) {
-    printf("ERROR at %s.stress.Length() code=0x%x.\n",aTestName,res);
-    return res;
-  }
-  bool exactLength = (res == NS_OK_UENC_EXACTLENGTH);
-
-  // prepare for conversion
-  int32_t srcLen = 0;
-  int32_t srcOff = 0;
-  char dest[GENERAL_BUFFER];
-  int32_t destLen = 0;
-  int32_t destOff = 0;
-
-  // controlled conversion
-  for (;srcOff < aSrcLength;) {
-    res = aEnc->Convert(aSrc + srcOff, &srcLen, dest + destOff, &destLen);
-    if (NS_FAILED(res)) {
-      printf("ERROR at %s.stress.Convert() code=0x%x.\n",aTestName,res);
-      return res;
-    }
-
-    srcOff+=srcLen;
-    destOff+=destLen;
-
-    // give a little input each time; it'll be consumed if enough output space
-    srcLen = 1;
-    // give output space only when requested: sadic!
-    if (res == NS_OK_UENC_MOREOUTPUT) {
-      destLen = 1;
-    } else {
-      destLen = 0;
-    }
-  }
-
-  if (res != NS_OK) if (res != NS_OK_UENC_MOREOUTPUT) {
-    printf("ERROR at %s.stress.postConvert() code=0x%x.\n",aTestName,res);
-    return NS_ERROR_UNEXPECTED;
-  } 
-  
-  for (;;) {
-    res = aEnc->Finish(dest + destOff, &destLen);
-    if (NS_FAILED(res)) {
-      printf("ERROR at %s.stress.Finish() code=0x%x.\n",aTestName,res);
-      return res;
-    }
-
-    destOff+=destLen;
-
-    // give output space only when requested: sadic!
-    if (res == NS_OK_UENC_MOREOUTPUT) {
-      destLen = 1;
-    } else break;
-  }
-
-  // compare lengths
-  if (exactLength) {
-    if (destOff != estimatedLength) {
-      printf("ERROR at %s.stress.EstimatedLen expected=0x%x result=0x%x.\n",
-          aTestName, estimatedLength, destOff);
-      return NS_ERROR_UNEXPECTED;
-    }
-  } else {
-    if (destOff > estimatedLength) {
-      printf("ERROR at %s.stress.EstimatedLen expected<=0x%x result=0x%x.\n",
-          aTestName, estimatedLength, destOff);
-      return NS_ERROR_UNEXPECTED;
-    }
-  }
-
-  // compare results
-  if (aResLength != destOff) {
-      printf("ERROR at %s.stress.ConvResLen expected=0x%x result=0x%x.\n", 
-          aTestName, aResLength, destOff);
-      return NS_ERROR_UNEXPECTED;
-  }
-  for (int32_t i=0; i<aResLength; i++) if (aRes[i] != dest[i]) {
-      printf("ERROR at %s.stress.ConvResChar[%d] expected=0x%x result=0x%x.\n", 
-          aTestName, i, aRes[i], dest[i]);
-      return NS_ERROR_UNEXPECTED;
-  }
-
-  return NS_OK;
-}
-
-/**
- * Reset decoder.
- */
-nsresult resetDecoder(nsIUnicodeDecoder * aDec, const char * aTestName)
-{
-  nsresult res = aDec->Reset();
-
-  if (NS_FAILED(res)) {
-    printf("ERROR at %s.dec.Reset() code=0x%x.\n",aTestName,res);
-    return res;
-  }
-
-  return res;
-}
-
-/**
- * Reset encoder.
- */
-nsresult resetEncoder(nsIUnicodeEncoder * aEnc, const char * aTestName)
-{
-  nsresult res = aEnc->Reset();
-
-  if (NS_FAILED(res)) {
-    printf("ERROR at %s.enc.Reset() code=0x%x.\n",aTestName,res);
-    return res;
-  }
-
-  return res;
-}
-
-/**
- * A standard decoder test.
- */
-nsresult standardDecoderTest(char * aTestName, char * aCharset, char * aSrc, 
-  int32_t aSrcLen, char16_t * aRes, int32_t aResLen)
-{
-  printf("\n[%s] Unicode <- %s\n", aTestName, aCharset);
-
-  // create converter
-  CREATE_DECODER(aCharset);
-
-  // test converter - easy test
-  res = testDecoder(dec, aSrc, aSrcLen, aRes, aResLen, aTestName);
-
-  // reset converter
-  if (NS_SUCCEEDED(res)) res = resetDecoder(dec, aTestName);
-
-  // test converter - stress test
-  if (NS_SUCCEEDED(res)) 
-    res = testStressDecoder(dec, aSrc, aSrcLen, aRes, aResLen, aTestName);
-
-  // release converter
-  NS_RELEASE(dec);
-
-  if (NS_FAILED(res)) {
-    return res;
-  } else {
-    printf("Test Passed.\n");
-    return NS_OK;
-  }
-}
-
-nsresult loadBinaryFile(char * aFile, char * aBuff, int32_t * aBuffLen)
-{
-  FILE * f = fopen(aFile, "rb");
-  if (!f) {
-    printf("ERROR at opening file: \"%s\".\n", aFile);
-    return NS_ERROR_UNEXPECTED;
-  }
-
-  int32_t n = fread(aBuff, 1, *aBuffLen, f);
-  if (n >= *aBuffLen) {
-    printf("ERROR at reading from file \"%s\": too much input data.\n", aFile);
-    return NS_ERROR_UNEXPECTED;
-  }
-
-  *aBuffLen = n;
-  fclose(f);
-  return NS_OK;
-}
-
-nsresult loadUnicodeFile(char * aFile, char16_t * aBuff, int32_t * aBuffLen)
-{
-  int32_t buffLen = 2*(*aBuffLen);
-
-  nsresult res = loadBinaryFile(aFile, (char *)aBuff, &buffLen);
-  if (NS_FAILED(res)) return res;
-
-  *aBuffLen = buffLen/2;
-  return NS_OK;
-}
-
-nsresult testDecoderFromFiles(char * aCharset, char * aSrcFile, char * aResultFile)
-{
-  // create converter
-  CREATE_DECODER(aCharset);
-
-  int32_t srcLen = GENERAL_BUFFER;
-  char src[GENERAL_BUFFER];
-  int32_t expLen = GENERAL_BUFFER/2;
-  char16_t exp[GENERAL_BUFFER/2];
-
-  res = loadBinaryFile(aSrcFile, src, &srcLen);
-  if (NS_FAILED(res)) return res;
-
-  res = loadUnicodeFile(aResultFile, exp, &expLen);
-  if (NS_FAILED(res)) return res;
-
-  // test converter - easy test
-  res = testDecoder(dec, src, srcLen, exp, expLen, "dec");
-
-  // release converter
-  NS_RELEASE(dec);
-
-  if (NS_FAILED(res)) {
-    return res;
-  } else {
-    printf("Test Passed.\n");
-    return NS_OK;
-  }
-
-  return NS_OK;
-}
-
-nsresult testEncoderFromFiles(char * aCharset, char * aSrcFile, char * aResultFile)
-{
-  // XXX write me
-  return NS_OK;
-}
-
-//----------------------------------------------------------------------
-// Decoders testing functions
-
-/**
- * Test the ISO2022JP decoder.
- */
-nsresult testISO2022JPDecoder()
-{
-  char * testName = "T102";
-  printf("\n[%s] Unicode <- ISO2022JP\n", testName);
-
-  // create converter
-  CREATE_DECODER("iso-2022-jp");
-
-  // test data
-  char src[] = {"\x0d\x7f\xdd" "\x1b(J\xaa\xdc\x41" "\x1b$B\x21\x21" "\x1b$@\x32\x37" "\x1b(J\x1b(B\xcc"};
-  char16_t exp[] = {0x000d,0x007f,0xfffd, 0xff6a,0xFF9C,0x0041, 0x3000, 0x5378, 0xfffd};
-
-  // test converter - normal operation
-  res = testDecoder(dec, src, ARRAY_SIZE(src)-1, exp, ARRAY_SIZE(exp), testName);
-
-  // reset converter
-  if (NS_SUCCEEDED(res)) res = resetDecoder(dec, testName);
-
-  // test converter - stress test
-  if (NS_SUCCEEDED(res)) 
-    res = testStressDecoder(dec, src, ARRAY_SIZE(src)-1, exp, ARRAY_SIZE(exp), testName);
-
-  // release converter
-  NS_RELEASE(dec);
-
-  if (NS_FAILED(res)) {
-    return res;
-  } else {
-    printf("Test Passed.\n");
-    return NS_OK;
-  }
-}
-
-/**
- * Test the EUCJP decoder.
- */
-nsresult testEUCJPDecoder()
-{
-  char * testName = "T103";
-  printf("\n[%s] Unicode <- EUCJP\n", testName);
-
-  // create converter
-  CREATE_DECODER("euc-jp");
-
-  // test data
-  char src[] = {"\x45"};
-  char16_t exp[] = {0x0045};
-
-  // test converter - normal operation
-  res = testDecoder(dec, src, ARRAY_SIZE(src)-1, exp, ARRAY_SIZE(exp), testName);
-
-  // reset converter
-  if (NS_SUCCEEDED(res)) res = resetDecoder(dec, testName);
-
-  // test converter - stress test
-  if (NS_SUCCEEDED(res)) 
-    res = testStressDecoder(dec, src, ARRAY_SIZE(src)-1, exp, ARRAY_SIZE(exp), testName);
-
-  // release converter
-  NS_RELEASE(dec);
-
-  if (NS_FAILED(res)) {
-    return res;
-  } else {
-    printf("Test Passed.\n");
-    return NS_OK;
-  }
-}
-
-/**
- * Test the ISO88597 decoder.
- */
-nsresult testISO88597Decoder()
-{
-  char * testName = "T104";
-  printf("\n[%s] Unicode <- ISO88597\n", testName);
-
-  // create converter
-  CREATE_DECODER("iso-8859-7");
-
-  // test data
-  char src[] = {
-    "\x09\x0d\x20\x40"
-    "\x80\x98\xa3\xaf"
-    "\xa7\xb1\xb3\xc9"
-    "\xd9\xe3\xf4\xff"
-  };
-  char16_t exp[] = {
-    0x0009, 0x000d, 0x0020, 0x0040, 
-    0xfffd, 0xfffd, 0x00a3, 0x2015,
-    0x00a7, 0x00b1, 0x00b3, 0x0399,
-    0x03a9, 0x03b3, 0x03c4, 0xfffd
-  };
-
-  // test converter - normal operation
-  res = testDecoder(dec, src, ARRAY_SIZE(src)-1, exp, ARRAY_SIZE(exp), testName);
-
-  // reset converter
-  if (NS_SUCCEEDED(res)) res = resetDecoder(dec, testName);
-
-  // test converter - stress test
-  if (NS_SUCCEEDED(res)) 
-    res = testStressDecoder(dec, src, ARRAY_SIZE(src)-1, exp, ARRAY_SIZE(exp), testName);
-
-  // release converter
-  NS_RELEASE(dec);
-
-  if (NS_FAILED(res)) {
-    return res;
-  } else {
-    printf("Test Passed.\n");
-    return NS_OK;
-  }
-}
-
-/**
- * Test the SJIS decoder.
- */
-nsresult testSJISDecoder()
-{
-  char * testName = "T105";
-  printf("\n[%s] Unicode <- SJIS\n", testName);
-
-  // create converter
-  CREATE_DECODER("Shift_JIS");
-
-  // test data
-  char src[] = {
-    "Japanese" /* English */
-    "\x8a\xbf\x8e\x9a" /* Kanji */
-    "\x83\x4a\x83\x5e\x83\x4a\x83\x69" /* Kantakana */
-    "\x82\xd0\x82\xe7\x82\xaa\x82\xc8" /* Hiragana */
-    "\x82\x50\x82\x51\x82\x52\x82\x60\x82\x61\x82\x62" /* full width 123ABC */
-  };
-  char16_t exp[] = {
-    0x004A, 0x0061, 0x0070, 0x0061, 0x006E, 0x0065, 0x0073, 0x0065,
-    0x6f22, 0x5b57,
-    0x30ab, 0x30bf, 0x30ab, 0x30ca,
-    0x3072, 0x3089, 0x304c, 0x306a,
-    0xff11, 0xff12, 0xff13, 0xff21, 0xff22, 0xff23
-  };
-
-  // test converter - normal operation
-  res = testDecoder(dec, src, ARRAY_SIZE(src)-1, exp, ARRAY_SIZE(exp), testName);
-
-  // reset converter
-  if (NS_SUCCEEDED(res)) res = resetDecoder(dec, testName);
-
-  // test converter - stress test
-  if (NS_SUCCEEDED(res)) 
-    res = testStressDecoder(dec, src, ARRAY_SIZE(src)-1, exp, ARRAY_SIZE(exp), testName);
-
-  // release converter
-  NS_RELEASE(dec);
-
-  if (NS_FAILED(res)) {
-    return res;
-  } else {
-    printf("Test Passed.\n");
-    return NS_OK;
-  }
-}
-
-/**
- * Test the UTF8 decoder.
- */
-nsresult testUTF8Decoder()
-{
-  char * testName = "T106";
-  printf("\n[%s] Unicode <- UTF8\n", testName);
-
-  // create converter
-  CREATE_DECODER("utf-8");
-
-#ifdef NOPE // XXX decomment this when I have test data
-  // test data
-  char src[] = {};
-  char16_t exp[] = {};
-
-  // test converter - normal operation
-  res = testDecoder(dec, src, ARRAY_SIZE(src)-1, exp, ARRAY_SIZE(exp), testName);
-
-  // reset converter
-  if (NS_SUCCEEDED(res)) res = resetDecoder(dec, testName);
-
-  // test converter - stress test
-  if (NS_SUCCEEDED(res)) 
-    res = testStressDecoder(dec, src, ARRAY_SIZE(src)-1, exp, ARRAY_SIZE(exp), testName);
-#endif
-
-  // release converter
-  NS_RELEASE(dec);
-
-  if (NS_FAILED(res)) {
-    return res;
-  } else {
-    printf("Test Passed.\n");
-    return NS_OK;
-  }
-}
-
-//----------------------------------------------------------------------
-// Encoders testing functions
-
-/**
- * Test the Latin1 encoder.
- */
-nsresult testLatin1Encoder()
-{
-  char * testName = "T201";
-  printf("\n[%s] Unicode -> Latin1\n", testName);
-
-  // create converter
-  CREATE_ENCODER("iso-8859-1");
-  enc->SetOutputErrorBehavior(enc->kOnError_Replace, nullptr, 0x00cc);
-
-  // test data
-  char16_t src[] = {0x0001,0x0002,0xffff,0x00e3};
-  char exp[] = {"\x01\x02\xcc\xe3"};
-
-  // test converter - easy test
-  res = testEncoder(enc, src, ARRAY_SIZE(src), exp, ARRAY_SIZE(exp)-1, testName);
-
-  // reset converter
-  if (NS_SUCCEEDED(res)) res = resetEncoder(enc, testName);
-
-  // test converter - stress test
-  if (NS_SUCCEEDED(res)) 
-    res = testStressEncoder(enc, src, ARRAY_SIZE(src), exp, ARRAY_SIZE(exp)-1, testName);
-
-  // release converter
-  NS_RELEASE(enc);
-
-  if (NS_FAILED(res)) {
-    return res;
-  } else {
-    printf("Test Passed.\n");
-    return NS_OK;
-  }
-}
-
-/**
- * Test the Shift-JIS encoder.
- */
-nsresult testSJISEncoder()
-{
-  char * testName = "T202";
-  printf("\n[%s] Unicode -> SJIS\n", testName);
-
-  // create converter
-  CREATE_ENCODER("Shift_JIS");
-  enc->SetOutputErrorBehavior(enc->kOnError_Replace, nullptr, 0x00cc);
-
-  // test data
-  char16_t src[] = {
-    0x004A, 0x0061, 0x0070, 0x0061, 0x006E, 0x0065, 0x0073, 0x0065,
-    0x6f22, 0x5b57,
-    0x30ab, 0x30bf, 0x30ab, 0x30ca,
-    0x3072, 0x3089, 0x304c, 0x306a,
-    0xff11, 0xff12, 0xff13, 0xff21, 0xff22, 0xff23
-  };
-  char exp[] = {
-    "Japanese" /* English */
-    "\x8a\xbf\x8e\x9a" /* Kanji */
-    "\x83\x4a\x83\x5e\x83\x4a\x83\x69" /* Kantakana */
-    "\x82\xd0\x82\xe7\x82\xaa\x82\xc8" /* Hiragana */
-    "\x82\x50\x82\x51\x82\x52\x82\x60\x82\x61\x82\x62" /* full width 123ABC */
-  };
-
-  // test converter - easy test
-  res = testEncoder(enc, src, ARRAY_SIZE(src), exp, ARRAY_SIZE(exp)-1, testName);
-
-  // reset converter
-  if (NS_SUCCEEDED(res)) res = resetEncoder(enc, testName);
-
-  // test converter - stress test
-  if (NS_SUCCEEDED(res)) 
-    res = testStressEncoder(enc, src, ARRAY_SIZE(src), exp, ARRAY_SIZE(exp)-1, testName);
-
-  // release converter
-  NS_RELEASE(enc);
-
-  if (NS_FAILED(res)) {
-    return res;
-  } else {
-    printf("Test Passed.\n");
-    return NS_OK;
-  }
-}
-
-/**
- * Test the EUC-JP encoder.
- */
-nsresult testEUCJPEncoder()
-{
-  char * testName = "T203";
-  printf("\n[%s] Unicode -> EUCJP\n", testName);
-
-  // create converter
-  CREATE_ENCODER("euc-jp");
-  enc->SetOutputErrorBehavior(enc->kOnError_Replace, nullptr, 0x00cc);
-
-  // test data
-  char16_t src[] = {0x0045, 0x0054};
-  char exp[] = {"\x45\x54"};
-
-  // test converter - easy test
-  res = testEncoder(enc, src, ARRAY_SIZE(src), exp, ARRAY_SIZE(exp)-1, testName);
-
-  // reset converter
-  if (NS_SUCCEEDED(res)) res = resetEncoder(enc, testName);
-
-  // test converter - stress test
-  if (NS_SUCCEEDED(res)) 
-    res = testStressEncoder(enc, src, ARRAY_SIZE(src), exp, ARRAY_SIZE(exp)-1, testName);
-
-  // release converter
-  NS_RELEASE(enc);
-
-  if (NS_FAILED(res)) {
-    return res;
-  } else {
-    printf("Test Passed.\n");
-    return NS_OK;
-  }
-}
-
-/**
- * Test the ISO-2022-JP encoder.
- */
-nsresult testISO2022JPEncoder()
-{
-  char * testName = "T204";
-  printf("\n[%s] Unicode -> ISO2022JP\n", testName);
-
-  // create converter
-  CREATE_ENCODER("iso-2022-jp");
-  enc->SetOutputErrorBehavior(enc->kOnError_Replace, nullptr, 0x00cc);
-
-  // test data
-  char16_t src[] = {0x000d,0x007f, 0xff6a,0xFF9C, 0x3000, 0x5378};
-  char exp[] = {"\x0d\x7f" "\x1b(J\xaa\xdc" "\x1b$@\x21\x21\x32\x37\x1b(B"};
-
-  // test converter - easy test
-  res = testEncoder(enc, src, ARRAY_SIZE(src), exp, ARRAY_SIZE(exp)-1, testName);
-
-  // reset converter
-  if (NS_SUCCEEDED(res)) res = resetEncoder(enc, testName);
-
-  // test converter - stress test
-  if (NS_SUCCEEDED(res)) 
-    res = testStressEncoder(enc, src, ARRAY_SIZE(src), exp, ARRAY_SIZE(exp)-1, testName);
-
-  // release converter
-  NS_RELEASE(enc);
-
-  if (NS_FAILED(res)) {
-    return res;
-  } else {
-    printf("Test Passed.\n");
-    return NS_OK;
-  }
-}
-
-nsresult  testPlatformCharset()
-{
-  nsIPlatformCharset *cinfo;
-  nsresult res = CallGetService(kPlatformCharsetCID, &cinfo);
-  if (NS_FAILED(res)) {
-    printf("ERROR at GetService() code=0x%x.\n",res);
-    return res;
-  }
-
-  nsString value;
-  res = cinfo->GetCharset(kPlatformCharsetSel_PlainTextInClipboard , value);
-  printf("Clipboard plain text encoding = %s\n", NS_LossyConvertUTF16toASCII(value).get());
-  
-  res = cinfo->GetCharset(kPlatformCharsetSel_FileName , value);
-  printf("File Name encoding = %s\n", NS_LossyConvertUTF16toASCII(value).get());
-
-  res = cinfo->GetCharset(kPlatformCharsetSel_Menu , value);
-  printf("Menu encoding = %s\n", NS_LossyConvertUTF16toASCII(value).get());
-
-  cinfo->Release();
-  return res;
-  
-}
-
-//----------------------------------------------------------------------
-// Testing functions
-
-nsresult testAll()
-{
-  nsresult res;
-
-  // test the manager(s)
-  res = testCharsetConverterManager();
-  if (NS_FAILED(res)) return res;
-
-  testPlatformCharset();
-
-  // test decoders
-  standardDecoderTest("T101", "ISO-8859-1", bLatin1_d0, bLatin1_s0, cLatin1_d0, cLatin1_s0);
-  testISO2022JPDecoder();
-  testEUCJPDecoder();
-  testISO88597Decoder();
-  testSJISDecoder();
-  testUTF8Decoder();
-  testMUTF7Decoder();
-  testUTF7Decoder();
-
-  // test encoders
-  testLatin1Encoder();
-  testSJISEncoder();
-  testEUCJPEncoder();
-  testISO2022JPEncoder();
-  testMUTF7Encoder();
-  testUTF7Encoder();
-
-  // return
-  return NS_OK;
-}
-
-nsresult testFromArgs(int argc, char **argv)
-{
-  nsresult res = NS_OK;
-  if ((argc == 5) && (!strcmp(argv[1], "-tdec"))) {
-    res = testDecoderFromFiles(argv[2], argv[3], argv[4]);
-  } else if ((argc == 5) && (!strcmp(argv[1], "-tenc"))) {
-    res = testEncoderFromFiles(argv[2], argv[3], argv[4]);
-  } else {
-    printf("Usage:\n");
-    printf("  TestUConv.exe\n");
-    printf("  TestUConv.exe -tdec encoding inputEncodedFile expectedResultUnicodeFile\n");
-    printf("  TestUConv.exe -tenc encoding inputUnicodeFile expectedResultEncodedFile\n");
-  }
-
-  return res;
-}
-
-//----------------------------------------------------------------------
-// Main program functions
-
-nsresult init()
-{
-  nsresult rv = NS_InitXPCOM2(nullptr, nullptr, nullptr);
-  if (NS_FAILED(rv))
-    return rv;
-  return CallGetService(kCharsetConverterManagerCID, &ccMan);
-}
-
-nsresult done()
-{
-  NS_RELEASE(ccMan);
-  return NS_OK;
-}
-
-int main(int argc, char **argv)
-{
-  nsresult res;
-
-  res = init();
-  if (NS_FAILED(res)) return -1;
-
-  if (argc <= 1) {
-    printf("*** Unicode Converters Test ***\n");
-    res = testAll();
-    printf("\n***---------  Done  --------***\n");
-  } else {
-    res = testFromArgs(argc, argv);
-  }
-
-  done();
-
-  if (NS_FAILED(res)) return -1;
-  else return 0;
-}
deleted file mode 100644
--- a/intl/uconv/tests/nsconv.cpp
+++ /dev/null
@@ -1,188 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-// Utility that converts file encoded in one charset codepage to
-// another encoding
-
-#include "nscore.h"
-#include "nsString.h"
-#include "nsIServiceManager.h"
-#include "nsICharsetConverterManager.h"
-#include "nsIUnicodeEncoder.h"
-#include "nsIUnicodeDecoder.h"
-
-static NS_DEFINE_CID(kCharsetConverterManagerCID, NS_ICHARSETCONVERTERMANAGER_CID);
-
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-void usage()
-{
-  printf(
-    "nsconv -f fromcode -t tocode infile outfile\n"
-    "nsconv -f fromcode -t tocode infile > outfile\n"
-    "nsconv -f fromcode -t tocode < infile > outfile\n"
-    );
-}
-
-#define INBUFSIZE (1024*16)
-#define MEDBUFSIZE (1024*16*2)
-#define OUTBUFSIZE (1024*16*8)
-char inbuffer[INBUFSIZE];
-char outbuffer[OUTBUFSIZE];
-char16_t  medbuffer[MEDBUFSIZE];
-
-int main(int argc, const char** argv)
-{
-  nsIUnicodeEncoder* encoder = nullptr;
-  nsIUnicodeDecoder* decoder = nullptr;
-  FILE* fin = 0;
-  FILE* fout = 0;
-  FILE* infile = 0;
-  FILE* outfile = 0;
-  nsresult res= NS_OK;
-
-  NS_InitXPCOM2(nullptr, nullptr, nullptr);
-
-  // get ccMain;
-  nsCOMPtr<nsICharsetConverterManager> ccMain =
-      do_GetService(kCharsetConverterManagerCID, &res);
-  if(NS_FAILED(res))
-  {
-    fprintf(stderr, "Cannot get Character Converter Manager %x\n", res);
-    return -1;
-  }
-
-  int i;
-  if(argc > 4)
-  {
-    for(i =0; i < argc; i++)
-    {
-      if(strcmp(argv[i], "-f") == 0)
-      {
-        // User has specified the charset to convert from
-        nsAutoCString str;
-
-        // First check if a charset alias was given, 
-        // and convert to the canonical name
-        res = ccMain->GetCharsetAlias(argv[i+1], str);
-        if (NS_FAILED(res))
-        {
-          fprintf(stderr, "Cannot get charset alias for %s %x\n",
-                  argv[i+1], res);
-          goto error_exit;
-        }
-
-        // Finally create the decoder
-        res = ccMain->GetUnicodeDecoder(str.get(), &decoder);
-        if(NS_FAILED(res)) {
-          fprintf(stderr, "Cannot get Unicode decoder %s %x\n", 
-                  argv[i+1],res);
-          goto error_exit;
-        }
-
-      }
-
-      if(strcmp(argv[i], "-t") == 0)
-      {
-        // User has specified which charset to convert to
-        nsAutoCString str;
-
-        // First check if a charset alias was given, 
-        // and convert to the canonical name
-        res = ccMain->GetCharsetAlias(argv[i+1], str);
-        if (NS_FAILED(res))
-        {
-          fprintf(stderr, "Cannot get charset alias for %s %x\n",
-                  argv[i+1], res);
-          goto error_exit;
-        }
-
-        // Finally create the encoder 
-        res = ccMain->GetUnicodeEncoderRaw(str.get(), &encoder);
-        if(NS_FAILED(res)) {
-          fprintf(stderr, "Cannot get Unicode encoder %s %x\n", 
-                  argv[i+1],res);
-          goto error_exit;
-        }
-      }
-    }
-
-    if (argc > 5)
-    {
-      // The user has specified an input file 
-      // if we have more than four arguments
-      fin = infile = fopen(argv[5], "rb");
-      if(!infile) 
-      {  
-        usage();
-        fprintf(stderr,"cannot open input file %s\n", argv[5]);
-        goto error_exit; 
-      }
-
-      if (argc > 6)
-      {
-        // The user has specified an output file
-        // if we have more than four arguments
-        fout = outfile = fopen(argv[6], "ab");
-        if(!outfile) 
-        {  
-          usage();
-          fprintf(stderr,"cannot open output file %s\n", argv[6]);
-          goto error_exit; 
-        }
-      }
-      else
-        fout = stdout;
-    }
-    else
-    {
-      // No inputfiles are given. Read and write
-      // to/from standard in and standard out
-      fin = stdin;
-      fout = stdout;
-    }
-    
-    int32_t insize,medsize,outsize;
-    while((insize=fread(inbuffer, 1,INBUFSIZE, fin)) > 0)
-    {
-      medsize=MEDBUFSIZE;
-        
-      res = decoder->Convert(inbuffer,&insize, medbuffer, &medsize);
-      if(NS_FAILED(res)) {
-        fprintf(stderr, "failed in decoder->Convert %x\n",res);
-        goto error_exit;
-      }
-      outsize = OUTBUFSIZE;
-      res = encoder->Convert(medbuffer, &medsize, outbuffer,&outsize);
-      if(NS_FAILED(res)) {
-        fprintf(stderr, "failed in encoder->Convert %x\n",res);
-        goto error_exit;
-      }
-      fwrite(outbuffer, 1, outsize, fout);
-
-    }
-     
-    // Clean up 
-    if (infile != 0)
-      fclose(infile);
-    if (outfile != 0)
-      fclose(outfile);
-    fprintf(stderr, "Done!\n");
-    NS_IF_RELEASE(encoder);
-    NS_IF_RELEASE(decoder);
-    return 0;
-  }
-  usage();
-  error_exit:
-  // Clean up after
-  if (infile != 0)
-    fclose(infile);
-  if (outfile != 0)
-    fclose(outfile);
-  NS_IF_RELEASE(encoder);
-  NS_IF_RELEASE(decoder);
-  return -1;
-}
deleted file mode 100644
--- a/intl/uconv/tools/adobe.pl
+++ /dev/null
@@ -1,17 +0,0 @@
-#!/usr/local/bin/perl -w
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-while(<STDIN>)
-{
-  if(/^#/)
-  {
-      print $_;
-  }
-  else 
-  {
-     ($a, $b, $c,$d) = /^(....)(.)(..)(.*)$/;
-     print "0x" . $c . $b . "0x" . $a .  $d . "\n";
-  }
-}
deleted file mode 100644
--- a/intl/uconv/tools/cns.sh
+++ /dev/null
@@ -1,32 +0,0 @@
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-# umaptable -uf < cns1992p1.txt > ../ucvtw2/cns_1.uf
-# umaptable -uf < cns1992p2.txt > ../ucvtw2/cns_2.uf
-umaptable -uf < cnsIRGTp15.txt > ../ucvtw2/cns15.uf
-umaptable -uf < cnsIRGTp15ExtB.txt > ../ucvtw2/cns15extb.uf
-umaptable -uf < cnsIRGTp3.txt > ../ucvtw2/cns3.uf
-umaptable -uf < cnsIRGTp3ExtB.txt > ../ucvtw2/cns3extb.uf
-umaptable -uf < cnsIRGTp4.txt > ../ucvtw2/cns4.uf
-umaptable -uf < cnsIRGTp4ExtB.txt > ../ucvtw2/cns4extb.uf
-umaptable -uf < cnsIRGTp5.txt > ../ucvtw2/cns5.uf
-umaptable -uf < cnsIRGTp5ExtB.txt > ../ucvtw2/cns5extb.uf
-umaptable -uf < cnsIRGTp6.txt > ../ucvtw2/cns6.uf
-umaptable -uf < cnsIRGTp6ExtB.txt > ../ucvtw2/cns6extb.uf
-umaptable -uf < cnsIRGTp7.txt > ../ucvtw2/cns7.uf
-umaptable -uf < cnsIRGTp7ExtB.txt > ../ucvtw2/cns7extb.uf
-# umaptable -ut < cns1992p1.txt > ../ucvtw2/cns_1.ut
-# umaptable -ut < cns1992p2.txt > ../ucvtw2/cns_2.ut
-umaptable -ut < cnsIRGTp15.txt > ../ucvtw2/cns15.ut
-umaptable -ut < cnsIRGTp15ExtB.txt > ../ucvtw2/cns15extb.ut
-umaptable -ut < cnsIRGTp3.txt > ../ucvtw2/cns3.ut
-umaptable -ut < cnsIRGTp3ExtB.txt > ../ucvtw2/cns3extb.ut
-umaptable -ut < cnsIRGTp4.txt > ../ucvtw2/cns4.ut
-umaptable -ut < cnsIRGTp4ExtB.txt > ../ucvtw2/cns4extb.ut
-umaptable -ut < cnsIRGTp5.txt > ../ucvtw2/cns5.ut
-umaptable -ut < cnsIRGTp5ExtB.txt > ../ucvtw2/cns5extb.ut
-umaptable -ut < cnsIRGTp6.txt > ../ucvtw2/cns6.ut
-umaptable -ut < cnsIRGTp6ExtB.txt > ../ucvtw2/cns6extb.ut
-umaptable -ut < cnsIRGTp7.txt > ../ucvtw2/cns7.ut
-umaptable -ut < cnsIRGTp7ExtB.txt > ../ucvtw2/cns7extb.ut
deleted file mode 100644
--- a/intl/uconv/tools/cp936tocdx.pl
+++ /dev/null
@@ -1,133 +0,0 @@
-#!/user/local/bin/perl
-# -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
-#
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-$rowwidth = ((0xff - 0x80)+(0x7f - 0x40));
-sub cp936tonum()
-{
-   my($cp936) = (@_);
-   my($first,$second,$jnum);
-   $first = hex(substr($cp936,2,2));
-   $second = hex(substr($cp936,4,2));
-   $jnum = ($first - 0x81 ) * $rowwidth;
-   if($second >= 0x80)
-   {
-       $jnum += $second - 0x80 + (0x7f-0x40);
-   }
-   else
-   {
-       $jnum += $second - 0x40;
-   }
-   return $jnum;
-}
-
-@map = {};
-sub readtable()
-{
-open(CP936, "<gbkcommon.txt") || die "cannot open gbkcommon.txt";
-while(<CP936>)
-{
-   if(! /^#/) {
-        chop();
-        ($j, $u, $r) = split(/\t/,$_);
-        if(length($j) > 4)
-        {
-        $n = &cp936tonum($j);
-        $map{$n} = $u;
-        }
-   } 
-}
-}
-
-
-sub printtable()
-{
-  for($i=0;$i<126;$i++)
-  {
-     printf ( "/* 0x%2XXX */\n", ( $i + 0x81));
-     for($j=0;$j<(0x7f-0x40);$j++)
-     {
-         if("" eq ($map{($i * $rowwidth + $j)}))
-         {
-            printf "0xFFFD,"
-         } 
-         else 
-         {   
-            printf $map{($i * $rowwidth + $j)} . ",";
-         }
-         if( 0 == (($j + 1) % 8))
-         {
-            printf "/* 0x%2X%1X%1X*/\n", $i+0x81, 4+($j/16), (7==($j%16))?0:8;
-         }
-     }
-     
-	 print "0xFFFD,";
-
-     printf "/* 0x%2X%1X%1X*/\n", $i+0x81, 4+($j/16),(7==($j%16))?0:8;
-     for($j=0;$j < (0xff-0x80);$j++)
-     {
-         if("" eq ($map{($i * $rowwidth + $j + 0x3f)}))		# user defined chars map to 0xFFFD
-         {
-
-			if ( ( $i == 125 ) and ( $j == (0xff - 0x80 - 1 )))
-			{
-				printf "0xFFFD";							#has no ',' followed last item
-			}
-			else
-			{
-				printf "0xFFFD,";
-			}
-         } 
-		 else
-		 {
-			if ( ( $i == 125 ) and ( $j == (0xff - 0x80 - 1 )))
-			{
-				printf $map{($i * $rowwidth + $j + 0x3f)};	#has no ',' followed last item
-			}
-			else
-			{
-				printf $map{($i * $rowwidth + $j + 0x3f)} . ",";
-			}
-		 }
-		  	
-         if( 0 == (($j + 1) % 8))
-         {
-            printf "/* 0x%2X%1X%1X*/\n", $i+0x81, 8+($j/16), (7==($j%16))?0:8;
-         }
-     }
-     printf "       /* 0x%2X%1X%1X*/\n", $i+0x81, 8+($j/16),(7==($j%16))?0:8;
-  }
-}
-sub printnpl()
-{
-$npl = <<END_OF_NPL;
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-END_OF_NPL
-print $npl;
-}
-sub printdontmodify()
-{
-$dont_modify = <<END_OF_DONT_MODIFY;
-/*
-  This file is generated by mozilla/intl/uconv/tools/cp936tocdx.pl
-  Please do not modify this file by hand
-  Instead, you should download CP936.TXT from
-  http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/
-  and put under mozilla/intl/uconv/toools
-  and run perl cp936tocdx.pl > ../ucvcn/cp936map.h
-  If you have question, mailto:ftan\@netscape.com
- */
-END_OF_DONT_MODIFY
-print $dont_modify;
-}
-
-&readtable();
-&printnpl();
-&printdontmodify();
-&printtable();
-
deleted file mode 100644
--- a/intl/uconv/tools/gen-big5-data.py
+++ /dev/null
@@ -1,253 +0,0 @@
-#!/usr/bin/python
-
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-# Adapted from
-# https://hg.mozilla.org/projects/htmlparser/file/0d906fb1ab90/generate-encoding-data.py
-
-# indexes.json comes from 
-# https://encoding.spec.whatwg.org/indexes.json
-# i.e.
-# https://github.com/whatwg/encoding/blob/ce4e83d0df5b5efec0697fc76e66699737e033a3/indexes.json
-
-import json
-
-indexes = json.load(open("indexes.json", "r"))
-
-def nullToZero(codePoint):
-  if not codePoint:
-    codePoint = 0
-  return codePoint
-
-index = []
-
-for codePoint in indexes["big5"]:
-  index.append(nullToZero(codePoint))  
-
-# There are four major gaps consisting of more than 4 consecutive invalid pointers
-gaps = []
-consecutive = 0
-consecutiveStart = 0
-offset = 0
-for codePoint in index:
-  if codePoint == 0:
-    if consecutive == 0:
-      consecutiveStart = offset
-    consecutive +=1
-  else:
-    if consecutive > 4:
-      gaps.append((consecutiveStart, consecutiveStart + consecutive))
-    consecutive = 0
-  offset += 1
-
-def invertRanges(ranges, cap):
-  inverted = []
-  invertStart = 0
-  for (start, end) in ranges:
-    if start != 0:
-      inverted.append((invertStart, start))
-    invertStart = end
-  inverted.append((invertStart, cap))
-  return inverted
-
-cap = len(index)
-ranges = invertRanges(gaps, cap)
-
-# Now compute a compressed lookup table for astralness
-
-gaps = []
-consecutive = 0
-consecutiveStart = 0
-offset = 0
-for codePoint in index:
-  if codePoint <= 0xFFFF:
-    if consecutive == 0:
-      consecutiveStart = offset
-    consecutive +=1
-  else:
-    if consecutive > 40:
-      gaps.append((consecutiveStart, consecutiveStart + consecutive))
-    consecutive = 0
-  offset += 1
-
-astralRanges = invertRanges(gaps, cap)
-
-
-classFile = open("../ucvtw/nsBIG5Data.cpp", "w")
-classFile.write('''/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-/*
- * THIS IS A GENERATED FILE. PLEASE DO NOT EDIT.
- * Instead, please regenerate using intl/uconv/tools/gen-big5-data.py
- */
-
-#include "nsBIG5Data.h"
-
-static const char16_t kBig5LowBitsTable[] = {
-''')
-
-for (low, high) in ranges:
-  for i in xrange(low, high):
-    classFile.write('  0x%04X,\n' % (index[i] & 0xFFFF))
-
-classFile.write('''};
-
-static const uint32_t kBig5AstralnessTable[] = {
-''')
-
-# An array of bool is inefficient per
-# http://stackoverflow.com/questions/4049156/1-bit-per-bool-in-array-c
-
-bits = []
-for (low, high) in astralRanges:
-  for i in xrange(low, high):
-    bits.append(1 if index[i] > 0xFFFF else 0)
-# pad length to multiple of 32
-for i in xrange(32 - (len(bits) % 32)):
-  bits.append(0)
-i = 0
-while i < len(bits):
-  accu = 0
-  for j in xrange(32):
-    accu |= bits[i + j] << j
-  classFile.write('  0x%08X,\n' % accu)
-  i += 32
-
-classFile.write('''};
-
-// static
-char16_t
-nsBIG5Data::LowBits(size_t aPointer)
-{
-''')
-
-base = 0
-for (low, high) in ranges:
-  classFile.write('''  if (aPointer < %d) {
-    return 0;
-  }
-  if (aPointer < %d) {
-    return kBig5LowBitsTable[%d + (aPointer - %d)];
-  }
-''' % (low, high, base, low))
-  base += (high - low)
-
-classFile.write('''  return 0;
-}
-
-// static
-bool
-nsBIG5Data::IsAstral(size_t aPointer)
-{
-''')
-
-base = 0
-for (low, high) in astralRanges:
-  if high - low == 1:
-    classFile.write('''  if (aPointer < %d) {
-    return false;
-  }
-  if (aPointer == %d) {
-    return true;
-  }
-''' % (low, low))
-  else:
-    classFile.write('''  if (aPointer < %d) {
-    return false;
-  }
-  if (aPointer < %d) {
-    size_t index = %d + (aPointer - %d);
-    return kBig5AstralnessTable[index >> 5] & (1 << (index & 0x1F));
-  }
-''' % (low, high, base, low))
-  base += (high - low)
-
-classFile.write('''  return false;
-}
-
-//static
-size_t
-nsBIG5Data::FindPointer(char16_t aLowBits, bool aIsAstral)
-{
-  if (!aIsAstral) {
-    switch (aLowBits) {
-''')
-
-hkscsBound = (0xA1 - 0x81) * 157
-
-preferLast = [
-  0x2550,
-  0x255E,
-  0x2561,
-  0x256A,
-  0x5341,
-  0x5345,
-]
-
-for codePoint in preferLast:
-  # Python lists don't have .rindex() :-(
-  for i in xrange(len(index) - 1, -1, -1):
-    candidate = index[i]
-    if candidate == codePoint:
-       classFile.write('''      case 0x%04X:
-        return %d;
-''' % (codePoint, i))
-       break
-
-classFile.write('''      default:
-        break;
-    }
-  }''')
-
-base = 0
-start = 0
-for (low, high) in ranges:
-  if low <= hkscsBound and hkscsBound < high:
-    # This is the first range we don't ignore and the
-    # range that contains the first non-HKSCS pointer.
-    # Avoid searching HKSCS.
-    start = base + hkscsBound - low
-    break
-  base += (high - low)
-
-classFile.write('''
-  for (size_t i = %d; i < MOZ_ARRAY_LENGTH(kBig5LowBitsTable); ++i) {
-    if (kBig5LowBitsTable[i] == aLowBits) {
-      size_t pointer;
-      ''' % start)
-
-base = 0
-prevLow = 0
-prevHigh = 0
-prevBase = 0
-writing = False
-for (low, high) in ranges:
-  if writing:
-    classFile.write('''if (i < %d) {
-        pointer = i + %d;
-      } else ''' % ((prevBase + prevHigh - prevLow), (prevLow - prevBase)))
-  prevLow = low
-  prevHigh = high
-  prevBase = base
-  if high > hkscsBound:
-    writing = True
-  base += (high - low)
-
-classFile.write('''{
-        pointer = i + %d;
-      }''' % (prevLow - prevBase))
-
-classFile.write('''
-      if (aIsAstral == IsAstral(pointer)) {
-        return pointer;
-      }
-    }
-  }
-  return 0;
-}
-''')
-classFile.close()
deleted file mode 100644
--- a/intl/uconv/tools/gengb18030tables.pl
+++ /dev/null
@@ -1,228 +0,0 @@
-#!/usr/local/bin/perl
-# -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
-#
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-%gb18030tounicode = {};
-%unicodetogb18030 = {};
-%unicodetocp936 = {};
-%cp936tounicode = {};
-%tounicodecommon = {};
-%gb18030tounicodeuniq = {};
-%gb180304btounicode = {};
-%cp936tounicodeuniq = {};
-
-%map = {};
-$rowwidth = ((0xff - 0x80)+(0x7f - 0x40));
-sub cp936tonum()
-{
-   my($cp936) = (@_);
-   my($first,$second,$jnum);
-   $first = hex(substr($cp936,2,2));
-   $second = hex(substr($cp936,4,2));
-   $jnum = ($first - 0x81 ) * $rowwidth;
-   if($second >= 0x80)
-   {
-       $jnum += $second - 0x80 + (0x7f-0x40);
-   }
-   else
-   {
-       $jnum += $second - 0x40;
-   }
-   return $jnum;
-}
-sub addeudc()
-{
-  my($l,$h,$hl,$us);
-
-  $u = 0xE000;
-  $us = sprintf "%04X", $u;
-  # For AAA1-AFFE
-  for($h=0xAA; $h <=0xAF;$h++)
-  {
-    for($l=0xA1; $l <=0xFE;$l++,$u++)
-    {
-        $us = sprintf "%04X", $u;
-        $hl = sprintf "%02X%02X", $h, $l;
-        $unicodetocp936{$us} = $hl;
-    }
-  }
-
-  # For F8A1-FEFE
-  $us = sprintf "%04X", $u;
-  for($h=0xF8; $h <=0xFE;$h++)
-  {
-    for($l=0xA1; $l <=0xFE;$l++,$u++)
-    {
-        $us = sprintf "%04X", $u;
-        $hl = sprintf "%02X%02X", $h, $l;
-        $unicodetocp936{$us} = $hl;
-    }
-  }
-
-  # For A140-A7A0
-  $us = sprintf "%04X", $u;
-  for($h=0xA1; $h <=0xA7;$h++)
-  {
-    for($l=0x40; $l <=0x7E;$l++,$u++)
-    {
-        $us = sprintf "%04X", $u;
-        $hl = sprintf "%02X%02X", $h, $l;
-        $unicodetocp936{$us} = $hl;
-    }
-    # We need to skip 7F
-    for($l=0x80; $l <=0xA0;$l++,$u++)
-    {
-        $us = sprintf "%04X", $u;
-        $hl = sprintf "%02X%02X", $h, $l;
-        $unicodetocp936{$us} = $hl;
-    }
-  }
-}
-
-sub readcp936()
-{
-  open(CP936, "<CP936.txt") || die "Cannot open CP936 file";
-  while(<CP936>)
-  {
-    if(! /^#/) {
-      chop();
-      ($gb, $u) = split(/\t/, $_);
-      if($u =~ /^0x/) {
-        $u1 = substr($u, 2, 4);
-        $gb1 = substr($gb, 2, 4);
-        $cp936tounicode{$gb1} = $u1;
-        if($unicodetocp936{$u1} == "") {
-          $unicodetocp936{$u1} = $gb1;
-        } else {
-          "WARNING: Unicode " . $u1 . " already map to CP936 " . 
-            $unicodetocp936{$u1} . " when we try to map to " . $gb1 . "\n";
-        }
-
-      }
-    }
-  }
-}
-sub readgb18030()
-{
-  open(GB18030, "<GB18030") || die "Cannot open GB18030 file";
-  while(<GB18030>)
-  {
-    if(/^[0-9A-F]/) {
-      chop();
-      ($u, $gb) = split(/\s/, $_);
-      $gb18030tounicode{$gb} = $u;
-        if( $unicodetogb18030{$u} == "" ) {
-          $unicodetogb18030{$u} = $gb;
-        } else {
-          "WARNING: Unicode " . $u1 . " already map to CP936 " . 
-            $unicodetocp936{$u1} . " when we try to map to " . $gb1 . "\n";
-        }
-    }
-  }
-}
-sub splittable()
-{
-  my($i, $u);
-  for($i = 0; $i < 0x10000; $i++) {
-     $u = sprintf "%04X", $i;
-     if($unicodetogb18030{$u} eq $unicodetocp936{$u}) {
-        if($unicodetogb18030{$u} ne "") {
-          $tounicodecommon{$unicodetogb18030{$u}} = $u;
-        } else {
-#          print $u . "|" . $unicodetogb18030{$u} . "|" . $unicodetocp936{$u} . "\n";
-        }
-     } else {
-        if($unicodetogb18030{$u} ne "" ) {
-           if($unicodetogb18030{$u}.length > 4) {
-             $gb180304btounicode{$unicodetogb18030{$u}} = $u;
-           } else {
-             $gb18030tounicodeuniq{$unicodetogb18030{$u}} = $u;
-           }
-        } 
-        if($unicodetocp936{$u} ne "" ) {
-           $cp936tounicodeuniq{$unicodetocp936{$u}} = $u;
-        }
-     }
-  }
-}
-sub gb4bytestoidx()
-{
-  my($gb) = @_;
-  my($b1,$b2, $b3, $b4,$idx);
-  $b1 = hex(substr($gb, 0, 2)) - 0x81;
-  $b2 = hex(substr($gb, 2, 2)) - 0x30;
-  $b3 = hex(substr($gb, 4, 2)) - 0x81;
-  $b4 = hex(substr($gb, 6, 2)) - 0x30;
-  $idx = sprintf "%04X" , ((($b1 * 10) + $b2 ) * 126 + $b3) * 10 + $b4;
-  return $idx;
-}
-sub printcommontable()
-{
-  open ( GBKCOMMON, ">gbkcommon.txt" ) || die "cannot open gbkcommon.txt";
-  foreach $gb (sort(keys %tounicodecommon)) {
-      print GBKCOMMON "0x" . $gb . "\t0x" . $tounicodecommon{$gb} . "\n";
-  }
-  close GBKCOMMON;
-}
-sub printcp936table()
-{
-  open ( CP936UNIQ, ">cp936uniq.txt" ) || die "cannot open cp936uniq.txt";
-  foreach $gb (sort(keys %cp936tounicodeuniq)) {
-      print CP936UNIQ "0x" . $gb . "\t0x" . $cp936tounicodeuniq{$gb} . "\n";
-  }
-  close CP936UNIQ;
-}
-sub printgb180304btable()
-{
-  open ( GB180304B, ">gb180304b.txt" ) || die "cannot open gb180304b.txt";
-  foreach $gb (sort(keys %gb180304btounicode)) {
-      if($gb180304btounicode{$gb} ne "FFFF" ) {
-        print GB180304B "0x" . &gb4bytestoidx($gb) . "\t0x" . $gb180304btounicode{$gb} . "\t# 0x" . $gb . "\n";
-      }
-  }
-  close GB180304B;
-}
-sub printgb18030table()
-{
-  open ( GB18030UNIQ, ">gb18030uniq.txt" ) || die "cannot open gb18030uniq.txt";
-  foreach $gb (sort(keys %gb18030tounicodeuniq)) {
-      print GB18030UNIQ "0x" . $gb . "\t0x" . $gb18030tounicodeuniq{$gb} . "\n";
-  }
-  close GB18030UNIQ;
-}
-
-sub genufut()
-{
- print ( "umaptable -uf < gb18030uniq.txt > gb18030uniq2b.uf\n");
- system( "umaptable -uf < gb18030uniq.txt > gb18030uniq2b.uf");
-
- print ( "umaptable -ut < gb18030uniq.txt > gb18030uniq2b.ut\n");
- system( "umaptable -ut < gb18030uniq.txt > gb18030uniq2b.ut");
-
- print ( "umaptable -uf < cp936uniq.txt > gbkuniq.uf\n") ;
- system( "umaptable -uf < cp936uniq.txt > gbkuniq.uf") ;
-
- print ( "umaptable -ut < cp936uniq.txt > gbkuniq.ut\n") ;
- system( "umaptable -ut < cp936uniq.txt > gbkuniq.ut") ;
-
- print ( "umaptable -uf < gb180304b.txt > gb180304bytes.uf\n")  ;
- system( "umaptable -uf < gb180304b.txt > gb180304bytes.uf")  ;
-
- print ( "umaptable -ut < gb180304b.txt > gb180304bytes.ut\n")  ;
- system( "umaptable -ut < gb180304b.txt > gb180304bytes.ut")  ;
-
- print ( "perl cp936tocdx.pl > cp936map.h\n");
- system( "perl cp936tocdx.pl > cp936map.h");
-}
-
-&readgb18030();
-&readcp936();
-&addeudc();
-&splittable();
-&printcommontable();
-&printgb180304btable();
-&printgb18030table();
-&printcp936table();
-&genufut();
deleted file mode 100755
--- a/intl/uconv/tools/genimpldefine.pl
+++ /dev/null
@@ -1,53 +0,0 @@
-#!/user/local/bin/perl
-# -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
-#
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-$name = "ucvlatin";
-$dir = "./";
-
-sub printnpl()
-{
-$npl = <<END_OF_NPL;
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-END_OF_NPL
-print   $npl;
-}
-
-sub finddefine()
-{
-  my($classname, $definename) = (@_);
-  $cmd = 'egrep ' . $classname .  ' ' . $dir . '*.h ' . $dir . '*.cpp | egrep "public" | egrep -v "Support[.]"' . '&> /dev/null';
-  if( system($cmd)) {
-    print   "\/\/ ";
-  }
-  print   "#define " . $definename . "\n";
-}
-
-
-
-&printnpl();
-print   "\n";
-print   "#ifndef " . $name . "config_h__\n";
-print   "#define " . $name . "config_h__\n";
-print   "\n";
-print   "\/* This file is generated by running mozilla/intl/uconv/tools/genimpldefine.pl on unix */\n";
-
-&finddefine( "nsBasicDecoderSupport", "IMPL_NSBASICDECODER");
-&finddefine( "nsBufferDecoderSupport", "IMPL_NSBUFFERDECODER");
-&finddefine( "nsTableDecoderSupport", "IMPL_NSTABLEDECODER");
-&finddefine( "nsMultiTableDecoderSupport", "IMPL_NSMULTITABLEDECODER");
-&finddefine( "nsOneByteDecoderSupport", "IMPL_NSONEBYTEDECODER");
-&finddefine( "nsBasicEncoder", "IMPL_NSBASICENCODER");
-&finddefine( "nsEncoderSupport", "IMPL_NSENCODER");
-&finddefine( "nsTableEncoderSupport", "IMPL_NSTABLEENCODER");
-&finddefine( "nsMultiTableEncoderSupport", "IMPL_NSMULTITABLEENCODER");
-print   "\n";
-print   "#include \"" . $name . "rules.h\"\n";
-print   "\n";
-print   "#endif \/*" . $name . "config_h__ *\/\n";
deleted file mode 100644
--- a/intl/uconv/tools/indexes.json
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-  "big5":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,17392,19506,17923,17830,17784,160359,19831,17843,162993,19682,163013,15253,18230,18244,19527,19520,148159,144919,160594,159371,159954,19543,172881,18255,17882,19589,162924,19719,19108,18081,158499,29221,154196,137827,146950,147297,26189,22267,null,32149,22813,166841,15860,38708,162799,23515,138590,23204,13861,171696,23249,23479,23804,26478,34195,170309,29793,29853,14453,138579,145054,155681,16108,153822,15093,31484,40855,147809,166157,143850,133770,143966,17162,33924,40854,37935,18736,34323,22678,38730,37400,31184,31282,26208,27177,34973,29772,31685,26498,31276,21071,36934,13542,29636,155065,29894,40903,22451,18735,21580,16689,145038,22552,31346,162661,35727,18094,159368,16769,155033,31662,140476,40904,140481,140489,140492,40905,34052,144827,16564,40906,17633,175615,25281,28782,40907,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,12736,12737,12738,12739,12740,131340,12741,131281,131277,12742,12743,131275,139240,12744,131274,12745,12746,12747,12748,131342,12749,12750,256,193,461,192,274,201,282,200,332,211,465,210,null,7870,null,7872,202,257,225,462,224,593,275,233,283,232,299,237,464,236,333,243,466,242,363,250,468,249,470,472,474,476,252,null,7871,null,7873,234,609,9178,9179,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,172969,135493,null,25866,null,null,20029,28381,40270,37343,null,null,161589,25745,20250,20264,20392,20822,20852,20892,20964,21153,21160,21307,21326,21457,21464,22242,22768,22788,22791,22834,22836,23398,23454,23455,23706,24198,24635,25993,26622,26628,26725,27982,28860,30005,32420,32428,32442,32455,32463,32479,32518,32567,33402,33487,33647,35270,35774,35810,36710,36711,36718,29713,31996,32205,26950,31433,21031,null,null,null,null,37260,30904,37214,32956,null,36107,33014,133607,null,null,32927,40647,19661,40393,40460,19518,171510,159758,40458,172339,13761,null,28314,33342,29977,null,18705,39532,39567,40857,31111,164972,138698,132560,142054,20004,20097,20096,20103,20159,20203,20279,13388,20413,15944,20483,20616,13437,13459,13477,20870,22789,20955,20988,20997,20105,21113,21136,21287,13767,21417,13649,21424,13651,21442,21539,13677,13682,13953,21651,21667,21684,21689,21712,21743,21784,21795,21800,13720,21823,13733,13759,21975,13765,163204,21797,null,134210,134421,151851,21904,142534,14828,131905,36422,150968,169189,16467,164030,30586,142392,14900,18389,164189,158194,151018,25821,134524,135092,134357,135412,25741,36478,134806,134155,135012,142505,164438,148691,null,134470,170573,164073,18420,151207,142530,39602,14951,169460,16365,13574,152263,169940,161992,142660,40302,38933,null,17369,155813,25780,21731,142668,142282,135287,14843,135279,157402,157462,162208,25834,151634,134211,36456,139681,166732,132913,null,18443,131497,16378,22643,142733,null,148936,132348,155799,134988,134550,21881,16571,17338,null,19124,141926,135325,33194,39157,134556,25465,14846,141173,36288,22177,25724,15939,null,173569,134665,142031,142537,null,135368,145858,14738,14854,164507,13688,155209,139463,22098,134961,142514,169760,13500,27709,151099,null,null,161140,142987,139784,173659,167117,134778,134196,157724,32659,135375,141315,141625,13819,152035,134796,135053,134826,16275,134960,134471,135503,134732,null,134827,134057,134472,135360,135485,16377,140950,25650,135085,144372,161337,142286,134526,134527,142417,142421,14872,134808,135367,134958,173618,158544,167122,167321,167114,38314,21708,33476,21945,null,171715,39974,39606,161630,142830,28992,33133,33004,23580,157042,33076,14231,21343,164029,37302,134906,134671,134775,134907,13789,151019,13833,134358,22191,141237,135369,134672,134776,135288,135496,164359,136277,134777,151120,142756,23124,135197,135198,135413,135414,22428,134673,161428,164557,135093,134779,151934,14083,135094,135552,152280,172733,149978,137274,147831,164476,22681,21096,13850,153405,31666,23400,18432,19244,40743,18919,39967,39821,154484,143677,22011,13810,22153,20008,22786,138177,194680,38737,131206,20059,20155,13630,23587,24401,24516,14586,25164,25909,27514,27701,27706,28780,29227,20012,29357,149737,32594,31035,31993,32595,156266,13505,null,156491,32770,32896,157202,158033,21341,34916,35265,161970,35744,36125,38021,38264,38271,38376,167439,38886,39029,39118,39134,39267,170000,40060,40479,40644,27503,63751,20023,131207,38429,25143,38050,null,20539,28158,171123,40870,15817,34959,147790,28791,23797,19232,152013,13657,154928,24866,166450,36775,37366,29073,26393,29626,144001,172295,15499,137600,19216,30948,29698,20910,165647,16393,27235,172730,16931,34319,133743,31274,170311,166634,38741,28749,21284,139390,37876,30425,166371,40871,30685,20131,20464,20668,20015,20247,40872,21556,32139,22674,22736,138678,24210,24217,24514,141074,25995,144377,26905,27203,146531,27903,null,29184,148741,29580,16091,150035,23317,29881,35715,154788,153237,31379,31724,31939,32364,33528,34199,40873,34960,40874,36537,40875,36815,34143,39392,37409,40876,167353,136255,16497,17058,23066,null,null,null,39016,26475,17014,22333,null,34262,149883,33471,160013,19585,159092,23931,158485,159678,40877,40878,23446,40879,26343,32347,28247,31178,15752,17603,143958,141206,17306,17718,null,23765,146202,35577,23672,15634,144721,23928,40882,29015,17752,147692,138787,19575,14712,13386,131492,158785,35532,20404,131641,22975,33132,38998,170234,24379,134047,null,139713,166253,16642,18107,168057,16135,40883,172469,16632,14294,18167,158790,16764,165554,160767,17773,14548,152730,17761,17691,19849,19579,19830,17898,16328,150287,13921,17630,17597,16877,23870,23880,23894,15868,14351,23972,23993,14368,14392,24130,24253,24357,24451,14600,14612,14655,14669,24791,24893,23781,14729,25015,25017,25039,14776,25132,25232,25317,25368,14840,22193,14851,25570,25595,25607,25690,14923,25792,23829,22049,40863,14999,25990,15037,26111,26195,15090,26258,15138,26390,15170,26532,26624,15192,26698,26756,15218,15217,15227,26889,26947,29276,26980,27039,27013,15292,27094,15325,27237,27252,27249,27266,15340,27289,15346,27307,27317,27348,27382,27521,27585,27626,27765,27818,15563,27906,27910,27942,28033,15599,28068,28081,28181,28184,28201,28294,166336,28347,28386,28378,40831,28392,28393,28452,28468,15686,147265,28545,28606,15722,15733,29111,23705,15754,28716,15761,28752,28756,28783,28799,28809,131877,17345,13809,134872,147159,22462,159443,28990,153568,13902,27042,166889,23412,31305,153825,169177,31333,31357,154028,31419,31408,31426,31427,29137,156813,16842,31450,31453,31466,16879,21682,154625,31499,31573,31529,152334,154878,31650,31599,33692,154548,158847,31696,33825,31634,31672,154912,15789,154725,33938,31738,31750,31797,154817,31812,31875,149634,31910,26237,148856,31945,31943,31974,31860,31987,31989,31950,32359,17693,159300,32093,159446,29837,32137,32171,28981,32179,32210,147543,155689,32228,15635,32245,137209,32229,164717,32285,155937,155994,32366,32402,17195,37996,32295,32576,32577,32583,31030,156368,39393,32663,156497,32675,136801,131176,17756,145254,17667,164666,32762,156809,32773,32776,32797,32808,32815,172167,158915,32827,32828,32865,141076,18825,157222,146915,157416,26405,32935,166472,33031,33050,22704,141046,27775,156824,151480,25831,136330,33304,137310,27219,150117,150165,17530,33321,133901,158290,146814,20473,136445,34018,33634,158474,149927,144688,137075,146936,33450,26907,194964,16859,34123,33488,33562,134678,137140,14017,143741,144730,33403,33506,33560,147083,159139,158469,158615,144846,15807,33565,21996,33669,17675,159141,33708,33729,33747,13438,159444,27223,34138,13462,159298,143087,33880,154596,33905,15827,17636,27303,33866,146613,31064,33960,158614,159351,159299,34014,33807,33681,17568,33939,34020,154769,16960,154816,17731,34100,23282,159385,17703,34163,17686,26559,34326,165413,165435,34241,159880,34306,136578,159949,194994,17770,34344,13896,137378,21495,160666,34430,34673,172280,34798,142375,34737,34778,34831,22113,34412,26710,17935,34885,34886,161248,146873,161252,34910,34972,18011,34996,34997,25537,35013,30583,161551,35207,35210,35238,35241,35239,35260,166437,35303,162084,162493,35484,30611,37374,35472,162393,31465,162618,147343,18195,162616,29052,35596,35615,152624,152933,35647,35660,35661,35497,150138,35728,35739,35503,136927,17941,34895,35995,163156,163215,195028,14117,163155,36054,163224,163261,36114,36099,137488,36059,28764,36113,150729,16080,36215,36265,163842,135188,149898,15228,164284,160012,31463,36525,36534,36547,37588,36633,36653,164709,164882,36773,37635,172703,133712,36787,18730,166366,165181,146875,24312,143970,36857,172052,165564,165121,140069,14720,159447,36919,165180,162494,36961,165228,165387,37032,165651,37060,165606,37038,37117,37223,15088,37289,37316,31916,166195,138889,37390,27807,37441,37474,153017,37561,166598,146587,166668,153051,134449,37676,37739,166625,166891,28815,23235,166626,166629,18789,37444,166892,166969,166911,37747,37979,36540,38277,38310,37926,38304,28662,17081,140922,165592,135804,146990,18911,27676,38523,38550,16748,38563,159445,25050,38582,30965,166624,38589,21452,18849,158904,131700,156688,168111,168165,150225,137493,144138,38705,34370,38710,18959,17725,17797,150249,28789,23361,38683,38748,168405,38743,23370,168427,38751,37925,20688,143543,143548,38793,38815,38833,38846,38848,38866,38880,152684,38894,29724,169011,38911,38901,168989,162170,19153,38964,38963,38987,39014,15118,160117,15697,132656,147804,153350,39114,39095,39112,39111,19199,159015,136915,21936,39137,39142,39148,37752,39225,150057,19314,170071,170245,39413,39436,39483,39440,39512,153381,14020,168113,170965,39648,39650,170757,39668,19470,39700,39725,165376,20532,39732,158120,14531,143485,39760,39744,171326,23109,137315,39822,148043,39938,39935,39948,171624,40404,171959,172434,172459,172257,172323,172511,40318,40323,172340,40462,26760,40388,139611,172435,172576,137531,172595,40249,172217,172724,40592,40597,40606,40610,19764,40618,40623,148324,40641,15200,14821,15645,20274,14270,166955,40706,40712,19350,37924,159138,40727,40726,40761,22175,22154,40773,39352,168075,38898,33919,40802,40809,31452,40846,29206,19390,149877,149947,29047,150008,148296,150097,29598,166874,137466,31135,166270,167478,37737,37875,166468,37612,37761,37835,166252,148665,29207,16107,30578,31299,28880,148595,148472,29054,137199,28835,137406,144793,16071,137349,152623,137208,14114,136955,137273,14049,137076,137425,155467,14115,136896,22363,150053,136190,135848,136134,136374,34051,145062,34051,33877,149908,160101,146993,152924,147195,159826,17652,145134,170397,159526,26617,14131,15381,15847,22636,137506,26640,16471,145215,147681,147595,147727,158753,21707,22174,157361,22162,135135,134056,134669,37830,166675,37788,20216,20779,14361,148534,20156,132197,131967,20299,20362,153169,23144,131499,132043,14745,131850,132116,13365,20265,131776,167603,131701,35546,131596,20120,20685,20749,20386,20227,150030,147082,20290,20526,20588,20609,20428,20453,20568,20732,20825,20827,20829,20830,28278,144789,147001,147135,28018,137348,147081,20904,20931,132576,17629,132259,132242,132241,36218,166556,132878,21081,21156,133235,21217,37742,18042,29068,148364,134176,149932,135396,27089,134685,29817,16094,29849,29716,29782,29592,19342,150204,147597,21456,13700,29199,147657,21940,131909,21709,134086,22301,37469,38644,37734,22493,22413,22399,13886,22731,23193,166470,136954,137071,136976,23084,22968,37519,23166,23247,23058,153926,137715,137313,148117,14069,27909,29763,23073,155267,23169,166871,132115,37856,29836,135939,28933,18802,37896,166395,37821,14240,23582,23710,24158,24136,137622,137596,146158,24269,23375,137475,137476,14081,137376,14045,136958,14035,33066,166471,138682,144498,166312,24332,24334,137511,137131,23147,137019,23364,34324,161277,34912,24702,141408,140843,24539,16056,140719,140734,168072,159603,25024,131134,131142,140827,24985,24984,24693,142491,142599,149204,168269,25713,149093,142186,14889,142114,144464,170218,142968,25399,173147,25782,25393,25553,149987,142695,25252,142497,25659,25963,26994,15348,143502,144045,149897,144043,21773,144096,137433,169023,26318,144009,143795,15072,16784,152964,166690,152975,136956,152923,152613,30958,143619,137258,143924,13412,143887,143746,148169,26254,159012,26219,19347,26160,161904,138731,26211,144082,144097,26142,153714,14545,145466,145340,15257,145314,144382,29904,15254,26511,149034,26806,26654,15300,27326,14435,145365,148615,27187,27218,27337,27397,137490,25873,26776,27212,15319,27258,27479,147392,146586,37792,37618,166890,166603,37513,163870,166364,37991,28069,28427,149996,28007,147327,15759,28164,147516,23101,28170,22599,27940,30786,28987,148250,148086,28913,29264,29319,29332,149391,149285,20857,150180,132587,29818,147192,144991,150090,149783,155617,16134,16049,150239,166947,147253,24743,16115,29900,29756,37767,29751,17567,159210,17745,30083,16227,150745,150790,16216,30037,30323,173510,15129,29800,166604,149931,149902,15099,15821,150094,16127,149957,149747,37370,22322,37698,166627,137316,20703,152097,152039,30584,143922,30478,30479,30587,149143,145281,14942,149744,29752,29851,16063,150202,150215,16584,150166,156078,37639,152961,30750,30861,30856,30930,29648,31065,161601,153315,16654,31131,33942,31141,27181,147194,31290,31220,16750,136934,16690,37429,31217,134476,149900,131737,146874,137070,13719,21867,13680,13994,131540,134157,31458,23129,141045,154287,154268,23053,131675,30960,23082,154566,31486,16889,31837,31853,16913,154547,155324,155302,31949,150009,137136,31886,31868,31918,27314,32220,32263,32211,32590,156257,155996,162632,32151,155266,17002,158581,133398,26582,131150,144847,22468,156690,156664,149858,32733,31527,133164,154345,154947,31500,155150,39398,34373,39523,27164,144447,14818,150007,157101,39455,157088,33920,160039,158929,17642,33079,17410,32966,33033,33090,157620,39107,158274,33378,33381,158289,33875,159143,34320,160283,23174,16767,137280,23339,137377,23268,137432,34464,195004,146831,34861,160802,23042,34926,20293,34951,35007,35046,35173,35149,153219,35156,161669,161668,166901,166873,166812,166393,16045,33955,18165,18127,14322,35389,35356,169032,24397,37419,148100,26068,28969,28868,137285,40301,35999,36073,163292,22938,30659,23024,17262,14036,36394,36519,150537,36656,36682,17140,27736,28603,140065,18587,28537,28299,137178,39913,14005,149807,37051,37015,21873,18694,37307,37892,166475,16482,166652,37927,166941,166971,34021,35371,38297,38311,38295,38294,167220,29765,16066,149759,150082,148458,16103,143909,38543,167655,167526,167525,16076,149997,150136,147438,29714,29803,16124,38721,168112,26695,18973,168083,153567,38749,37736,166281,166950,166703,156606,37562,23313,35689,18748,29689,147995,38811,38769,39224,134950,24001,166853,150194,38943,169178,37622,169431,37349,17600,166736,150119,166756,39132,166469,16128,37418,18725,33812,39227,39245,162566,15869,39323,19311,39338,39516,166757,153800,27279,39457,23294,39471,170225,19344,170312,39356,19389,19351,37757,22642,135938,22562,149944,136424,30788,141087,146872,26821,15741,37976,14631,24912,141185,141675,24839,40015,40019,40059,39989,39952,39807,39887,171565,39839,172533,172286,40225,19630,147716,40472,19632,40204,172468,172269,172275,170287,40357,33981,159250,159711,158594,34300,17715,159140,159364,159216,33824,34286,159232,145367,155748,31202,144796,144960,18733,149982,15714,37851,37566,37704,131775,30905,37495,37965,20452,13376,36964,152925,30781,30804,30902,30795,137047,143817,149825,13978,20338,28634,28633,28702,28702,21524,147893,22459,22771,22410,40214,22487,28980,13487,147884,29163,158784,151447,23336,137141,166473,24844,23246,23051,17084,148616,14124,19323,166396,37819,37816,137430,134941,33906,158912,136211,148218,142374,148417,22932,146871,157505,32168,155995,155812,149945,149899,166394,37605,29666,16105,29876,166755,137375,16097,150195,27352,29683,29691,16086,150078,150164,137177,150118,132007,136228,149989,29768,149782,28837,149878,37508,29670,37727,132350,37681,166606,166422,37766,166887,153045,18741,166530,29035,149827,134399,22180,132634,134123,134328,21762,31172,137210,32254,136898,150096,137298,17710,37889,14090,166592,149933,22960,137407,137347,160900,23201,14050,146779,14000,37471,23161,166529,137314,37748,15565,133812,19094,14730,20724,15721,15692,136092,29045,17147,164376,28175,168164,17643,27991,163407,28775,27823,15574,147437,146989,28162,28428,15727,132085,30033,14012,13512,18048,16090,18545,22980,37486,18750,36673,166940,158656,22546,22472,14038,136274,28926,148322,150129,143331,135856,140221,26809,26983,136088,144613,162804,145119,166531,145366,144378,150687,27162,145069,158903,33854,17631,17614,159014,159057,158850,159710,28439,160009,33597,137018,33773,158848,159827,137179,22921,23170,137139,23137,23153,137477,147964,14125,23023,137020,14023,29070,37776,26266,148133,23150,23083,148115,27179,147193,161590,148571,148170,28957,148057,166369,20400,159016,23746,148686,163405,148413,27148,148054,135940,28838,28979,148457,15781,27871,194597,150095,32357,23019,23855,15859,24412,150109,137183,32164,33830,21637,146170,144128,131604,22398,133333,132633,16357,139166,172726,28675,168283,23920,29583,31955,166489,168992,20424,32743,29389,29456,162548,29496,29497,153334,29505,29512,16041,162584,36972,29173,149746,29665,33270,16074,30476,16081,27810,22269,29721,29726,29727,16098,16112,16116,16122,29907,16142,16211,30018,30061,30066,30093,16252,30152,30172,16320,30285,16343,30324,16348,30330,151388,29064,22051,35200,22633,16413,30531,16441,26465,16453,13787,30616,16490,16495,23646,30654,30667,22770,30744,28857,30748,16552,30777,30791,30801,30822,33864,152885,31027,26627,31026,16643,16649,31121,31129,36795,31238,36796,16743,31377,16818,31420,33401,16836,31439,31451,16847,20001,31586,31596,31611,31762,31771,16992,17018,31867,31900,17036,31928,17044,31981,36755,28864,134351,32207,32212,32208,32253,32686,32692,29343,17303,32800,32805,31545,32814,32817,32852,15820,22452,28832,32951,33001,17389,33036,29482,33038,33042,30048,33044,17409,15161,33110,33113,33114,17427,22586,33148,33156,17445,33171,17453,33189,22511,33217,33252,33364,17551,33446,33398,33482,33496,33535,17584,33623,38505,27018,33797,28917,33892,24803,33928,17668,33982,34017,34040,34064,34104,34130,17723,34159,34160,34272,17783,34418,34450,34482,34543,38469,34699,17926,17943,34990,35071,35108,35143,35217,162151,35369,35384,35476,35508,35921,36052,36082,36124,18328,22623,36291,18413,20206,36410,21976,22356,36465,22005,36528,18487,36558,36578,36580,36589,36594,36791,36801,36810,36812,36915,39364,18605,39136,37395,18718,37416,37464,37483,37553,37550,37567,37603,37611,37619,37620,37629,37699,37764,37805,18757,18769,40639,37911,21249,37917,37933,37950,18794,37972,38009,38189,38306,18855,38388,38451,18917,26528,18980,38720,18997,38834,38850,22100,19172,24808,39097,19225,39153,22596,39182,39193,20916,39196,39223,39234,39261,39266,19312,39365,19357,39484,39695,31363,39785,39809,39901,39921,39924,19565,39968,14191,138178,40265,39994,40702,22096,40339,40381,40384,40444,38134,36790,40571,40620,40625,40637,40646,38108,40674,40689,40696,31432,40772,131220,131767,132000,26906,38083,22956,132311,22592,38081,14265,132565,132629,132726,136890,22359,29043,133826,133837,134079,21610,194619,134091,21662,134139,134203,134227,134245,134268,24807,134285,22138,134325,134365,134381,134511,134578,134600,26965,39983,34725,134660,134670,134871,135056,134957,134771,23584,135100,24075,135260,135247,135286,26398,135291,135304,135318,13895,135359,135379,135471,135483,21348,33965,135907,136053,135990,35713,136567,136729,137155,137159,20088,28859,137261,137578,137773,137797,138282,138352,138412,138952,25283,138965,139029,29080,26709,139333,27113,14024,139900,140247,140282,141098,141425,141647,33533,141671,141715,142037,35237,142056,36768,142094,38840,142143,38983,39613,142412,null,142472,142519,154600,142600,142610,142775,142741,142914,143220,143308,143411,143462,144159,144350,24497,26184,26303,162425,144743,144883,29185,149946,30679,144922,145174,32391,131910,22709,26382,26904,146087,161367,155618,146961,147129,161278,139418,18640,19128,147737,166554,148206,148237,147515,148276,148374,150085,132554,20946,132625,22943,138920,15294,146687,148484,148694,22408,149108,14747,149295,165352,170441,14178,139715,35678,166734,39382,149522,149755,150037,29193,150208,134264,22885,151205,151430,132985,36570,151596,21135,22335,29041,152217,152601,147274,150183,21948,152646,152686,158546,37332,13427,152895,161330,152926,18200,152930,152934,153543,149823,153693,20582,13563,144332,24798,153859,18300,166216,154286,154505,154630,138640,22433,29009,28598,155906,162834,36950,156082,151450,35682,156674,156746,23899,158711,36662,156804,137500,35562,150006,156808,147439,156946,19392,157119,157365,141083,37989,153569,24981,23079,194765,20411,22201,148769,157436,20074,149812,38486,28047,158909,13848,35191,157593,157806,156689,157790,29151,157895,31554,168128,133649,157990,37124,158009,31301,40432,158202,39462,158253,13919,156777,131105,31107,158260,158555,23852,144665,33743,158621,18128,158884,30011,34917,159150,22710,14108,140685,159819,160205,15444,160384,160389,37505,139642,160395,37680,160486,149968,27705,38047,160848,134904,34855,35061,141606,164979,137137,28344,150058,137248,14756,14009,23568,31203,17727,26294,171181,170148,35139,161740,161880,22230,16607,136714,14753,145199,164072,136133,29101,33638,162269,168360,23143,19639,159919,166315,162301,162314,162571,163174,147834,31555,31102,163849,28597,172767,27139,164632,21410,159239,37823,26678,38749,164207,163875,158133,136173,143919,163912,23941,166960,163971,22293,38947,166217,23979,149896,26046,27093,21458,150181,147329,15377,26422,163984,164084,164142,139169,164175,164233,164271,164378,164614,164655,164746,13770,164968,165546,18682,25574,166230,30728,37461,166328,17394,166375,17375,166376,166726,166868,23032,166921,36619,167877,168172,31569,168208,168252,15863,168286,150218,36816,29327,22155,169191,169449,169392,169400,169778,170193,170313,170346,170435,170536,170766,171354,171419,32415,171768,171811,19620,38215,172691,29090,172799,19857,36882,173515,19868,134300,36798,21953,36794,140464,36793,150163,17673,32383,28502,27313,20202,13540,166700,161949,14138,36480,137205,163876,166764,166809,162366,157359,15851,161365,146615,153141,153942,20122,155265,156248,22207,134765,36366,23405,147080,150686,25566,25296,137206,137339,25904,22061,154698,21530,152337,15814,171416,19581,22050,22046,32585,155352,22901,146752,34672,19996,135146,134473,145082,33047,40286,36120,30267,40005,30286,30649,37701,21554,33096,33527,22053,33074,33816,32957,21994,31074,22083,21526,134813,13774,22021,22001,26353,164578,13869,30004,22000,21946,21655,21874,134209,134294,24272,151880,134774,142434,134818,40619,32090,21982,135285,25245,38765,21652,36045,29174,37238,25596,25529,25598,21865,142147,40050,143027,20890,13535,134567,20903,21581,21790,21779,30310,36397,157834,30129,32950,34820,34694,35015,33206,33820,135361,17644,29444,149254,23440,33547,157843,22139,141044,163119,147875,163187,159440,160438,37232,135641,37384,146684,173737,134828,134905,29286,138402,18254,151490,163833,135147,16634,40029,25887,142752,18675,149472,171388,135148,134666,24674,161187,135149,null,155720,135559,29091,32398,40272,19994,19972,13687,23309,27826,21351,13996,14812,21373,13989,149016,22682,150382,33325,21579,22442,154261,133497,null,14930,140389,29556,171692,19721,39917,146686,171824,19547,151465,169374,171998,33884,146870,160434,157619,145184,25390,32037,147191,146988,14890,36872,21196,15988,13946,17897,132238,30272,23280,134838,30842,163630,22695,16575,22140,39819,23924,30292,173108,40581,19681,30201,14331,24857,143578,148466,null,22109,135849,22439,149859,171526,21044,159918,13741,27722,40316,31830,39737,22494,137068,23635,25811,169168,156469,160100,34477,134440,159010,150242,134513,null,20990,139023,23950,38659,138705,40577,36940,31519,39682,23761,31651,25192,25397,39679,31695,39722,31870,39726,31810,31878,39957,31740,39689,40727,39963,149822,40794,21875,23491,20477,40600,20466,21088,15878,21201,22375,20566,22967,24082,38856,40363,36700,21609,38836,39232,38842,21292,24880,26924,21466,39946,40194,19515,38465,27008,20646,30022,137069,39386,21107,null,37209,38529,37212,null,37201,167575,25471,159011,27338,22033,37262,30074,25221,132092,29519,31856,154657,146685,null,149785,30422,39837,20010,134356,33726,34882,null,23626,27072,20717,22394,21023,24053,20174,27697,131570,20281,21660,21722,21146,36226,13822,24332,13811,null,27474,37244,40869,39831,38958,39092,39610,40616,40580,29050,31508,null,27642,34840,32632,null,22048,173642,36471,40787,null,36308,36431,40476,36353,25218,164733,36392,36469,31443,150135,31294,30936,27882,35431,30215,166490,40742,27854,34774,30147,172722,30803,194624,36108,29410,29553,35629,29442,29937,36075,150203,34351,24506,34976,17591,null,137275,159237,null,35454,140571,null,24829,30311,39639,40260,37742,39823,34805,null,34831,36087,29484,38689,39856,13782,29362,19463,31825,39242,155993,24921,19460,40598,24957,null,22367,24943,25254,25145,25294,14940,25058,21418,144373,25444,26626,13778,23895,166850,36826,167481,null,20697,138566,30982,21298,38456,134971,16485,null,30718,null,31938,155418,31962,31277,32870,32867,32077,29957,29938,35220,33306,26380,32866,160902,32859,29936,33027,30500,35209,157644,30035,159441,34729,34766,33224,34700,35401,36013,35651,30507,29944,34010,13877,27058,36262,null,35241,29800,28089,34753,147473,29927,15835,29046,24740,24988,15569,29026,24695,null,32625,166701,29264,24809,19326,21024,15384,146631,155351,161366,152881,137540,135934,170243,159196,159917,23745,156077,166415,145015,131310,157766,151310,17762,23327,156492,40784,40614,156267,12288,65292,12289,12290,65294,8231,65307,65306,65311,65281,65072,8230,8229,65104,65105,65106,183,65108,65109,65110,65111,65372,8211,65073,8212,65075,9588,65076,65103,65288,65289,65077,65078,65371,65373,65079,65080,12308,12309,65081,65082,12304,12305,65083,65084,12298,12299,65085,65086,12296,12297,65087,65088,12300,12301,65089,65090,12302,12303,65091,65092,65113,65114,65115,65116,65117,65118,8216,8217,8220,8221,12317,12318,8245,8242,65283,65286,65290,8251,167,12291,9675,9679,9651,9650,9678,9734,9733,9671,9670,9633,9632,9661,9660,12963,8453,175,65507,65343,717,65097,65098,65101,65102,65099,65100,65119,65120,65121,65291,65293,215,247,177,8730,65308,65310,65309,8806,8807,8800,8734,8786,8801,65122,65123,65124,65125,65126,65374,8745,8746,8869,8736,8735,8895,13266,13265,8747,8750,8757,8756,9792,9794,8853,8857,8593,8595,8592,8594,8598,8599,8601,8600,8741,8739,65295,65340,8725,65128,65284,65509,12306,65504,65505,65285,65312,8451,8457,65129,65130,65131,13269,13212,13213,13214,13262,13217,13198,13199,13252,176,20825,20827,20830,20829,20833,20835,21991,29929,31950,9601,9602,9603,9604,9605,9606,9607,9608,9615,9614,9613,9612,9611,9610,9609,9532,9524,9516,9508,9500,9620,9472,9474,9621,9484,9488,9492,9496,9581,9582,9584,9583,9552,9566,9578,9569,9698,9699,9701,9700,9585,9586,9587,65296,65297,65298,65299,65300,65301,65302,65303,65304,65305,8544,8545,8546,8547,8548,8549,8550,8551,8552,8553,12321,12322,12323,12324,12325,12326,12327,12328,12329,21313,21316,21317,65313,65314,65315,65316,65317,65318,65319,65320,65321,65322,65323,65324,65325,65326,65327,65328,65329,65330,65331,65332,65333,65334,65335,65336,65337,65338,65345,65346,65347,65348,65349,65350,65351,65352,65353,65354,65355,65356,65357,65358,65359,65360,65361,65362,65363,65364,65365,65366,65367,65368,65369,65370,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,931,932,933,934,935,936,937,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,963,964,965,966,967,968,969,12549,12550,12551,12552,12553,12554,12555,12556,12557,12558,12559,12560,12561,12562,12563,12564,12565,12566,12567,12568,12569,12570,12571,12572,12573,12574,12575,12576,12577,12578,12579,12580,12581,12582,12583,12584,12585,729,713,714,711,715,9216,9217,9218,9219,9220,9221,9222,9223,9224,9225,9226,9227,9228,9229,9230,9231,9232,9233,9234,9235,9236,9237,9238,9239,9240,9241,9242,9243,9244,9245,9246,9247,9249,8364,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,19968,20057,19969,19971,20035,20061,20102,20108,20154,20799,20837,20843,20960,20992,20993,21147,21269,21313,21340,21448,19977,19979,19976,19978,20011,20024,20961,20037,20040,20063,20062,20110,20129,20800,20995,21242,21315,21449,21475,22303,22763,22805,22823,22899,23376,23377,23379,23544,23567,23586,23608,23665,24029,24037,24049,24050,24051,24062,24178,24318,24331,24339,25165,19985,19984,19981,20013,20016,20025,20043,23609,20104,20113,20117,20114,20116,20130,20161,20160,20163,20166,20167,20173,20170,20171,20164,20803,20801,20839,20845,20846,20844,20887,20982,20998,20999,21000,21243,21246,21247,21270,21305,21320,21319,21317,21342,21380,21451,21450,21453,22764,22825,22827,22826,22829,23380,23569,23588,23610,23663,24052,24187,24319,24340,24341,24515,25096,25142,25163,25166,25903,25991,26007,26020,26041,26085,26352,26376,26408,27424,27490,27513,27595,27604,27611,27663,27700,28779,29226,29238,29243,29255,29273,29275,29356,29579,19993,19990,19989,19988,19992,20027,20045,20047,20046,20197,20184,20180,20181,20182,20183,20195,20196,20185,20190,20805,20804,20873,20874,20908,20985,20986,20984,21002,21152,21151,21253,21254,21271,21277,20191,21322,21321,21345,21344,21359,21358,21435,21487,21476,21491,21484,21486,21481,21480,21500,21496,21493,21483,21478,21482,21490,21489,21488,21477,21485,21499,22235,22234,22806,22830,22833,22900,22902,23381,23427,23612,24040,24039,24038,24066,24067,24179,24188,24321,24344,24343,24517,25098,25171,25172,25170,25169,26021,26086,26414,26412,26410,26411,26413,27491,27597,27665,27664,27704,27713,27712,27710,29359,29572,29577,29916,29926,29976,29983,29992,29993,30000,30001,30002,30003,30091,30333,30382,30399,30446,30683,30690,30707,31034,31166,31348,31435,19998,19999,20050,20051,20073,20121,20132,20134,20133,20223,20233,20249,20234,20245,20237,20240,20241,20239,20210,20214,20219,20208,20211,20221,20225,20235,20809,20807,20806,20808,20840,20849,20877,20912,21015,21009,21010,21006,21014,21155,21256,21281,21280,21360,21361,21513,21519,21516,21514,21520,21505,21515,21508,21521,21517,21512,21507,21518,21510,21522,22240,22238,22237,22323,22320,22312,22317,22316,22319,22313,22809,22810,22839,22840,22916,22904,22915,22909,22905,22914,22913,23383,23384,23431,23432,23429,23433,23546,23574,23673,24030,24070,24182,24180,24335,24347,24537,24534,25102,25100,25101,25104,25187,25179,25176,25910,26089,26088,26092,26093,26354,26355,26377,26429,26420,26417,26421,27425,27492,27515,27670,27741,27735,27737,27743,27744,27728,27733,27745,27739,27725,27726,28784,29279,29277,30334,31481,31859,31992,32566,32650,32701,32769,32771,32780,32786,32819,32895,32905,32907,32908,33251,33258,33267,33276,33292,33307,33311,33390,33394,33406,34411,34880,34892,34915,35199,38433,20018,20136,20301,20303,20295,20311,20318,20276,20315,20309,20272,20304,20305,20285,20282,20280,20291,20308,20284,20294,20323,20316,20320,20271,20302,20278,20313,20317,20296,20314,20812,20811,20813,20853,20918,20919,21029,21028,21033,21034,21032,21163,21161,21162,21164,21283,21363,21365,21533,21549,21534,21566,21542,21582,21543,21574,21571,21555,21576,21570,21531,21545,21578,21561,21563,21560,21550,21557,21558,21536,21564,21568,21553,21547,21535,21548,22250,22256,22244,22251,22346,22353,22336,22349,22343,22350,22334,22352,22351,22331,22767,22846,22941,22930,22952,22942,22947,22937,22934,22925,22948,22931,22922,22949,23389,23388,23386,23387,23436,23435,23439,23596,23616,23617,23615,23614,23696,23697,23700,23692,24043,24076,24207,24199,24202,24311,24324,24351,24420,24418,24439,24441,24536,24524,24535,24525,24561,24555,24568,24554,25106,25105,25220,25239,25238,25216,25206,25225,25197,25226,25212,25214,25209,25203,25234,25199,25240,25198,25237,25235,25233,25222,25913,25915,25912,26097,26356,26463,26446,26447,26448,26449,26460,26454,26462,26441,26438,26464,26451,26455,27493,27599,27714,27742,27801,27777,27784,27785,27781,27803,27754,27770,27792,27760,27788,27752,27798,27794,27773,27779,27762,27774,27764,27782,27766,27789,27796,27800,27778,28790,28796,28797,28792,29282,29281,29280,29380,29378,29590,29996,29995,30007,30008,30338,30447,30691,31169,31168,31167,31350,31995,32597,32918,32915,32925,32920,32923,32922,32946,33391,33426,33419,33421,35211,35282,35328,35895,35910,35925,35997,36196,36208,36275,36523,36554,36763,36784,36802,36806,36805,36804,24033,37009,37026,37034,37030,37027,37193,37318,37324,38450,38446,38449,38442,38444,20006,20054,20083,20107,20123,20126,20139,20140,20335,20381,20365,20339,20351,20332,20379,20363,20358,20355,20336,20341,20360,20329,20347,20374,20350,20367,20369,20346,20820,20818,20821,20841,20855,20854,20856,20925,20989,21051,21048,21047,21050,21040,21038,21046,21057,21182,21179,21330,21332,21331,21329,21350,21367,21368,21369,21462,21460,21463,21619,21621,21654,21624,21653,21632,21627,21623,21636,21650,21638,21628,21648,21617,21622,21644,21658,21602,21608,21643,21629,21646,22266,22403,22391,22378,22377,22369,22374,22372,22396,22812,22857,22855,22856,22852,22868,22974,22971,22996,22969,22958,22993,22982,22992,22989,22987,22995,22986,22959,22963,22994,22981,23391,23396,23395,23447,23450,23448,23452,23449,23451,23578,23624,23621,23622,23735,23713,23736,23721,23723,23729,23731,24088,24090,24086,24085,24091,24081,24184,24218,24215,24220,24213,24214,24310,24358,24359,24361,24448,24449,24447,24444,24541,24544,24573,24565,24575,24591,24596,24623,24629,24598,24618,24597,24609,24615,24617,24619,24603,25110,25109,25151,25150,25152,25215,25289,25292,25284,25279,25282,25273,25298,25307,25259,25299,25300,25291,25288,25256,25277,25276,25296,25305,25287,25293,25269,25306,25265,25304,25302,25303,25286,25260,25294,25918,26023,26044,26106,26132,26131,26124,26118,26114,26126,26112,26127,26133,26122,26119,26381,26379,26477,26507,26517,26481,26524,26483,26487,26503,26525,26519,26479,26480,26495,26505,26494,26512,26485,26522,26515,26492,26474,26482,27427,27494,27495,27519,27667,27675,27875,27880,27891,27825,27852,27877,27827,27837,27838,27836,27874,27819,27861,27859,27832,27844,27833,27841,27822,27863,27845,27889,27839,27835,27873,27867,27850,27820,27887,27868,27862,27872,28821,28814,28818,28810,28825,29228,29229,29240,29256,29287,29289,29376,29390,29401,29399,29392,29609,29608,29599,29611,29605,30013,30109,30105,30106,30340,30402,30450,30452,30693,30717,31038,31040,31041,31177,31176,31354,31353,31482,31998,32596,32652,32651,32773,32954,32933,32930,32945,32929,32939,32937,32948,32938,32943,33253,33278,33293,33459,33437,33433,33453,33469,33439,33465,33457,33452,33445,33455,33464,33443,33456,33470,33463,34382,34417,21021,34920,36555,36814,36820,36817,37045,37048,37041,37046,37319,37329,38263,38272,38428,38464,38463,38459,38468,38466,38585,38632,38738,38750,20127,20141,20142,20449,20405,20399,20415,20448,20433,20431,20445,20419,20406,20440,20447,20426,20439,20398,20432,20420,20418,20442,20430,20446,20407,20823,20882,20881,20896,21070,21059,21066,21069,21068,21067,21063,21191,21193,21187,21185,21261,21335,21371,21402,21467,21676,21696,21672,21710,21705,21688,21670,21683,21703,21698,21693,21674,21697,21700,21704,21679,21675,21681,21691,21673,21671,21695,22271,22402,22411,22432,22435,22434,22478,22446,22419,22869,22865,22863,22862,22864,23004,23000,23039,23011,23016,23043,23013,23018,23002,23014,23041,23035,23401,23459,23462,23460,23458,23461,23553,23630,23631,23629,23627,23769,23762,24055,24093,24101,24095,24189,24224,24230,24314,24328,24365,24421,24456,24453,24458,24459,24455,24460,24457,24594,24605,24608,24613,24590,24616,24653,24688,24680,24674,24646,24643,24684,24683,24682,24676,25153,25308,25366,25353,25340,25325,25345,25326,25341,25351,25329,25335,25327,25324,25342,25332,25361,25346,25919,25925,26027,26045,26082,26149,26157,26144,26151,26159,26143,26152,26161,26148,26359,26623,26579,26609,26580,26576,26604,26550,26543,26613,26601,26607,26564,26577,26548,26586,26597,26552,26575,26590,26611,26544,26585,26594,26589,26578,27498,27523,27526,27573,27602,27607,27679,27849,27915,27954,27946,27969,27941,27916,27953,27934,27927,27963,27965,27966,27958,27931,27893,27961,27943,27960,27945,27950,27957,27918,27947,28843,28858,28851,28844,28847,28845,28856,28846,28836,29232,29298,29295,29300,29417,29408,29409,29623,29642,29627,29618,29645,29632,29619,29978,29997,30031,30028,30030,30027,30123,30116,30117,30114,30115,30328,30342,30343,30344,30408,30406,30403,30405,30465,30457,30456,30473,30475,30462,30460,30471,30684,30722,30740,30732,30733,31046,31049,31048,31047,31161,31162,31185,31186,31179,31359,31361,31487,31485,31869,32002,32005,32000,32009,32007,32004,32006,32568,32654,32703,32772,32784,32781,32785,32822,32982,32997,32986,32963,32964,32972,32993,32987,32974,32990,32996,32989,33268,33314,33511,33539,33541,33507,33499,33510,33540,33509,33538,33545,33490,33495,33521,33537,33500,33492,33489,33502,33491,33503,33519,33542,34384,34425,34427,34426,34893,34923,35201,35284,35336,35330,35331,35998,36000,36212,36211,36276,36557,36556,36848,36838,36834,36842,36837,36845,36843,36836,36840,37066,37070,37057,37059,37195,37194,37325,38274,38480,38475,38476,38477,38754,38761,38859,38893,38899,38913,39080,39131,39135,39318,39321,20056,20147,20492,20493,20515,20463,20518,20517,20472,20521,20502,20486,20540,20511,20506,20498,20497,20474,20480,20500,20520,20465,20513,20491,20505,20504,20467,20462,20525,20522,20478,20523,20489,20860,20900,20901,20898,20941,20940,20934,20939,21078,21084,21076,21083,21085,21290,21375,21407,21405,21471,21736,21776,21761,21815,21756,21733,21746,21766,21754,21780,21737,21741,21729,21769,21742,21738,21734,21799,21767,21757,21775,22275,22276,22466,22484,22475,22467,22537,22799,22871,22872,22874,23057,23064,23068,23071,23067,23059,23020,23072,23075,23081,23077,23052,23049,23403,23640,23472,23475,23478,23476,23470,23477,23481,23480,23556,23633,23637,23632,23789,23805,23803,23786,23784,23792,23798,23809,23796,24046,24109,24107,24235,24237,24231,24369,24466,24465,24464,24665,24675,24677,24656,24661,24685,24681,24687,24708,24735,24730,24717,24724,24716,24709,24726,25159,25331,25352,25343,25422,25406,25391,25429,25410,25414,25423,25417,25402,25424,25405,25386,25387,25384,25421,25420,25928,25929,26009,26049,26053,26178,26185,26191,26179,26194,26188,26181,26177,26360,26388,26389,26391,26657,26680,26696,26694,26707,26681,26690,26708,26665,26803,26647,26700,26705,26685,26612,26704,26688,26684,26691,26666,26693,26643,26648,26689,27530,27529,27575,27683,27687,27688,27686,27684,27888,28010,28053,28040,28039,28006,28024,28023,27993,28051,28012,28041,28014,27994,28020,28009,28044,28042,28025,28037,28005,28052,28874,28888,28900,28889,28872,28879,29241,29305,29436,29433,29437,29432,29431,29574,29677,29705,29678,29664,29674,29662,30036,30045,30044,30042,30041,30142,30149,30151,30130,30131,30141,30140,30137,30146,30136,30347,30384,30410,30413,30414,30505,30495,30496,30504,30697,30768,30759,30776,30749,30772,30775,30757,30765,30752,30751,30770,31061,31056,31072,31071,31062,31070,31069,31063,31066,31204,31203,31207,31199,31206,31209,31192,31364,31368,31449,31494,31505,31881,32033,32023,32011,32010,32032,32034,32020,32016,32021,32026,32028,32013,32025,32027,32570,32607,32660,32709,32705,32774,32792,32789,32793,32791,32829,32831,33009,33026,33008,33029,33005,33012,33030,33016,33011,33032,33021,33034,33020,33007,33261,33260,33280,33296,33322,33323,33320,33324,33467,33579,33618,33620,33610,33592,33616,33609,33589,33588,33615,33586,33593,33590,33559,33600,33585,33576,33603,34388,34442,34474,34451,34468,34473,34444,34467,34460,34928,34935,34945,34946,34941,34937,35352,35344,35342,35340,35349,35338,35351,35347,35350,35343,35345,35912,35962,35961,36001,36002,36215,36524,36562,36564,36559,36785,36865,36870,36855,36864,36858,36852,36867,36861,36869,36856,37013,37089,37085,37090,37202,37197,37196,37336,37341,37335,37340,37337,38275,38498,38499,38497,38491,38493,38500,38488,38494,38587,39138,39340,39592,39640,39717,39730,39740,20094,20602,20605,20572,20551,20547,20556,20570,20553,20581,20598,20558,20565,20597,20596,20599,20559,20495,20591,20589,20828,20885,20976,21098,21103,21202,21209,21208,21205,21264,21263,21273,21311,21312,21310,21443,26364,21830,21866,21862,21828,21854,21857,21827,21834,21809,21846,21839,21845,21807,21860,21816,21806,21852,21804,21859,21811,21825,21847,22280,22283,22281,22495,22533,22538,22534,22496,22500,22522,22530,22581,22519,22521,22816,22882,23094,23105,23113,23142,23146,23104,23100,23138,23130,23110,23114,23408,23495,23493,23492,23490,23487,23494,23561,23560,23559,23648,23644,23645,23815,23814,23822,23835,23830,23842,23825,23849,23828,23833,23844,23847,23831,24034,24120,24118,24115,24119,24247,24248,24246,24245,24254,24373,24375,24407,24428,24425,24427,24471,24473,24478,24472,24481,24480,24476,24703,24739,24713,24736,24744,24779,24756,24806,24765,24773,24763,24757,24796,24764,24792,24789,24774,24799,24760,24794,24775,25114,25115,25160,25504,25511,25458,25494,25506,25509,25463,25447,25496,25514,25457,25513,25481,25475,25499,25451,25512,25476,25480,25497,25505,25516,25490,25487,25472,25467,25449,25448,25466,25949,25942,25937,25945,25943,21855,25935,25944,25941,25940,26012,26011,26028,26063,26059,26060,26062,26205,26202,26212,26216,26214,26206,26361,21207,26395,26753,26799,26786,26771,26805,26751,26742,26801,26791,26775,26800,26755,26820,26797,26758,26757,26772,26781,26792,26783,26785,26754,27442,27578,27627,27628,27691,28046,28092,28147,28121,28082,28129,28108,28132,28155,28154,28165,28103,28107,28079,28113,28078,28126,28153,28088,28151,28149,28101,28114,28186,28085,28122,28139,28120,28138,28145,28142,28136,28102,28100,28074,28140,28095,28134,28921,28937,28938,28925,28911,29245,29309,29313,29468,29467,29462,29459,29465,29575,29701,29706,29699,29702,29694,29709,29920,29942,29943,29980,29986,30053,30054,30050,30064,30095,30164,30165,30133,30154,30157,30350,30420,30418,30427,30519,30526,30524,30518,30520,30522,30827,30787,30798,31077,31080,31085,31227,31378,31381,31520,31528,31515,31532,31526,31513,31518,31534,31890,31895,31893,32070,32067,32113,32046,32057,32060,32064,32048,32051,32068,32047,32066,32050,32049,32573,32670,32666,32716,32718,32722,32796,32842,32838,33071,33046,33059,33067,33065,33072,33060,33282,33333,33335,33334,33337,33678,33694,33688,33656,33698,33686,33725,33707,33682,33674,33683,33673,33696,33655,33659,33660,33670,33703,34389,24426,34503,34496,34486,34500,34485,34502,34507,34481,34479,34505,34899,34974,34952,34987,34962,34966,34957,34955,35219,35215,35370,35357,35363,35365,35377,35373,35359,35355,35362,35913,35930,36009,36012,36011,36008,36010,36007,36199,36198,36286,36282,36571,36575,36889,36877,36890,36887,36899,36895,36893,36880,36885,36894,36896,36879,36898,36886,36891,36884,37096,37101,37117,37207,37326,37365,37350,37347,37351,37357,37353,38281,38506,38517,38515,38520,38512,38516,38518,38519,38508,38592,38634,38633,31456,31455,38914,38915,39770,40165,40565,40575,40613,40635,20642,20621,20613,20633,20625,20608,20630,20632,20634,26368,20977,21106,21108,21109,21097,21214,21213,21211,21338,21413,21883,21888,21927,21884,21898,21917,21912,21890,21916,21930,21908,21895,21899,21891,21939,21934,21919,21822,21938,21914,21947,21932,21937,21886,21897,21931,21913,22285,22575,22570,22580,22564,22576,22577,22561,22557,22560,22777,22778,22880,23159,23194,23167,23186,23195,23207,23411,23409,23506,23500,23507,23504,23562,23563,23601,23884,23888,23860,23879,24061,24133,24125,24128,24131,24190,24266,24257,24258,24260,24380,24429,24489,24490,24488,24785,24801,24754,24758,24800,24860,24867,24826,24853,24816,24827,24820,24936,24817,24846,24822,24841,24832,24850,25119,25161,25507,25484,25551,25536,25577,25545,25542,25549,25554,25571,25552,25569,25558,25581,25582,25462,25588,25578,25563,25682,25562,25593,25950,25958,25954,25955,26001,26000,26031,26222,26224,26228,26230,26223,26257,26234,26238,26231,26366,26367,26399,26397,26874,26837,26848,26840,26839,26885,26847,26869,26862,26855,26873,26834,26866,26851,26827,26829,26893,26898,26894,26825,26842,26990,26875,27454,27450,27453,27544,27542,27580,27631,27694,27695,27692,28207,28216,28244,28193,28210,28263,28234,28192,28197,28195,28187,28251,28248,28196,28246,28270,28205,28198,28271,28212,28237,28218,28204,28227,28189,28222,28363,28297,28185,28238,28259,28228,28274,28265,28255,28953,28954,28966,28976,28961,28982,29038,28956,29260,29316,29312,29494,29477,29492,29481,29754,29738,29747,29730,29733,29749,29750,29748,29743,29723,29734,29736,29989,29990,30059,30058,30178,30171,30179,30169,30168,30174,30176,30331,30332,30358,30355,30388,30428,30543,30701,30813,30828,30831,31245,31240,31243,31237,31232,31384,31383,31382,31461,31459,31561,31574,31558,31568,31570,31572,31565,31563,31567,31569,31903,31909,32094,32080,32104,32085,32043,32110,32114,32097,32102,32098,32112,32115,21892,32724,32725,32779,32850,32901,33109,33108,33099,33105,33102,33081,33094,33086,33100,33107,33140,33298,33308,33769,33795,33784,33805,33760,33733,33803,33729,33775,33777,33780,33879,33802,33776,33804,33740,33789,33778,33738,33848,33806,33796,33756,33799,33748,33759,34395,34527,34521,34541,34516,34523,34532,34512,34526,34903,35009,35010,34993,35203,35222,35387,35424,35413,35422,35388,35393,35412,35419,35408,35398,35380,35386,35382,35414,35937,35970,36015,36028,36019,36029,36033,36027,36032,36020,36023,36022,36031,36024,36234,36229,36225,36302,36317,36299,36314,36305,36300,36315,36294,36603,36600,36604,36764,36910,36917,36913,36920,36914,36918,37122,37109,37129,37118,37219,37221,37327,37396,37397,37411,37385,37406,37389,37392,37383,37393,38292,38287,38283,38289,38291,38290,38286,38538,38542,38539,38525,38533,38534,38541,38514,38532,38593,38597,38596,38598,38599,38639,38642,38860,38917,38918,38920,39143,39146,39151,39145,39154,39149,39342,39341,40643,40653,40657,20098,20653,20661,20658,20659,20677,20670,20652,20663,20667,20655,20679,21119,21111,21117,21215,21222,21220,21218,21219,21295,21983,21992,21971,21990,21966,21980,21959,21969,21987,21988,21999,21978,21985,21957,21958,21989,21961,22290,22291,22622,22609,22616,22615,22618,22612,22635,22604,22637,22602,22626,22610,22603,22887,23233,23241,23244,23230,23229,23228,23219,23234,23218,23913,23919,24140,24185,24265,24264,24338,24409,24492,24494,24858,24847,24904,24863,24819,24859,24825,24833,24840,24910,24908,24900,24909,24894,24884,24871,24845,24838,24887,25121,25122,25619,25662,25630,25642,25645,25661,25644,25615,25628,25620,25613,25654,25622,25623,25606,25964,26015,26032,26263,26249,26247,26248,26262,26244,26264,26253,26371,27028,26989,26970,26999,26976,26964,26997,26928,27010,26954,26984,26987,26974,26963,27001,27014,26973,26979,26971,27463,27506,27584,27583,27603,27645,28322,28335,28371,28342,28354,28304,28317,28359,28357,28325,28312,28348,28346,28331,28369,28310,28316,28356,28372,28330,28327,28340,29006,29017,29033,29028,29001,29031,29020,29036,29030,29004,29029,29022,28998,29032,29014,29242,29266,29495,29509,29503,29502,29807,29786,29781,29791,29790,29761,29759,29785,29787,29788,30070,30072,30208,30192,30209,30194,30193,30202,30207,30196,30195,30430,30431,30555,30571,30566,30558,30563,30585,30570,30572,30556,30565,30568,30562,30702,30862,30896,30871,30872,30860,30857,30844,30865,30867,30847,31098,31103,31105,33836,31165,31260,31258,31264,31252,31263,31262,31391,31392,31607,31680,31584,31598,31591,31921,31923,31925,32147,32121,32145,32129,32143,32091,32622,32617,32618,32626,32681,32680,32676,32854,32856,32902,32900,33137,33136,33144,33125,33134,33139,33131,33145,33146,33126,33285,33351,33922,33911,33853,33841,33909,33894,33899,33865,33900,33883,33852,33845,33889,33891,33897,33901,33862,34398,34396,34399,34553,34579,34568,34567,34560,34558,34555,34562,34563,34566,34570,34905,35039,35028,35033,35036,35032,35037,35041,35018,35029,35026,35228,35299,35435,35442,35443,35430,35433,35440,35463,35452,35427,35488,35441,35461,35437,35426,35438,35436,35449,35451,35390,35432,35938,35978,35977,36042,36039,36040,36036,36018,36035,36034,36037,36321,36319,36328,36335,36339,36346,36330,36324,36326,36530,36611,36617,36606,36618,36767,36786,36939,36938,36947,36930,36948,36924,36949,36944,36935,36943,36942,36941,36945,36926,36929,37138,37143,37228,37226,37225,37321,37431,37463,37432,37437,37440,37438,37467,37451,37476,37457,37428,37449,37453,37445,37433,37439,37466,38296,38552,38548,38549,38605,38603,38601,38602,38647,38651,38649,38646,38742,38772,38774,38928,38929,38931,38922,38930,38924,39164,39156,39165,39166,39347,39345,39348,39649,40169,40578,40718,40723,40736,20711,20718,20709,20694,20717,20698,20693,20687,20689,20721,20686,20713,20834,20979,21123,21122,21297,21421,22014,22016,22043,22039,22013,22036,22022,22025,22029,22030,22007,22038,22047,22024,22032,22006,22296,22294,22645,22654,22659,22675,22666,22649,22661,22653,22781,22821,22818,22820,22890,22889,23265,23270,23273,23255,23254,23256,23267,23413,23518,23527,23521,23525,23526,23528,23522,23524,23519,23565,23650,23940,23943,24155,24163,24149,24151,24148,24275,24278,24330,24390,24432,24505,24903,24895,24907,24951,24930,24931,24927,24922,24920,24949,25130,25735,25688,25684,25764,25720,25695,25722,25681,25703,25652,25709,25723,25970,26017,26071,26070,26274,26280,26269,27036,27048,27029,27073,27054,27091,27083,27035,27063,27067,27051,27060,27088,27085,27053,27084,27046,27075,27043,27465,27468,27699,28467,28436,28414,28435,28404,28457,28478,28448,28460,28431,28418,28450,28415,28399,28422,28465,28472,28466,28451,28437,28459,28463,28552,28458,28396,28417,28402,28364,28407,29076,29081,29053,29066,29060,29074,29246,29330,29334,29508,29520,29796,29795,29802,29808,29805,29956,30097,30247,30221,30219,30217,30227,30433,30435,30596,30589,30591,30561,30913,30879,30887,30899,30889,30883,31118,31119,31117,31278,31281,31402,31401,31469,31471,31649,31637,31627,31605,31639,31645,31636,31631,31672,31623,31620,31929,31933,31934,32187,32176,32156,32189,32190,32160,32202,32180,32178,32177,32186,32162,32191,32181,32184,32173,32210,32199,32172,32624,32736,32737,32735,32862,32858,32903,33104,33152,33167,33160,33162,33151,33154,33255,33274,33287,33300,33310,33355,33993,33983,33990,33988,33945,33950,33970,33948,33995,33976,33984,34003,33936,33980,34001,33994,34623,34588,34619,34594,34597,34612,34584,34645,34615,34601,35059,35074,35060,35065,35064,35069,35048,35098,35055,35494,35468,35486,35491,35469,35489,35475,35492,35498,35493,35496,35480,35473,35482,35495,35946,35981,35980,36051,36049,36050,36203,36249,36245,36348,36628,36626,36629,36627,36771,36960,36952,36956,36963,36953,36958,36962,36957,36955,37145,37144,37150,37237,37240,37239,37236,37496,37504,37509,37528,37526,37499,37523,37532,37544,37500,37521,38305,38312,38313,38307,38309,38308,38553,38556,38555,38604,38610,38656,38780,38789,38902,38935,38936,39087,39089,39171,39173,39180,39177,39361,39599,39600,39654,39745,39746,40180,40182,40179,40636,40763,40778,20740,20736,20731,20725,20729,20738,20744,20745,20741,20956,21127,21128,21129,21133,21130,21232,21426,22062,22075,22073,22066,22079,22068,22057,22099,22094,22103,22132,22070,22063,22064,22656,22687,22686,22707,22684,22702,22697,22694,22893,23305,23291,23307,23285,23308,23304,23534,23532,23529,23531,23652,23653,23965,23956,24162,24159,24161,24290,24282,24287,24285,24291,24288,24392,24433,24503,24501,24950,24935,24942,24925,24917,24962,24956,24944,24939,24958,24999,24976,25003,24974,25004,24986,24996,24980,25006,25134,25705,25711,25721,25758,25778,25736,25744,25776,25765,25747,25749,25769,25746,25774,25773,25771,25754,25772,25753,25762,25779,25973,25975,25976,26286,26283,26292,26289,27171,27167,27112,27137,27166,27161,27133,27169,27155,27146,27123,27138,27141,27117,27153,27472,27470,27556,27589,27590,28479,28540,28548,28497,28518,28500,28550,28525,28507,28536,28526,28558,28538,28528,28516,28567,28504,28373,28527,28512,28511,29087,29100,29105,29096,29270,29339,29518,29527,29801,29835,29827,29822,29824,30079,30240,30249,30239,30244,30246,30241,30242,30362,30394,30436,30606,30599,30604,30609,30603,30923,30917,30906,30922,30910,30933,30908,30928,31295,31292,31296,31293,31287,31291,31407,31406,31661,31665,31684,31668,31686,31687,31681,31648,31692,31946,32224,32244,32239,32251,32216,32236,32221,32232,32227,32218,32222,32233,32158,32217,32242,32249,32629,32631,32687,32745,32806,33179,33180,33181,33184,33178,33176,34071,34109,34074,34030,34092,34093,34067,34065,34083,34081,34068,34028,34085,34047,34054,34690,34676,34678,34656,34662,34680,34664,34649,34647,34636,34643,34907,34909,35088,35079,35090,35091,35093,35082,35516,35538,35527,35524,35477,35531,35576,35506,35529,35522,35519,35504,35542,35533,35510,35513,35547,35916,35918,35948,36064,36062,36070,36068,36076,36077,36066,36067,36060,36074,36065,36205,36255,36259,36395,36368,36381,36386,36367,36393,36383,36385,36382,36538,36637,36635,36639,36649,36646,36650,36636,36638,36645,36969,36974,36968,36973,36983,37168,37165,37159,37169,37255,37257,37259,37251,37573,37563,37559,37610,37548,37604,37569,37555,37564,37586,37575,37616,37554,38317,38321,38660,38662,38663,38665,38752,38797,38795,38799,38945,38955,38940,39091,39178,39187,39186,39192,39389,39376,39391,39387,39377,39381,39378,39385,39607,39662,39663,39719,39749,39748,39799,39791,40198,40201,40195,40617,40638,40654,22696,40786,20754,20760,20756,20752,20757,20864,20906,20957,21137,21139,21235,22105,22123,22137,22121,22116,22136,22122,22120,22117,22129,22127,22124,22114,22134,22721,22718,22727,22725,22894,23325,23348,23416,23536,23566,24394,25010,24977,25001,24970,25037,25014,25022,25034,25032,25136,25797,25793,25803,25787,25788,25818,25796,25799,25794,25805,25791,25810,25812,25790,25972,26310,26313,26297,26308,26311,26296,27197,27192,27194,27225,27243,27224,27193,27204,27234,27233,27211,27207,27189,27231,27208,27481,27511,27653,28610,28593,28577,28611,28580,28609,28583,28595,28608,28601,28598,28582,28576,28596,29118,29129,29136,29138,29128,29141,29113,29134,29145,29148,29123,29124,29544,29852,29859,29848,29855,29854,29922,29964,29965,30260,30264,30266,30439,30437,30624,30622,30623,30629,30952,30938,30956,30951,31142,31309,31310,31302,31308,31307,31418,31705,31761,31689,31716,31707,31713,31721,31718,31957,31958,32266,32273,32264,32283,32291,32286,32285,32265,32272,32633,32690,32752,32753,32750,32808,33203,33193,33192,33275,33288,33368,33369,34122,34137,34120,34152,34153,34115,34121,34157,34154,34142,34691,34719,34718,34722,34701,34913,35114,35122,35109,35115,35105,35242,35238,35558,35578,35563,35569,35584,35548,35559,35566,35582,35585,35586,35575,35565,35571,35574,35580,35947,35949,35987,36084,36420,36401,36404,36418,36409,36405,36667,36655,36664,36659,36776,36774,36981,36980,36984,36978,36988,36986,37172,37266,37664,37686,37624,37683,37679,37666,37628,37675,37636,37658,37648,37670,37665,37653,37678,37657,38331,38567,38568,38570,38613,38670,38673,38678,38669,38675,38671,38747,38748,38758,38808,38960,38968,38971,38967,38957,38969,38948,39184,39208,39198,39195,39201,39194,39405,39394,39409,39608,39612,39675,39661,39720,39825,40213,40227,40230,40232,40210,40219,40664,40660,40845,40860,20778,20767,20769,20786,21237,22158,22144,22160,22149,22151,22159,22741,22739,22737,22734,23344,23338,23332,23418,23607,23656,23996,23994,23997,23992,24171,24396,24509,25033,25026,25031,25062,25035,25138,25140,25806,25802,25816,25824,25840,25830,25836,25841,25826,25837,25986,25987,26329,26326,27264,27284,27268,27298,27292,27355,27299,27262,27287,27280,27296,27484,27566,27610,27656,28632,28657,28639,28640,28635,28644,28651,28655,28544,28652,28641,28649,28629,28654,28656,29159,29151,29166,29158,29157,29165,29164,29172,29152,29237,29254,29552,29554,29865,29872,29862,29864,30278,30274,30284,30442,30643,30634,30640,30636,30631,30637,30703,30967,30970,30964,30959,30977,31143,31146,31319,31423,31751,31757,31742,31735,31756,31712,31968,31964,31966,31970,31967,31961,31965,32302,32318,32326,32311,32306,32323,32299,32317,32305,32325,32321,32308,32313,32328,32309,32319,32303,32580,32755,32764,32881,32882,32880,32879,32883,33222,33219,33210,33218,33216,33215,33213,33225,33214,33256,33289,33393,34218,34180,34174,34204,34193,34196,34223,34203,34183,34216,34186,34407,34752,34769,34739,34770,34758,34731,34747,34746,34760,34763,35131,35126,35140,35128,35133,35244,35598,35607,35609,35611,35594,35616,35613,35588,35600,35905,35903,35955,36090,36093,36092,36088,36091,36264,36425,36427,36424,36426,36676,36670,36674,36677,36671,36991,36989,36996,36993,36994,36992,37177,37283,37278,37276,37709,37762,37672,37749,37706,37733,37707,37656,37758,37740,37723,37744,37722,37716,38346,38347,38348,38344,38342,38577,38584,38614,38684,38686,38816,38867,38982,39094,39221,39425,39423,39854,39851,39850,39853,40251,40255,40587,40655,40670,40668,40669,40667,40766,40779,21474,22165,22190,22745,22744,23352,24413,25059,25139,25844,25842,25854,25862,25850,25851,25847,26039,26332,26406,27315,27308,27331,27323,27320,27330,27310,27311,27487,27512,27567,28681,28683,28670,28678,28666,28689,28687,29179,29180,29182,29176,29559,29557,29863,29887,29973,30294,30296,30290,30653,30655,30651,30652,30990,31150,31329,31330,31328,31428,31429,31787,31783,31786,31774,31779,31777,31975,32340,32341,32350,32346,32353,32338,32345,32584,32761,32763,32887,32886,33229,33231,33290,34255,34217,34253,34256,34249,34224,34234,34233,34214,34799,34796,34802,34784,35206,35250,35316,35624,35641,35628,35627,35920,36101,36441,36451,36454,36452,36447,36437,36544,36681,36685,36999,36995,37000,37291,37292,37328,37780,37770,37782,37794,37811,37806,37804,37808,37784,37786,37783,38356,38358,38352,38357,38626,38620,38617,38619,38622,38692,38819,38822,38829,38905,38989,38991,38988,38990,38995,39098,39230,39231,39229,39214,39333,39438,39617,39683,39686,39759,39758,39757,39882,39881,39933,39880,39872,40273,40285,40288,40672,40725,40748,20787,22181,22750,22751,22754,23541,40848,24300,25074,25079,25078,25077,25856,25871,26336,26333,27365,27357,27354,27347,28699,28703,28712,28698,28701,28693,28696,29190,29197,29272,29346,29560,29562,29885,29898,29923,30087,30086,30303,30305,30663,31001,31153,31339,31337,31806,31807,31800,31805,31799,31808,32363,32365,32377,32361,32362,32645,32371,32694,32697,32696,33240,34281,34269,34282,34261,34276,34277,34295,34811,34821,34829,34809,34814,35168,35167,35158,35166,35649,35676,35672,35657,35674,35662,35663,35654,35673,36104,36106,36476,36466,36487,36470,36460,36474,36468,36692,36686,36781,37002,37003,37297,37294,37857,37841,37855,37827,37832,37852,37853,37846,37858,37837,37848,37860,37847,37864,38364,38580,38627,38698,38695,38753,38876,38907,39006,39000,39003,39100,39237,39241,39446,39449,39693,39912,39911,39894,39899,40329,40289,40306,40298,40300,40594,40599,40595,40628,21240,22184,22199,22198,22196,22204,22756,23360,23363,23421,23542,24009,25080,25082,25880,25876,25881,26342,26407,27372,28734,28720,28722,29200,29563,29903,30306,30309,31014,31018,31020,31019,31431,31478,31820,31811,31821,31983,31984,36782,32381,32380,32386,32588,32768,33242,33382,34299,34297,34321,34298,34310,34315,34311,34314,34836,34837,35172,35258,35320,35696,35692,35686,35695,35679,35691,36111,36109,36489,36481,36485,36482,37300,37323,37912,37891,37885,38369,38704,39108,39250,39249,39336,39467,39472,39479,39477,39955,39949,40569,40629,40680,40751,40799,40803,40801,20791,20792,22209,22208,22210,22804,23660,24013,25084,25086,25885,25884,26005,26345,27387,27396,27386,27570,28748,29211,29351,29910,29908,30313,30675,31824,32399,32396,32700,34327,34349,34330,34851,34850,34849,34847,35178,35180,35261,35700,35703,35709,36115,36490,36493,36491,36703,36783,37306,37934,37939,37941,37946,37944,37938,37931,38370,38712,38713,38706,38911,39015,39013,39255,39493,39491,39488,39486,39631,39764,39761,39981,39973,40367,40372,40386,40376,40605,40687,40729,40796,40806,40807,20796,20795,22216,22218,22217,23423,24020,24018,24398,25087,25892,27402,27489,28753,28760,29568,29924,30090,30318,30316,31155,31840,31839,32894,32893,33247,35186,35183,35324,35712,36118,36119,36497,36499,36705,37192,37956,37969,37970,38717,38718,38851,38849,39019,39253,39509,39501,39634,39706,40009,39985,39998,39995,40403,40407,40756,40812,40810,40852,22220,24022,25088,25891,25899,25898,26348,27408,29914,31434,31844,31843,31845,32403,32406,32404,33250,34360,34367,34865,35722,37008,37007,37987,37984,37988,38760,39023,39260,39514,39515,39511,39635,39636,39633,40020,40023,40022,40421,40607,40692,22225,22761,25900,28766,30321,30322,30679,32592,32648,34870,34873,34914,35731,35730,35734,33399,36123,37312,37994,38722,38728,38724,38854,39024,39519,39714,39768,40031,40441,40442,40572,40573,40711,40823,40818,24307,27414,28771,31852,31854,34875,35264,36513,37313,38002,38000,39025,39262,39638,39715,40652,28772,30682,35738,38007,38857,39522,39525,32412,35740,36522,37317,38013,38014,38012,40055,40056,40695,35924,38015,40474,29224,39530,39729,40475,40478,31858,9312,9313,9314,9315,9316,9317,9318,9319,9320,9321,9332,9333,9334,9335,9336,9337,9338,9339,9340,9341,8560,8561,8562,8563,8564,8565,8566,8567,8568,8569,20022,20031,20101,20128,20866,20886,20907,21241,21304,21353,21430,22794,23424,24027,12083,24191,24308,24400,24417,25908,26080,30098,30326,36789,38582,168,710,12541,12542,12445,12446,12291,20189,12293,12294,12295,12540,65339,65341,10045,12353,12354,12355,12356,12357,12358,12359,12360,12361,12362,12363,12364,12365,12366,12367,12368,12369,12370,12371,12372,12373,12374,12375,12376,12377,12378,12379,12380,12381,12382,12383,12384,12385,12386,12387,12388,12389,12390,12391,12392,12393,12394,12395,12396,12397,12398,12399,12400,12401,12402,12403,12404,12405,12406,12407,12408,12409,12410,12411,12412,12413,12414,12415,12416,12417,12418,12419,12420,12421,12422,12423,12424,12425,12426,12427,12428,12429,12430,12431,12432,12433,12434,12435,12449,12450,12451,12452,12453,12454,12455,12456,12457,12458,12459,12460,12461,12462,12463,12464,12465,12466,12467,12468,12469,12470,12471,12472,12473,12474,12475,12476,12477,12478,12479,12480,12481,12482,12483,12484,12485,12486,12487,12488,12489,12490,12491,12492,12493,12494,12495,12496,12497,12498,12499,12500,12501,12502,12503,12504,12505,12506,12507,12508,12509,12510,12511,12512,12513,12514,12515,12516,12517,12518,12519,12520,12521,12522,12523,12524,12525,12526,12527,12528,12529,12530,12531,12532,12533,12534,1040,1041,1042,1043,1044,1045,1025,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1105,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,8679,8632,8633,12751,131276,20058,131210,20994,17553,40880,20872,40881,161287,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,65506,65508,65287,65282,12849,8470,8481,12443,12444,11904,11908,11910,11911,11912,11914,11916,11917,11925,11932,11933,11941,11943,11946,11948,11950,11958,11964,11966,11974,11978,11980,11981,11983,11990,11991,11998,12003,null,null,null,643,592,603,596,629,339,248,331,650,618,20034,20060,20981,21274,21378,19975,19980,20039,20109,22231,64012,23662,24435,19983,20871,19982,20014,20115,20162,20169,20168,20888,21244,21356,21433,22304,22787,22828,23568,24063,26081,27571,27596,27668,29247,20017,20028,20200,20188,20201,20193,20189,20186,21004,21276,21324,22306,22307,22807,22831,23425,23428,23570,23611,23668,23667,24068,24192,24194,24521,25097,25168,27669,27702,27715,27711,27707,29358,29360,29578,31160,32906,38430,20238,20248,20268,20213,20244,20209,20224,20215,20232,20253,20226,20229,20258,20243,20228,20212,20242,20913,21011,21001,21008,21158,21282,21279,21325,21386,21511,22241,22239,22318,22314,22324,22844,22912,22908,22917,22907,22910,22903,22911,23382,23573,23589,23676,23674,23675,23678,24031,24181,24196,24322,24346,24436,24533,24532,24527,25180,25182,25188,25185,25190,25186,25177,25184,25178,25189,26095,26094,26430,26425,26424,26427,26426,26431,26428,26419,27672,27718,27730,27740,27727,27722,27732,27723,27724,28785,29278,29364,29365,29582,29994,30335,31349,32593,33400,33404,33408,33405,33407,34381,35198,37017,37015,37016,37019,37012,38434,38436,38432,38435,20310,20283,20322,20297,20307,20324,20286,20327,20306,20319,20289,20312,20269,20275,20287,20321,20879,20921,21020,21022,21025,21165,21166,21257,21347,21362,21390,21391,21552,21559,21546,21588,21573,21529,21532,21541,21528,21565,21583,21569,21544,21540,21575,22254,22247,22245,22337,22341,22348,22345,22347,22354,22790,22848,22950,22936,22944,22935,22926,22946,22928,22927,22951,22945,23438,23442,23592,23594,23693,23695,23688,23691,23689,23698,23690,23686,23699,23701,24032,24074,24078,24203,24201,24204,24200,24205,24325,24349,24440,24438,24530,24529,24528,24557,24552,24558,24563,24545,24548,24547,24570,24559,24567,24571,24576,24564,25146,25219,25228,25230,25231,25236,25223,25201,25211,25210,25200,25217,25224,25207,25213,25202,25204,25911,26096,26100,26099,26098,26101,26437,26439,26457,26453,26444,26440,26461,26445,26458,26443,27600,27673,27674,27768,27751,27755,27780,27787,27791,27761,27759,27753,27802,27757,27783,27797,27804,27750,27763,27749,27771,27790,28788,28794,29283,29375,29373,29379,29382,29377,29370,29381,29589,29591,29587,29588,29586,30010,30009,30100,30101,30337,31037,32820,32917,32921,32912,32914,32924,33424,33423,33413,33422,33425,33427,33418,33411,33412,35960,36809,36799,37023,37025,37029,37022,37031,37024,38448,38440,38447,38445,20019,20376,20348,20357,20349,20352,20359,20342,20340,20361,20356,20343,20300,20375,20330,20378,20345,20353,20344,20368,20380,20372,20382,20370,20354,20373,20331,20334,20894,20924,20926,21045,21042,21043,21062,21041,21180,21258,21259,21308,21394,21396,21639,21631,21633,21649,21634,21640,21611,21626,21630,21605,21612,21620,21606,21645,21615,21601,21600,21656,21603,21607,21604,22263,22265,22383,22386,22381,22379,22385,22384,22390,22400,22389,22395,22387,22388,22370,22376,22397,22796,22853,22965,22970,22991,22990,22962,22988,22977,22966,22972,22979,22998,22961,22973,22976,22984,22964,22983,23394,23397,23443,23445,23620,23623,23726,23716,23712,23733,23727,23720,23724,23711,23715,23725,23714,23722,23719,23709,23717,23734,23728,23718,24087,24084,24089,24360,24354,24355,24356,24404,24450,24446,24445,24542,24549,24621,24614,24601,24626,24587,24628,24586,24599,24627,24602,24606,24620,24610,24589,24592,24622,24595,24593,24588,24585,24604,25108,25149,25261,25268,25297,25278,25258,25270,25290,25262,25267,25263,25275,25257,25264,25272,25917,26024,26043,26121,26108,26116,26130,26120,26107,26115,26123,26125,26117,26109,26129,26128,26358,26378,26501,26476,26510,26514,26486,26491,26520,26502,26500,26484,26509,26508,26490,26527,26513,26521,26499,26493,26497,26488,26489,26516,27429,27520,27518,27614,27677,27795,27884,27883,27886,27865,27830,27860,27821,27879,27831,27856,27842,27834,27843,27846,27885,27890,27858,27869,27828,27786,27805,27776,27870,27840,27952,27853,27847,27824,27897,27855,27881,27857,28820,28824,28805,28819,28806,28804,28817,28822,28802,28826,28803,29290,29398,29387,29400,29385,29404,29394,29396,29402,29388,29393,29604,29601,29613,29606,29602,29600,29612,29597,29917,29928,30015,30016,30014,30092,30104,30383,30451,30449,30448,30453,30712,30716,30713,30715,30714,30711,31042,31039,31173,31352,31355,31483,31861,31997,32821,32911,32942,32931,32952,32949,32941,33312,33440,33472,33451,33434,33432,33435,33461,33447,33454,33468,33438,33466,33460,33448,33441,33449,33474,33444,33475,33462,33442,34416,34415,34413,34414,35926,36818,36811,36819,36813,36822,36821,36823,37042,37044,37039,37043,37040,38457,38461,38460,38458,38467,20429,20421,20435,20402,20425,20427,20417,20436,20444,20441,20411,20403,20443,20423,20438,20410,20416,20409,20460,21060,21065,21184,21186,21309,21372,21399,21398,21401,21400,21690,21665,21677,21669,21711,21699,33549,21687,21678,21718,21686,21701,21702,21664,21616,21692,21666,21694,21618,21726,21680,22453,22430,22431,22436,22412,22423,22429,22427,22420,22424,22415,22425,22437,22426,22421,22772,22797,22867,23009,23006,23022,23040,23025,23005,23034,23037,23036,23030,23012,23026,23031,23003,23017,23027,23029,23008,23038,23028,23021,23464,23628,23760,23768,23756,23767,23755,23771,23774,23770,23753,23751,23754,23766,23763,23764,23759,23752,23750,23758,23775,23800,24057,24097,24098,24099,24096,24100,24240,24228,24226,24219,24227,24229,24327,24366,24406,24454,24631,24633,24660,24690,24670,24645,24659,24647,24649,24667,24652,24640,24642,24671,24612,24644,24664,24678,24686,25154,25155,25295,25357,25355,25333,25358,25347,25323,25337,25359,25356,25336,25334,25344,25363,25364,25338,25365,25339,25328,25921,25923,26026,26047,26166,26145,26162,26165,26140,26150,26146,26163,26155,26170,26141,26164,26169,26158,26383,26384,26561,26610,26568,26554,26588,26555,26616,26584,26560,26551,26565,26603,26596,26591,26549,26573,26547,26615,26614,26606,26595,26562,26553,26574,26599,26608,26546,26620,26566,26605,26572,26542,26598,26587,26618,26569,26570,26563,26602,26571,27432,27522,27524,27574,27606,27608,27616,27680,27681,27944,27956,27949,27935,27964,27967,27922,27914,27866,27955,27908,27929,27962,27930,27921,27904,27933,27970,27905,27928,27959,27907,27919,27968,27911,27936,27948,27912,27938,27913,27920,28855,28831,28862,28849,28848,28833,28852,28853,28841,29249,29257,29258,29292,29296,29299,29294,29386,29412,29416,29419,29407,29418,29414,29411,29573,29644,29634,29640,29637,29625,29622,29621,29620,29675,29631,29639,29630,29635,29638,29624,29643,29932,29934,29998,30023,30024,30119,30122,30329,30404,30472,30467,30468,30469,30474,30455,30459,30458,30695,30696,30726,30737,30738,30725,30736,30735,30734,30729,30723,30739,31050,31052,31051,31045,31044,31189,31181,31183,31190,31182,31360,31358,31441,31488,31489,31866,31864,31865,31871,31872,31873,32003,32008,32001,32600,32657,32653,32702,32775,32782,32783,32788,32823,32984,32967,32992,32977,32968,32962,32976,32965,32995,32985,32988,32970,32981,32969,32975,32983,32998,32973,33279,33313,33428,33497,33534,33529,33543,33512,33536,33493,33594,33515,33494,33524,33516,33505,33522,33525,33548,33531,33526,33520,33514,33508,33504,33530,33523,33517,34423,34420,34428,34419,34881,34894,34919,34922,34921,35283,35332,35335,36210,36835,36833,36846,36832,37105,37053,37055,37077,37061,37054,37063,37067,37064,37332,37331,38484,38479,38481,38483,38474,38478,20510,20485,20487,20499,20514,20528,20507,20469,20468,20531,20535,20524,20470,20471,20503,20508,20512,20519,20533,20527,20529,20494,20826,20884,20883,20938,20932,20933,20936,20942,21089,21082,21074,21086,21087,21077,21090,21197,21262,21406,21798,21730,21783,21778,21735,21747,21732,21786,21759,21764,21768,21739,21777,21765,21745,21770,21755,21751,21752,21728,21774,21763,21771,22273,22274,22476,22578,22485,22482,22458,22470,22461,22460,22456,22454,22463,22471,22480,22457,22465,22798,22858,23065,23062,23085,23086,23061,23055,23063,23050,23070,23091,23404,23463,23469,23468,23555,23638,23636,23788,23807,23790,23793,23799,23808,23801,24105,24104,24232,24238,24234,24236,24371,24368,24423,24669,24666,24679,24641,24738,24712,24704,24722,24705,24733,24707,24725,24731,24727,24711,24732,24718,25113,25158,25330,25360,25430,25388,25412,25413,25398,25411,25572,25401,25419,25418,25404,25385,25409,25396,25432,25428,25433,25389,25415,25395,25434,25425,25400,25431,25408,25416,25930,25926,26054,26051,26052,26050,26186,26207,26183,26193,26386,26387,26655,26650,26697,26674,26675,26683,26699,26703,26646,26673,26652,26677,26667,26669,26671,26702,26692,26676,26653,26642,26644,26662,26664,26670,26701,26682,26661,26656,27436,27439,27437,27441,27444,27501,32898,27528,27622,27620,27624,27619,27618,27623,27685,28026,28003,28004,28022,27917,28001,28050,27992,28002,28013,28015,28049,28045,28143,28031,28038,27998,28007,28000,28055,28016,28028,27999,28034,28056,27951,28008,28043,28030,28032,28036,27926,28035,28027,28029,28021,28048,28892,28883,28881,28893,28875,32569,28898,28887,28882,28894,28896,28884,28877,28869,28870,28871,28890,28878,28897,29250,29304,29303,29302,29440,29434,29428,29438,29430,29427,29435,29441,29651,29657,29669,29654,29628,29671,29667,29673,29660,29650,29659,29652,29661,29658,29655,29656,29672,29918,29919,29940,29941,29985,30043,30047,30128,30145,30139,30148,30144,30143,30134,30138,30346,30409,30493,30491,30480,30483,30482,30499,30481,30485,30489,30490,30498,30503,30755,30764,30754,30773,30767,30760,30766,30763,30753,30761,30771,30762,30769,31060,31067,31055,31068,31059,31058,31057,31211,31212,31200,31214,31213,31210,31196,31198,31197,31366,31369,31365,31371,31372,31370,31367,31448,31504,31492,31507,31493,31503,31496,31498,31502,31497,31506,31876,31889,31882,31884,31880,31885,31877,32030,32029,32017,32014,32024,32022,32019,32031,32018,32015,32012,32604,32609,32606,32608,32605,32603,32662,32658,32707,32706,32704,32790,32830,32825,33018,33010,33017,33013,33025,33019,33024,33281,33327,33317,33587,33581,33604,33561,33617,33573,33622,33599,33601,33574,33564,33570,33602,33614,33563,33578,33544,33596,33613,33558,33572,33568,33591,33583,33577,33607,33605,33612,33619,33566,33580,33611,33575,33608,34387,34386,34466,34472,34454,34445,34449,34462,34439,34455,34438,34443,34458,34437,34469,34457,34465,34471,34453,34456,34446,34461,34448,34452,34883,34884,34925,34933,34934,34930,34944,34929,34943,34927,34947,34942,34932,34940,35346,35911,35927,35963,36004,36003,36214,36216,36277,36279,36278,36561,36563,36862,36853,36866,36863,36859,36868,36860,36854,37078,37088,37081,37082,37091,37087,37093,37080,37083,37079,37084,37092,37200,37198,37199,37333,37346,37338,38492,38495,38588,39139,39647,39727,20095,20592,20586,20577,20574,20576,20563,20555,20573,20594,20552,20557,20545,20571,20554,20578,20501,20549,20575,20585,20587,20579,20580,20550,20544,20590,20595,20567,20561,20944,21099,21101,21100,21102,21206,21203,21293,21404,21877,21878,21820,21837,21840,21812,21802,21841,21858,21814,21813,21808,21842,21829,21772,21810,21861,21838,21817,21832,21805,21819,21824,21835,22282,22279,22523,22548,22498,22518,22492,22516,22528,22509,22525,22536,22520,22539,22515,22479,22535,22510,22499,22514,22501,22508,22497,22542,22524,22544,22503,22529,22540,22513,22505,22512,22541,22532,22876,23136,23128,23125,23143,23134,23096,23093,23149,23120,23135,23141,23148,23123,23140,23127,23107,23133,23122,23108,23131,23112,23182,23102,23117,23097,23116,23152,23145,23111,23121,23126,23106,23132,23410,23406,23489,23488,23641,23838,23819,23837,23834,23840,23820,23848,23821,23846,23845,23823,23856,23826,23843,23839,23854,24126,24116,24241,24244,24249,24242,24243,24374,24376,24475,24470,24479,24714,24720,24710,24766,24752,24762,24787,24788,24783,24804,24793,24797,24776,24753,24795,24759,24778,24767,24771,24781,24768,25394,25445,25482,25474,25469,25533,25502,25517,25501,25495,25515,25486,25455,25479,25488,25454,25519,25461,25500,25453,25518,25468,25508,25403,25503,25464,25477,25473,25489,25485,25456,25939,26061,26213,26209,26203,26201,26204,26210,26392,26745,26759,26768,26780,26733,26734,26798,26795,26966,26735,26787,26796,26793,26741,26740,26802,26767,26743,26770,26748,26731,26738,26794,26752,26737,26750,26779,26774,26763,26784,26761,26788,26744,26747,26769,26764,26762,26749,27446,27443,27447,27448,27537,27535,27533,27534,27532,27690,28096,28075,28084,28083,28276,28076,28137,28130,28087,28150,28116,28160,28104,28128,28127,28118,28094,28133,28124,28125,28123,28148,28106,28093,28141,28144,28090,28117,28098,28111,28105,28112,28146,28115,28157,28119,28109,28131,28091,28922,28941,28919,28951,28916,28940,28912,28932,28915,28944,28924,28927,28934,28947,28928,28920,28918,28939,28930,28942,29310,29307,29308,29311,29469,29463,29447,29457,29464,29450,29448,29439,29455,29470,29576,29686,29688,29685,29700,29697,29693,29703,29696,29690,29692,29695,29708,29707,29684,29704,30052,30051,30158,30162,30159,30155,30156,30161,30160,30351,30345,30419,30521,30511,30509,30513,30514,30516,30515,30525,30501,30523,30517,30792,30802,30793,30797,30794,30796,30758,30789,30800,31076,31079,31081,31082,31075,31083,31073,31163,31226,31224,31222,31223,31375,31380,31376,31541,31559,31540,31525,31536,31522,31524,31539,31512,31530,31517,31537,31531,31533,31535,31538,31544,31514,31523,31892,31896,31894,31907,32053,32061,32056,32054,32058,32069,32044,32041,32065,32071,32062,32063,32074,32059,32040,32611,32661,32668,32669,32667,32714,32715,32717,32720,32721,32711,32719,32713,32799,32798,32795,32839,32835,32840,33048,33061,33049,33051,33069,33055,33068,33054,33057,33045,33063,33053,33058,33297,33336,33331,33338,33332,33330,33396,33680,33699,33704,33677,33658,33651,33700,33652,33679,33665,33685,33689,33653,33684,33705,33661,33667,33676,33693,33691,33706,33675,33662,33701,33711,33672,33687,33712,33663,33702,33671,33710,33654,33690,34393,34390,34495,34487,34498,34497,34501,34490,34480,34504,34489,34483,34488,34508,34484,34491,34492,34499,34493,34494,34898,34953,34965,34984,34978,34986,34970,34961,34977,34975,34968,34983,34969,34971,34967,34980,34988,34956,34963,34958,35202,35286,35289,35285,35376,35367,35372,35358,35897,35899,35932,35933,35965,36005,36221,36219,36217,36284,36290,36281,36287,36289,36568,36574,36573,36572,36567,36576,36577,36900,36875,36881,36892,36876,36897,37103,37098,37104,37108,37106,37107,37076,37099,37100,37097,37206,37208,37210,37203,37205,37356,37364,37361,37363,37368,37348,37369,37354,37355,37367,37352,37358,38266,38278,38280,38524,38509,38507,38513,38511,38591,38762,38916,39141,39319,20635,20629,20628,20638,20619,20643,20611,20620,20622,20637,20584,20636,20626,20610,20615,20831,20948,21266,21265,21412,21415,21905,21928,21925,21933,21879,22085,21922,21907,21896,21903,21941,21889,21923,21906,21924,21885,21900,21926,21887,21909,21921,21902,22284,22569,22583,22553,22558,22567,22563,22568,22517,22600,22565,22556,22555,22579,22591,22582,22574,22585,22584,22573,22572,22587,22881,23215,23188,23199,23162,23202,23198,23160,23206,23164,23205,23212,23189,23214,23095,23172,23178,23191,23171,23179,23209,23163,23165,23180,23196,23183,23187,23197,23530,23501,23499,23508,23505,23498,23502,23564,23600,23863,23875,23915,23873,23883,23871,23861,23889,23886,23893,23859,23866,23890,23869,23857,23897,23874,23865,23881,23864,23868,23858,23862,23872,23877,24132,24129,24408,24486,24485,24491,24777,24761,24780,24802,24782,24772,24852,24818,24842,24854,24837,24821,24851,24824,24828,24830,24769,24835,24856,24861,24848,24831,24836,24843,25162,25492,25521,25520,25550,25573,25576,25583,25539,25757,25587,25546,25568,25590,25557,25586,25589,25697,25567,25534,25565,25564,25540,25560,25555,25538,25543,25548,25547,25544,25584,25559,25561,25906,25959,25962,25956,25948,25960,25957,25996,26013,26014,26030,26064,26066,26236,26220,26235,26240,26225,26233,26218,26226,26369,26892,26835,26884,26844,26922,26860,26858,26865,26895,26838,26871,26859,26852,26870,26899,26896,26867,26849,26887,26828,26888,26992,26804,26897,26863,26822,26900,26872,26832,26877,26876,26856,26891,26890,26903,26830,26824,26845,26846,26854,26868,26833,26886,26836,26857,26901,26917,26823,27449,27451,27455,27452,27540,27543,27545,27541,27581,27632,27634,27635,27696,28156,28230,28231,28191,28233,28296,28220,28221,28229,28258,28203,28223,28225,28253,28275,28188,28211,28235,28224,28241,28219,28163,28206,28254,28264,28252,28257,28209,28200,28256,28273,28267,28217,28194,28208,28243,28261,28199,28280,28260,28279,28245,28281,28242,28262,28213,28214,28250,28960,28958,28975,28923,28974,28977,28963,28965,28962,28978,28959,28968,28986,28955,29259,29274,29320,29321,29318,29317,29323,29458,29451,29488,29474,29489,29491,29479,29490,29485,29478,29475,29493,29452,29742,29740,29744,29739,29718,29722,29729,29741,29745,29732,29731,29725,29737,29728,29746,29947,29999,30063,30060,30183,30170,30177,30182,30173,30175,30180,30167,30357,30354,30426,30534,30535,30532,30541,30533,30538,30542,30539,30540,30686,30700,30816,30820,30821,30812,30829,30833,30826,30830,30832,30825,30824,30814,30818,31092,31091,31090,31088,31234,31242,31235,31244,31236,31385,31462,31460,31562,31547,31556,31560,31564,31566,31552,31576,31557,31906,31902,31912,31905,32088,32111,32099,32083,32086,32103,32106,32079,32109,32092,32107,32082,32084,32105,32081,32095,32078,32574,32575,32613,32614,32674,32672,32673,32727,32849,32847,32848,33022,32980,33091,33098,33106,33103,33095,33085,33101,33082,33254,33262,33271,33272,33273,33284,33340,33341,33343,33397,33595,33743,33785,33827,33728,33768,33810,33767,33764,33788,33782,33808,33734,33736,33771,33763,33727,33793,33757,33765,33752,33791,33761,33739,33742,33750,33781,33737,33801,33807,33758,33809,33798,33730,33779,33749,33786,33735,33745,33770,33811,33731,33772,33774,33732,33787,33751,33762,33819,33755,33790,34520,34530,34534,34515,34531,34522,34538,34525,34539,34524,34540,34537,34519,34536,34513,34888,34902,34901,35002,35031,35001,35000,35008,35006,34998,35004,34999,35005,34994,35073,35017,35221,35224,35223,35293,35290,35291,35406,35405,35385,35417,35392,35415,35416,35396,35397,35410,35400,35409,35402,35404,35407,35935,35969,35968,36026,36030,36016,36025,36021,36228,36224,36233,36312,36307,36301,36295,36310,36316,36303,36309,36313,36296,36311,36293,36591,36599,36602,36601,36582,36590,36581,36597,36583,36584,36598,36587,36593,36588,36596,36585,36909,36916,36911,37126,37164,37124,37119,37116,37128,37113,37115,37121,37120,37127,37125,37123,37217,37220,37215,37218,37216,37377,37386,37413,37379,37402,37414,37391,37388,37376,37394,37375,37373,37382,37380,37415,37378,37404,37412,37401,37399,37381,37398,38267,38285,38284,38288,38535,38526,38536,38537,38531,38528,38594,38600,38595,38641,38640,38764,38768,38766,38919,39081,39147,40166,40697,20099,20100,20150,20669,20671,20678,20654,20676,20682,20660,20680,20674,20656,20673,20666,20657,20683,20681,20662,20664,20951,21114,21112,21115,21116,21955,21979,21964,21968,21963,21962,21981,21952,21972,21956,21993,21951,21970,21901,21967,21973,21986,21974,21960,22002,21965,21977,21954,22292,22611,22632,22628,22607,22605,22601,22639,22613,22606,22621,22617,22629,22619,22589,22627,22641,22780,23239,23236,23243,23226,23224,23217,23221,23216,23231,23240,23227,23238,23223,23232,23242,23220,23222,23245,23225,23184,23510,23512,23513,23583,23603,23921,23907,23882,23909,23922,23916,23902,23912,23911,23906,24048,24143,24142,24138,24141,24139,24261,24268,24262,24267,24263,24384,24495,24493,24823,24905,24906,24875,24901,24886,24882,24878,24902,24879,24911,24873,24896,25120,37224,25123,25125,25124,25541,25585,25579,25616,25618,25609,25632,25636,25651,25667,25631,25621,25624,25657,25655,25634,25635,25612,25638,25648,25640,25665,25653,25647,25610,25626,25664,25637,25639,25611,25575,25627,25646,25633,25614,25967,26002,26067,26246,26252,26261,26256,26251,26250,26265,26260,26232,26400,26982,26975,26936,26958,26978,26993,26943,26949,26986,26937,26946,26967,26969,27002,26952,26953,26933,26988,26931,26941,26981,26864,27000,26932,26985,26944,26991,26948,26998,26968,26945,26996,26956,26939,26955,26935,26972,26959,26961,26930,26962,26927,27003,26940,27462,27461,27459,27458,27464,27457,27547,64013,27643,27644,27641,27639,27640,28315,28374,28360,28303,28352,28319,28307,28308,28320,28337,28345,28358,28370,28349,28353,28318,28361,28343,28336,28365,28326,28367,28338,28350,28355,28380,28376,28313,28306,28302,28301,28324,28321,28351,28339,28368,28362,28311,28334,28323,28999,29012,29010,29027,29024,28993,29021,29026,29042,29048,29034,29025,28994,29016,28995,29003,29040,29023,29008,29011,28996,29005,29018,29263,29325,29324,29329,29328,29326,29500,29506,29499,29498,29504,29514,29513,29764,29770,29771,29778,29777,29783,29760,29775,29776,29774,29762,29766,29773,29780,29921,29951,29950,29949,29981,30073,30071,27011,30191,30223,30211,30199,30206,30204,30201,30200,30224,30203,30198,30189,30197,30205,30361,30389,30429,30549,30559,30560,30546,30550,30554,30569,30567,30548,30553,30573,30688,30855,30874,30868,30863,30852,30869,30853,30854,30881,30851,30841,30873,30848,30870,30843,31100,31106,31101,31097,31249,31256,31257,31250,31255,31253,31266,31251,31259,31248,31395,31394,31390,31467,31590,31588,31597,31604,31593,31602,31589,31603,31601,31600,31585,31608,31606,31587,31922,31924,31919,32136,32134,32128,32141,32127,32133,32122,32142,32123,32131,32124,32140,32148,32132,32125,32146,32621,32619,32615,32616,32620,32678,32677,32679,32731,32732,32801,33124,33120,33143,33116,33129,33115,33122,33138,26401,33118,33142,33127,33135,33092,33121,33309,33353,33348,33344,33346,33349,34033,33855,33878,33910,33913,33935,33933,33893,33873,33856,33926,33895,33840,33869,33917,33882,33881,33908,33907,33885,34055,33886,33847,33850,33844,33914,33859,33912,33842,33861,33833,33753,33867,33839,33858,33837,33887,33904,33849,33870,33868,33874,33903,33989,33934,33851,33863,33846,33843,33896,33918,33860,33835,33888,33876,33902,33872,34571,34564,34551,34572,34554,34518,34549,34637,34552,34574,34569,34561,34550,34573,34565,35030,35019,35021,35022,35038,35035,35034,35020,35024,35205,35227,35295,35301,35300,35297,35296,35298,35292,35302,35446,35462,35455,35425,35391,35447,35458,35460,35445,35459,35457,35444,35450,35900,35915,35914,35941,35940,35942,35974,35972,35973,36044,36200,36201,36241,36236,36238,36239,36237,36243,36244,36240,36242,36336,36320,36332,36337,36334,36304,36329,36323,36322,36327,36338,36331,36340,36614,36607,36609,36608,36613,36615,36616,36610,36619,36946,36927,36932,36937,36925,37136,37133,37135,37137,37142,37140,37131,37134,37230,37231,37448,37458,37424,37434,37478,37427,37477,37470,37507,37422,37450,37446,37485,37484,37455,37472,37479,37487,37430,37473,37488,37425,37460,37475,37456,37490,37454,37459,37452,37462,37426,38303,38300,38302,38299,38546,38547,38545,38551,38606,38650,38653,38648,38645,38771,38775,38776,38770,38927,38925,38926,39084,39158,39161,39343,39346,39344,39349,39597,39595,39771,40170,40173,40167,40576,40701,20710,20692,20695,20712,20723,20699,20714,20701,20708,20691,20716,20720,20719,20707,20704,20952,21120,21121,21225,21227,21296,21420,22055,22037,22028,22034,22012,22031,22044,22017,22035,22018,22010,22045,22020,22015,22009,22665,22652,22672,22680,22662,22657,22655,22644,22667,22650,22663,22673,22670,22646,22658,22664,22651,22676,22671,22782,22891,23260,23278,23269,23253,23274,23258,23277,23275,23283,23266,23264,23259,23276,23262,23261,23257,23272,23263,23415,23520,23523,23651,23938,23936,23933,23942,23930,23937,23927,23946,23945,23944,23934,23932,23949,23929,23935,24152,24153,24147,24280,24273,24279,24270,24284,24277,24281,24274,24276,24388,24387,24431,24502,24876,24872,24897,24926,24945,24947,24914,24915,24946,24940,24960,24948,24916,24954,24923,24933,24891,24938,24929,24918,25129,25127,25131,25643,25677,25691,25693,25716,25718,25714,25715,25725,25717,25702,25766,25678,25730,25694,25692,25675,25683,25696,25680,25727,25663,25708,25707,25689,25701,25719,25971,26016,26273,26272,26271,26373,26372,26402,27057,27062,27081,27040,27086,27030,27056,27052,27068,27025,27033,27022,27047,27021,27049,27070,27055,27071,27076,27069,27044,27092,27065,27082,27034,27087,27059,27027,27050,27041,27038,27097,27031,27024,27074,27061,27045,27078,27466,27469,27467,27550,27551,27552,27587,27588,27646,28366,28405,28401,28419,28453,28408,28471,28411,28462,28425,28494,28441,28442,28455,28440,28475,28434,28397,28426,28470,28531,28409,28398,28461,28480,28464,28476,28469,28395,28423,28430,28483,28421,28413,28406,28473,28444,28412,28474,28447,28429,28446,28424,28449,29063,29072,29065,29056,29061,29058,29071,29051,29062,29057,29079,29252,29267,29335,29333,29331,29507,29517,29521,29516,29794,29811,29809,29813,29810,29799,29806,29952,29954,29955,30077,30096,30230,30216,30220,30229,30225,30218,30228,30392,30593,30588,30597,30594,30574,30592,30575,30590,30595,30898,30890,30900,30893,30888,30846,30891,30878,30885,30880,30892,30882,30884,31128,31114,31115,31126,31125,31124,31123,31127,31112,31122,31120,31275,31306,31280,31279,31272,31270,31400,31403,31404,31470,31624,31644,31626,31633,31632,31638,31629,31628,31643,31630,31621,31640,21124,31641,31652,31618,31931,31935,31932,31930,32167,32183,32194,32163,32170,32193,32192,32197,32157,32206,32196,32198,32203,32204,32175,32185,32150,32188,32159,32166,32174,32169,32161,32201,32627,32738,32739,32741,32734,32804,32861,32860,33161,33158,33155,33159,33165,33164,33163,33301,33943,33956,33953,33951,33978,33998,33986,33964,33966,33963,33977,33972,33985,33997,33962,33946,33969,34000,33949,33959,33979,33954,33940,33991,33996,33947,33961,33967,33960,34006,33944,33974,33999,33952,34007,34004,34002,34011,33968,33937,34401,34611,34595,34600,34667,34624,34606,34590,34593,34585,34587,34627,34604,34625,34622,34630,34592,34610,34602,34605,34620,34578,34618,34609,34613,34626,34598,34599,34616,34596,34586,34608,34577,35063,35047,35057,35058,35066,35070,35054,35068,35062,35067,35056,35052,35051,35229,35233,35231,35230,35305,35307,35304,35499,35481,35467,35474,35471,35478,35901,35944,35945,36053,36047,36055,36246,36361,36354,36351,36365,36349,36362,36355,36359,36358,36357,36350,36352,36356,36624,36625,36622,36621,37155,37148,37152,37154,37151,37149,37146,37156,37153,37147,37242,37234,37241,37235,37541,37540,37494,37531,37498,37536,37524,37546,37517,37542,37530,37547,37497,37527,37503,37539,37614,37518,37506,37525,37538,37501,37512,37537,37514,37510,37516,37529,37543,37502,37511,37545,37533,37515,37421,38558,38561,38655,38744,38781,38778,38782,38787,38784,38786,38779,38788,38785,38783,38862,38861,38934,39085,39086,39170,39168,39175,39325,39324,39363,39353,39355,39354,39362,39357,39367,39601,39651,39655,39742,39743,39776,39777,39775,40177,40178,40181,40615,20735,20739,20784,20728,20742,20743,20726,20734,20747,20748,20733,20746,21131,21132,21233,21231,22088,22082,22092,22069,22081,22090,22089,22086,22104,22106,22080,22067,22077,22060,22078,22072,22058,22074,22298,22699,22685,22705,22688,22691,22703,22700,22693,22689,22783,23295,23284,23293,23287,23286,23299,23288,23298,23289,23297,23303,23301,23311,23655,23961,23959,23967,23954,23970,23955,23957,23968,23964,23969,23962,23966,24169,24157,24160,24156,32243,24283,24286,24289,24393,24498,24971,24963,24953,25009,25008,24994,24969,24987,24979,25007,25005,24991,24978,25002,24993,24973,24934,25011,25133,25710,25712,25750,25760,25733,25751,25756,25743,25739,25738,25740,25763,25759,25704,25777,25752,25974,25978,25977,25979,26034,26035,26293,26288,26281,26290,26295,26282,26287,27136,27142,27159,27109,27128,27157,27121,27108,27168,27135,27116,27106,27163,27165,27134,27175,27122,27118,27156,27127,27111,27200,27144,27110,27131,27149,27132,27115,27145,27140,27160,27173,27151,27126,27174,27143,27124,27158,27473,27557,27555,27554,27558,27649,27648,27647,27650,28481,28454,28542,28551,28614,28562,28557,28553,28556,28514,28495,28549,28506,28566,28534,28524,28546,28501,28530,28498,28496,28503,28564,28563,28509,28416,28513,28523,28541,28519,28560,28499,28555,28521,28543,28565,28515,28535,28522,28539,29106,29103,29083,29104,29088,29082,29097,29109,29085,29093,29086,29092,29089,29098,29084,29095,29107,29336,29338,29528,29522,29534,29535,29536,29533,29531,29537,29530,29529,29538,29831,29833,29834,29830,29825,29821,29829,29832,29820,29817,29960,29959,30078,30245,30238,30233,30237,30236,30243,30234,30248,30235,30364,30365,30366,30363,30605,30607,30601,30600,30925,30907,30927,30924,30929,30926,30932,30920,30915,30916,30921,31130,31137,31136,31132,31138,31131,27510,31289,31410,31412,31411,31671,31691,31678,31660,31694,31663,31673,31690,31669,31941,31944,31948,31947,32247,32219,32234,32231,32215,32225,32259,32250,32230,32246,32241,32240,32238,32223,32630,32684,32688,32685,32749,32747,32746,32748,32742,32744,32868,32871,33187,33183,33182,33173,33186,33177,33175,33302,33359,33363,33362,33360,33358,33361,34084,34107,34063,34048,34089,34062,34057,34061,34079,34058,34087,34076,34043,34091,34042,34056,34060,34036,34090,34034,34069,34039,34027,34035,34044,34066,34026,34025,34070,34046,34088,34077,34094,34050,34045,34078,34038,34097,34086,34023,34024,34032,34031,34041,34072,34080,34096,34059,34073,34095,34402,34646,34659,34660,34679,34785,34675,34648,34644,34651,34642,34657,34650,34641,34654,34669,34666,34640,34638,34655,34653,34671,34668,34682,34670,34652,34661,34639,34683,34677,34658,34663,34665,34906,35077,35084,35092,35083,35095,35096,35097,35078,35094,35089,35086,35081,35234,35236,35235,35309,35312,35308,35535,35526,35512,35539,35537,35540,35541,35515,35543,35518,35520,35525,35544,35523,35514,35517,35545,35902,35917,35983,36069,36063,36057,36072,36058,36061,36071,36256,36252,36257,36251,36384,36387,36389,36388,36398,36373,36379,36374,36369,36377,36390,36391,36372,36370,36376,36371,36380,36375,36378,36652,36644,36632,36634,36640,36643,36630,36631,36979,36976,36975,36967,36971,37167,37163,37161,37162,37170,37158,37166,37253,37254,37258,37249,37250,37252,37248,37584,37571,37572,37568,37593,37558,37583,37617,37599,37592,37609,37591,37597,37580,37615,37570,37608,37578,37576,37582,37606,37581,37589,37577,37600,37598,37607,37585,37587,37557,37601,37574,37556,38268,38316,38315,38318,38320,38564,38562,38611,38661,38664,38658,38746,38794,38798,38792,38864,38863,38942,38941,38950,38953,38952,38944,38939,38951,39090,39176,39162,39185,39188,39190,39191,39189,39388,39373,39375,39379,39380,39374,39369,39382,39384,39371,39383,39372,39603,39660,39659,39667,39666,39665,39750,39747,39783,39796,39793,39782,39798,39797,39792,39784,39780,39788,40188,40186,40189,40191,40183,40199,40192,40185,40187,40200,40197,40196,40579,40659,40719,40720,20764,20755,20759,20762,20753,20958,21300,21473,22128,22112,22126,22131,22118,22115,22125,22130,22110,22135,22300,22299,22728,22717,22729,22719,22714,22722,22716,22726,23319,23321,23323,23329,23316,23315,23312,23318,23336,23322,23328,23326,23535,23980,23985,23977,23975,23989,23984,23982,23978,23976,23986,23981,23983,23988,24167,24168,24166,24175,24297,24295,24294,24296,24293,24395,24508,24989,25000,24982,25029,25012,25030,25025,25036,25018,25023,25016,24972,25815,25814,25808,25807,25801,25789,25737,25795,25819,25843,25817,25907,25983,25980,26018,26312,26302,26304,26314,26315,26319,26301,26299,26298,26316,26403,27188,27238,27209,27239,27186,27240,27198,27229,27245,27254,27227,27217,27176,27226,27195,27199,27201,27242,27236,27216,27215,27220,27247,27241,27232,27196,27230,27222,27221,27213,27214,27206,27477,27476,27478,27559,27562,27563,27592,27591,27652,27651,27654,28589,28619,28579,28615,28604,28622,28616,28510,28612,28605,28574,28618,28584,28676,28581,28590,28602,28588,28586,28623,28607,28600,28578,28617,28587,28621,28591,28594,28592,29125,29122,29119,29112,29142,29120,29121,29131,29140,29130,29127,29135,29117,29144,29116,29126,29146,29147,29341,29342,29545,29542,29543,29548,29541,29547,29546,29823,29850,29856,29844,29842,29845,29857,29963,30080,30255,30253,30257,30269,30259,30268,30261,30258,30256,30395,30438,30618,30621,30625,30620,30619,30626,30627,30613,30617,30615,30941,30953,30949,30954,30942,30947,30939,30945,30946,30957,30943,30944,31140,31300,31304,31303,31414,31416,31413,31409,31415,31710,31715,31719,31709,31701,31717,31706,31720,31737,31700,31722,31714,31708,31723,31704,31711,31954,31956,31959,31952,31953,32274,32289,32279,32268,32287,32288,32275,32270,32284,32277,32282,32290,32267,32271,32278,32269,32276,32293,32292,32579,32635,32636,32634,32689,32751,32810,32809,32876,33201,33190,33198,33209,33205,33195,33200,33196,33204,33202,33207,33191,33266,33365,33366,33367,34134,34117,34155,34125,34131,34145,34136,34112,34118,34148,34113,34146,34116,34129,34119,34147,34110,34139,34161,34126,34158,34165,34133,34151,34144,34188,34150,34141,34132,34149,34156,34403,34405,34404,34715,34703,34711,34707,34706,34696,34689,34710,34712,34681,34695,34723,34693,34704,34705,34717,34692,34708,34716,34714,34697,35102,35110,35120,35117,35118,35111,35121,35106,35113,35107,35119,35116,35103,35313,35552,35554,35570,35572,35573,35549,35604,35556,35551,35568,35528,35550,35553,35560,35583,35567,35579,35985,35986,35984,36085,36078,36081,36080,36083,36204,36206,36261,36263,36403,36414,36408,36416,36421,36406,36412,36413,36417,36400,36415,36541,36662,36654,36661,36658,36665,36663,36660,36982,36985,36987,36998,37114,37171,37173,37174,37267,37264,37265,37261,37263,37671,37662,37640,37663,37638,37647,37754,37688,37692,37659,37667,37650,37633,37702,37677,37646,37645,37579,37661,37626,37669,37651,37625,37623,37684,37634,37668,37631,37673,37689,37685,37674,37652,37644,37643,37630,37641,37632,37627,37654,38332,38349,38334,38329,38330,38326,38335,38325,38333,38569,38612,38667,38674,38672,38809,38807,38804,38896,38904,38965,38959,38962,39204,39199,39207,39209,39326,39406,39404,39397,39396,39408,39395,39402,39401,39399,39609,39615,39604,39611,39670,39674,39673,39671,39731,39808,39813,39815,39804,39806,39803,39810,39827,39826,39824,39802,39829,39805,39816,40229,40215,40224,40222,40212,40233,40221,40216,40226,40208,40217,40223,40584,40582,40583,40622,40621,40661,40662,40698,40722,40765,20774,20773,20770,20772,20768,20777,21236,22163,22156,22157,22150,22148,22147,22142,22146,22143,22145,22742,22740,22735,22738,23341,23333,23346,23331,23340,23335,23334,23343,23342,23419,23537,23538,23991,24172,24170,24510,24507,25027,25013,25020,25063,25056,25061,25060,25064,25054,25839,25833,25827,25835,25828,25832,25985,25984,26038,26074,26322,27277,27286,27265,27301,27273,27295,27291,27297,27294,27271,27283,27278,27285,27267,27304,27300,27281,27263,27302,27290,27269,27276,27282,27483,27565,27657,28620,28585,28660,28628,28643,28636,28653,28647,28646,28638,28658,28637,28642,28648,29153,29169,29160,29170,29156,29168,29154,29555,29550,29551,29847,29874,29867,29840,29866,29869,29873,29861,29871,29968,29969,29970,29967,30084,30275,30280,30281,30279,30372,30441,30645,30635,30642,30647,30646,30644,30641,30632,30704,30963,30973,30978,30971,30972,30962,30981,30969,30974,30980,31147,31144,31324,31323,31318,31320,31316,31322,31422,31424,31425,31749,31759,31730,31744,31743,31739,31758,31732,31755,31731,31746,31753,31747,31745,31736,31741,31750,31728,31729,31760,31754,31976,32301,32316,32322,32307,38984,32312,32298,32329,32320,32327,32297,32332,32304,32315,32310,32324,32314,32581,32639,32638,32637,32756,32754,32812,33211,33220,33228,33226,33221,33223,33212,33257,33371,33370,33372,34179,34176,34191,34215,34197,34208,34187,34211,34171,34212,34202,34206,34167,34172,34185,34209,34170,34168,34135,34190,34198,34182,34189,34201,34205,34177,34210,34178,34184,34181,34169,34166,34200,34192,34207,34408,34750,34730,34733,34757,34736,34732,34745,34741,34748,34734,34761,34755,34754,34764,34743,34735,34756,34762,34740,34742,34751,34744,34749,34782,34738,35125,35123,35132,35134,35137,35154,35127,35138,35245,35247,35246,35314,35315,35614,35608,35606,35601,35589,35595,35618,35599,35602,35605,35591,35597,35592,35590,35612,35603,35610,35919,35952,35954,35953,35951,35989,35988,36089,36207,36430,36429,36435,36432,36428,36423,36675,36672,36997,36990,37176,37274,37282,37275,37273,37279,37281,37277,37280,37793,37763,37807,37732,37718,37703,37756,37720,37724,37750,37705,37712,37713,37728,37741,37775,37708,37738,37753,37719,37717,37714,37711,37745,37751,37755,37729,37726,37731,37735,37760,37710,37721,38343,38336,38345,38339,38341,38327,38574,38576,38572,38688,38687,38680,38685,38681,38810,38817,38812,38814,38813,38869,38868,38897,38977,38980,38986,38985,38981,38979,39205,39211,39212,39210,39219,39218,39215,39213,39217,39216,39320,39331,39329,39426,39418,39412,39415,39417,39416,39414,39419,39421,39422,39420,39427,39614,39678,39677,39681,39676,39752,39834,39848,39838,39835,39846,39841,39845,39844,39814,39842,39840,39855,40243,40257,40295,40246,40238,40239,40241,40248,40240,40261,40258,40259,40254,40247,40256,40253,32757,40237,40586,40585,40589,40624,40648,40666,40699,40703,40740,40739,40738,40788,40864,20785,20781,20782,22168,22172,22167,22170,22173,22169,22896,23356,23657,23658,24000,24173,24174,25048,25055,25069,25070,25073,25066,25072,25067,25046,25065,25855,25860,25853,25848,25857,25859,25852,26004,26075,26330,26331,26328,27333,27321,27325,27361,27334,27322,27318,27319,27335,27316,27309,27486,27593,27659,28679,28684,28685,28673,28677,28692,28686,28671,28672,28667,28710,28668,28663,28682,29185,29183,29177,29187,29181,29558,29880,29888,29877,29889,29886,29878,29883,29890,29972,29971,30300,30308,30297,30288,30291,30295,30298,30374,30397,30444,30658,30650,30975,30988,30995,30996,30985,30992,30994,30993,31149,31148,31327,31772,31785,31769,31776,31775,31789,31773,31782,31784,31778,31781,31792,32348,32336,32342,32355,32344,32354,32351,32337,32352,32343,32339,32693,32691,32759,32760,32885,33233,33234,33232,33375,33374,34228,34246,34240,34243,34242,34227,34229,34237,34247,34244,34239,34251,34254,34248,34245,34225,34230,34258,34340,34232,34231,34238,34409,34791,34790,34786,34779,34795,34794,34789,34783,34803,34788,34772,34780,34771,34797,34776,34787,34724,34775,34777,34817,34804,34792,34781,35155,35147,35151,35148,35142,35152,35153,35145,35626,35623,35619,35635,35632,35637,35655,35631,35644,35646,35633,35621,35639,35622,35638,35630,35620,35643,35645,35642,35906,35957,35993,35992,35991,36094,36100,36098,36096,36444,36450,36448,36439,36438,36446,36453,36455,36443,36442,36449,36445,36457,36436,36678,36679,36680,36683,37160,37178,37179,37182,37288,37285,37287,37295,37290,37813,37772,37778,37815,37787,37789,37769,37799,37774,37802,37790,37798,37781,37768,37785,37791,37773,37809,37777,37810,37796,37800,37812,37795,37797,38354,38355,38353,38579,38615,38618,24002,38623,38616,38621,38691,38690,38693,38828,38830,38824,38827,38820,38826,38818,38821,38871,38873,38870,38872,38906,38992,38993,38994,39096,39233,39228,39226,39439,39435,39433,39437,39428,39441,39434,39429,39431,39430,39616,39644,39688,39684,39685,39721,39733,39754,39756,39755,39879,39878,39875,39871,39873,39861,39864,39891,39862,39876,39865,39869,40284,40275,40271,40266,40283,40267,40281,40278,40268,40279,40274,40276,40287,40280,40282,40590,40588,40671,40705,40704,40726,40741,40747,40746,40745,40744,40780,40789,20788,20789,21142,21239,21428,22187,22189,22182,22183,22186,22188,22746,22749,22747,22802,23357,23358,23359,24003,24176,24511,25083,25863,25872,25869,25865,25868,25870,25988,26078,26077,26334,27367,27360,27340,27345,27353,27339,27359,27356,27344,27371,27343,27341,27358,27488,27568,27660,28697,28711,28704,28694,28715,28705,28706,28707,28713,28695,28708,28700,28714,29196,29194,29191,29186,29189,29349,29350,29348,29347,29345,29899,29893,29879,29891,29974,30304,30665,30666,30660,30705,31005,31003,31009,31004,30999,31006,31152,31335,31336,31795,31804,31801,31788,31803,31980,31978,32374,32373,32376,32368,32375,32367,32378,32370,32372,32360,32587,32586,32643,32646,32695,32765,32766,32888,33239,33237,33380,33377,33379,34283,34289,34285,34265,34273,34280,34266,34263,34284,34290,34296,34264,34271,34275,34268,34257,34288,34278,34287,34270,34274,34816,34810,34819,34806,34807,34825,34828,34827,34822,34812,34824,34815,34826,34818,35170,35162,35163,35159,35169,35164,35160,35165,35161,35208,35255,35254,35318,35664,35656,35658,35648,35667,35670,35668,35659,35669,35665,35650,35666,35671,35907,35959,35958,35994,36102,36103,36105,36268,36266,36269,36267,36461,36472,36467,36458,36463,36475,36546,36690,36689,36687,36688,36691,36788,37184,37183,37296,37293,37854,37831,37839,37826,37850,37840,37881,37868,37836,37849,37801,37862,37834,37844,37870,37859,37845,37828,37838,37824,37842,37863,38269,38362,38363,38625,38697,38699,38700,38696,38694,38835,38839,38838,38877,38878,38879,39004,39001,39005,38999,39103,39101,39099,39102,39240,39239,39235,39334,39335,39450,39445,39461,39453,39460,39451,39458,39456,39463,39459,39454,39452,39444,39618,39691,39690,39694,39692,39735,39914,39915,39904,39902,39908,39910,39906,39920,39892,39895,39916,39900,39897,39909,39893,39905,39898,40311,40321,40330,40324,40328,40305,40320,40312,40326,40331,40332,40317,40299,40308,40309,40304,40297,40325,40307,40315,40322,40303,40313,40319,40327,40296,40596,40593,40640,40700,40749,40768,40769,40781,40790,40791,40792,21303,22194,22197,22195,22755,23365,24006,24007,24302,24303,24512,24513,25081,25879,25878,25877,25875,26079,26344,26339,26340,27379,27376,27370,27368,27385,27377,27374,27375,28732,28725,28719,28727,28724,28721,28738,28728,28735,28730,28729,28736,28731,28723,28737,29203,29204,29352,29565,29564,29882,30379,30378,30398,30445,30668,30670,30671,30669,30706,31013,31011,31015,31016,31012,31017,31154,31342,31340,31341,31479,31817,31816,31818,31815,31813,31982,32379,32382,32385,32384,32698,32767,32889,33243,33241,33291,33384,33385,34338,34303,34305,34302,34331,34304,34294,34308,34313,34309,34316,34301,34841,34832,34833,34839,34835,34838,35171,35174,35257,35319,35680,35690,35677,35688,35683,35685,35687,35693,36270,36486,36488,36484,36697,36694,36695,36693,36696,36698,37005,37187,37185,37303,37301,37298,37299,37899,37907,37883,37920,37903,37908,37886,37909,37904,37928,37913,37901,37877,37888,37879,37895,37902,37910,37906,37882,37897,37880,37898,37887,37884,37900,37878,37905,37894,38366,38368,38367,38702,38703,38841,38843,38909,38910,39008,39010,39011,39007,39105,39106,39248,39246,39257,39244,39243,39251,39474,39476,39473,39468,39466,39478,39465,39470,39480,39469,39623,39626,39622,39696,39698,39697,39947,39944,39927,39941,39954,39928,40000,39943,39950,39942,39959,39956,39945,40351,40345,40356,40349,40338,40344,40336,40347,40352,40340,40348,40362,40343,40353,40346,40354,40360,40350,40355,40383,40361,40342,40358,40359,40601,40603,40602,40677,40676,40679,40678,40752,40750,40795,40800,40798,40797,40793,40849,20794,20793,21144,21143,22211,22205,22206,23368,23367,24011,24015,24305,25085,25883,27394,27388,27395,27384,27392,28739,28740,28746,28744,28745,28741,28742,29213,29210,29209,29566,29975,30314,30672,31021,31025,31023,31828,31827,31986,32394,32391,32392,32395,32390,32397,32589,32699,32816,33245,34328,34346,34342,34335,34339,34332,34329,34343,34350,34337,34336,34345,34334,34341,34857,34845,34843,34848,34852,34844,34859,34890,35181,35177,35182,35179,35322,35705,35704,35653,35706,35707,36112,36116,36271,36494,36492,36702,36699,36701,37190,37188,37189,37305,37951,37947,37942,37929,37949,37948,37936,37945,37930,37943,37932,37952,37937,38373,38372,38371,38709,38714,38847,38881,39012,39113,39110,39104,39256,39254,39481,39485,39494,39492,39490,39489,39482,39487,39629,39701,39703,39704,39702,39738,39762,39979,39965,39964,39980,39971,39976,39977,39972,39969,40375,40374,40380,40385,40391,40394,40399,40382,40389,40387,40379,40373,40398,40377,40378,40364,40392,40369,40365,40396,40371,40397,40370,40570,40604,40683,40686,40685,40731,40728,40730,40753,40782,40805,40804,40850,20153,22214,22213,22219,22897,23371,23372,24021,24017,24306,25889,25888,25894,25890,27403,27400,27401,27661,28757,28758,28759,28754,29214,29215,29353,29567,29912,29909,29913,29911,30317,30381,31029,31156,31344,31345,31831,31836,31833,31835,31834,31988,31985,32401,32591,32647,33246,33387,34356,34357,34355,34348,34354,34358,34860,34856,34854,34858,34853,35185,35263,35262,35323,35710,35716,35714,35718,35717,35711,36117,36501,36500,36506,36498,36496,36502,36503,36704,36706,37191,37964,37968,37962,37963,37967,37959,37957,37960,37961,37958,38719,38883,39018,39017,39115,39252,39259,39502,39507,39508,39500,39503,39496,39498,39497,39506,39504,39632,39705,39723,39739,39766,39765,40006,40008,39999,40004,39993,39987,40001,39996,39991,39988,39986,39997,39990,40411,40402,40414,40410,40395,40400,40412,40401,40415,40425,40409,40408,40406,40437,40405,40413,40630,40688,40757,40755,40754,40770,40811,40853,40866,20797,21145,22760,22759,22898,23373,24024,34863,24399,25089,25091,25092,25897,25893,26006,26347,27409,27410,27407,27594,28763,28762,29218,29570,29569,29571,30320,30676,31847,31846,32405,33388,34362,34368,34361,34364,34353,34363,34366,34864,34866,34862,34867,35190,35188,35187,35326,35724,35726,35723,35720,35909,36121,36504,36708,36707,37308,37986,37973,37981,37975,37982,38852,38853,38912,39510,39513,39710,39711,39712,40018,40024,40016,40010,40013,40011,40021,40025,40012,40014,40443,40439,40431,40419,40427,40440,40420,40438,40417,40430,40422,40434,40432,40418,40428,40436,40435,40424,40429,40642,40656,40690,40691,40710,40732,40760,40759,40758,40771,40783,40817,40816,40814,40815,22227,22221,23374,23661,25901,26349,26350,27411,28767,28769,28765,28768,29219,29915,29925,30677,31032,31159,31158,31850,32407,32649,33389,34371,34872,34871,34869,34891,35732,35733,36510,36511,36512,36509,37310,37309,37314,37995,37992,37993,38629,38726,38723,38727,38855,38885,39518,39637,39769,40035,40039,40038,40034,40030,40032,40450,40446,40455,40451,40454,40453,40448,40449,40457,40447,40445,40452,40608,40734,40774,40820,40821,40822,22228,25902,26040,27416,27417,27415,27418,28770,29222,29354,30680,30681,31033,31849,31851,31990,32410,32408,32411,32409,33248,33249,34374,34375,34376,35193,35194,35196,35195,35327,35736,35737,36517,36516,36515,37998,37997,37999,38001,38003,38729,39026,39263,40040,40046,40045,40459,40461,40464,40463,40466,40465,40609,40693,40713,40775,40824,40827,40826,40825,22302,28774,31855,34876,36274,36518,37315,38004,38008,38006,38005,39520,40052,40051,40049,40053,40468,40467,40694,40714,40868,28776,28773,31991,34410,34878,34877,34879,35742,35996,36521,36553,38731,39027,39028,39116,39265,39339,39524,39526,39527,39716,40469,40471,40776,25095,27422,29223,34380,36520,38018,38016,38017,39529,39528,39726,40473,29225,34379,35743,38019,40057,40631,30325,39531,40058,40477,28777,28778,40612,40830,40777,40856,30849,37561,35023,22715,24658,31911,23290,9556,9574,9559,9568,9580,9571,9562,9577,9565,9554,9572,9557,9566,9578,9569,9560,9575,9563,9555,9573,9558,9567,9579,9570,9561,9576,9564,9553,9552,9581,9582,9584,9583,65517,132423,37595,132575,147397,34124,17077,29679,20917,13897,149826,166372,37700,137691,33518,146632,30780,26436,25311,149811,166314,131744,158643,135941,20395,140525,20488,159017,162436,144896,150193,140563,20521,131966,24484,131968,131911,28379,132127,20605,20737,13434,20750,39020,14147,33814,149924,132231,20832,144308,20842,134143,139516,131813,140592,132494,143923,137603,23426,34685,132531,146585,20914,20920,40244,20937,20943,20945,15580,20947,150182,20915,20962,21314,20973,33741,26942,145197,24443,21003,21030,21052,21173,21079,21140,21177,21189,31765,34114,21216,34317,158483,21253,166622,21833,28377,147328,133460,147436,21299,21316,134114,27851,136998,26651,29653,24650,16042,14540,136936,29149,17570,21357,21364,165547,21374,21375,136598,136723,30694,21395,166555,21408,21419,21422,29607,153458,16217,29596,21441,21445,27721,20041,22526,21465,15019,134031,21472,147435,142755,21494,134263,21523,28793,21803,26199,27995,21613,158547,134516,21853,21647,21668,18342,136973,134877,15796,134477,166332,140952,21831,19693,21551,29719,21894,21929,22021,137431,147514,17746,148533,26291,135348,22071,26317,144010,26276,26285,22093,22095,30961,22257,38791,21502,22272,22255,22253,166758,13859,135759,22342,147877,27758,28811,22338,14001,158846,22502,136214,22531,136276,148323,22566,150517,22620,22698,13665,22752,22748,135740,22779,23551,22339,172368,148088,37843,13729,22815,26790,14019,28249,136766,23076,21843,136850,34053,22985,134478,158849,159018,137180,23001,137211,137138,159142,28017,137256,136917,23033,159301,23211,23139,14054,149929,23159,14088,23190,29797,23251,159649,140628,15749,137489,14130,136888,24195,21200,23414,25992,23420,162318,16388,18525,131588,23509,24928,137780,154060,132517,23539,23453,19728,23557,138052,23571,29646,23572,138405,158504,23625,18653,23685,23785,23791,23947,138745,138807,23824,23832,23878,138916,23738,24023,33532,14381,149761,139337,139635,33415,14390,15298,24110,27274,24181,24186,148668,134355,21414,20151,24272,21416,137073,24073,24308,164994,24313,24315,14496,24316,26686,37915,24333,131521,194708,15070,18606,135994,24378,157832,140240,24408,140401,24419,38845,159342,24434,37696,166454,24487,23990,15711,152144,139114,159992,140904,37334,131742,166441,24625,26245,137335,14691,15815,13881,22416,141236,31089,15936,24734,24740,24755,149890,149903,162387,29860,20705,23200,24932,33828,24898,194726,159442,24961,20980,132694,24967,23466,147383,141407,25043,166813,170333,25040,14642,141696,141505,24611,24924,25886,25483,131352,25285,137072,25301,142861,25452,149983,14871,25656,25592,136078,137212,25744,28554,142902,38932,147596,153373,25825,25829,38011,14950,25658,14935,25933,28438,150056,150051,25989,25965,25951,143486,26037,149824,19255,26065,16600,137257,26080,26083,24543,144384,26136,143863,143864,26180,143780,143781,26187,134773,26215,152038,26227,26228,138813,143921,165364,143816,152339,30661,141559,39332,26370,148380,150049,15147,27130,145346,26462,26471,26466,147917,168173,26583,17641,26658,28240,37436,26625,144358,159136,26717,144495,27105,27147,166623,26995,26819,144845,26881,26880,15666,14849,144956,15232,26540,26977,166474,17148,26934,27032,15265,132041,33635,20624,27129,144985,139562,27205,145155,27293,15347,26545,27336,168348,15373,27421,133411,24798,27445,27508,141261,28341,146139,132021,137560,14144,21537,146266,27617,147196,27612,27703,140427,149745,158545,27738,33318,27769,146876,17605,146877,147876,149772,149760,146633,14053,15595,134450,39811,143865,140433,32655,26679,159013,159137,159211,28054,27996,28284,28420,149887,147589,159346,34099,159604,20935,27804,28189,33838,166689,28207,146991,29779,147330,31180,28239,23185,143435,28664,14093,28573,146992,28410,136343,147517,17749,37872,28484,28508,15694,28532,168304,15675,28575,147780,28627,147601,147797,147513,147440,147380,147775,20959,147798,147799,147776,156125,28747,28798,28839,28801,28876,28885,28886,28895,16644,15848,29108,29078,148087,28971,28997,23176,29002,29038,23708,148325,29007,37730,148161,28972,148570,150055,150050,29114,166888,28861,29198,37954,29205,22801,37955,29220,37697,153093,29230,29248,149876,26813,29269,29271,15957,143428,26637,28477,29314,29482,29483,149539,165931,18669,165892,29480,29486,29647,29610,134202,158254,29641,29769,147938,136935,150052,26147,14021,149943,149901,150011,29687,29717,26883,150054,29753,132547,16087,29788,141485,29792,167602,29767,29668,29814,33721,29804,14128,29812,37873,27180,29826,18771,150156,147807,150137,166799,23366,166915,137374,29896,137608,29966,29929,29982,167641,137803,23511,167596,37765,30029,30026,30055,30062,151426,16132,150803,30094,29789,30110,30132,30210,30252,30289,30287,30319,30326,156661,30352,33263,14328,157969,157966,30369,30373,30391,30412,159647,33890,151709,151933,138780,30494,30502,30528,25775,152096,30552,144044,30639,166244,166248,136897,30708,30729,136054,150034,26826,30895,30919,30931,38565,31022,153056,30935,31028,30897,161292,36792,34948,166699,155779,140828,31110,35072,26882,31104,153687,31133,162617,31036,31145,28202,160038,16040,31174,168205,31188],
-  "euc-kr":[44034,44035,44037,44038,44043,44044,44045,44046,44047,44056,44062,44063,44065,44066,44067,44069,44070,44071,44072,44073,44074,44075,44078,44082,44083,44084,null,null,null,null,null,null,44085,44086,44087,44090,44091,44093,44094,44095,44097,44098,44099,44100,44101,44102,44103,44104,44105,44106,44108,44110,44111,44112,44113,44114,44115,44117,null,null,null,null,null,null,44118,44119,44121,44122,44123,44125,44126,44127,44128,44129,44130,44131,44132,44133,44134,44135,44136,44137,44138,44139,44140,44141,44142,44143,44146,44147,44149,44150,44153,44155,44156,44157,44158,44159,44162,44167,44168,44173,44174,44175,44177,44178,44179,44181,44182,44183,44184,44185,44186,44187,44190,44194,44195,44196,44197,44198,44199,44203,44205,44206,44209,44210,44211,44212,44213,44214,44215,44218,44222,44223,44224,44226,44227,44229,44230,44231,44233,44234,44235,44237,44238,44239,44240,44241,44242,44243,44244,44246,44248,44249,44250,44251,44252,44253,44254,44255,44258,44259,44261,44262,44265,44267,44269,44270,44274,44276,44279,44280,44281,44282,44283,44286,44287,44289,44290,44291,44293,44295,44296,44297,44298,44299,44302,44304,44306,44307,44308,44309,44310,44311,44313,44314,44315,44317,44318,44319,44321,44322,44323,44324,44325,44326,44327,44328,44330,44331,44334,44335,44336,44337,44338,44339,null,null,null,null,null,null,44342,44343,44345,44346,44347,44349,44350,44351,44352,44353,44354,44355,44358,44360,44362,44363,44364,44365,44366,44367,44369,44370,44371,44373,44374,44375,null,null,null,null,null,null,44377,44378,44379,44380,44381,44382,44383,44384,44386,44388,44389,44390,44391,44392,44393,44394,44395,44398,44399,44401,44402,44407,44408,44409,44410,44414,44416,44419,44420,44421,44422,44423,44426,44427,44429,44430,44431,44433,44434,44435,44436,44437,44438,44439,44440,44441,44442,44443,44446,44447,44448,44449,44450,44451,44453,44454,44455,44456,44457,44458,44459,44460,44461,44462,44463,44464,44465,44466,44467,44468,44469,44470,44472,44473,44474,44475,44476,44477,44478,44479,44482,44483,44485,44486,44487,44489,44490,44491,44492,44493,44494,44495,44498,44500,44501,44502,44503,44504,44505,44506,44507,44509,44510,44511,44513,44514,44515,44517,44518,44519,44520,44521,44522,44523,44524,44525,44526,44527,44528,44529,44530,44531,44532,44533,44534,44535,44538,44539,44541,44542,44546,44547,44548,44549,44550,44551,44554,44556,44558,44559,44560,44561,44562,44563,44565,44566,44567,44568,44569,44570,44571,44572,null,null,null,null,null,null,44573,44574,44575,44576,44577,44578,44579,44580,44581,44582,44583,44584,44585,44586,44587,44588,44589,44590,44591,44594,44595,44597,44598,44601,44603,44604,null,null,null,null,null,null,44605,44606,44607,44610,44612,44615,44616,44617,44619,44623,44625,44626,44627,44629,44631,44632,44633,44634,44635,44638,44642,44643,44644,44646,44647,44650,44651,44653,44654,44655,44657,44658,44659,44660,44661,44662,44663,44666,44670,44671,44672,44673,44674,44675,44678,44679,44680,44681,44682,44683,44685,44686,44687,44688,44689,44690,44691,44692,44693,44694,44695,44696,44697,44698,44699,44700,44701,44702,44703,44704,44705,44706,44707,44708,44709,44710,44711,44712,44713,44714,44715,44716,44717,44718,44719,44720,44721,44722,44723,44724,44725,44726,44727,44728,44729,44730,44731,44735,44737,44738,44739,44741,44742,44743,44744,44745,44746,44747,44750,44754,44755,44756,44757,44758,44759,44762,44763,44765,44766,44767,44768,44769,44770,44771,44772,44773,44774,44775,44777,44778,44780,44782,44783,44784,44785,44786,44787,44789,44790,44791,44793,44794,44795,44797,44798,44799,44800,44801,44802,44803,44804,44805,null,null,null,null,null,null,44806,44809,44810,44811,44812,44814,44815,44817,44818,44819,44820,44821,44822,44823,44824,44825,44826,44827,44828,44829,44830,44831,44832,44833,44834,44835,null,null,null,null,null,null,44836,44837,44838,44839,44840,44841,44842,44843,44846,44847,44849,44851,44853,44854,44855,44856,44857,44858,44859,44862,44864,44868,44869,44870,44871,44874,44875,44876,44877,44878,44879,44881,44882,44883,44884,44885,44886,44887,44888,44889,44890,44891,44894,44895,44896,44897,44898,44899,44902,44903,44904,44905,44906,44907,44908,44909,44910,44911,44912,44913,44914,44915,44916,44917,44918,44919,44920,44922,44923,44924,44925,44926,44927,44929,44930,44931,44933,44934,44935,44937,44938,44939,44940,44941,44942,44943,44946,44947,44948,44950,44951,44952,44953,44954,44955,44957,44958,44959,44960,44961,44962,44963,44964,44965,44966,44967,44968,44969,44970,44971,44972,44973,44974,44975,44976,44977,44978,44979,44980,44981,44982,44983,44986,44987,44989,44990,44991,44993,44994,44995,44996,44997,44998,45002,45004,45007,45008,45009,45010,45011,45013,45014,45015,45016,45017,45018,45019,45021,45022,45023,45024,45025,null,null,null,null,null,null,45026,45027,45028,45029,45030,45031,45034,45035,45036,45037,45038,45039,45042,45043,45045,45046,45047,45049,45050,45051,45052,45053,45054,45055,45058,45059,null,null,null,null,null,null,45061,45062,45063,45064,45065,45066,45067,45069,45070,45071,45073,45074,45075,45077,45078,45079,45080,45081,45082,45083,45086,45087,45088,45089,45090,45091,45092,45093,45094,45095,45097,45098,45099,45100,45101,45102,45103,45104,45105,45106,45107,45108,45109,45110,45111,45112,45113,45114,45115,45116,45117,45118,45119,45120,45121,45122,45123,45126,45127,45129,45131,45133,45135,45136,45137,45138,45142,45144,45146,45147,45148,45150,45151,45152,45153,45154,45155,45156,45157,45158,45159,45160,45161,45162,45163,45164,45165,45166,45167,45168,45169,45170,45171,45172,45173,45174,45175,45176,45177,45178,45179,45182,45183,45185,45186,45187,45189,45190,45191,45192,45193,45194,45195,45198,45200,45202,45203,45204,45205,45206,45207,45211,45213,45214,45219,45220,45221,45222,45223,45226,45232,45234,45238,45239,45241,45242,45243,45245,45246,45247,45248,45249,45250,45251,45254,45258,45259,45260,45261,45262,45263,45266,null,null,null,null,null,null,45267,45269,45270,45271,45273,45274,45275,45276,45277,45278,45279,45281,45282,45283,45284,45286,45287,45288,45289,45290,45291,45292,45293,45294,45295,45296,null,null,null,null,null,null,45297,45298,45299,45300,45301,45302,45303,45304,45305,45306,45307,45308,45309,45310,45311,45312,45313,45314,45315,45316,45317,45318,45319,45322,45325,45326,45327,45329,45332,45333,45334,45335,45338,45342,45343,45344,45345,45346,45350,45351,45353,45354,45355,45357,45358,45359,45360,45361,45362,45363,45366,45370,45371,45372,45373,45374,45375,45378,45379,45381,45382,45383,45385,45386,45387,45388,45389,45390,45391,45394,45395,45398,45399,45401,45402,45403,45405,45406,45407,45409,45410,45411,45412,45413,45414,45415,45416,45417,45418,45419,45420,45421,45422,45423,45424,45425,45426,45427,45428,45429,45430,45431,45434,45435,45437,45438,45439,45441,45443,45444,45445,45446,45447,45450,45452,45454,45455,45456,45457,45461,45462,45463,45465,45466,45467,45469,45470,45471,45472,45473,45474,45475,45476,45477,45478,45479,45481,45482,45483,45484,45485,45486,45487,45488,45489,45490,45491,45492,45493,45494,45495,45496,null,null,null,null,null,null,45497,45498,45499,45500,45501,45502,45503,45504,45505,45506,45507,45508,45509,45510,45511,45512,45513,45514,45515,45517,45518,45519,45521,45522,45523,45525,null,null,null,null,null,null,45526,45527,45528,45529,45530,45531,45534,45536,45537,45538,45539,45540,45541,45542,45543,45546,45547,45549,45550,45551,45553,45554,45555,45556,45557,45558,45559,45560,45562,45564,45566,45567,45568,45569,45570,45571,45574,45575,45577,45578,45581,45582,45583,45584,45585,45586,45587,45590,45592,45594,45595,45596,45597,45598,45599,45601,45602,45603,45604,45605,45606,45607,45608,45609,45610,45611,45612,45613,45614,45615,45616,45617,45618,45619,45621,45622,45623,45624,45625,45626,45627,45629,45630,45631,45632,45633,45634,45635,45636,45637,45638,45639,45640,45641,45642,45643,45644,45645,45646,45647,45648,45649,45650,45651,45652,45653,45654,45655,45657,45658,45659,45661,45662,45663,45665,45666,45667,45668,45669,45670,45671,45674,45675,45676,45677,45678,45679,45680,45681,45682,45683,45686,45687,45688,45689,45690,45691,45693,45694,45695,45696,45697,45698,45699,45702,45703,45704,45706,45707,45708,45709,45710,null,null,null,null,null,null,45711,45714,45715,45717,45718,45719,45723,45724,45725,45726,45727,45730,45732,45735,45736,45737,45739,45741,45742,45743,45745,45746,45747,45749,45750,45751,null,null,null,null,null,null,45752,45753,45754,45755,45756,45757,45758,45759,45760,45761,45762,45763,45764,45765,45766,45767,45770,45771,45773,45774,45775,45777,45779,45780,45781,45782,45783,45786,45788,45790,45791,45792,45793,45795,45799,45801,45802,45808,45809,45810,45814,45820,45821,45822,45826,45827,45829,45830,45831,45833,45834,45835,45836,45837,45838,45839,45842,45846,45847,45848,45849,45850,45851,45853,45854,45855,45856,45857,45858,45859,45860,45861,45862,45863,45864,45865,45866,45867,45868,45869,45870,45871,45872,45873,45874,45875,45876,45877,45878,45879,45880,45881,45882,45883,45884,45885,45886,45887,45888,45889,45890,45891,45892,45893,45894,45895,45896,45897,45898,45899,45900,45901,45902,45903,45904,45905,45906,45907,45911,45913,45914,45917,45920,45921,45922,45923,45926,45928,45930,45932,45933,45935,45938,45939,45941,45942,45943,45945,45946,45947,45948,45949,45950,45951,45954,45958,45959,45960,45961,45962,45963,45965,null,null,null,null,null,null,45966,45967,45969,45970,45971,45973,45974,45975,45976,45977,45978,45979,45980,45981,45982,45983,45986,45987,45988,45989,45990,45991,45993,45994,45995,45997,null,null,null,null,null,null,45998,45999,46000,46001,46002,46003,46004,46005,46006,46007,46008,46009,46010,46011,46012,46013,46014,46015,46016,46017,46018,46019,46022,46023,46025,46026,46029,46031,46033,46034,46035,46038,46040,46042,46044,46046,46047,46049,46050,46051,46053,46054,46055,46057,46058,46059,46060,46061,46062,46063,46064,46065,46066,46067,46068,46069,46070,46071,46072,46073,46074,46075,46077,46078,46079,46080,46081,46082,46083,46084,46085,46086,46087,46088,46089,46090,46091,46092,46093,46094,46095,46097,46098,46099,46100,46101,46102,46103,46105,46106,46107,46109,46110,46111,46113,46114,46115,46116,46117,46118,46119,46122,46124,46125,46126,46127,46128,46129,46130,46131,46133,46134,46135,46136,46137,46138,46139,46140,46141,46142,46143,46144,46145,46146,46147,46148,46149,46150,46151,46152,46153,46154,46155,46156,46157,46158,46159,46162,46163,46165,46166,46167,46169,46170,46171,46172,46173,46174,46175,46178,46180,46182,null,null,null,null,null,null,46183,46184,46185,46186,46187,46189,46190,46191,46192,46193,46194,46195,46196,46197,46198,46199,46200,46201,46202,46203,46204,46205,46206,46207,46209,46210,null,null,null,null,null,null,46211,46212,46213,46214,46215,46217,46218,46219,46220,46221,46222,46223,46224,46225,46226,46227,46228,46229,46230,46231,46232,46233,46234,46235,46236,46238,46239,46240,46241,46242,46243,46245,46246,46247,46249,46250,46251,46253,46254,46255,46256,46257,46258,46259,46260,46262,46264,46266,46267,46268,46269,46270,46271,46273,46274,46275,46277,46278,46279,46281,46282,46283,46284,46285,46286,46287,46289,46290,46291,46292,46294,46295,46296,46297,46298,46299,46302,46303,46305,46306,46309,46311,46312,46313,46314,46315,46318,46320,46322,46323,46324,46325,46326,46327,46329,46330,46331,46332,46333,46334,46335,46336,46337,46338,46339,46340,46341,46342,46343,46344,46345,46346,46347,46348,46349,46350,46351,46352,46353,46354,46355,46358,46359,46361,46362,46365,46366,46367,46368,46369,46370,46371,46374,46379,46380,46381,46382,46383,46386,46387,46389,46390,46391,46393,46394,46395,46396,46397,46398,46399,46402,46406,null,null,null,null,null,null,46407,46408,46409,46410,46414,46415,46417,46418,46419,46421,46422,46423,46424,46425,46426,46427,46430,46434,46435,46436,46437,46438,46439,46440,46441,46442,null,null,null,null,null,null,46443,46444,46445,46446,46447,46448,46449,46450,46451,46452,46453,46454,46455,46456,46457,46458,46459,46460,46461,46462,46463,46464,46465,46466,46467,46468,46469,46470,46471,46472,46473,46474,46475,46476,46477,46478,46479,46480,46481,46482,46483,46484,46485,46486,46487,46488,46489,46490,46491,46492,46493,46494,46495,46498,46499,46501,46502,46503,46505,46508,46509,46510,46511,46514,46518,46519,46520,46521,46522,46526,46527,46529,46530,46531,46533,46534,46535,46536,46537,46538,46539,46542,46546,46547,46548,46549,46550,46551,46553,46554,46555,46556,46557,46558,46559,46560,46561,46562,46563,46564,46565,46566,46567,46568,46569,46570,46571,46573,46574,46575,46576,46577,46578,46579,46580,46581,46582,46583,46584,46585,46586,46587,46588,46589,46590,46591,46592,46593,46594,46595,46596,46597,46598,46599,46600,46601,46602,46603,46604,46605,46606,46607,46610,46611,46613,46614,46615,46617,46618,46619,46620,46621,null,null,null,null,null,null,46622,46623,46624,46625,46626,46627,46628,46630,46631,46632,46633,46634,46635,46637,46638,46639,46640,46641,46642,46643,46645,46646,46647,46648,46649,46650,null,null,null,null,null,null,46651,46652,46653,46654,46655,46656,46657,46658,46659,46660,46661,46662,46663,46665,46666,46667,46668,46669,46670,46671,46672,46673,46674,46675,46676,46677,46678,46679,46680,46681,46682,46683,46684,46685,46686,46687,46688,46689,46690,46691,46693,46694,46695,46697,46698,46699,46700,46701,46702,46703,46704,46705,46706,46707,46708,46709,46710,46711,46712,46713,46714,46715,46716,46717,46718,46719,46720,46721,46722,46723,46724,46725,46726,46727,46728,46729,46730,46731,46732,46733,46734,46735,46736,46737,46738,46739,46740,46741,46742,46743,46744,46745,46746,46747,46750,46751,46753,46754,46755,46757,46758,46759,46760,46761,46762,46765,46766,46767,46768,46770,46771,46772,46773,46774,46775,46776,46777,46778,46779,46780,46781,46782,46783,46784,46785,46786,46787,46788,46789,46790,46791,46792,46793,46794,46795,46796,46797,46798,46799,46800,46801,46802,46803,46805,46806,46807,46808,46809,46810,46811,46812,46813,null,null,null,null,null,null,46814,46815,46816,46817,46818,46819,46820,46821,46822,46823,46824,46825,46826,46827,46828,46829,46830,46831,46833,46834,46835,46837,46838,46839,46841,46842,null,null,null,null,null,null,46843,46844,46845,46846,46847,46850,46851,46852,46854,46855,46856,46857,46858,46859,46860,46861,46862,46863,46864,46865,46866,46867,46868,46869,46870,46871,46872,46873,46874,46875,46876,46877,46878,46879,46880,46881,46882,46883,46884,46885,46886,46887,46890,46891,46893,46894,46897,46898,46899,46900,46901,46902,46903,46906,46908,46909,46910,46911,46912,46913,46914,46915,46917,46918,46919,46921,46922,46923,46925,46926,46927,46928,46929,46930,46931,46934,46935,46936,46937,46938,46939,46940,46941,46942,46943,46945,46946,46947,46949,46950,46951,46953,46954,46955,46956,46957,46958,46959,46962,46964,46966,46967,46968,46969,46970,46971,46974,46975,46977,46978,46979,46981,46982,46983,46984,46985,46986,46987,46990,46995,46996,46997,47002,47003,47005,47006,47007,47009,47010,47011,47012,47013,47014,47015,47018,47022,47023,47024,47025,47026,47027,47030,47031,47033,47034,47035,47036,47037,47038,47039,47040,47041,null,null,null,null,null,null,47042,47043,47044,47045,47046,47048,47050,47051,47052,47053,47054,47055,47056,47057,47058,47059,47060,47061,47062,47063,47064,47065,47066,47067,47068,47069,null,null,null,null,null,null,47070,47071,47072,47073,47074,47075,47076,47077,47078,47079,47080,47081,47082,47083,47086,47087,47089,47090,47091,47093,47094,47095,47096,47097,47098,47099,47102,47106,47107,47108,47109,47110,47114,47115,47117,47118,47119,47121,47122,47123,47124,47125,47126,47127,47130,47132,47134,47135,47136,47137,47138,47139,47142,47143,47145,47146,47147,47149,47150,47151,47152,47153,47154,47155,47158,47162,47163,47164,47165,47166,47167,47169,47170,47171,47173,47174,47175,47176,47177,47178,47179,47180,47181,47182,47183,47184,47186,47188,47189,47190,47191,47192,47193,47194,47195,47198,47199,47201,47202,47203,47205,47206,47207,47208,47209,47210,47211,47214,47216,47218,47219,47220,47221,47222,47223,47225,47226,47227,47229,47230,47231,47232,47233,47234,47235,47236,47237,47238,47239,47240,47241,47242,47243,47244,47246,47247,47248,47249,47250,47251,47252,47253,47254,47255,47256,47257,47258,47259,47260,47261,47262,47263,null,null,null,null,null,null,47264,47265,47266,47267,47268,47269,47270,47271,47273,47274,47275,47276,47277,47278,47279,47281,47282,47283,47285,47286,47287,47289,47290,47291,47292,47293,null,null,null,null,null,null,47294,47295,47298,47300,47302,47303,47304,47305,47306,47307,47309,47310,47311,47313,47314,47315,47317,47318,47319,47320,47321,47322,47323,47324,47326,47328,47330,47331,47332,47333,47334,47335,47338,47339,47341,47342,47343,47345,47346,47347,47348,47349,47350,47351,47354,47356,47358,47359,47360,47361,47362,47363,47365,47366,47367,47368,47369,47370,47371,47372,47373,47374,47375,47376,47377,47378,47379,47380,47381,47382,47383,47385,47386,47387,47388,47389,47390,47391,47393,47394,47395,47396,47397,47398,47399,47400,47401,47402,47403,47404,47405,47406,47407,47408,47409,47410,47411,47412,47413,47414,47415,47416,47417,47418,47419,47422,47423,47425,47426,47427,47429,47430,47431,47432,47433,47434,47435,47437,47438,47440,47442,47443,47444,47445,47446,47447,47450,47451,47453,47454,47455,47457,47458,47459,47460,47461,47462,47463,47466,47468,47470,47471,47472,47473,47474,47475,47478,47479,47481,47482,47483,47485,null,null,null,null,null,null,47486,47487,47488,47489,47490,47491,47494,47496,47499,47500,47503,47504,47505,47506,47507,47508,47509,47510,47511,47512,47513,47514,47515,47516,47517,47518,null,null,null,null,null,null,47519,47520,47521,47522,47523,47524,47525,47526,47527,47528,47529,47530,47531,47534,47535,47537,47538,47539,47541,47542,47543,47544,47545,47546,47547,47550,47552,47554,47555,47556,47557,47558,47559,47562,47563,47565,47571,47572,47573,47574,47575,47578,47580,47583,47584,47586,47590,47591,47593,47594,47595,47597,47598,47599,47600,47601,47602,47603,47606,47611,47612,47613,47614,47615,47618,47619,47620,47621,47622,47623,47625,47626,47627,47628,47629,47630,47631,47632,47633,47634,47635,47636,47638,47639,47640,47641,47642,47643,47644,47645,47646,47647,47648,47649,47650,47651,47652,47653,47654,47655,47656,47657,47658,47659,47660,47661,47662,47663,47664,47665,47666,47667,47668,47669,47670,47671,47674,47675,47677,47678,47679,47681,47683,47684,47685,47686,47687,47690,47692,47695,47696,47697,47698,47702,47703,47705,47706,47707,47709,47710,47711,47712,47713,47714,47715,47718,47722,47723,47724,47725,47726,47727,null,null,null,null,null,null,47730,47731,47733,47734,47735,47737,47738,47739,47740,47741,47742,47743,47744,47745,47746,47750,47752,47753,47754,47755,47757,47758,47759,47760,47761,47762,null,null,null,null,null,null,47763,47764,47765,47766,47767,47768,47769,47770,47771,47772,47773,47774,47775,47776,47777,47778,47779,47780,47781,47782,47783,47786,47789,47790,47791,47793,47795,47796,47797,47798,47799,47802,47804,47806,47807,47808,47809,47810,47811,47813,47814,47815,47817,47818,47819,47820,47821,47822,47823,47824,47825,47826,47827,47828,47829,47830,47831,47834,47835,47836,47837,47838,47839,47840,47841,47842,47843,47844,47845,47846,47847,47848,47849,47850,47851,47852,47853,47854,47855,47856,47857,47858,47859,47860,47861,47862,47863,47864,47865,47866,47867,47869,47870,47871,47873,47874,47875,47877,47878,47879,47880,47881,47882,47883,47884,47886,47888,47890,47891,47892,47893,47894,47895,47897,47898,47899,47901,47902,47903,47905,47906,47907,47908,47909,47910,47911,47912,47914,47916,47917,47918,47919,47920,47921,47922,47923,47927,47929,47930,47935,47936,47937,47938,47939,47942,47944,47946,47947,47948,47950,47953,47954,null,null,null,null,null,null,47955,47957,47958,47959,47961,47962,47963,47964,47965,47966,47967,47968,47970,47972,47973,47974,47975,47976,47977,47978,47979,47981,47982,47983,47984,47985,null,null,null,null,null,null,47986,47987,47988,47989,47990,47991,47992,47993,47994,47995,47996,47997,47998,47999,48000,48001,48002,48003,48004,48005,48006,48007,48009,48010,48011,48013,48014,48015,48017,48018,48019,48020,48021,48022,48023,48024,48025,48026,48027,48028,48029,48030,48031,48032,48033,48034,48035,48037,48038,48039,48041,48042,48043,48045,48046,48047,48048,48049,48050,48051,48053,48054,48056,48057,48058,48059,48060,48061,48062,48063,48065,48066,48067,48069,48070,48071,48073,48074,48075,48076,48077,48078,48079,48081,48082,48084,48085,48086,48087,48088,48089,48090,48091,48092,48093,48094,48095,48096,48097,48098,48099,48100,48101,48102,48103,48104,48105,48106,48107,48108,48109,48110,48111,48112,48113,48114,48115,48116,48117,48118,48119,48122,48123,48125,48126,48129,48131,48132,48133,48134,48135,48138,48142,48144,48146,48147,48153,48154,48160,48161,48162,48163,48166,48168,48170,48171,48172,48174,48175,48178,48179,48181,null,null,null,null,null,null,48182,48183,48185,48186,48187,48188,48189,48190,48191,48194,48198,48199,48200,48202,48203,48206,48207,48209,48210,48211,48212,48213,48214,48215,48216,48217,null,null,null,null,null,null,48218,48219,48220,48222,48223,48224,48225,48226,48227,48228,48229,48230,48231,48232,48233,48234,48235,48236,48237,48238,48239,48240,48241,48242,48243,48244,48245,48246,48247,48248,48249,48250,48251,48252,48253,48254,48255,48256,48257,48258,48259,48262,48263,48265,48266,48269,48271,48272,48273,48274,48275,48278,48280,48283,48284,48285,48286,48287,48290,48291,48293,48294,48297,48298,48299,48300,48301,48302,48303,48306,48310,48311,48312,48313,48314,48315,48318,48319,48321,48322,48323,48325,48326,48327,48328,48329,48330,48331,48332,48334,48338,48339,48340,48342,48343,48345,48346,48347,48349,48350,48351,48352,48353,48354,48355,48356,48357,48358,48359,48360,48361,48362,48363,48364,48365,48366,48367,48368,48369,48370,48371,48375,48377,48378,48379,48381,48382,48383,48384,48385,48386,48387,48390,48392,48394,48395,48396,48397,48398,48399,48401,48402,48403,48405,48406,48407,48408,48409,48410,48411,48412,48413,null,null,null,null,null,null,48414,48415,48416,48417,48418,48419,48421,48422,48423,48424,48425,48426,48427,48429,48430,48431,48432,48433,48434,48435,48436,48437,48438,48439,48440,48441,null,null,null,null,null,null,48442,48443,48444,48445,48446,48447,48449,48450,48451,48452,48453,48454,48455,48458,48459,48461,48462,48463,48465,48466,48467,48468,48469,48470,48471,48474,48475,48476,48477,48478,48479,48480,48481,48482,48483,48485,48486,48487,48489,48490,48491,48492,48493,48494,48495,48496,48497,48498,48499,48500,48501,48502,48503,48504,48505,48506,48507,48508,48509,48510,48511,48514,48515,48517,48518,48523,48524,48525,48526,48527,48530,48532,48534,48535,48536,48539,48541,48542,48543,48544,48545,48546,48547,48549,48550,48551,48552,48553,48554,48555,48556,48557,48558,48559,48561,48562,48563,48564,48565,48566,48567,48569,48570,48571,48572,48573,48574,48575,48576,48577,48578,48579,48580,48581,48582,48583,48584,48585,48586,48587,48588,48589,48590,48591,48592,48593,48594,48595,48598,48599,48601,48602,48603,48605,48606,48607,48608,48609,48610,48611,48612,48613,48614,48615,48616,48618,48619,48620,48621,48622,48623,48625,null,null,null,null,null,null,48626,48627,48629,48630,48631,48633,48634,48635,48636,48637,48638,48639,48641,48642,48644,48646,48647,48648,48649,48650,48651,48654,48655,48657,48658,48659,null,null,null,null,null,null,48661,48662,48663,48664,48665,48666,48667,48670,48672,48673,48674,48675,48676,48677,48678,48679,48680,48681,48682,48683,48684,48685,48686,48687,48688,48689,48690,48691,48692,48693,48694,48695,48696,48697,48698,48699,48700,48701,48702,48703,48704,48705,48706,48707,48710,48711,48713,48714,48715,48717,48719,48720,48721,48722,48723,48726,48728,48732,48733,48734,48735,48738,48739,48741,48742,48743,48745,48747,48748,48749,48750,48751,48754,48758,48759,48760,48761,48762,48766,48767,48769,48770,48771,48773,48774,48775,48776,48777,48778,48779,48782,48786,48787,48788,48789,48790,48791,48794,48795,48796,48797,48798,48799,48800,48801,48802,48803,48804,48805,48806,48807,48809,48810,48811,48812,48813,48814,48815,48816,48817,48818,48819,48820,48821,48822,48823,48824,48825,48826,48827,48828,48829,48830,48831,48832,48833,48834,48835,48836,48837,48838,48839,48840,48841,48842,48843,48844,48845,48846,48847,48850,48851,null,null,null,null,null,null,48853,48854,48857,48858,48859,48860,48861,48862,48863,48865,48866,48870,48871,48872,48873,48874,48875,48877,48878,48879,48880,48881,48882,48883,48884,48885,null,null,null,null,null,null,48886,48887,48888,48889,48890,48891,48892,48893,48894,48895,48896,48898,48899,48900,48901,48902,48903,48906,48907,48908,48909,48910,48911,48912,48913,48914,48915,48916,48917,48918,48919,48922,48926,48927,48928,48929,48930,48931,48932,48933,48934,48935,48936,48937,48938,48939,48940,48941,48942,48943,48944,48945,48946,48947,48948,48949,48950,48951,48952,48953,48954,48955,48956,48957,48958,48959,48962,48963,48965,48966,48967,48969,48970,48971,48972,48973,48974,48975,48978,48979,48980,48982,48983,48984,48985,48986,48987,48988,48989,48990,48991,48992,48993,48994,48995,48996,48997,48998,48999,49000,49001,49002,49003,49004,49005,49006,49007,49008,49009,49010,49011,49012,49013,49014,49015,49016,49017,49018,49019,49020,49021,49022,49023,49024,49025,49026,49027,49028,49029,49030,49031,49032,49033,49034,49035,49036,49037,49038,49039,49040,49041,49042,49043,49045,49046,49047,49048,49049,49050,49051,49052,49053,null,null,null,null,null,null,49054,49055,49056,49057,49058,49059,49060,49061,49062,49063,49064,49065,49066,49067,49068,49069,49070,49071,49073,49074,49075,49076,49077,49078,49079,49080,null,null,null,null,null,null,49081,49082,49083,49084,49085,49086,49087,49088,49089,49090,49091,49092,49094,49095,49096,49097,49098,49099,49102,49103,49105,49106,49107,49109,49110,49111,49112,49113,49114,49115,49117,49118,49120,49122,49123,49124,49125,49126,49127,49128,49129,49130,49131,49132,49133,49134,49135,49136,49137,49138,49139,49140,49141,49142,49143,49144,49145,49146,49147,49148,49149,49150,49151,49152,49153,49154,49155,49156,49157,49158,49159,49160,49161,49162,49163,49164,49165,49166,49167,49168,49169,49170,49171,49172,49173,49174,49175,49176,49177,49178,49179,49180,49181,49182,49183,49184,49185,49186,49187,49188,49189,49190,49191,49192,49193,49194,49195,49196,49197,49198,49199,49200,49201,49202,49203,49204,49205,49206,49207,49208,49209,49210,49211,49213,49214,49215,49216,49217,49218,49219,49220,49221,49222,49223,49224,49225,49226,49227,49228,49229,49230,49231,49232,49234,49235,49236,49237,49238,49239,49241,49242,49243,null,null,null,null,null,null,49245,49246,49247,49249,49250,49251,49252,49253,49254,49255,49258,49259,49260,49261,49262,49263,49264,49265,49266,49267,49268,49269,49270,49271,49272,49273,null,null,null,null,null,null,49274,49275,49276,49277,49278,49279,49280,49281,49282,49283,49284,49285,49286,49287,49288,49289,49290,49291,49292,49293,49294,49295,49298,49299,49301,49302,49303,49305,49306,49307,49308,49309,49310,49311,49314,49316,49318,49319,49320,49321,49322,49323,49326,49329,49330,49335,49336,49337,49338,49339,49342,49346,49347,49348,49350,49351,49354,49355,49357,49358,49359,49361,49362,49363,49364,49365,49366,49367,49370,49374,49375,49376,49377,49378,49379,49382,49383,49385,49386,49387,49389,49390,49391,49392,49393,49394,49395,49398,49400,49402,49403,49404,49405,49406,49407,49409,49410,49411,49413,49414,49415,49417,49418,49419,49420,49421,49422,49423,49425,49426,49427,49428,49430,49431,49432,49433,49434,49435,49441,49442,49445,49448,49449,49450,49451,49454,49458,49459,49460,49461,49463,49466,49467,49469,49470,49471,49473,49474,49475,49476,49477,49478,49479,49482,49486,49487,49488,49489,49490,49491,49494,49495,null,null,null,null,null,null,49497,49498,49499,49501,49502,49503,49504,49505,49506,49507,49510,49514,49515,49516,49517,49518,49519,49521,49522,49523,49525,49526,49527,49529,49530,49531,null,null,null,null,null,null,49532,49533,49534,49535,49536,49537,49538,49539,49540,49542,49543,49544,49545,49546,49547,49551,49553,49554,49555,49557,49559,49560,49561,49562,49563,49566,49568,49570,49571,49572,49574,49575,49578,49579,49581,49582,49583,49585,49586,49587,49588,49589,49590,49591,49592,49593,49594,49595,49596,49598,49599,49600,49601,49602,49603,49605,49606,49607,49609,49610,49611,49613,49614,49615,49616,49617,49618,49619,49621,49622,49625,49626,49627,49628,49629,49630,49631,49633,49634,49635,49637,49638,49639,49641,49642,49643,49644,49645,49646,49647,49650,49652,49653,49654,49655,49656,49657,49658,49659,49662,49663,49665,49666,49667,49669,49670,49671,49672,49673,49674,49675,49678,49680,49682,49683,49684,49685,49686,49687,49690,49691,49693,49694,49697,49698,49699,49700,49701,49702,49703,49706,49708,49710,49712,49715,49717,49718,49719,49720,49721,49722,49723,49724,49725,49726,49727,49728,49729,49730,49731,49732,49733,null,null,null,null,null,null,49734,49735,49737,49738,49739,49740,49741,49742,49743,49746,49747,49749,49750,49751,49753,49754,49755,49756,49757,49758,49759,49761,49762,49763,49764,49766,null,null,null,null,null,null,49767,49768,49769,49770,49771,49774,49775,49777,49778,49779,49781,49782,49783,49784,49785,49786,49787,49790,49792,49794,49795,49796,49797,49798,49799,49802,49803,49804,49805,49806,49807,49809,49810,49811,49812,49813,49814,49815,49817,49818,49820,49822,49823,49824,49825,49826,49827,49830,49831,49833,49834,49835,49838,49839,49840,49841,49842,49843,49846,49848,49850,49851,49852,49853,49854,49855,49856,49857,49858,49859,49860,49861,49862,49863,49864,49865,49866,49867,49868,49869,49870,49871,49872,49873,49874,49875,49876,49877,49878,49879,49880,49881,49882,49883,49886,49887,49889,49890,49893,49894,49895,49896,49897,49898,49902,49904,49906,49907,49908,49909,49911,49914,49917,49918,49919,49921,49922,49923,49924,49925,49926,49927,49930,49931,49934,49935,49936,49937,49938,49942,49943,49945,49946,49947,49949,49950,49951,49952,49953,49954,49955,49958,49959,49962,49963,49964,49965,49966,49967,49968,49969,49970,null,null,null,null,null,null,49971,49972,49973,49974,49975,49976,49977,49978,49979,49980,49981,49982,49983,49984,49985,49986,49987,49988,49990,49991,49992,49993,49994,49995,49996,49997,null,null,null,null,null,null,49998,49999,50000,50001,50002,50003,50004,50005,50006,50007,50008,50009,50010,50011,50012,50013,50014,50015,50016,50017,50018,50019,50020,50021,50022,50023,50026,50027,50029,50030,50031,50033,50035,50036,50037,50038,50039,50042,50043,50046,50047,50048,50049,50050,50051,50053,50054,50055,50057,50058,50059,50061,50062,50063,50064,50065,50066,50067,50068,50069,50070,50071,50072,50073,50074,50075,50076,50077,50078,50079,50080,50081,50082,50083,50084,50085,50086,50087,50088,50089,50090,50091,50092,50093,50094,50095,50096,50097,50098,50099,50100,50101,50102,50103,50104,50105,50106,50107,50108,50109,50110,50111,50113,50114,50115,50116,50117,50118,50119,50120,50121,50122,50123,50124,50125,50126,50127,50128,50129,50130,50131,50132,50133,50134,50135,50138,50139,50141,50142,50145,50147,50148,50149,50150,50151,50154,50155,50156,50158,50159,50160,50161,50162,50163,50166,50167,50169,50170,50171,50172,50173,50174,null,null,null,null,null,null,50175,50176,50177,50178,50179,50180,50181,50182,50183,50185,50186,50187,50188,50189,50190,50191,50193,50194,50195,50196,50197,50198,50199,50200,50201,50202,null,null,null,null,null,null,50203,50204,50205,50206,50207,50208,50209,50210,50211,50213,50214,50215,50216,50217,50218,50219,50221,50222,50223,50225,50226,50227,50229,50230,50231,50232,50233,50234,50235,50238,50239,50240,50241,50242,50243,50244,50245,50246,50247,50249,50250,50251,50252,50253,50254,50255,50256,50257,50258,50259,50260,50261,50262,50263,50264,50265,50266,50267,50268,50269,50270,50271,50272,50273,50274,50275,50278,50279,50281,50282,50283,50285,50286,50287,50288,50289,50290,50291,50294,50295,50296,50298,50299,50300,50301,50302,50303,50305,50306,50307,50308,50309,50310,50311,50312,50313,50314,50315,50316,50317,50318,50319,50320,50321,50322,50323,50325,50326,50327,50328,50329,50330,50331,50333,50334,50335,50336,50337,50338,50339,50340,50341,50342,50343,50344,50345,50346,50347,50348,50349,50350,50351,50352,50353,50354,50355,50356,50357,50358,50359,50361,50362,50363,50365,50366,50367,50368,50369,50370,50371,50372,50373,null,null,null,null,null,null,50374,50375,50376,50377,50378,50379,50380,50381,50382,50383,50384,50385,50386,50387,50388,50389,50390,50391,50392,50393,50394,50395,50396,50397,50398,50399,null,null,null,null,null,null,50400,50401,50402,50403,50404,50405,50406,50407,50408,50410,50411,50412,50413,50414,50415,50418,50419,50421,50422,50423,50425,50427,50428,50429,50430,50434,50435,50436,50437,50438,50439,50440,50441,50442,50443,50445,50446,50447,50449,50450,50451,50453,50454,50455,50456,50457,50458,50459,50461,50462,50463,50464,50465,50466,50467,50468,50469,50470,50471,50474,50475,50477,50478,50479,50481,50482,50483,50484,50485,50486,50487,50490,50492,50494,50495,50496,50497,50498,50499,50502,50503,50507,50511,50512,50513,50514,50518,50522,50523,50524,50527,50530,50531,50533,50534,50535,50537,50538,50539,50540,50541,50542,50543,50546,50550,50551,50552,50553,50554,50555,50558,50559,50561,50562,50563,50565,50566,50568,50569,50570,50571,50574,50576,50578,50579,50580,50582,50585,50586,50587,50589,50590,50591,50593,50594,50595,50596,50597,50598,50599,50600,50602,50603,50604,50605,50606,50607,50608,50609,50610,50611,50614,null,null,null,null,null,null,50615,50618,50623,50624,50625,50626,50627,50635,50637,50639,50642,50643,50645,50646,50647,50649,50650,50651,50652,50653,50654,50655,50658,50660,50662,50663,null,null,null,null,null,null,50664,50665,50666,50667,50671,50673,50674,50675,50677,50680,50681,50682,50683,50690,50691,50692,50697,50698,50699,50701,50702,50703,50705,50706,50707,50708,50709,50710,50711,50714,50717,50718,50719,50720,50721,50722,50723,50726,50727,50729,50730,50731,50735,50737,50738,50742,50744,50746,50748,50749,50750,50751,50754,50755,50757,50758,50759,50761,50762,50763,50764,50765,50766,50767,50770,50774,50775,50776,50777,50778,50779,50782,50783,50785,50786,50787,50788,50789,50790,50791,50792,50793,50794,50795,50797,50798,50800,50802,50803,50804,50805,50806,50807,50810,50811,50813,50814,50815,50817,50818,50819,50820,50821,50822,50823,50826,50828,50830,50831,50832,50833,50834,50835,50838,50839,50841,50842,50843,50845,50846,50847,50848,50849,50850,50851,50854,50856,50858,50859,50860,50861,50862,50863,50866,50867,50869,50870,50871,50875,50876,50877,50878,50879,50882,50884,50886,50887,50888,50889,50890,50891,50894,null,null,null,null,null,null,50895,50897,50898,50899,50901,50902,50903,50904,50905,50906,50907,50910,50911,50914,50915,50916,50917,50918,50919,50922,50923,50925,50926,50927,50929,50930,null,null,null,null,null,null,50931,50932,50933,50934,50935,50938,50939,50940,50942,50943,50944,50945,50946,50947,50950,50951,50953,50954,50955,50957,50958,50959,50960,50961,50962,50963,50966,50968,50970,50971,50972,50973,50974,50975,50978,50979,50981,50982,50983,50985,50986,50987,50988,50989,50990,50991,50994,50996,50998,51000,51001,51002,51003,51006,51007,51009,51010,51011,51013,51014,51015,51016,51017,51019,51022,51024,51033,51034,51035,51037,51038,51039,51041,51042,51043,51044,51045,51046,51047,51049,51050,51052,51053,51054,51055,51056,51057,51058,51059,51062,51063,51065,51066,51067,51071,51072,51073,51074,51078,51083,51084,51085,51087,51090,51091,51093,51097,51099,51100,51101,51102,51103,51106,51111,51112,51113,51114,51115,51118,51119,51121,51122,51123,51125,51126,51127,51128,51129,51130,51131,51134,51138,51139,51140,51141,51142,51143,51146,51147,51149,51151,51153,51154,51155,51156,51157,51158,51159,51161,51162,51163,51164,null,null,null,null,null,null,51166,51167,51168,51169,51170,51171,51173,51174,51175,51177,51178,51179,51181,51182,51183,51184,51185,51186,51187,51188,51189,51190,51191,51192,51193,51194,null,null,null,null,null,null,51195,51196,51197,51198,51199,51202,51203,51205,51206,51207,51209,51211,51212,51213,51214,51215,51218,51220,51223,51224,51225,51226,51227,51230,51231,51233,51234,51235,51237,51238,51239,51240,51241,51242,51243,51246,51248,51250,51251,51252,51253,51254,51255,51257,51258,51259,51261,51262,51263,51265,51266,51267,51268,51269,51270,51271,51274,51275,51278,51279,51280,51281,51282,51283,51285,51286,51287,51288,51289,51290,51291,51292,51293,51294,51295,51296,51297,51298,51299,51300,51301,51302,51303,51304,51305,51306,51307,51308,51309,51310,51311,51314,51315,51317,51318,51319,51321,51323,51324,51325,51326,51327,51330,51332,51336,51337,51338,51342,51343,51344,51345,51346,51347,51349,51350,51351,51352,51353,51354,51355,51356,51358,51360,51362,51363,51364,51365,51366,51367,51369,51370,51371,51372,51373,51374,51375,51376,51377,51378,51379,51380,51381,51382,51383,51384,51385,51386,51387,51390,51391,51392,51393,null,null,null,null,null,null,51394,51395,51397,51398,51399,51401,51402,51403,51405,51406,51407,51408,51409,51410,51411,51414,51416,51418,51419,51420,51421,51422,51423,51426,51427,51429,null,null,null,null,null,null,51430,51431,51432,51433,51434,51435,51436,51437,51438,51439,51440,51441,51442,51443,51444,51446,51447,51448,51449,51450,51451,51454,51455,51457,51458,51459,51463,51464,51465,51466,51467,51470,12288,12289,12290,183,8229,8230,168,12291,173,8213,8741,65340,8764,8216,8217,8220,8221,12308,12309,12296,12297,12298,12299,12300,12301,12302,12303,12304,12305,177,215,247,8800,8804,8805,8734,8756,176,8242,8243,8451,8491,65504,65505,65509,9794,9792,8736,8869,8978,8706,8711,8801,8786,167,8251,9734,9733,9675,9679,9678,9671,9670,9633,9632,9651,9650,9661,9660,8594,8592,8593,8595,8596,12307,8810,8811,8730,8765,8733,8757,8747,8748,8712,8715,8838,8839,8834,8835,8746,8745,8743,8744,65506,51472,51474,51475,51476,51477,51478,51479,51481,51482,51483,51484,51485,51486,51487,51488,51489,51490,51491,51492,51493,51494,51495,51496,51497,51498,51499,null,null,null,null,null,null,51501,51502,51503,51504,51505,51506,51507,51509,51510,51511,51512,51513,51514,51515,51516,51517,51518,51519,51520,51521,51522,51523,51524,51525,51526,51527,null,null,null,null,null,null,51528,51529,51530,51531,51532,51533,51534,51535,51538,51539,51541,51542,51543,51545,51546,51547,51548,51549,51550,51551,51554,51556,51557,51558,51559,51560,51561,51562,51563,51565,51566,51567,8658,8660,8704,8707,180,65374,711,728,733,730,729,184,731,161,191,720,8750,8721,8719,164,8457,8240,9665,9664,9655,9654,9828,9824,9825,9829,9831,9827,8857,9672,9635,9680,9681,9618,9636,9637,9640,9639,9638,9641,9832,9743,9742,9756,9758,182,8224,8225,8597,8599,8601,8598,8600,9837,9833,9834,9836,12927,12828,8470,13255,8482,13250,13272,8481,8364,174,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,51569,51570,51571,51573,51574,51575,51576,51577,51578,51579,51581,51582,51583,51584,51585,51586,51587,51588,51589,51590,51591,51594,51595,51597,51598,51599,null,null,null,null,null,null,51601,51602,51603,51604,51605,51606,51607,51610,51612,51614,51615,51616,51617,51618,51619,51620,51621,51622,51623,51624,51625,51626,51627,51628,51629,51630,null,null,null,null,null,null,51631,51632,51633,51634,51635,51636,51637,51638,51639,51640,51641,51642,51643,51644,51645,51646,51647,51650,51651,51653,51654,51657,51659,51660,51661,51662,51663,51666,51668,51671,51672,51675,65281,65282,65283,65284,65285,65286,65287,65288,65289,65290,65291,65292,65293,65294,65295,65296,65297,65298,65299,65300,65301,65302,65303,65304,65305,65306,65307,65308,65309,65310,65311,65312,65313,65314,65315,65316,65317,65318,65319,65320,65321,65322,65323,65324,65325,65326,65327,65328,65329,65330,65331,65332,65333,65334,65335,65336,65337,65338,65339,65510,65341,65342,65343,65344,65345,65346,65347,65348,65349,65350,65351,65352,65353,65354,65355,65356,65357,65358,65359,65360,65361,65362,65363,65364,65365,65366,65367,65368,65369,65370,65371,65372,65373,65507,51678,51679,51681,51683,51685,51686,51688,51689,51690,51691,51694,51698,51699,51700,51701,51702,51703,51706,51707,51709,51710,51711,51713,51714,51715,51716,null,null,null,null,null,null,51717,51718,51719,51722,51726,51727,51728,51729,51730,51731,51733,51734,51735,51737,51738,51739,51740,51741,51742,51743,51744,51745,51746,51747,51748,51749,null,null,null,null,null,null,51750,51751,51752,51754,51755,51756,51757,51758,51759,51760,51761,51762,51763,51764,51765,51766,51767,51768,51769,51770,51771,51772,51773,51774,51775,51776,51777,51778,51779,51780,51781,51782,12593,12594,12595,12596,12597,12598,12599,12600,12601,12602,12603,12604,12605,12606,12607,12608,12609,12610,12611,12612,12613,12614,12615,12616,12617,12618,12619,12620,12621,12622,12623,12624,12625,12626,12627,12628,12629,12630,12631,12632,12633,12634,12635,12636,12637,12638,12639,12640,12641,12642,12643,12644,12645,12646,12647,12648,12649,12650,12651,12652,12653,12654,12655,12656,12657,12658,12659,12660,12661,12662,12663,12664,12665,12666,12667,12668,12669,12670,12671,12672,12673,12674,12675,12676,12677,12678,12679,12680,12681,12682,12683,12684,12685,12686,51783,51784,51785,51786,51787,51790,51791,51793,51794,51795,51797,51798,51799,51800,51801,51802,51803,51806,51810,51811,51812,51813,51814,51815,51817,51818,null,null,null,null,null,null,51819,51820,51821,51822,51823,51824,51825,51826,51827,51828,51829,51830,51831,51832,51833,51834,51835,51836,51838,51839,51840,51841,51842,51843,51845,51846,null,null,null,null,null,null,51847,51848,51849,51850,51851,51852,51853,51854,51855,51856,51857,51858,51859,51860,51861,51862,51863,51865,51866,51867,51868,51869,51870,51871,51872,51873,51874,51875,51876,51877,51878,51879,8560,8561,8562,8563,8564,8565,8566,8567,8568,8569,null,null,null,null,null,8544,8545,8546,8547,8548,8549,8550,8551,8552,8553,null,null,null,null,null,null,null,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,931,932,933,934,935,936,937,null,null,null,null,null,null,null,null,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,963,964,965,966,967,968,969,null,null,null,null,null,null,51880,51881,51882,51883,51884,51885,51886,51887,51888,51889,51890,51891,51892,51893,51894,51895,51896,51897,51898,51899,51902,51903,51905,51906,51907,51909,null,null,null,null,null,null,51910,51911,51912,51913,51914,51915,51918,51920,51922,51924,51925,51926,51927,51930,51931,51932,51933,51934,51935,51937,51938,51939,51940,51941,51942,51943,null,null,null,null,null,null,51944,51945,51946,51947,51949,51950,51951,51952,51953,51954,51955,51957,51958,51959,51960,51961,51962,51963,51964,51965,51966,51967,51968,51969,51970,51971,51972,51973,51974,51975,51977,51978,9472,9474,9484,9488,9496,9492,9500,9516,9508,9524,9532,9473,9475,9487,9491,9499,9495,9507,9523,9515,9531,9547,9504,9519,9512,9527,9535,9501,9520,9509,9528,9538,9490,9489,9498,9497,9494,9493,9486,9485,9502,9503,9505,9506,9510,9511,9513,9514,9517,9518,9521,9522,9525,9526,9529,9530,9533,9534,9536,9537,9539,9540,9541,9542,9543,9544,9545,9546,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,51979,51980,51981,51982,51983,51985,51986,51987,51989,51990,51991,51993,51994,51995,51996,51997,51998,51999,52002,52003,52004,52005,52006,52007,52008,52009,null,null,null,null,null,null,52010,52011,52012,52013,52014,52015,52016,52017,52018,52019,52020,52021,52022,52023,52024,52025,52026,52027,52028,52029,52030,52031,52032,52034,52035,52036,null,null,null,null,null,null,52037,52038,52039,52042,52043,52045,52046,52047,52049,52050,52051,52052,52053,52054,52055,52058,52059,52060,52062,52063,52064,52065,52066,52067,52069,52070,52071,52072,52073,52074,52075,52076,13205,13206,13207,8467,13208,13252,13219,13220,13221,13222,13209,13210,13211,13212,13213,13214,13215,13216,13217,13218,13258,13197,13198,13199,13263,13192,13193,13256,13223,13224,13232,13233,13234,13235,13236,13237,13238,13239,13240,13241,13184,13185,13186,13187,13188,13242,13243,13244,13245,13246,13247,13200,13201,13202,13203,13204,8486,13248,13249,13194,13195,13196,13270,13253,13229,13230,13231,13275,13225,13226,13227,13228,13277,13264,13267,13251,13257,13276,13254,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,52077,52078,52079,52080,52081,52082,52083,52084,52085,52086,52087,52090,52091,52092,52093,52094,52095,52096,52097,52098,52099,52100,52101,52102,52103,52104,null,null,null,null,null,null,52105,52106,52107,52108,52109,52110,52111,52112,52113,52114,52115,52116,52117,52118,52119,52120,52121,52122,52123,52125,52126,52127,52128,52129,52130,52131,null,null,null,null,null,null,52132,52133,52134,52135,52136,52137,52138,52139,52140,52141,52142,52143,52144,52145,52146,52147,52148,52149,52150,52151,52153,52154,52155,52156,52157,52158,52159,52160,52161,52162,52163,52164,198,208,170,294,null,306,null,319,321,216,338,186,222,358,330,null,12896,12897,12898,12899,12900,12901,12902,12903,12904,12905,12906,12907,12908,12909,12910,12911,12912,12913,12914,12915,12916,12917,12918,12919,12920,12921,12922,12923,9424,9425,9426,9427,9428,9429,9430,9431,9432,9433,9434,9435,9436,9437,9438,9439,9440,9441,9442,9443,9444,9445,9446,9447,9448,9449,9312,9313,9314,9315,9316,9317,9318,9319,9320,9321,9322,9323,9324,9325,9326,189,8531,8532,188,190,8539,8540,8541,8542,52165,52166,52167,52168,52169,52170,52171,52172,52173,52174,52175,52176,52177,52178,52179,52181,52182,52183,52184,52185,52186,52187,52188,52189,52190,52191,null,null,null,null,null,null,52192,52193,52194,52195,52197,52198,52200,52202,52203,52204,52205,52206,52207,52208,52209,52210,52211,52212,52213,52214,52215,52216,52217,52218,52219,52220,null,null,null,null,null,null,52221,52222,52223,52224,52225,52226,52227,52228,52229,52230,52231,52232,52233,52234,52235,52238,52239,52241,52242,52243,52245,52246,52247,52248,52249,52250,52251,52254,52255,52256,52259,52260,230,273,240,295,305,307,312,320,322,248,339,223,254,359,331,329,12800,12801,12802,12803,12804,12805,12806,12807,12808,12809,12810,12811,12812,12813,12814,12815,12816,12817,12818,12819,12820,12821,12822,12823,12824,12825,12826,12827,9372,9373,9374,9375,9376,9377,9378,9379,9380,9381,9382,9383,9384,9385,9386,9387,9388,9389,9390,9391,9392,9393,9394,9395,9396,9397,9332,9333,9334,9335,9336,9337,9338,9339,9340,9341,9342,9343,9344,9345,9346,185,178,179,8308,8319,8321,8322,8323,8324,52261,52262,52266,52267,52269,52271,52273,52274,52275,52276,52277,52278,52279,52282,52287,52288,52289,52290,52291,52294,52295,52297,52298,52299,52301,52302,null,null,null,null,null,null,52303,52304,52305,52306,52307,52310,52314,52315,52316,52317,52318,52319,52321,52322,52323,52325,52327,52329,52330,52331,52332,52333,52334,52335,52337,52338,null,null,null,null,null,null,52339,52340,52342,52343,52344,52345,52346,52347,52348,52349,52350,52351,52352,52353,52354,52355,52356,52357,52358,52359,52360,52361,52362,52363,52364,52365,52366,52367,52368,52369,52370,52371,12353,12354,12355,12356,12357,12358,12359,12360,12361,12362,12363,12364,12365,12366,12367,12368,12369,12370,12371,12372,12373,12374,12375,12376,12377,12378,12379,12380,12381,12382,12383,12384,12385,12386,12387,12388,12389,12390,12391,12392,12393,12394,12395,12396,12397,12398,12399,12400,12401,12402,12403,12404,12405,12406,12407,12408,12409,12410,12411,12412,12413,12414,12415,12416,12417,12418,12419,12420,12421,12422,12423,12424,12425,12426,12427,12428,12429,12430,12431,12432,12433,12434,12435,null,null,null,null,null,null,null,null,null,null,null,52372,52373,52374,52375,52378,52379,52381,52382,52383,52385,52386,52387,52388,52389,52390,52391,52394,52398,52399,52400,52401,52402,52403,52406,52407,52409,null,null,null,null,null,null,52410,52411,52413,52414,52415,52416,52417,52418,52419,52422,52424,52426,52427,52428,52429,52430,52431,52433,52434,52435,52437,52438,52439,52440,52441,52442,null,null,null,null,null,null,52443,52444,52445,52446,52447,52448,52449,52450,52451,52453,52454,52455,52456,52457,52458,52459,52461,52462,52463,52465,52466,52467,52468,52469,52470,52471,52472,52473,52474,52475,52476,52477,12449,12450,12451,12452,12453,12454,12455,12456,12457,12458,12459,12460,12461,12462,12463,12464,12465,12466,12467,12468,12469,12470,12471,12472,12473,12474,12475,12476,12477,12478,12479,12480,12481,12482,12483,12484,12485,12486,12487,12488,12489,12490,12491,12492,12493,12494,12495,12496,12497,12498,12499,12500,12501,12502,12503,12504,12505,12506,12507,12508,12509,12510,12511,12512,12513,12514,12515,12516,12517,12518,12519,12520,12521,12522,12523,12524,12525,12526,12527,12528,12529,12530,12531,12532,12533,12534,null,null,null,null,null,null,null,null,52478,52479,52480,52482,52483,52484,52485,52486,52487,52490,52491,52493,52494,52495,52497,52498,52499,52500,52501,52502,52503,52506,52508,52510,52511,52512,null,null,null,null,null,null,52513,52514,52515,52517,52518,52519,52521,52522,52523,52525,52526,52527,52528,52529,52530,52531,52532,52533,52534,52535,52536,52538,52539,52540,52541,52542,null,null,null,null,null,null,52543,52544,52545,52546,52547,52548,52549,52550,52551,52552,52553,52554,52555,52556,52557,52558,52559,52560,52561,52562,52563,52564,52565,52566,52567,52568,52569,52570,52571,52573,52574,52575,1040,1041,1042,1043,1044,1045,1025,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,1072,1073,1074,1075,1076,1077,1105,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,null,null,null,null,null,null,null,null,null,null,null,null,null,52577,52578,52579,52581,52582,52583,52584,52585,52586,52587,52590,52592,52594,52595,52596,52597,52598,52599,52601,52602,52603,52604,52605,52606,52607,52608,null,null,null,null,null,null,52609,52610,52611,52612,52613,52614,52615,52617,52618,52619,52620,52621,52622,52623,52624,52625,52626,52627,52630,52631,52633,52634,52635,52637,52638,52639,null,null,null,null,null,null,52640,52641,52642,52643,52646,52648,52650,52651,52652,52653,52654,52655,52657,52658,52659,52660,52661,52662,52663,52664,52665,52666,52667,52668,52669,52670,52671,52672,52673,52674,52675,52677,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,52678,52679,52680,52681,52682,52683,52685,52686,52687,52689,52690,52691,52692,52693,52694,52695,52696,52697,52698,52699,52700,52701,52702,52703,52704,52705,null,null,null,null,null,null,52706,52707,52708,52709,52710,52711,52713,52714,52715,52717,52718,52719,52721,52722,52723,52724,52725,52726,52727,52730,52732,52734,52735,52736,52737,52738,null,null,null,null,null,null,52739,52741,52742,52743,52745,52746,52747,52749,52750,52751,52752,52753,52754,52755,52757,52758,52759,52760,52762,52763,52764,52765,52766,52767,52770,52771,52773,52774,52775,52777,52778,52779,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,52780,52781,52782,52783,52786,52788,52790,52791,52792,52793,52794,52795,52796,52797,52798,52799,52800,52801,52802,52803,52804,52805,52806,52807,52808,52809,null,null,null,null,null,null,52810,52811,52812,52813,52814,52815,52816,52817,52818,52819,52820,52821,52822,52823,52826,52827,52829,52830,52834,52835,52836,52837,52838,52839,52842,52844,null,null,null,null,null,null,52846,52847,52848,52849,52850,52851,52854,52855,52857,52858,52859,52861,52862,52863,52864,52865,52866,52867,52870,52872,52874,52875,52876,52877,52878,52879,52882,52883,52885,52886,52887,52889,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,52890,52891,52892,52893,52894,52895,52898,52902,52903,52904,52905,52906,52907,52910,52911,52912,52913,52914,52915,52916,52917,52918,52919,52920,52921,52922,null,null,null,null,null,null,52923,52924,52925,52926,52927,52928,52930,52931,52932,52933,52934,52935,52936,52937,52938,52939,52940,52941,52942,52943,52944,52945,52946,52947,52948,52949,null,null,null,null,null,null,52950,52951,52952,52953,52954,52955,52956,52957,52958,52959,52960,52961,52962,52963,52966,52967,52969,52970,52973,52974,52975,52976,52977,52978,52979,52982,52986,52987,52988,52989,52990,52991,44032,44033,44036,44039,44040,44041,44042,44048,44049,44050,44051,44052,44053,44054,44055,44057,44058,44059,44060,44061,44064,44068,44076,44077,44079,44080,44081,44088,44089,44092,44096,44107,44109,44116,44120,44124,44144,44145,44148,44151,44152,44154,44160,44161,44163,44164,44165,44166,44169,44170,44171,44172,44176,44180,44188,44189,44191,44192,44193,44200,44201,44202,44204,44207,44208,44216,44217,44219,44220,44221,44225,44228,44232,44236,44245,44247,44256,44257,44260,44263,44264,44266,44268,44271,44272,44273,44275,44277,44278,44284,44285,44288,44292,44294,52994,52995,52997,52998,52999,53001,53002,53003,53004,53005,53006,53007,53010,53012,53014,53015,53016,53017,53018,53019,53021,53022,53023,53025,53026,53027,null,null,null,null,null,null,53029,53030,53031,53032,53033,53034,53035,53038,53042,53043,53044,53045,53046,53047,53049,53050,53051,53052,53053,53054,53055,53056,53057,53058,53059,53060,null,null,null,null,null,null,53061,53062,53063,53064,53065,53066,53067,53068,53069,53070,53071,53072,53073,53074,53075,53078,53079,53081,53082,53083,53085,53086,53087,53088,53089,53090,53091,53094,53096,53098,53099,53100,44300,44301,44303,44305,44312,44316,44320,44329,44332,44333,44340,44341,44344,44348,44356,44357,44359,44361,44368,44372,44376,44385,44387,44396,44397,44400,44403,44404,44405,44406,44411,44412,44413,44415,44417,44418,44424,44425,44428,44432,44444,44445,44452,44471,44480,44481,44484,44488,44496,44497,44499,44508,44512,44516,44536,44537,44540,44543,44544,44545,44552,44553,44555,44557,44564,44592,44593,44596,44599,44600,44602,44608,44609,44611,44613,44614,44618,44620,44621,44622,44624,44628,44630,44636,44637,44639,44640,44641,44645,44648,44649,44652,44656,44664,53101,53102,53103,53106,53107,53109,53110,53111,53113,53114,53115,53116,53117,53118,53119,53121,53122,53123,53124,53126,53127,53128,53129,53130,53131,53133,null,null,null,null,null,null,53134,53135,53136,53137,53138,53139,53140,53141,53142,53143,53144,53145,53146,53147,53148,53149,53150,53151,53152,53154,53155,53156,53157,53158,53159,53161,null,null,null,null,null,null,53162,53163,53164,53165,53166,53167,53169,53170,53171,53172,53173,53174,53175,53176,53177,53178,53179,53180,53181,53182,53183,53184,53185,53186,53187,53189,53190,53191,53192,53193,53194,53195,44665,44667,44668,44669,44676,44677,44684,44732,44733,44734,44736,44740,44748,44749,44751,44752,44753,44760,44761,44764,44776,44779,44781,44788,44792,44796,44807,44808,44813,44816,44844,44845,44848,44850,44852,44860,44861,44863,44865,44866,44867,44872,44873,44880,44892,44893,44900,44901,44921,44928,44932,44936,44944,44945,44949,44956,44984,44985,44988,44992,44999,45000,45001,45003,45005,45006,45012,45020,45032,45033,45040,45041,45044,45048,45056,45057,45060,45068,45072,45076,45084,45085,45096,45124,45125,45128,45130,45132,45134,45139,45140,45141,45143,45145,53196,53197,53198,53199,53200,53201,53202,53203,53204,53205,53206,53207,53208,53209,53210,53211,53212,53213,53214,53215,53218,53219,53221,53222,53223,53225,null,null,null,null,null,null,53226,53227,53228,53229,53230,53231,53234,53236,53238,53239,53240,53241,53242,53243,53245,53246,53247,53249,53250,53251,53253,53254,53255,53256,53257,53258,null,null,null,null,null,null,53259,53260,53261,53262,53263,53264,53266,53267,53268,53269,53270,53271,53273,53274,53275,53276,53277,53278,53279,53280,53281,53282,53283,53284,53285,53286,53287,53288,53289,53290,53291,53292,45149,45180,45181,45184,45188,45196,45197,45199,45201,45208,45209,45210,45212,45215,45216,45217,45218,45224,45225,45227,45228,45229,45230,45231,45233,45235,45236,45237,45240,45244,45252,45253,45255,45256,45257,45264,45265,45268,45272,45280,45285,45320,45321,45323,45324,45328,45330,45331,45336,45337,45339,45340,45341,45347,45348,45349,45352,45356,45364,45365,45367,45368,45369,45376,45377,45380,45384,45392,45393,45396,45397,45400,45404,45408,45432,45433,45436,45440,45442,45448,45449,45451,45453,45458,45459,45460,45464,45468,45480,45516,45520,45524,45532,45533,53294,53295,53296,53297,53298,53299,53302,53303,53305,53306,53307,53309,53310,53311,53312,53313,53314,53315,53318,53320,53322,53323,53324,53325,53326,53327,null,null,null,null,null,null,53329,53330,53331,53333,53334,53335,53337,53338,53339,53340,53341,53342,53343,53345,53346,53347,53348,53349,53350,53351,53352,53353,53354,53355,53358,53359,null,null,null,null,null,null,53361,53362,53363,53365,53366,53367,53368,53369,53370,53371,53374,53375,53376,53378,53379,53380,53381,53382,53383,53384,53385,53386,53387,53388,53389,53390,53391,53392,53393,53394,53395,53396,45535,45544,45545,45548,45552,45561,45563,45565,45572,45573,45576,45579,45580,45588,45589,45591,45593,45600,45620,45628,45656,45660,45664,45672,45673,45684,45685,45692,45700,45701,45705,45712,45713,45716,45720,45721,45722,45728,45729,45731,45733,45734,45738,45740,45744,45748,45768,45769,45772,45776,45778,45784,45785,45787,45789,45794,45796,45797,45798,45800,45803,45804,45805,45806,45807,45811,45812,45813,45815,45816,45817,45818,45819,45823,45824,45825,45828,45832,45840,45841,45843,45844,45845,45852,45908,45909,45910,45912,45915,45916,45918,45919,45924,45925,53397,53398,53399,53400,53401,53402,53403,53404,53405,53406,53407,53408,53409,53410,53411,53414,53415,53417,53418,53419,53421,53422,53423,53424,53425,53426,null,null,null,null,null,null,53427,53430,53432,53434,53435,53436,53437,53438,53439,53442,53443,53445,53446,53447,53450,53451,53452,53453,53454,53455,53458,53462,53463,53464,53465,53466,null,null,null,null,null,null,53467,53470,53471,53473,53474,53475,53477,53478,53479,53480,53481,53482,53483,53486,53490,53491,53492,53493,53494,53495,53497,53498,53499,53500,53501,53502,53503,53504,53505,53506,53507,53508,45927,45929,45931,45934,45936,45937,45940,45944,45952,45953,45955,45956,45957,45964,45968,45972,45984,45985,45992,45996,46020,46021,46024,46027,46028,46030,46032,46036,46037,46039,46041,46043,46045,46048,46052,46056,46076,46096,46104,46108,46112,46120,46121,46123,46132,46160,46161,46164,46168,46176,46177,46179,46181,46188,46208,46216,46237,46244,46248,46252,46261,46263,46265,46272,46276,46280,46288,46293,46300,46301,46304,46307,46308,46310,46316,46317,46319,46321,46328,46356,46357,46360,46363,46364,46372,46373,46375,46376,46377,46378,46384,46385,46388,46392,53509,53510,53511,53512,53513,53514,53515,53516,53518,53519,53520,53521,53522,53523,53524,53525,53526,53527,53528,53529,53530,53531,53532,53533,53534,53535,null,null,null,null,null,null,53536,53537,53538,53539,53540,53541,53542,53543,53544,53545,53546,53547,53548,53549,53550,53551,53554,53555,53557,53558,53559,53561,53563,53564,53565,53566,null,null,null,null,null,null,53567,53570,53574,53575,53576,53577,53578,53579,53582,53583,53585,53586,53587,53589,53590,53591,53592,53593,53594,53595,53598,53600,53602,53603,53604,53605,53606,53607,53609,53610,53611,53613,46400,46401,46403,46404,46405,46411,46412,46413,46416,46420,46428,46429,46431,46432,46433,46496,46497,46500,46504,46506,46507,46512,46513,46515,46516,46517,46523,46524,46525,46528,46532,46540,46541,46543,46544,46545,46552,46572,46608,46609,46612,46616,46629,46636,46644,46664,46692,46696,46748,46749,46752,46756,46763,46764,46769,46804,46832,46836,46840,46848,46849,46853,46888,46889,46892,46895,46896,46904,46905,46907,46916,46920,46924,46932,46933,46944,46948,46952,46960,46961,46963,46965,46972,46973,46976,46980,46988,46989,46991,46992,46993,46994,46998,46999,53614,53615,53616,53617,53618,53619,53620,53621,53622,53623,53624,53625,53626,53627,53629,53630,53631,53632,53633,53634,53635,53637,53638,53639,53641,53642,null,null,null,null,null,null,53643,53644,53645,53646,53647,53648,53649,53650,53651,53652,53653,53654,53655,53656,53657,53658,53659,53660,53661,53662,53663,53666,53667,53669,53670,53671,null,null,null,null,null,null,53673,53674,53675,53676,53677,53678,53679,53682,53684,53686,53687,53688,53689,53691,53693,53694,53695,53697,53698,53699,53700,53701,53702,53703,53704,53705,53706,53707,53708,53709,53710,53711,47000,47001,47004,47008,47016,47017,47019,47020,47021,47028,47029,47032,47047,47049,47084,47085,47088,47092,47100,47101,47103,47104,47105,47111,47112,47113,47116,47120,47128,47129,47131,47133,47140,47141,47144,47148,47156,47157,47159,47160,47161,47168,47172,47185,47187,47196,47197,47200,47204,47212,47213,47215,47217,47224,47228,47245,47272,47280,47284,47288,47296,47297,47299,47301,47308,47312,47316,47325,47327,47329,47336,47337,47340,47344,47352,47353,47355,47357,47364,47384,47392,47420,47421,47424,47428,47436,47439,47441,47448,47449,47452,47456,47464,47465,53712,53713,53714,53715,53716,53717,53718,53719,53721,53722,53723,53724,53725,53726,53727,53728,53729,53730,53731,53732,53733,53734,53735,53736,53737,53738,null,null,null,null,null,null,53739,53740,53741,53742,53743,53744,53745,53746,53747,53749,53750,53751,53753,53754,53755,53756,53757,53758,53759,53760,53761,53762,53763,53764,53765,53766,null,null,null,null,null,null,53768,53770,53771,53772,53773,53774,53775,53777,53778,53779,53780,53781,53782,53783,53784,53785,53786,53787,53788,53789,53790,53791,53792,53793,53794,53795,53796,53797,53798,53799,53800,53801,47467,47469,47476,47477,47480,47484,47492,47493,47495,47497,47498,47501,47502,47532,47533,47536,47540,47548,47549,47551,47553,47560,47561,47564,47566,47567,47568,47569,47570,47576,47577,47579,47581,47582,47585,47587,47588,47589,47592,47596,47604,47605,47607,47608,47609,47610,47616,47617,47624,47637,47672,47673,47676,47680,47682,47688,47689,47691,47693,47694,47699,47700,47701,47704,47708,47716,47717,47719,47720,47721,47728,47729,47732,47736,47747,47748,47749,47751,47756,47784,47785,47787,47788,47792,47794,47800,47801,47803,47805,47812,47816,47832,47833,47868,53802,53803,53806,53807,53809,53810,53811,53813,53814,53815,53816,53817,53818,53819,53822,53824,53826,53827,53828,53829,53830,53831,53833,53834,53835,53836,null,null,null,null,null,null,53837,53838,53839,53840,53841,53842,53843,53844,53845,53846,53847,53848,53849,53850,53851,53853,53854,53855,53856,53857,53858,53859,53861,53862,53863,53864,null,null,null,null,null,null,53865,53866,53867,53868,53869,53870,53871,53872,53873,53874,53875,53876,53877,53878,53879,53880,53881,53882,53883,53884,53885,53886,53887,53890,53891,53893,53894,53895,53897,53898,53899,53900,47872,47876,47885,47887,47889,47896,47900,47904,47913,47915,47924,47925,47926,47928,47931,47932,47933,47934,47940,47941,47943,47945,47949,47951,47952,47956,47960,47969,47971,47980,48008,48012,48016,48036,48040,48044,48052,48055,48064,48068,48072,48080,48083,48120,48121,48124,48127,48128,48130,48136,48137,48139,48140,48141,48143,48145,48148,48149,48150,48151,48152,48155,48156,48157,48158,48159,48164,48165,48167,48169,48173,48176,48177,48180,48184,48192,48193,48195,48196,48197,48201,48204,48205,48208,48221,48260,48261,48264,48267,48268,48270,48276,48277,48279,53901,53902,53903,53906,53907,53908,53910,53911,53912,53913,53914,53915,53917,53918,53919,53921,53922,53923,53925,53926,53927,53928,53929,53930,53931,53933,null,null,null,null,null,null,53934,53935,53936,53938,53939,53940,53941,53942,53943,53946,53947,53949,53950,53953,53955,53956,53957,53958,53959,53962,53964,53965,53966,53967,53968,53969,null,null,null,null,null,null,53970,53971,53973,53974,53975,53977,53978,53979,53981,53982,53983,53984,53985,53986,53987,53990,53991,53992,53993,53994,53995,53996,53997,53998,53999,54002,54003,54005,54006,54007,54009,54010,48281,48282,48288,48289,48292,48295,48296,48304,48305,48307,48308,48309,48316,48317,48320,48324,48333,48335,48336,48337,48341,48344,48348,48372,48373,48374,48376,48380,48388,48389,48391,48393,48400,48404,48420,48428,48448,48456,48457,48460,48464,48472,48473,48484,48488,48512,48513,48516,48519,48520,48521,48522,48528,48529,48531,48533,48537,48538,48540,48548,48560,48568,48596,48597,48600,48604,48617,48624,48628,48632,48640,48643,48645,48652,48653,48656,48660,48668,48669,48671,48708,48709,48712,48716,48718,48724,48725,48727,48729,48730,48731,48736,48737,48740,54011,54012,54013,54014,54015,54018,54020,54022,54023,54024,54025,54026,54027,54031,54033,54034,54035,54037,54039,54040,54041,54042,54043,54046,54050,54051,null,null,null,null,null,null,54052,54054,54055,54058,54059,54061,54062,54063,54065,54066,54067,54068,54069,54070,54071,54074,54078,54079,54080,54081,54082,54083,54086,54087,54088,54089,null,null,null,null,null,null,54090,54091,54092,54093,54094,54095,54096,54097,54098,54099,54100,54101,54102,54103,54104,54105,54106,54107,54108,54109,54110,54111,54112,54113,54114,54115,54116,54117,54118,54119,54120,54121,48744,48746,48752,48753,48755,48756,48757,48763,48764,48765,48768,48772,48780,48781,48783,48784,48785,48792,48793,48808,48848,48849,48852,48855,48856,48864,48867,48868,48869,48876,48897,48904,48905,48920,48921,48923,48924,48925,48960,48961,48964,48968,48976,48977,48981,49044,49072,49093,49100,49101,49104,49108,49116,49119,49121,49212,49233,49240,49244,49248,49256,49257,49296,49297,49300,49304,49312,49313,49315,49317,49324,49325,49327,49328,49331,49332,49333,49334,49340,49341,49343,49344,49345,49349,49352,49353,49356,49360,49368,49369,49371,49372,49373,49380,54122,54123,54124,54125,54126,54127,54128,54129,54130,54131,54132,54133,54134,54135,54136,54137,54138,54139,54142,54143,54145,54146,54147,54149,54150,54151,null,null,null,null,null,null,54152,54153,54154,54155,54158,54162,54163,54164,54165,54166,54167,54170,54171,54173,54174,54175,54177,54178,54179,54180,54181,54182,54183,54186,54188,54190,null,null,null,null,null,null,54191,54192,54193,54194,54195,54197,54198,54199,54201,54202,54203,54205,54206,54207,54208,54209,54210,54211,54214,54215,54218,54219,54220,54221,54222,54223,54225,54226,54227,54228,54229,54230,49381,49384,49388,49396,49397,49399,49401,49408,49412,49416,49424,49429,49436,49437,49438,49439,49440,49443,49444,49446,49447,49452,49453,49455,49456,49457,49462,49464,49465,49468,49472,49480,49481,49483,49484,49485,49492,49493,49496,49500,49508,49509,49511,49512,49513,49520,49524,49528,49541,49548,49549,49550,49552,49556,49558,49564,49565,49567,49569,49573,49576,49577,49580,49584,49597,49604,49608,49612,49620,49623,49624,49632,49636,49640,49648,49649,49651,49660,49661,49664,49668,49676,49677,49679,49681,49688,49689,49692,49695,49696,49704,49705,49707,49709,54231,54233,54234,54235,54236,54237,54238,54239,54240,54242,54244,54245,54246,54247,54248,54249,54250,54251,54254,54255,54257,54258,54259,54261,54262,54263,null,null,null,null,null,null,54264,54265,54266,54267,54270,54272,54274,54275,54276,54277,54278,54279,54281,54282,54283,54284,54285,54286,54287,54288,54289,54290,54291,54292,54293,54294,null,null,null,null,null,null,54295,54296,54297,54298,54299,54300,54302,54303,54304,54305,54306,54307,54308,54309,54310,54311,54312,54313,54314,54315,54316,54317,54318,54319,54320,54321,54322,54323,54324,54325,54326,54327,49711,49713,49714,49716,49736,49744,49745,49748,49752,49760,49765,49772,49773,49776,49780,49788,49789,49791,49793,49800,49801,49808,49816,49819,49821,49828,49829,49832,49836,49837,49844,49845,49847,49849,49884,49885,49888,49891,49892,49899,49900,49901,49903,49905,49910,49912,49913,49915,49916,49920,49928,49929,49932,49933,49939,49940,49941,49944,49948,49956,49957,49960,49961,49989,50024,50025,50028,50032,50034,50040,50041,50044,50045,50052,50056,50060,50112,50136,50137,50140,50143,50144,50146,50152,50153,50157,50164,50165,50168,50184,50192,50212,50220,50224,54328,54329,54330,54331,54332,54333,54334,54335,54337,54338,54339,54341,54342,54343,54344,54345,54346,54347,54348,54349,54350,54351,54352,54353,54354,54355,null,null,null,null,null,null,54356,54357,54358,54359,54360,54361,54362,54363,54365,54366,54367,54369,54370,54371,54373,54374,54375,54376,54377,54378,54379,54380,54382,54384,54385,54386,null,null,null,null,null,null,54387,54388,54389,54390,54391,54394,54395,54397,54398,54401,54403,54404,54405,54406,54407,54410,54412,54414,54415,54416,54417,54418,54419,54421,54422,54423,54424,54425,54426,54427,54428,54429,50228,50236,50237,50248,50276,50277,50280,50284,50292,50293,50297,50304,50324,50332,50360,50364,50409,50416,50417,50420,50424,50426,50431,50432,50433,50444,50448,50452,50460,50472,50473,50476,50480,50488,50489,50491,50493,50500,50501,50504,50505,50506,50508,50509,50510,50515,50516,50517,50519,50520,50521,50525,50526,50528,50529,50532,50536,50544,50545,50547,50548,50549,50556,50557,50560,50564,50567,50572,50573,50575,50577,50581,50583,50584,50588,50592,50601,50612,50613,50616,50617,50619,50620,50621,50622,50628,50629,50630,50631,50632,50633,50634,50636,50638,54430,54431,54432,54433,54434,54435,54436,54437,54438,54439,54440,54442,54443,54444,54445,54446,54447,54448,54449,54450,54451,54452,54453,54454,54455,54456,null,null,null,null,null,null,54457,54458,54459,54460,54461,54462,54463,54464,54465,54466,54467,54468,54469,54470,54471,54472,54473,54474,54475,54477,54478,54479,54481,54482,54483,54485,null,null,null,null,null,null,54486,54487,54488,54489,54490,54491,54493,54494,54496,54497,54498,54499,54500,54501,54502,54503,54505,54506,54507,54509,54510,54511,54513,54514,54515,54516,54517,54518,54519,54521,54522,54524,50640,50641,50644,50648,50656,50657,50659,50661,50668,50669,50670,50672,50676,50678,50679,50684,50685,50686,50687,50688,50689,50693,50694,50695,50696,50700,50704,50712,50713,50715,50716,50724,50725,50728,50732,50733,50734,50736,50739,50740,50741,50743,50745,50747,50752,50753,50756,50760,50768,50769,50771,50772,50773,50780,50781,50784,50796,50799,50801,50808,50809,50812,50816,50824,50825,50827,50829,50836,50837,50840,50844,50852,50853,50855,50857,50864,50865,50868,50872,50873,50874,50880,50881,50883,50885,50892,50893,50896,50900,50908,50909,50912,50913,50920,54526,54527,54528,54529,54530,54531,54533,54534,54535,54537,54538,54539,54541,54542,54543,54544,54545,54546,54547,54550,54552,54553,54554,54555,54556,54557,null,null,null,null,null,null,54558,54559,54560,54561,54562,54563,54564,54565,54566,54567,54568,54569,54570,54571,54572,54573,54574,54575,54576,54577,54578,54579,54580,54581,54582,54583,null,null,null,null,null,null,54584,54585,54586,54587,54590,54591,54593,54594,54595,54597,54598,54599,54600,54601,54602,54603,54606,54608,54610,54611,54612,54613,54614,54615,54618,54619,54621,54622,54623,54625,54626,54627,50921,50924,50928,50936,50937,50941,50948,50949,50952,50956,50964,50965,50967,50969,50976,50977,50980,50984,50992,50993,50995,50997,50999,51004,51005,51008,51012,51018,51020,51021,51023,51025,51026,51027,51028,51029,51030,51031,51032,51036,51040,51048,51051,51060,51061,51064,51068,51069,51070,51075,51076,51077,51079,51080,51081,51082,51086,51088,51089,51092,51094,51095,51096,51098,51104,51105,51107,51108,51109,51110,51116,51117,51120,51124,51132,51133,51135,51136,51137,51144,51145,51148,51150,51152,51160,51165,51172,51176,51180,51200,51201,51204,51208,51210,54628,54630,54631,54634,54636,54638,54639,54640,54641,54642,54643,54646,54647,54649,54650,54651,54653,54654,54655,54656,54657,54658,54659,54662,54666,54667,null,null,null,null,null,null,54668,54669,54670,54671,54673,54674,54675,54676,54677,54678,54679,54680,54681,54682,54683,54684,54685,54686,54687,54688,54689,54690,54691,54692,54694,54695,null,null,null,null,null,null,54696,54697,54698,54699,54700,54701,54702,54703,54704,54705,54706,54707,54708,54709,54710,54711,54712,54713,54714,54715,54716,54717,54718,54719,54720,54721,54722,54723,54724,54725,54726,54727,51216,51217,51219,51221,51222,51228,51229,51232,51236,51244,51245,51247,51249,51256,51260,51264,51272,51273,51276,51277,51284,51312,51313,51316,51320,51322,51328,51329,51331,51333,51334,51335,51339,51340,51341,51348,51357,51359,51361,51368,51388,51389,51396,51400,51404,51412,51413,51415,51417,51424,51425,51428,51445,51452,51453,51456,51460,51461,51462,51468,51469,51471,51473,51480,51500,51508,51536,51537,51540,51544,51552,51553,51555,51564,51568,51572,51580,51592,51593,51596,51600,51608,51609,51611,51613,51648,51649,51652,51655,51656,51658,51664,51665,51667,54730,54731,54733,54734,54735,54737,54739,54740,54741,54742,54743,54746,54748,54750,54751,54752,54753,54754,54755,54758,54759,54761,54762,54763,54765,54766,null,null,null,null,null,null,54767,54768,54769,54770,54771,54774,54776,54778,54779,54780,54781,54782,54783,54786,54787,54789,54790,54791,54793,54794,54795,54796,54797,54798,54799,54802,null,null,null,null,null,null,54806,54807,54808,54809,54810,54811,54813,54814,54815,54817,54818,54819,54821,54822,54823,54824,54825,54826,54827,54828,54830,54831,54832,54833,54834,54835,54836,54837,54838,54839,54842,54843,51669,51670,51673,51674,51676,51677,51680,51682,51684,51687,51692,51693,51695,51696,51697,51704,51705,51708,51712,51720,51721,51723,51724,51725,51732,51736,51753,51788,51789,51792,51796,51804,51805,51807,51808,51809,51816,51837,51844,51864,51900,51901,51904,51908,51916,51917,51919,51921,51923,51928,51929,51936,51948,51956,51976,51984,51988,51992,52000,52001,52033,52040,52041,52044,52048,52056,52057,52061,52068,52088,52089,52124,52152,52180,52196,52199,52201,52236,52237,52240,52244,52252,52253,52257,52258,52263,52264,52265,52268,52270,52272,52280,52281,52283,54845,54846,54847,54849,54850,54851,54852,54854,54855,54858,54860,54862,54863,54864,54866,54867,54870,54871,54873,54874,54875,54877,54878,54879,54880,54881,null,null,null,null,null,null,54882,54883,54884,54885,54886,54888,54890,54891,54892,54893,54894,54895,54898,54899,54901,54902,54903,54904,54905,54906,54907,54908,54909,54910,54911,54912,null,null,null,null,null,null,54913,54914,54916,54918,54919,54920,54921,54922,54923,54926,54927,54929,54930,54931,54933,54934,54935,54936,54937,54938,54939,54940,54942,54944,54946,54947,54948,54949,54950,54951,54953,54954,52284,52285,52286,52292,52293,52296,52300,52308,52309,52311,52312,52313,52320,52324,52326,52328,52336,52341,52376,52377,52380,52384,52392,52393,52395,52396,52397,52404,52405,52408,52412,52420,52421,52423,52425,52432,52436,52452,52460,52464,52481,52488,52489,52492,52496,52504,52505,52507,52509,52516,52520,52524,52537,52572,52576,52580,52588,52589,52591,52593,52600,52616,52628,52629,52632,52636,52644,52645,52647,52649,52656,52676,52684,52688,52712,52716,52720,52728,52729,52731,52733,52740,52744,52748,52756,52761,52768,52769,52772,52776,52784,52785,52787,52789,54955,54957,54958,54959,54961,54962,54963,54964,54965,54966,54967,54968,54970,54972,54973,54974,54975,54976,54977,54978,54979,54982,54983,54985,54986,54987,null,null,null,null,null,null,54989,54990,54991,54992,54994,54995,54997,54998,55000,55002,55003,55004,55005,55006,55007,55009,55010,55011,55013,55014,55015,55017,55018,55019,55020,55021,null,null,null,null,null,null,55022,55023,55025,55026,55027,55028,55030,55031,55032,55033,55034,55035,55038,55039,55041,55042,55043,55045,55046,55047,55048,55049,55050,55051,55052,55053,55054,55055,55056,55058,55059,55060,52824,52825,52828,52831,52832,52833,52840,52841,52843,52845,52852,52853,52856,52860,52868,52869,52871,52873,52880,52881,52884,52888,52896,52897,52899,52900,52901,52908,52909,52929,52964,52965,52968,52971,52972,52980,52981,52983,52984,52985,52992,52993,52996,53000,53008,53009,53011,53013,53020,53024,53028,53036,53037,53039,53040,53041,53048,53076,53077,53080,53084,53092,53093,53095,53097,53104,53105,53108,53112,53120,53125,53132,53153,53160,53168,53188,53216,53217,53220,53224,53232,53233,53235,53237,53244,53248,53252,53265,53272,53293,53300,53301,53304,53308,55061,55062,55063,55066,55067,55069,55070,55071,55073,55074,55075,55076,55077,55078,55079,55082,55084,55086,55087,55088,55089,55090,55091,55094,55095,55097,null,null,null,null,null,null,55098,55099,55101,55102,55103,55104,55105,55106,55107,55109,55110,55112,55114,55115,55116,55117,55118,55119,55122,55123,55125,55130,55131,55132,55133,55134,null,null,null,null,null,null,55135,55138,55140,55142,55143,55144,55146,55147,55149,55150,55151,55153,55154,55155,55157,55158,55159,55160,55161,55162,55163,55166,55167,55168,55170,55171,55172,55173,55174,55175,55178,55179,53316,53317,53319,53321,53328,53332,53336,53344,53356,53357,53360,53364,53372,53373,53377,53412,53413,53416,53420,53428,53429,53431,53433,53440,53441,53444,53448,53449,53456,53457,53459,53460,53461,53468,53469,53472,53476,53484,53485,53487,53488,53489,53496,53517,53552,53553,53556,53560,53562,53568,53569,53571,53572,53573,53580,53581,53584,53588,53596,53597,53599,53601,53608,53612,53628,53636,53640,53664,53665,53668,53672,53680,53681,53683,53685,53690,53692,53696,53720,53748,53752,53767,53769,53776,53804,53805,53808,53812,53820,53821,53823,53825,53832,53852,55181,55182,55183,55185,55186,55187,55188,55189,55190,55191,55194,55196,55198,55199,55200,55201,55202,55203,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,53860,53888,53889,53892,53896,53904,53905,53909,53916,53920,53924,53932,53937,53944,53945,53948,53951,53952,53954,53960,53961,53963,53972,53976,53980,53988,53989,54000,54001,54004,54008,54016,54017,54019,54021,54028,54029,54030,54032,54036,54038,54044,54045,54047,54048,54049,54053,54056,54057,54060,54064,54072,54073,54075,54076,54077,54084,54085,54140,54141,54144,54148,54156,54157,54159,54160,54161,54168,54169,54172,54176,54184,54185,54187,54189,54196,54200,54204,54212,54213,54216,54217,54224,54232,54241,54243,54252,54253,54256,54260,54268,54269,54271,54273,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,54280,54301,54336,54340,54364,54368,54372,54381,54383,54392,54393,54396,54399,54400,54402,54408,54409,54411,54413,54420,54441,54476,54480,54484,54492,54495,54504,54508,54512,54520,54523,54525,54532,54536,54540,54548,54549,54551,54588,54589,54592,54596,54604,54605,54607,54609,54616,54617,54620,54624,54629,54632,54633,54635,54637,54644,54645,54648,54652,54660,54661,54663,54664,54665,54672,54693,54728,54729,54732,54736,54738,54744,54745,54747,54749,54756,54757,54760,54764,54772,54773,54775,54777,54784,54785,54788,54792,54800,54801,54803,54804,54805,54812,54816,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,54820,54829,54840,54841,54844,54848,54853,54856,54857,54859,54861,54865,54868,54869,54872,54876,54887,54889,54896,54897,54900,54915,54917,54924,54925,54928,54932,54941,54943,54945,54952,54956,54960,54969,54971,54980,54981,54984,54988,54993,54996,54999,55001,55008,55012,55016,55024,55029,55036,55037,55040,55044,55057,55064,55065,55068,55072,55080,55081,55083,55085,55092,55093,55096,55100,55108,55111,55113,55120,55121,55124,55126,55127,55128,55129,55136,55137,55139,55141,55145,55148,55152,55156,55164,55165,55169,55176,55177,55180,55184,55192,55193,55195,55197,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,20285,20339,20551,20729,21152,21487,21621,21733,22025,23233,23478,26247,26550,26551,26607,27468,29634,30146,31292,33499,33540,34903,34952,35382,36040,36303,36603,36838,39381,21051,21364,21508,24682,24932,27580,29647,33050,35258,35282,38307,20355,21002,22718,22904,23014,24178,24185,25031,25536,26438,26604,26751,28567,30286,30475,30965,31240,31487,31777,32925,33390,33393,35563,38291,20075,21917,26359,28212,30883,31469,33883,35088,34638,38824,21208,22350,22570,23884,24863,25022,25121,25954,26577,27204,28187,29976,30131,30435,30640,32058,37039,37969,37970,40853,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,21283,23724,30002,32987,37440,38296,21083,22536,23004,23713,23831,24247,24378,24394,24951,27743,30074,30086,31968,32115,32177,32652,33108,33313,34193,35137,35611,37628,38477,40007,20171,20215,20491,20977,22607,24887,24894,24936,25913,27114,28433,30117,30342,30422,31623,33445,33995,63744,37799,38283,21888,23458,22353,63745,31923,32697,37301,20520,21435,23621,24040,25298,25454,25818,25831,28192,28844,31067,36317,36382,63746,36989,37445,37624,20094,20214,20581,24062,24314,24838,26967,33137,34388,36423,37749,39467,20062,20625,26480,26688,20745,21133,21138,27298,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,30652,37392,40660,21163,24623,36850,20552,25001,25581,25802,26684,27268,28608,33160,35233,38548,22533,29309,29356,29956,32121,32365,32937,35211,35700,36963,40273,25225,27770,28500,32080,32570,35363,20860,24906,31645,35609,37463,37772,20140,20435,20510,20670,20742,21185,21197,21375,22384,22659,24218,24465,24950,25004,25806,25964,26223,26299,26356,26775,28039,28805,28913,29855,29861,29898,30169,30828,30956,31455,31478,32069,32147,32789,32831,33051,33686,35686,36629,36885,37857,38915,38968,39514,39912,20418,21843,22586,22865,23395,23622,24760,25106,26690,26800,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,26856,28330,30028,30328,30926,31293,31995,32363,32380,35336,35489,35903,38542,40388,21476,21481,21578,21617,22266,22993,23396,23611,24235,25335,25911,25925,25970,26272,26543,27073,27837,30204,30352,30590,31295,32660,32771,32929,33167,33510,33533,33776,34241,34865,34996,35493,63747,36764,37678,38599,39015,39640,40723,21741,26011,26354,26767,31296,35895,40288,22256,22372,23825,26118,26801,26829,28414,29736,34974,39908,27752,63748,39592,20379,20844,20849,21151,23380,24037,24656,24685,25329,25511,25915,29657,31354,34467,36002,38799,20018,23521,25096,26524,29916,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,31185,33747,35463,35506,36328,36942,37707,38982,24275,27112,34303,37101,63749,20896,23448,23532,24931,26874,27454,28748,29743,29912,31649,32592,33733,35264,36011,38364,39208,21038,24669,25324,36866,20362,20809,21281,22745,24291,26336,27960,28826,29378,29654,31568,33009,37979,21350,25499,32619,20054,20608,22602,22750,24618,24871,25296,27088,39745,23439,32024,32945,36703,20132,20689,21676,21932,23308,23968,24039,25898,25934,26657,27211,29409,30350,30703,32094,32761,33184,34126,34527,36611,36686,37066,39171,39509,39851,19992,20037,20061,20167,20465,20855,21246,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,21312,21475,21477,21646,22036,22389,22434,23495,23943,24272,25084,25304,25937,26552,26601,27083,27472,27590,27628,27714,28317,28792,29399,29590,29699,30655,30697,31350,32127,32777,33276,33285,33290,33503,34914,35635,36092,36544,36881,37041,37476,37558,39378,39493,40169,40407,40860,22283,23616,33738,38816,38827,40628,21531,31384,32676,35033,36557,37089,22528,23624,25496,31391,23470,24339,31353,31406,33422,36524,20518,21048,21240,21367,22280,25331,25458,27402,28099,30519,21413,29527,34152,36470,38357,26426,27331,28528,35437,36556,39243,63750,26231,27512,36020,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,39740,63751,21483,22317,22862,25542,27131,29674,30789,31418,31429,31998,33909,35215,36211,36917,38312,21243,22343,30023,31584,33740,37406,63752,27224,20811,21067,21127,25119,26840,26997,38553,20677,21156,21220,25027,26020,26681,27135,29822,31563,33465,33771,35250,35641,36817,39241,63753,20170,22935,25810,26129,27278,29748,31105,31165,33449,34942,34943,35167,63754,37670,20235,21450,24613,25201,27762,32026,32102,20120,20834,30684,32943,20225,20238,20854,20864,21980,22120,22331,22522,22524,22804,22855,22931,23492,23696,23822,24049,24190,24524,25216,26071,26083,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,26398,26399,26462,26827,26820,27231,27450,27683,27773,27778,28103,29592,29734,29738,29826,29859,30072,30079,30849,30959,31041,31047,31048,31098,31637,32000,32186,32648,32774,32813,32908,35352,35663,35912,36215,37665,37668,39138,39249,39438,39439,39525,40594,32202,20342,21513,25326,26708,37329,21931,20794,63755,63756,23068,25062,63757,25295,25343,63758,63759,63760,63761,63762,63763,37027,63764,63765,63766,63767,63768,35582,63769,63770,63771,63772,26262,63773,29014,63774,63775,38627,63776,25423,25466,21335,63777,26511,26976,28275,63778,30007,63779,63780,63781,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,32013,63782,63783,34930,22218,23064,63784,63785,63786,63787,63788,20035,63789,20839,22856,26608,32784,63790,22899,24180,25754,31178,24565,24684,25288,25467,23527,23511,21162,63791,22900,24361,24594,63792,63793,63794,29785,63795,63796,63797,63798,63799,63800,39377,63801,63802,63803,63804,63805,63806,63807,63808,63809,63810,63811,28611,63812,63813,33215,36786,24817,63814,63815,33126,63816,63817,23615,63818,63819,63820,63821,63822,63823,63824,63825,23273,35365,26491,32016,63826,63827,63828,63829,63830,63831,33021,63832,63833,23612,27877,21311,28346,22810,33590,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,20025,20150,20294,21934,22296,22727,24406,26039,26086,27264,27573,28237,30701,31471,31774,32222,34507,34962,37170,37723,25787,28606,29562,30136,36948,21846,22349,25018,25812,26311,28129,28251,28525,28601,30192,32835,33213,34113,35203,35527,35674,37663,27795,30035,31572,36367,36957,21776,22530,22616,24162,25095,25758,26848,30070,31958,34739,40680,20195,22408,22382,22823,23565,23729,24118,24453,25140,25825,29619,33274,34955,36024,38538,40667,23429,24503,24755,20498,20992,21040,22294,22581,22615,23566,23648,23798,23947,24230,24466,24764,25361,25481,25623,26691,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,26873,27330,28120,28193,28372,28644,29182,30428,30585,31153,31291,33796,35241,36077,36339,36424,36867,36884,36947,37117,37709,38518,38876,27602,28678,29272,29346,29544,30563,31167,31716,32411,35712,22697,24775,25958,26109,26302,27788,28958,29129,35930,38931,20077,31361,20189,20908,20941,21205,21516,24999,26481,26704,26847,27934,28540,30140,30643,31461,33012,33891,37509,20828,26007,26460,26515,30168,31431,33651,63834,35910,36887,38957,23663,33216,33434,36929,36975,37389,24471,23965,27225,29128,30331,31561,34276,35588,37159,39472,21895,25078,63835,30313,32645,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,34367,34746,35064,37007,63836,27931,28889,29662,32097,33853,63837,37226,39409,63838,20098,21365,27396,27410,28734,29211,34349,40478,21068,36771,23888,25829,25900,27414,28651,31811,32412,34253,35172,35261,25289,33240,34847,24266,26391,28010,29436,29701,29807,34690,37086,20358,23821,24480,33802,20919,25504,30053,20142,20486,20841,20937,26753,27153,31918,31921,31975,33391,35538,36635,37327,20406,20791,21237,21570,24300,24942,25150,26053,27354,28670,31018,34268,34851,38317,39522,39530,40599,40654,21147,26310,27511,28701,31019,36706,38722,24976,25088,25891,28451,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,29001,29833,32244,32879,34030,36646,36899,37706,20925,21015,21155,27916,28872,35010,24265,25986,27566,28610,31806,29557,20196,20278,22265,63839,23738,23994,24604,29618,31533,32666,32718,32838,36894,37428,38646,38728,38936,40801,20363,28583,31150,37300,38583,21214,63840,25736,25796,27347,28510,28696,29200,30439,32769,34310,34396,36335,36613,38706,39791,40442,40565,30860,31103,32160,33737,37636,40575,40595,35542,22751,24324,26407,28711,29903,31840,32894,20769,28712,29282,30922,36034,36058,36084,38647,20102,20698,23534,24278,26009,29134,30274,30637,32842,34044,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,36988,39719,40845,22744,23105,23650,27155,28122,28431,30267,32047,32311,34078,35128,37860,38475,21129,26066,26611,27060,27969,28316,28687,29705,29792,30041,30244,30827,35628,39006,20845,25134,38520,20374,20523,23833,28138,32184,36650,24459,24900,26647,63841,38534,21202,32907,20956,20940,26974,31260,32190,33777,38517,20442,21033,21400,21519,21774,23653,24743,26446,26792,28012,29313,29432,29702,29827,63842,30178,31852,32633,32696,33673,35023,35041,37324,37328,38626,39881,21533,28542,29136,29848,34298,36522,38563,40023,40607,26519,28107,29747,33256,38678,30764,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,31435,31520,31890,25705,29802,30194,30908,30952,39340,39764,40635,23518,24149,28448,33180,33707,37000,19975,21325,23081,24018,24398,24930,25405,26217,26364,28415,28459,28771,30622,33836,34067,34875,36627,39237,39995,21788,25273,26411,27819,33545,35178,38778,20129,22916,24536,24537,26395,32178,32596,33426,33579,33725,36638,37017,22475,22969,23186,23504,26151,26522,26757,27599,29028,32629,36023,36067,36993,39749,33032,35978,38476,39488,40613,23391,27667,29467,30450,30431,33804,20906,35219,20813,20885,21193,26825,27796,30468,30496,32191,32236,38754,40629,28357,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,34065,20901,21517,21629,26126,26269,26919,28319,30399,30609,33559,33986,34719,37225,37528,40180,34946,20398,20882,21215,22982,24125,24917,25720,25721,26286,26576,27169,27597,27611,29279,29281,29761,30520,30683,32791,33468,33541,35584,35624,35980,26408,27792,29287,30446,30566,31302,40361,27519,27794,22818,26406,33945,21359,22675,22937,24287,25551,26164,26483,28218,29483,31447,33495,37672,21209,24043,25006,25035,25098,25287,25771,26080,26969,27494,27595,28961,29687,30045,32326,33310,33538,34154,35491,36031,38695,40289,22696,40664,20497,21006,21563,21839,25991,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,27766,32010,32011,32862,34442,38272,38639,21247,27797,29289,21619,23194,23614,23883,24396,24494,26410,26806,26979,28220,28228,30473,31859,32654,34183,35598,36855,38753,40692,23735,24758,24845,25003,25935,26107,26108,27665,27887,29599,29641,32225,38292,23494,34588,35600,21085,21338,25293,25615,25778,26420,27192,27850,29632,29854,31636,31893,32283,33162,33334,34180,36843,38649,39361,20276,21322,21453,21467,25292,25644,25856,26001,27075,27886,28504,29677,30036,30242,30436,30460,30928,30971,31020,32070,33324,34784,36820,38930,39151,21187,25300,25765,28196,28497,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,30332,36299,37297,37474,39662,39747,20515,20621,22346,22952,23592,24135,24439,25151,25918,26041,26049,26121,26507,27036,28354,30917,32033,32938,33152,33323,33459,33953,34444,35370,35607,37030,38450,40848,20493,20467,63843,22521,24472,25308,25490,26479,28227,28953,30403,32972,32986,35060,35061,35097,36064,36649,37197,38506,20271,20336,24091,26575,26658,30333,30334,39748,24161,27146,29033,29140,30058,63844,32321,34115,34281,39132,20240,31567,32624,38309,20961,24070,26805,27710,27726,27867,29359,31684,33539,27861,29754,20731,21128,22721,25816,27287,29863,30294,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,30887,34327,38370,38713,63845,21342,24321,35722,36776,36783,37002,21029,30629,40009,40712,19993,20482,20853,23643,24183,26142,26170,26564,26821,28851,29953,30149,31177,31453,36647,39200,39432,20445,22561,22577,23542,26222,27493,27921,28282,28541,29668,29995,33769,35036,35091,35676,36628,20239,20693,21264,21340,23443,24489,26381,31119,33145,33583,34068,35079,35206,36665,36667,39333,39954,26412,20086,20472,22857,23553,23791,23792,25447,26834,28925,29090,29739,32299,34028,34562,36898,37586,40179,19981,20184,20463,20613,21078,21103,21542,21648,22496,22827,23142,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,23386,23413,23500,24220,63846,25206,25975,26023,28014,28325,29238,31526,31807,32566,33104,33105,33178,33344,33433,33705,35331,36000,36070,36091,36212,36282,37096,37340,38428,38468,39385,40167,21271,20998,21545,22132,22707,22868,22894,24575,24996,25198,26128,27774,28954,30406,31881,31966,32027,33452,36033,38640,63847,20315,24343,24447,25282,23849,26379,26842,30844,32323,40300,19989,20633,21269,21290,21329,22915,23138,24199,24754,24970,25161,25209,26000,26503,27047,27604,27606,27607,27608,27832,63848,29749,30202,30738,30865,31189,31192,31875,32203,32737,32933,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,33086,33218,33778,34586,35048,35513,35692,36027,37145,38750,39131,40763,22188,23338,24428,25996,27315,27567,27996,28657,28693,29277,29613,36007,36051,38971,24977,27703,32856,39425,20045,20107,20123,20181,20282,20284,20351,20447,20735,21490,21496,21766,21987,22235,22763,22882,23057,23531,23546,23556,24051,24107,24473,24605,25448,26012,26031,26614,26619,26797,27515,27801,27863,28195,28681,29509,30722,31038,31040,31072,31169,31721,32023,32114,32902,33293,33678,34001,34503,35039,35408,35422,35613,36060,36198,36781,37034,39164,39391,40605,21066,63849,26388,63850,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,20632,21034,23665,25955,27733,29642,29987,30109,31639,33948,37240,38704,20087,25746,27578,29022,34217,19977,63851,26441,26862,28183,33439,34072,34923,25591,28545,37394,39087,19978,20663,20687,20767,21830,21930,22039,23360,23577,23776,24120,24202,24224,24258,24819,26705,27233,28248,29245,29248,29376,30456,31077,31665,32724,35059,35316,35443,35937,36062,38684,22622,29885,36093,21959,63852,31329,32034,33394,29298,29983,29989,63853,31513,22661,22779,23996,24207,24246,24464,24661,25234,25471,25933,26257,26329,26360,26646,26866,29312,29790,31598,32110,32214,32626,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,32997,33298,34223,35199,35475,36893,37604,40653,40736,22805,22893,24109,24796,26132,26227,26512,27728,28101,28511,30707,30889,33990,37323,37675,20185,20682,20808,21892,23307,23459,25159,25982,26059,28210,29053,29697,29764,29831,29887,30316,31146,32218,32341,32680,33146,33203,33337,34330,34796,35445,36323,36984,37521,37925,39245,39854,21352,23633,26964,27844,27945,28203,33292,34203,35131,35373,35498,38634,40807,21089,26297,27570,32406,34814,36109,38275,38493,25885,28041,29166,63854,22478,22995,23468,24615,24826,25104,26143,26207,29481,29689,30427,30465,31596,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,32854,32882,33125,35488,37266,19990,21218,27506,27927,31237,31545,32048,63855,36016,21484,22063,22609,23477,23567,23569,24034,25152,25475,25620,26157,26803,27836,28040,28335,28703,28836,29138,29990,30095,30094,30233,31505,31712,31787,32032,32057,34092,34157,34311,35380,36877,36961,37045,37559,38902,39479,20439,23660,26463,28049,31903,32396,35606,36118,36895,23403,24061,25613,33984,36956,39137,29575,23435,24730,26494,28126,35359,35494,36865,38924,21047,63856,28753,30862,37782,34928,37335,20462,21463,22013,22234,22402,22781,23234,23432,23723,23744,24101,24833,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,25101,25163,25480,25628,25910,25976,27193,27530,27700,27929,28465,29159,29417,29560,29703,29874,30246,30561,31168,31319,31466,31929,32143,32172,32353,32670,33065,33585,33936,34010,34282,34966,35504,35728,36664,36930,36995,37228,37526,37561,38539,38567,38568,38614,38656,38920,39318,39635,39706,21460,22654,22809,23408,23487,28113,28506,29087,29729,29881,32901,33789,24033,24455,24490,24642,26092,26642,26991,27219,27529,27957,28147,29667,30462,30636,31565,32020,33059,33308,33600,34036,34147,35426,35524,37255,37662,38918,39348,25100,34899,36848,37477,23815,23847,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,23913,29791,33181,34664,28629,25342,32722,35126,35186,19998,20056,20711,21213,21319,25215,26119,32361,34821,38494,20365,21273,22070,22987,23204,23608,23630,23629,24066,24337,24643,26045,26159,26178,26558,26612,29468,30690,31034,32709,33940,33997,35222,35430,35433,35553,35925,35962,22516,23508,24335,24687,25325,26893,27542,28252,29060,31698,34645,35672,36606,39135,39166,20280,20353,20449,21627,23072,23480,24892,26032,26216,29180,30003,31070,32051,33102,33251,33688,34218,34254,34563,35338,36523,36763,63857,36805,22833,23460,23526,24713,23529,23563,24515,27777,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,63858,28145,28683,29978,33455,35574,20160,21313,63859,38617,27663,20126,20420,20818,21854,23077,23784,25105,29273,33469,33706,34558,34905,35357,38463,38597,39187,40201,40285,22538,23731,23997,24132,24801,24853,25569,27138,28197,37122,37716,38990,39952,40823,23433,23736,25353,26191,26696,30524,38593,38797,38996,39839,26017,35585,36555,38332,21813,23721,24022,24245,26263,30284,33780,38343,22739,25276,29390,40232,20208,22830,24591,26171,27523,31207,40230,21395,21696,22467,23830,24859,26326,28079,30861,33406,38552,38724,21380,25212,25494,28082,32266,33099,38989,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,27387,32588,40367,40474,20063,20539,20918,22812,24825,25590,26928,29242,32822,63860,37326,24369,63861,63862,32004,33509,33903,33979,34277,36493,63863,20335,63864,63865,22756,23363,24665,25562,25880,25965,26264,63866,26954,27171,27915,28673,29036,30162,30221,31155,31344,63867,32650,63868,35140,63869,35731,37312,38525,63870,39178,22276,24481,26044,28417,30208,31142,35486,39341,39770,40812,20740,25014,25233,27277,33222,20547,22576,24422,28937,35328,35578,23420,34326,20474,20796,22196,22852,25513,28153,23978,26989,20870,20104,20313,63871,63872,63873,22914,63874,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,63875,27487,27741,63876,29877,30998,63877,33287,33349,33593,36671,36701,63878,39192,63879,63880,63881,20134,63882,22495,24441,26131,63883,63884,30123,32377,35695,63885,36870,39515,22181,22567,23032,23071,23476,63886,24310,63887,63888,25424,25403,63889,26941,27783,27839,28046,28051,28149,28436,63890,28895,28982,29017,63891,29123,29141,63892,30799,30831,63893,31605,32227,63894,32303,63895,34893,36575,63896,63897,63898,37467,63899,40182,63900,63901,63902,24709,28037,63903,29105,63904,63905,38321,21421,63906,63907,63908,26579,63909,28814,28976,29744,33398,33490,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,63910,38331,39653,40573,26308,63911,29121,33865,63912,63913,22603,63914,63915,23992,24433,63916,26144,26254,27001,27054,27704,27891,28214,28481,28634,28699,28719,29008,29151,29552,63917,29787,63918,29908,30408,31310,32403,63919,63920,33521,35424,36814,63921,37704,63922,38681,63923,63924,20034,20522,63925,21000,21473,26355,27757,28618,29450,30591,31330,33454,34269,34306,63926,35028,35427,35709,35947,63927,37555,63928,38675,38928,20116,20237,20425,20658,21320,21566,21555,21978,22626,22714,22887,23067,23524,24735,63929,25034,25942,26111,26212,26791,27738,28595,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,28879,29100,29522,31613,34568,35492,39986,40711,23627,27779,29508,29577,37434,28331,29797,30239,31337,32277,34314,20800,22725,25793,29934,29973,30320,32705,37013,38605,39252,28198,29926,31401,31402,33253,34521,34680,35355,23113,23436,23451,26785,26880,28003,29609,29715,29740,30871,32233,32747,33048,33109,33694,35916,38446,38929,26352,24448,26106,26505,27754,29579,20525,23043,27498,30702,22806,23916,24013,29477,30031,63930,63931,20709,20985,22575,22829,22934,23002,23525,63932,63933,23970,25303,25622,25747,25854,63934,26332,63935,27208,63936,29183,29796,63937,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,31368,31407,32327,32350,32768,33136,63938,34799,35201,35616,36953,63939,36992,39250,24958,27442,28020,32287,35109,36785,20433,20653,20887,21191,22471,22665,23481,24248,24898,27029,28044,28263,28342,29076,29794,29992,29996,32883,33592,33993,36362,37780,37854,63940,20110,20305,20598,20778,21448,21451,21491,23431,23507,23588,24858,24962,26100,29275,29591,29760,30402,31056,31121,31161,32006,32701,33419,34261,34398,36802,36935,37109,37354,38533,38632,38633,21206,24423,26093,26161,26671,29020,31286,37057,38922,20113,63941,27218,27550,28560,29065,32792,33464,34131,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,36939,38549,38642,38907,34074,39729,20112,29066,38596,20803,21407,21729,22291,22290,22435,23195,23236,23491,24616,24895,25588,27781,27961,28274,28304,29232,29503,29783,33489,34945,36677,36960,63942,38498,39000,40219,26376,36234,37470,20301,20553,20702,21361,22285,22996,23041,23561,24944,26256,28205,29234,29771,32239,32963,33806,33894,34111,34655,34907,35096,35586,36949,38859,39759,20083,20369,20754,20842,63943,21807,21929,23418,23461,24188,24189,24254,24736,24799,24840,24841,25540,25912,26377,63944,26580,26586,63945,26977,26978,27833,27943,63946,28216,63947,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,28641,29494,29495,63948,29788,30001,63949,30290,63950,63951,32173,33278,33848,35029,35480,35547,35565,36400,36418,36938,36926,36986,37193,37321,37742,63952,63953,22537,63954,27603,32905,32946,63955,63956,20801,22891,23609,63957,63958,28516,29607,32996,36103,63959,37399,38287,63960,63961,63962,63963,32895,25102,28700,32104,34701,63964,22432,24681,24903,27575,35518,37504,38577,20057,21535,28139,34093,38512,38899,39150,25558,27875,37009,20957,25033,33210,40441,20381,20506,20736,23452,24847,25087,25836,26885,27589,30097,30691,32681,33380,34191,34811,34915,35516,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,35696,37291,20108,20197,20234,63965,63966,22839,23016,63967,24050,24347,24411,24609,63968,63969,63970,63971,29246,29669,63972,30064,30157,63973,31227,63974,32780,32819,32900,33505,33617,63975,63976,36029,36019,36999,63977,63978,39156,39180,63979,63980,28727,30410,32714,32716,32764,35610,20154,20161,20995,21360,63981,21693,22240,23035,23493,24341,24525,28270,63982,63983,32106,33589,63984,34451,35469,63985,38765,38775,63986,63987,19968,20314,20350,22777,26085,28322,36920,37808,39353,20219,22764,22922,23001,24641,63988,63989,31252,63990,33615,36035,20837,21316,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,63991,63992,63993,20173,21097,23381,33471,20180,21050,21672,22985,23039,23376,23383,23388,24675,24904,28363,28825,29038,29574,29943,30133,30913,32043,32773,33258,33576,34071,34249,35566,36039,38604,20316,21242,22204,26027,26152,28796,28856,29237,32189,33421,37196,38592,40306,23409,26855,27544,28538,30430,23697,26283,28507,31668,31786,34870,38620,19976,20183,21280,22580,22715,22767,22892,23559,24115,24196,24373,25484,26290,26454,27167,27299,27404,28479,29254,63994,29520,29835,31456,31911,33144,33247,33255,33674,33900,34083,34196,34255,35037,36115,37292,38263,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,38556,20877,21705,22312,23472,25165,26448,26685,26771,28221,28371,28797,32289,35009,36001,36617,40779,40782,29229,31631,35533,37658,20295,20302,20786,21632,22992,24213,25269,26485,26990,27159,27822,28186,29401,29482,30141,31672,32053,33511,33785,33879,34295,35419,36015,36487,36889,37048,38606,40799,21219,21514,23265,23490,25688,25973,28404,29380,63995,30340,31309,31515,31821,32318,32735,33659,35627,36042,36196,36321,36447,36842,36857,36969,37841,20291,20346,20659,20840,20856,21069,21098,22625,22652,22880,23560,23637,24283,24731,25136,26643,27583,27656,28593,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,29006,29728,30000,30008,30033,30322,31564,31627,31661,31686,32399,35438,36670,36681,37439,37523,37666,37931,38651,39002,39019,39198,20999,25130,25240,27993,30308,31434,31680,32118,21344,23742,24215,28472,28857,31896,38673,39822,40670,25509,25722,34678,19969,20117,20141,20572,20597,21576,22979,23450,24128,24237,24311,24449,24773,25402,25919,25972,26060,26230,26232,26622,26984,27273,27491,27712,28096,28136,28191,28254,28702,28833,29582,29693,30010,30555,30855,31118,31243,31357,31934,32142,33351,35330,35562,35998,37165,37194,37336,37478,37580,37664,38662,38742,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,38748,38914,40718,21046,21137,21884,22564,24093,24351,24716,25552,26799,28639,31085,31532,33229,34234,35069,35576,36420,37261,38500,38555,38717,38988,40778,20430,20806,20939,21161,22066,24340,24427,25514,25805,26089,26177,26362,26361,26397,26781,26839,27133,28437,28526,29031,29157,29226,29866,30522,31062,31066,31199,31264,31381,31895,31967,32068,32368,32903,34299,34468,35412,35519,36249,36481,36896,36973,37347,38459,38613,40165,26063,31751,36275,37827,23384,23562,21330,25305,29469,20519,23447,24478,24752,24939,26837,28121,29742,31278,32066,32156,32305,33131,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,36394,36405,37758,37912,20304,22352,24038,24231,25387,32618,20027,20303,20367,20570,23005,32964,21610,21608,22014,22863,23449,24030,24282,26205,26417,26609,26666,27880,27954,28234,28557,28855,29664,30087,31820,32002,32044,32162,33311,34523,35387,35461,36208,36490,36659,36913,37198,37202,37956,39376,31481,31909,20426,20737,20934,22472,23535,23803,26201,27197,27994,28310,28652,28940,30063,31459,34850,36897,36981,38603,39423,33537,20013,20210,34886,37325,21373,27355,26987,27713,33914,22686,24974,26366,25327,28893,29969,30151,32338,33976,35657,36104,20043,21482,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,21675,22320,22336,24535,25345,25351,25711,25903,26088,26234,26525,26547,27490,27744,27802,28460,30693,30757,31049,31063,32025,32930,33026,33267,33437,33463,34584,35468,63996,36100,36286,36978,30452,31257,31287,32340,32887,21767,21972,22645,25391,25634,26185,26187,26733,27035,27524,27941,28337,29645,29800,29857,30043,30137,30433,30494,30603,31206,32265,32285,33275,34095,34967,35386,36049,36587,36784,36914,37805,38499,38515,38663,20356,21489,23018,23241,24089,26702,29894,30142,31209,31378,33187,34541,36074,36300,36845,26015,26389,63997,22519,28503,32221,36655,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,37878,38598,24501,25074,28548,19988,20376,20511,21449,21983,23919,24046,27425,27492,30923,31642,63998,36425,36554,36974,25417,25662,30528,31364,37679,38015,40810,25776,28591,29158,29864,29914,31428,31762,32386,31922,32408,35738,36106,38013,39184,39244,21049,23519,25830,26413,32046,20717,21443,22649,24920,24921,25082,26028,31449,35730,35734,20489,20513,21109,21809,23100,24288,24432,24884,25950,26124,26166,26274,27085,28356,28466,29462,30241,31379,33081,33369,33750,33980,20661,22512,23488,23528,24425,25505,30758,32181,33756,34081,37319,37365,20874,26613,31574,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,36012,20932,22971,24765,34389,20508,63999,21076,23610,24957,25114,25299,25842,26021,28364,30240,33034,36448,38495,38587,20191,21315,21912,22825,24029,25797,27849,28154,29588,31359,33307,34214,36068,36368,36983,37351,38369,38433,38854,20984,21746,21894,24505,25764,28552,32180,36639,36685,37941,20681,23574,27838,28155,29979,30651,31805,31844,35449,35522,22558,22974,24086,25463,29266,30090,30571,35548,36028,36626,24307,26228,28152,32893,33729,35531,38737,39894,64000,21059,26367,28053,28399,32224,35558,36910,36958,39636,21021,21119,21736,24980,25220,25307,26786,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,26898,26970,27189,28818,28966,30813,30977,30990,31186,31245,32918,33400,33493,33609,34121,35970,36229,37218,37259,37294,20419,22225,29165,30679,34560,35320,23544,24534,26449,37032,21474,22618,23541,24740,24961,25696,32317,32880,34085,37507,25774,20652,23828,26368,22684,25277,25512,26894,27000,27166,28267,30394,31179,33467,33833,35535,36264,36861,37138,37195,37276,37648,37656,37786,38619,39478,39949,19985,30044,31069,31482,31569,31689,32302,33988,36441,36468,36600,36880,26149,26943,29763,20986,26414,40668,20805,24544,27798,34802,34909,34935,24756,33205,33795,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,36101,21462,21561,22068,23094,23601,28810,32736,32858,33030,33261,36259,37257,39519,40434,20596,20164,21408,24827,28204,23652,20360,20516,21988,23769,24159,24677,26772,27835,28100,29118,30164,30196,30305,31258,31305,32199,32251,32622,33268,34473,36636,38601,39347,40786,21063,21189,39149,35242,19971,26578,28422,20405,23522,26517,27784,28024,29723,30759,37341,37756,34756,31204,31281,24555,20182,21668,21822,22702,22949,24816,25171,25302,26422,26965,33333,38464,39345,39389,20524,21331,21828,22396,64001,25176,64002,25826,26219,26589,28609,28655,29730,29752,35351,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,37944,21585,22022,22374,24392,24986,27470,28760,28845,32187,35477,22890,33067,25506,30472,32829,36010,22612,25645,27067,23445,24081,28271,64003,34153,20812,21488,22826,24608,24907,27526,27760,27888,31518,32974,33492,36294,37040,39089,64004,25799,28580,25745,25860,20814,21520,22303,35342,24927,26742,64005,30171,31570,32113,36890,22534,27084,33151,35114,36864,38969,20600,22871,22956,25237,36879,39722,24925,29305,38358,22369,23110,24052,25226,25773,25850,26487,27874,27966,29228,29750,30772,32631,33453,36315,38935,21028,22338,26495,29256,29923,36009,36774,37393,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,38442,20843,21485,25420,20329,21764,24726,25943,27803,28031,29260,29437,31255,35207,35997,24429,28558,28921,33192,24846,20415,20559,25153,29255,31687,32232,32745,36941,38829,39449,36022,22378,24179,26544,33805,35413,21536,23318,24163,24290,24330,25987,32954,34109,38281,38491,20296,21253,21261,21263,21638,21754,22275,24067,24598,25243,25265,25429,64006,27873,28006,30129,30770,32990,33071,33502,33889,33970,34957,35090,36875,37610,39165,39825,24133,26292,26333,28689,29190,64007,20469,21117,24426,24915,26451,27161,28418,29922,31080,34920,35961,39111,39108,39491,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,21697,31263,26963,35575,35914,39080,39342,24444,25259,30130,30382,34987,36991,38466,21305,24380,24517,27852,29644,30050,30091,31558,33534,39325,20047,36924,19979,20309,21414,22799,24264,26160,27827,29781,33655,34662,36032,36944,38686,39957,22737,23416,34384,35604,40372,23506,24680,24717,26097,27735,28450,28579,28698,32597,32752,38289,38290,38480,38867,21106,36676,20989,21547,21688,21859,21898,27323,28085,32216,33382,37532,38519,40569,21512,21704,30418,34532,38308,38356,38492,20130,20233,23022,23270,24055,24658,25239,26477,26689,27782,28207,32568,32923,33322,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,64008,64009,38917,20133,20565,21683,22419,22874,23401,23475,25032,26999,28023,28707,34809,35299,35442,35559,36994,39405,39608,21182,26680,20502,24184,26447,33607,34892,20139,21521,22190,29670,37141,38911,39177,39255,39321,22099,22687,34395,35377,25010,27382,29563,36562,27463,38570,39511,22869,29184,36203,38761,20436,23796,24358,25080,26203,27883,28843,29572,29625,29694,30505,30541,32067,32098,32291,33335,34898,64010,36066,37449,39023,23377,31348,34880,38913,23244,20448,21332,22846,23805,25406,28025,29433,33029,33031,33698,37583,38960,20136,20804,21009,22411,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,24418,27842,28366,28677,28752,28847,29074,29673,29801,33610,34722,34913,36872,37026,37795,39336,20846,24407,24800,24935,26291,34137,36426,37295,38795,20046,20114,21628,22741,22778,22909,23733,24359,25142,25160,26122,26215,27627,28009,28111,28246,28408,28564,28640,28649,28765,29392,29733,29786,29920,30355,31068,31946,32286,32993,33446,33899,33983,34382,34399,34676,35703,35946,37804,38912,39013,24785,25110,37239,23130,26127,28151,28222,29759,39746,24573,24794,31503,21700,24344,27742,27859,27946,28888,32005,34425,35340,40251,21270,21644,23301,27194,28779,30069,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,31117,31166,33457,33775,35441,35649,36008,38772,64011,25844,25899,30906,30907,31339,20024,21914,22864,23462,24187,24739,25563,27489,26213,26707,28185,29029,29872,32008,36996,39529,39973,27963,28369,29502,35905,38346,20976,24140,24488,24653,24822,24880,24908,26179,26180,27045,27841,28255,28361,28514,29004,29852,30343,31681,31783,33618,34647,36945,38541,40643,21295,22238,24315,24458,24674,24724,25079,26214,26371,27292,28142,28590,28784,29546,32362,33214,33588,34516,35496,36036,21123,29554,23446,27243,37892,21742,22150,23389,25928,25989,26313,26783,28045,28102,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,29243,32948,37237,39501,20399,20505,21402,21518,21564,21897,21957,24127,24460,26429,29030,29661,36869,21211,21235,22628,22734,28932,29071,29179,34224,35347,26248,34216,21927,26244,29002,33841,21321,21913,27585,24409,24509,25582,26249,28999,35569,36637,40638,20241,25658,28875,30054,34407,24676,35662,40440,20807,20982,21256,27958,33016,40657,26133,27427,28824,30165,21507,23673,32007,35350,27424,27453,27462,21560,24688,27965,32725,33288,20694,20958,21916,22123,22221,23020,23305,24076,24985,24984,25137,26206,26342,29081,29113,29114,29351,31143,31232,32690,35440,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],
-  "gb18030":[19970,19972,19973,19974,19983,19986,19991,19999,20000,20001,20003,20006,20009,20014,20015,20017,20019,20021,20023,20028,20032,20033,20034,20036,20038,20042,20049,20053,20055,20058,20059,20066,20067,20068,20069,20071,20072,20074,20075,20076,20077,20078,20079,20082,20084,20085,20086,20087,20088,20089,20090,20091,20092,20093,20095,20096,20097,20098,20099,20100,20101,20103,20106,20112,20118,20119,20121,20124,20125,20126,20131,20138,20143,20144,20145,20148,20150,20151,20152,20153,20156,20157,20158,20168,20172,20175,20176,20178,20186,20187,20188,20192,20194,20198,20199,20201,20205,20206,20207,20209,20212,20216,20217,20218,20220,20222,20224,20226,20227,20228,20229,20230,20231,20232,20235,20236,20242,20243,20244,20245,20246,20252,20253,20257,20259,20264,20265,20268,20269,20270,20273,20275,20277,20279,20281,20283,20286,20287,20288,20289,20290,20292,20293,20295,20296,20297,20298,20299,20300,20306,20308,20310,20321,20322,20326,20328,20330,20331,20333,20334,20337,20338,20341,20343,20344,20345,20346,20349,20352,20353,20354,20357,20358,20359,20362,20364,20366,20368,20370,20371,20373,20374,20376,20377,20378,20380,20382,20383,20385,20386,20388,20395,20397,20400,20401,20402,20403,20404,20406,20407,20408,20409,20410,20411,20412,20413,20414,20416,20417,20418,20422,20423,20424,20425,20427,20428,20429,20434,20435,20436,20437,20438,20441,20443,20448,20450,20452,20453,20455,20459,20460,20464,20466,20468,20469,20470,20471,20473,20475,20476,20477,20479,20480,20481,20482,20483,20484,20485,20486,20487,20488,20489,20490,20491,20494,20496,20497,20499,20501,20502,20503,20507,20509,20510,20512,20514,20515,20516,20519,20523,20527,20528,20529,20530,20531,20532,20533,20534,20535,20536,20537,20539,20541,20543,20544,20545,20546,20548,20549,20550,20553,20554,20555,20557,20560,20561,20562,20563,20564,20566,20567,20568,20569,20571,20573,20574,20575,20576,20577,20578,20579,20580,20582,20583,20584,20585,20586,20587,20589,20590,20591,20592,20593,20594,20595,20596,20597,20600,20601,20602,20604,20605,20609,20610,20611,20612,20614,20615,20617,20618,20619,20620,20622,20623,20624,20625,20626,20627,20628,20629,20630,20631,20632,20633,20634,20635,20636,20637,20638,20639,20640,20641,20642,20644,20646,20650,20651,20653,20654,20655,20656,20657,20659,20660,20661,20662,20663,20664,20665,20668,20669,20670,20671,20672,20673,20674,20675,20676,20677,20678,20679,20680,20681,20682,20683,20684,20685,20686,20688,20689,20690,20691,20692,20693,20695,20696,20697,20699,20700,20701,20702,20703,20704,20705,20706,20707,20708,20709,20712,20713,20714,20715,20719,20720,20721,20722,20724,20726,20727,20728,20729,20730,20732,20733,20734,20735,20736,20737,20738,20739,20740,20741,20744,20745,20746,20748,20749,20750,20751,20752,20753,20755,20756,20757,20758,20759,20760,20761,20762,20763,20764,20765,20766,20767,20768,20770,20771,20772,20773,20774,20775,20776,20777,20778,20779,20780,20781,20782,20783,20784,20785,20786,20787,20788,20789,20790,20791,20792,20793,20794,20795,20796,20797,20798,20802,20807,20810,20812,20814,20815,20816,20818,20819,20823,20824,20825,20827,20829,20830,20831,20832,20833,20835,20836,20838,20839,20841,20842,20847,20850,20858,20862,20863,20867,20868,20870,20871,20874,20875,20878,20879,20880,20881,20883,20884,20888,20890,20893,20894,20895,20897,20899,20902,20903,20904,20905,20906,20909,20910,20916,20920,20921,20922,20926,20927,20929,20930,20931,20933,20936,20938,20941,20942,20944,20946,20947,20948,20949,20950,20951,20952,20953,20954,20956,20958,20959,20962,20963,20965,20966,20967,20968,20969,20970,20972,20974,20977,20978,20980,20983,20990,20996,20997,21001,21003,21004,21007,21008,21011,21012,21013,21020,21022,21023,21025,21026,21027,21029,21030,21031,21034,21036,21039,21041,21042,21044,21045,21052,21054,21060,21061,21062,21063,21064,21065,21067,21070,21071,21074,21075,21077,21079,21080,21081,21082,21083,21085,21087,21088,21090,21091,21092,21094,21096,21099,21100,21101,21102,21104,21105,21107,21108,21109,21110,21111,21112,21113,21114,21115,21116,21118,21120,21123,21124,21125,21126,21127,21129,21130,21131,21132,21133,21134,21135,21137,21138,21140,21141,21142,21143,21144,21145,21146,21148,21156,21157,21158,21159,21166,21167,21168,21172,21173,21174,21175,21176,21177,21178,21179,21180,21181,21184,21185,21186,21188,21189,21190,21192,21194,21196,21197,21198,21199,21201,21203,21204,21205,21207,21209,21210,21211,21212,21213,21214,21216,21217,21218,21219,21221,21222,21223,21224,21225,21226,21227,21228,21229,21230,21231,21233,21234,21235,21236,21237,21238,21239,21240,21243,21244,21245,21249,21250,21251,21252,21255,21257,21258,21259,21260,21262,21265,21266,21267,21268,21272,21275,21276,21278,21279,21282,21284,21285,21287,21288,21289,21291,21292,21293,21295,21296,21297,21298,21299,21300,21301,21302,21303,21304,21308,21309,21312,21314,21316,21318,21323,21324,21325,21328,21332,21336,21337,21339,21341,21349,21352,21354,21356,21357,21362,21366,21369,21371,21372,21373,21374,21376,21377,21379,21383,21384,21386,21390,21391,21392,21393,21394,21395,21396,21398,21399,21401,21403,21404,21406,21408,21409,21412,21415,21418,21419,21420,21421,21423,21424,21425,21426,21427,21428,21429,21431,21432,21433,21434,21436,21437,21438,21440,21443,21444,21445,21446,21447,21454,21455,21456,21458,21459,21461,21466,21468,21469,21470,21473,21474,21479,21492,21498,21502,21503,21504,21506,21509,21511,21515,21524,21528,21529,21530,21532,21538,21540,21541,21546,21552,21555,21558,21559,21562,21565,21567,21569,21570,21572,21573,21575,21577,21580,21581,21582,21583,21585,21594,21597,21598,21599,21600,21601,21603,21605,21607,21609,21610,21611,21612,21613,21614,21615,21616,21620,21625,21626,21630,21631,21633,21635,21637,21639,21640,21641,21642,21645,21649,21651,21655,21656,21660,21662,21663,21664,21665,21666,21669,21678,21680,21682,21685,21686,21687,21689,21690,21692,21694,21699,21701,21706,21707,21718,21720,21723,21728,21729,21730,21731,21732,21739,21740,21743,21744,21745,21748,21749,21750,21751,21752,21753,21755,21758,21760,21762,21763,21764,21765,21768,21770,21771,21772,21773,21774,21778,21779,21781,21782,21783,21784,21785,21786,21788,21789,21790,21791,21793,21797,21798,21800,21801,21803,21805,21810,21812,21813,21814,21816,21817,21818,21819,21821,21824,21826,21829,21831,21832,21835,21836,21837,21838,21839,21841,21842,21843,21844,21847,21848,21849,21850,21851,21853,21854,21855,21856,21858,21859,21864,21865,21867,21871,21872,21873,21874,21875,21876,21881,21882,21885,21887,21893,21894,21900,21901,21902,21904,21906,21907,21909,21910,21911,21914,21915,21918,21920,21921,21922,21923,21924,21925,21926,21928,21929,21930,21931,21932,21933,21934,21935,21936,21938,21940,21942,21944,21946,21948,21951,21952,21953,21954,21955,21958,21959,21960,21962,21963,21966,21967,21968,21973,21975,21976,21977,21978,21979,21982,21984,21986,21991,21993,21997,21998,22000,22001,22004,22006,22008,22009,22010,22011,22012,22015,22018,22019,22020,22021,22022,22023,22026,22027,22029,22032,22033,22034,22035,22036,22037,22038,22039,22041,22042,22044,22045,22048,22049,22050,22053,22054,22056,22057,22058,22059,22062,22063,22064,22067,22069,22071,22072,22074,22076,22077,22078,22080,22081,22082,22083,22084,22085,22086,22087,22088,22089,22090,22091,22095,22096,22097,22098,22099,22101,22102,22106,22107,22109,22110,22111,22112,22113,22115,22117,22118,22119,22125,22126,22127,22128,22130,22131,22132,22133,22135,22136,22137,22138,22141,22142,22143,22144,22145,22146,22147,22148,22151,22152,22153,22154,22155,22156,22157,22160,22161,22162,22164,22165,22166,22167,22168,22169,22170,22171,22172,22173,22174,22175,22176,22177,22178,22180,22181,22182,22183,22184,22185,22186,22187,22188,22189,22190,22192,22193,22194,22195,22196,22197,22198,22200,22201,22202,22203,22205,22206,22207,22208,22209,22210,22211,22212,22213,22214,22215,22216,22217,22219,22220,22221,22222,22223,22224,22225,22226,22227,22229,22230,22232,22233,22236,22243,22245,22246,22247,22248,22249,22250,22252,22254,22255,22258,22259,22262,22263,22264,22267,22268,22272,22273,22274,22277,22279,22283,22284,22285,22286,22287,22288,22289,22290,22291,22292,22293,22294,22295,22296,22297,22298,22299,22301,22302,22304,22305,22306,22308,22309,22310,22311,22315,22321,22322,22324,22325,22326,22327,22328,22332,22333,22335,22337,22339,22340,22341,22342,22344,22345,22347,22354,22355,22356,22357,22358,22360,22361,22370,22371,22373,22375,22380,22382,22384,22385,22386,22388,22389,22392,22393,22394,22397,22398,22399,22400,22401,22407,22408,22409,22410,22413,22414,22415,22416,22417,22420,22421,22422,22423,22424,22425,22426,22428,22429,22430,22431,22437,22440,22442,22444,22447,22448,22449,22451,22453,22454,22455,22457,22458,22459,22460,22461,22462,22463,22464,22465,22468,22469,22470,22471,22472,22473,22474,22476,22477,22480,22481,22483,22486,22487,22491,22492,22494,22497,22498,22499,22501,22502,22503,22504,22505,22506,22507,22508,22510,22512,22513,22514,22515,22517,22518,22519,22523,22524,22526,22527,22529,22531,22532,22533,22536,22537,22538,22540,22542,22543,22544,22546,22547,22548,22550,22551,22552,22554,22555,22556,22557,22559,22562,22563,22565,22566,22567,22568,22569,22571,22572,22573,22574,22575,22577,22578,22579,22580,22582,22583,22584,22585,22586,22587,22588,22589,22590,22591,22592,22593,22594,22595,22597,22598,22599,22600,22601,22602,22603,22606,22607,22608,22610,22611,22613,22614,22615,22617,22618,22619,22620,22621,22623,22624,22625,22626,22627,22628,22630,22631,22632,22633,22634,22637,22638,22639,22640,22641,22642,22643,22644,22645,22646,22647,22648,22649,22650,22651,22652,22653,22655,22658,22660,22662,22663,22664,22666,22667,22668,22669,22670,22671,22672,22673,22676,22677,22678,22679,22680,22683,22684,22685,22688,22689,22690,22691,22692,22693,22694,22695,22698,22699,22700,22701,22702,22703,22704,22705,22706,22707,22708,22709,22710,22711,22712,22713,22714,22715,22717,22718,22719,22720,22722,22723,22724,22726,22727,22728,22729,22730,22731,22732,22733,22734,22735,22736,22738,22739,22740,22742,22743,22744,22745,22746,22747,22748,22749,22750,22751,22752,22753,22754,22755,22757,22758,22759,22760,22761,22762,22765,22767,22769,22770,22772,22773,22775,22776,22778,22779,22780,22781,22782,22783,22784,22785,22787,22789,22790,22792,22793,22794,22795,22796,22798,22800,22801,22802,22803,22807,22808,22811,22813,22814,22816,22817,22818,22819,22822,22824,22828,22832,22834,22835,22837,22838,22843,22845,22846,22847,22848,22851,22853,22854,22858,22860,22861,22864,22866,22867,22873,22875,22876,22877,22878,22879,22881,22883,22884,22886,22887,22888,22889,22890,22891,22892,22893,22894,22895,22896,22897,22898,22901,22903,22906,22907,22908,22910,22911,22912,22917,22921,22923,22924,22926,22927,22928,22929,22932,22933,22936,22938,22939,22940,22941,22943,22944,22945,22946,22950,22951,22956,22957,22960,22961,22963,22964,22965,22966,22967,22968,22970,22972,22973,22975,22976,22977,22978,22979,22980,22981,22983,22984,22985,22988,22989,22990,22991,22997,22998,23001,23003,23006,23007,23008,23009,23010,23012,23014,23015,23017,23018,23019,23021,23022,23023,23024,23025,23026,23027,23028,23029,23030,23031,23032,23034,23036,23037,23038,23040,23042,23050,23051,23053,23054,23055,23056,23058,23060,23061,23062,23063,23065,23066,23067,23069,23070,23073,23074,23076,23078,23079,23080,23082,23083,23084,23085,23086,23087,23088,23091,23093,23095,23096,23097,23098,23099,23101,23102,23103,23105,23106,23107,23108,23109,23111,23112,23115,23116,23117,23118,23119,23120,23121,23122,23123,23124,23126,23127,23128,23129,23131,23132,23133,23134,23135,23136,23137,23139,23140,23141,23142,23144,23145,23147,23148,23149,23150,23151,23152,23153,23154,23155,23160,23161,23163,23164,23165,23166,23168,23169,23170,23171,23172,23173,23174,23175,23176,23177,23178,23179,23180,23181,23182,23183,23184,23185,23187,23188,23189,23190,23191,23192,23193,23196,23197,23198,23199,23200,23201,23202,23203,23204,23205,23206,23207,23208,23209,23211,23212,23213,23214,23215,23216,23217,23220,23222,23223,23225,23226,23227,23228,23229,23231,23232,23235,23236,23237,23238,23239,23240,23242,23243,23245,23246,23247,23248,23249,23251,23253,23255,23257,23258,23259,23261,23262,23263,23266,23268,23269,23271,23272,23274,23276,23277,23278,23279,23280,23282,23283,23284,23285,23286,23287,23288,23289,23290,23291,23292,23293,23294,23295,23296,23297,23298,23299,23300,23301,23302,23303,23304,23306,23307,23308,23309,23310,23311,23312,23313,23314,23315,23316,23317,23320,23321,23322,23323,23324,23325,23326,23327,23328,23329,23330,23331,23332,23333,23334,23335,23336,23337,23338,23339,23340,23341,23342,23343,23344,23345,23347,23349,23350,23352,23353,23354,23355,23356,23357,23358,23359,23361,23362,23363,23364,23365,23366,23367,23368,23369,23370,23371,23372,23373,23374,23375,23378,23382,23390,23392,23393,23399,23400,23403,23405,23406,23407,23410,23412,23414,23415,23416,23417,23419,23420,23422,23423,23426,23430,23434,23437,23438,23440,23441,23442,23444,23446,23455,23463,23464,23465,23468,23469,23470,23471,23473,23474,23479,23482,23483,23484,23488,23489,23491,23496,23497,23498,23499,23501,23502,23503,23505,23508,23509,23510,23511,23512,23513,23514,23515,23516,23520,23522,23523,23526,23527,23529,23530,23531,23532,23533,23535,23537,23538,23539,23540,23541,23542,23543,23549,23550,23552,23554,23555,23557,23559,23560,23563,23564,23565,23566,23568,23570,23571,23575,23577,23579,23582,23583,23584,23585,23587,23590,23592,23593,23594,23595,23597,23598,23599,23600,23602,23603,23605,23606,23607,23619,23620,23622,23623,23628,23629,23634,23635,23636,23638,23639,23640,23642,23643,23644,23645,23647,23650,23652,23655,23656,23657,23658,23659,23660,23661,23664,23666,23667,23668,23669,23670,23671,23672,23675,23676,23677,23678,23680,23683,23684,23685,23686,23687,23689,23690,23691,23694,23695,23698,23699,23701,23709,23710,23711,23712,23713,23716,23717,23718,23719,23720,23722,23726,23727,23728,23730,23732,23734,23737,23738,23739,23740,23742,23744,23746,23747,23749,23750,23751,23752,23753,23754,23756,23757,23758,23759,23760,23761,23763,23764,23765,23766,23767,23768,23770,23771,23772,23773,23774,23775,23776,23778,23779,23783,23785,23787,23788,23790,23791,23793,23794,23795,23796,23797,23798,23799,23800,23801,23802,23804,23805,23806,23807,23808,23809,23812,23813,23816,23817,23818,23819,23820,23821,23823,23824,23825,23826,23827,23829,23831,23832,23833,23834,23836,23837,23839,23840,23841,23842,23843,23845,23848,23850,23851,23852,23855,23856,23857,23858,23859,23861,23862,23863,23864,23865,23866,23867,23868,23871,23872,23873,23874,23875,23876,23877,23878,23880,23881,23885,23886,23887,23888,23889,23890,23891,23892,23893,23894,23895,23897,23898,23900,23902,23903,23904,23905,23906,23907,23908,23909,23910,23911,23912,23914,23917,23918,23920,23921,23922,23923,23925,23926,23927,23928,23929,23930,23931,23932,23933,23934,23935,23936,23937,23939,23940,23941,23942,23943,23944,23945,23946,23947,23948,23949,23950,23951,23952,23953,23954,23955,23956,23957,23958,23959,23960,23962,23963,23964,23966,23967,23968,23969,23970,23971,23972,23973,23974,23975,23976,23977,23978,23979,23980,23981,23982,23983,23984,23985,23986,23987,23988,23989,23990,23992,23993,23994,23995,23996,23997,23998,23999,24000,24001,24002,24003,24004,24006,24007,24008,24009,24010,24011,24012,24014,24015,24016,24017,24018,24019,24020,24021,24022,24023,24024,24025,24026,24028,24031,24032,24035,24036,24042,24044,24045,24048,24053,24054,24056,24057,24058,24059,24060,24063,24064,24068,24071,24073,24074,24075,24077,24078,24082,24083,24087,24094,24095,24096,24097,24098,24099,24100,24101,24104,24105,24106,24107,24108,24111,24112,24114,24115,24116,24117,24118,24121,24122,24126,24127,24128,24129,24131,24134,24135,24136,24137,24138,24139,24141,24142,24143,24144,24145,24146,24147,24150,24151,24152,24153,24154,24156,24157,24159,24160,24163,24164,24165,24166,24167,24168,24169,24170,24171,24172,24173,24174,24175,24176,24177,24181,24183,24185,24190,24193,24194,24195,24197,24200,24201,24204,24205,24206,24210,24216,24219,24221,24225,24226,24227,24228,24232,24233,24234,24235,24236,24238,24239,24240,24241,24242,24244,24250,24251,24252,24253,24255,24256,24257,24258,24259,24260,24261,24262,24263,24264,24267,24268,24269,24270,24271,24272,24276,24277,24279,24280,24281,24282,24284,24285,24286,24287,24288,24289,24290,24291,24292,24293,24294,24295,24297,24299,24300,24301,24302,24303,24304,24305,24306,24307,24309,24312,24313,24315,24316,24317,24325,24326,24327,24329,24332,24333,24334,24336,24338,24340,24342,24345,24346,24348,24349,24350,24353,24354,24355,24356,24360,24363,24364,24366,24368,24370,24371,24372,24373,24374,24375,24376,24379,24381,24382,24383,24385,24386,24387,24388,24389,24390,24391,24392,24393,24394,24395,24396,24397,24398,24399,24401,24404,24409,24410,24411,24412,24414,24415,24416,24419,24421,24423,24424,24427,24430,24431,24434,24436,24437,24438,24440,24442,24445,24446,24447,24451,24454,24461,24462,24463,24465,24467,24468,24470,24474,24475,24477,24478,24479,24480,24482,24483,24484,24485,24486,24487,24489,24491,24492,24495,24496,24497,24498,24499,24500,24502,24504,24505,24506,24507,24510,24511,24512,24513,24514,24519,24520,24522,24523,24526,24531,24532,24533,24538,24539,24540,24542,24543,24546,24547,24549,24550,24552,24553,24556,24559,24560,24562,24563,24564,24566,24567,24569,24570,24572,24583,24584,24585,24587,24588,24592,24593,24595,24599,24600,24602,24606,24607,24610,24611,24612,24620,24621,24622,24624,24625,24626,24627,24628,24630,24631,24632,24633,24634,24637,24638,24640,24644,24645,24646,24647,24648,24649,24650,24652,24654,24655,24657,24659,24660,24662,24663,24664,24667,24668,24670,24671,24672,24673,24677,24678,24686,24689,24690,24692,24693,24695,24702,24704,24705,24706,24709,24710,24711,24712,24714,24715,24718,24719,24720,24721,24723,24725,24727,24728,24729,24732,24734,24737,24738,24740,24741,24743,24745,24746,24750,24752,24755,24757,24758,24759,24761,24762,24765,24766,24767,24768,24769,24770,24771,24772,24775,24776,24777,24780,24781,24782,24783,24784,24786,24787,24788,24790,24791,24793,24795,24798,24801,24802,24803,24804,24805,24810,24817,24818,24821,24823,24824,24827,24828,24829,24830,24831,24834,24835,24836,24837,24839,24842,24843,24844,24848,24849,24850,24851,24852,24854,24855,24856,24857,24859,24860,24861,24862,24865,24866,24869,24872,24873,24874,24876,24877,24878,24879,24880,24881,24882,24883,24884,24885,24886,24887,24888,24889,24890,24891,24892,24893,24894,24896,24897,24898,24899,24900,24901,24902,24903,24905,24907,24909,24911,24912,24914,24915,24916,24918,24919,24920,24921,24922,24923,24924,24926,24927,24928,24929,24931,24932,24933,24934,24937,24938,24939,24940,24941,24942,24943,24945,24946,24947,24948,24950,24952,24953,24954,24955,24956,24957,24958,24959,24960,24961,24962,24963,24964,24965,24966,24967,24968,24969,24970,24972,24973,24975,24976,24977,24978,24979,24981,24982,24983,24984,24985,24986,24987,24988,24990,24991,24992,24993,24994,24995,24996,24997,24998,25002,25003,25005,25006,25007,25008,25009,25010,25011,25012,25013,25014,25016,25017,25018,25019,25020,25021,25023,25024,25025,25027,25028,25029,25030,25031,25033,25036,25037,25038,25039,25040,25043,25045,25046,25047,25048,25049,25050,25051,25052,25053,25054,25055,25056,25057,25058,25059,25060,25061,25063,25064,25065,25066,25067,25068,25069,25070,25071,25072,25073,25074,25075,25076,25078,25079,25080,25081,25082,25083,25084,25085,25086,25088,25089,25090,25091,25092,25093,25095,25097,25107,25108,25113,25116,25117,25118,25120,25123,25126,25127,25128,25129,25131,25133,25135,25136,25137,25138,25141,25142,25144,25145,25146,25147,25148,25154,25156,25157,25158,25162,25167,25168,25173,25174,25175,25177,25178,25180,25181,25182,25183,25184,25185,25186,25188,25189,25192,25201,25202,25204,25205,25207,25208,25210,25211,25213,25217,25218,25219,25221,25222,25223,25224,25227,25228,25229,25230,25231,25232,25236,25241,25244,25245,25246,25251,25254,25255,25257,25258,25261,25262,25263,25264,25266,25267,25268,25270,25271,25272,25274,25278,25280,25281,25283,25291,25295,25297,25301,25309,25310,25312,25313,25316,25322,25323,25328,25330,25333,25336,25337,25338,25339,25344,25347,25348,25349,25350,25354,25355,25356,25357,25359,25360,25362,25363,25364,25365,25367,25368,25369,25372,25382,25383,25385,25388,25389,25390,25392,25393,25395,25396,25397,25398,25399,25400,25403,25404,25406,25407,25408,25409,25412,25415,25416,25418,25425,25426,25427,25428,25430,25431,25432,25433,25434,25435,25436,25437,25440,25444,25445,25446,25448,25450,25451,25452,25455,25456,25458,25459,25460,25461,25464,25465,25468,25469,25470,25471,25473,25475,25476,25477,25478,25483,25485,25489,25491,25492,25493,25495,25497,25498,25499,25500,25501,25502,25503,25505,25508,25510,25515,25519,25521,25522,25525,25526,25529,25531,25533,25535,25536,25537,25538,25539,25541,25543,25544,25546,25547,25548,25553,25555,25556,25557,25559,25560,25561,25562,25563,25564,25565,25567,25570,25572,25573,25574,25575,25576,25579,25580,25582,25583,25584,25585,25587,25589,25591,25593,25594,25595,25596,25598,25603,25604,25606,25607,25608,25609,25610,25613,25614,25617,25618,25621,25622,25623,25624,25625,25626,25629,25631,25634,25635,25636,25637,25639,25640,25641,25643,25646,25647,25648,25649,25650,25651,25653,25654,25655,25656,25657,25659,25660,25662,25664,25666,25667,25673,25675,25676,25677,25678,25679,25680,25681,25683,25685,25686,25687,25689,25690,25691,25692,25693,25695,25696,25697,25698,25699,25700,25701,25702,25704,25706,25707,25708,25710,25711,25712,25713,25714,25715,25716,25717,25718,25719,25723,25724,25725,25726,25727,25728,25729,25731,25734,25736,25737,25738,25739,25740,25741,25742,25743,25744,25747,25748,25751,25752,25754,25755,25756,25757,25759,25760,25761,25762,25763,25765,25766,25767,25768,25770,25771,25775,25777,25778,25779,25780,25782,25785,25787,25789,25790,25791,25793,25795,25796,25798,25799,25800,25801,25802,25803,25804,25807,25809,25811,25812,25813,25814,25817,25818,25819,25820,25821,25823,25824,25825,25827,25829,25831,25832,25833,25834,25835,25836,25837,25838,25839,25840,25841,25842,25843,25844,25845,25846,25847,25848,25849,25850,25851,25852,25853,25854,25855,25857,25858,25859,25860,25861,25862,25863,25864,25866,25867,25868,25869,25870,25871,25872,25873,25875,25876,25877,25878,25879,25881,25882,25883,25884,25885,25886,25887,25888,25889,25890,25891,25892,25894,25895,25896,25897,25898,25900,25901,25904,25905,25906,25907,25911,25914,25916,25917,25920,25921,25922,25923,25924,25926,25927,25930,25931,25933,25934,25936,25938,25939,25940,25943,25944,25946,25948,25951,25952,25953,25956,25957,25959,25960,25961,25962,25965,25966,25967,25969,25971,25973,25974,25976,25977,25978,25979,25980,25981,25982,25983,25984,25985,25986,25987,25988,25989,25990,25992,25993,25994,25997,25998,25999,26002,26004,26005,26006,26008,26010,26013,26014,26016,26018,26019,26022,26024,26026,26028,26030,26033,26034,26035,26036,26037,26038,26039,26040,26042,26043,26046,26047,26048,26050,26055,26056,26057,26058,26061,26064,26065,26067,26068,26069,26072,26073,26074,26075,26076,26077,26078,26079,26081,26083,26084,26090,26091,26098,26099,26100,26101,26104,26105,26107,26108,26109,26110,26111,26113,26116,26117,26119,26120,26121,26123,26125,26128,26129,26130,26134,26135,26136,26138,26139,26140,26142,26145,26146,26147,26148,26150,26153,26154,26155,26156,26158,26160,26162,26163,26167,26168,26169,26170,26171,26173,26175,26176,26178,26180,26181,26182,26183,26184,26185,26186,26189,26190,26192,26193,26200,26201,26203,26204,26205,26206,26208,26210,26211,26213,26215,26217,26218,26219,26220,26221,26225,26226,26227,26229,26232,26233,26235,26236,26237,26239,26240,26241,26243,26245,26246,26248,26249,26250,26251,26253,26254,26255,26256,26258,26259,26260,26261,26264,26265,26266,26267,26268,26270,26271,26272,26273,26274,26275,26276,26277,26278,26281,26282,26283,26284,26285,26287,26288,26289,26290,26291,26293,26294,26295,26296,26298,26299,26300,26301,26303,26304,26305,26306,26307,26308,26309,26310,26311,26312,26313,26314,26315,26316,26317,26318,26319,26320,26321,26322,26323,26324,26325,26326,26327,26328,26330,26334,26335,26336,26337,26338,26339,26340,26341,26343,26344,26346,26347,26348,26349,26350,26351,26353,26357,26358,26360,26362,26363,26365,26369,26370,26371,26372,26373,26374,26375,26380,26382,26383,26385,26386,26387,26390,26392,26393,26394,26396,26398,26400,26401,26402,26403,26404,26405,26407,26409,26414,26416,26418,26419,26422,26423,26424,26425,26427,26428,26430,26431,26433,26436,26437,26439,26442,26443,26445,26450,26452,26453,26455,26456,26457,26458,26459,26461,26466,26467,26468,26470,26471,26475,26476,26478,26481,26484,26486,26488,26489,26490,26491,26493,26496,26498,26499,26501,26502,26504,26506,26508,26509,26510,26511,26513,26514,26515,26516,26518,26521,26523,26527,26528,26529,26532,26534,26537,26540,26542,26545,26546,26548,26553,26554,26555,26556,26557,26558,26559,26560,26562,26565,26566,26567,26568,26569,26570,26571,26572,26573,26574,26581,26582,26583,26587,26591,26593,26595,26596,26598,26599,26600,26602,26603,26605,26606,