<|start_filename|>ps2/scripts/MenuScripts/BaseScripts/sectionsSLPS.json<|end_filename|>
{
	"items":[
	
	{
		"BlockDesc":		"Artes",
		"TextStartBlock":	"",
		"Sections":[
		{
			"SectionId":	1,
			"SectionDesc":	"Artes",
			"GoogleSheetId":"1z2M5d0T_VBrkZAHTdVR2Jjh2M6dtKJygEutN7jgW8QE",
			"TextStart":	"FE8C0",
			"TextEnd":		"FFE7E"
		}]
	},
	{
		"BlockDesc":		"Main Menu",
		"TextStartBlock":	"",
		"Sections":[
		{
			"SectionId":	1,
			"SectionDesc":	"Top Menu",
			"GoogleSheetId":"<KEY>",
			"TextStart":	"132920",
			"TextEnd":		"132996"
		},
		{
			"SectionId":	2,
			"SectionDesc":	"Side Menu",
			"GoogleSheetId":"<KEY>",
			"TextStart":	"132998",
			"TextEnd":		"1329E6"
		}]
	}
	]
	
}

<|start_filename|>ps2/archive/PyTOR2_old/v7/B_repack_pak1.bat<|end_filename|>
python pak1.py 2
pause

<|start_filename|>psp/archive/v1/_setup.bat<|end_filename|>
@echo off
if [%1]==[] goto error

echo Extracting files...
cd /d %~dp0
py -3 setup.py %1
echo Finished.
goto :end

:error
echo Please drag and drop your original ISO over _extract.bat
echo instead of double clicking.
echo.

:end
pause

<|start_filename|>tm2_converter/01_extract.bat<|end_filename|>
TalesOfDestinyTm2Converter.exe -e %1
pause

<|start_filename|>tm2_converter/TalesOfDestinyTm2Converter/TM2.cs<|end_filename|>
﻿using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using System.Linq;
using TalesOfDestinyTm2Converter.Quantizer;
using ttemma.Helpers;

namespace TalesOfDestinyTm2Converter
{
	// Token: 0x02000007 RID: 7
	public class TM2
	{
		// Token: 0x0600003E RID: 62 RVA: 0x00003B2C File Offset: 0x0000272C
		public static TM2 ReadBinary(string fileName)
		{
			TM2 tm = new TM2();
			using (StreamHelper streamHelper = new StreamHelper(fileName, ByteEncoding.Little, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.Read))
			{
				tm.Header = Header.Read(streamHelper);
				tm.PaletteBlocks = new List<PaletteBlock>();
				tm.TextureBlocks = new List<TextureBlock>();
				for (int i = 0; i < (int)tm.Header.CountPalette; i++)
				{
					tm.PaletteBlocks.Add(PaletteBlock.Read(streamHelper));
				}
				for (int j = 0; j < (int)tm.Header.CountTextures; j++)
				{
					tm.TextureBlocks.Add(TextureBlock.Read(streamHelper));
				}
			}
			return tm;
		}

		// Token: 0x0600003F RID: 63 RVA: 0x00003BD8 File Offset: 0x000027D8
		public bool Validate(out string error)
		{
			error = string.Empty;
			if (this.Header.CountTextures > 1)
			{
				error = "Not supported CountTextures more 1";
				return false;
			}
			if (this.Header.CountUnknown > 1)
			{
				error = "Not supported CountUnk more 1";
				return false;
			}
			if (this.Header.CountPalette > 1)
			{
				error = "Not supported CountPalette more 1";
				return false;
			}
			using (List<PaletteBlock>.Enumerator enumerator = this.PaletteBlocks.GetEnumerator())
			{
				while (enumerator.MoveNext())
				{
					if (!enumerator.Current.Validate(out error))
					{
						return false;
					}
				}
			}
			foreach (TextureBlock textureBlock in this.TextureBlocks)
			{
				if (textureBlock.Type != TextureTypeEnum.Indexed_4bit && textureBlock.Type != TextureTypeEnum.Indexed_8bit)
				{
					error = string.Format("Not supported texture type 0x{0:X}", textureBlock.TypeBinary);
					return false;
				}
			}
			return true;
		}

		// Token: 0x06000040 RID: 64 RVA: 0x00003CE8 File Offset: 0x000028E8
		public Bitmap GetImage(TextureBlock textureBlock = null, PaletteBlock paletteBlock = null)
		{
			if (textureBlock == null)
			{
				textureBlock = this.TextureBlocks.FirstOrDefault<TextureBlock>();
			}
			if (paletteBlock == null)
			{
				paletteBlock = this.PaletteBlocks.FirstOrDefault<PaletteBlock>();
			}
			Bitmap bitmap = new Bitmap((int)textureBlock.Width, (int)textureBlock.Height, PixelFormat.Format32bppArgb);
			Dictionary<int, Color> dictionary = new Dictionary<int, Color>();
			for (int i = 0; i < paletteBlock.Colors.Count; i++)
			{
				dictionary.Add(i, paletteBlock.Colors[i]);
			}
			textureBlock.ApplyTextureData(bitmap, dictionary);
			return bitmap;
		}

		// Token: 0x06000041 RID: 65 RVA: 0x00003D64 File Offset: 0x00002964
		public void SetImage(Bitmap bitmap)
		{
			TextureBlock textureBlock = this.TextureBlocks.FirstOrDefault<TextureBlock>();
			PaletteBlock paletteBlock = this.PaletteBlocks.FirstOrDefault<PaletteBlock>();
			Bitmap bitmap2 = MedianCut.Quantize(bitmap, paletteBlock.Colors.Count);
			List<Color> allColors = MedianCut.GetAllColors(bitmap2);
			Dictionary<Color, int> dictionary = new Dictionary<Color, int>();
			foreach (Color key in allColors)
			{
				if (!dictionary.ContainsKey(key))
				{
					dictionary.Add(key, dictionary.Count);
				}
			}
			paletteBlock.Colors = dictionary.Keys.ToList<Color>();
			textureBlock.ApplyBitmapData(bitmap2, dictionary);
		}

		// Token: 0x06000042 RID: 66 RVA: 0x00003E14 File Offset: 0x00002A14
		public void Save(string fileName)
		{
			using (StreamHelper streamHelper = new StreamHelper(fileName, ByteEncoding.Little, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.Read))
			{
				streamHelper.Position = 16L;
				this.PaletteBlocks.FirstOrDefault<PaletteBlock>().Write(streamHelper);
				this.TextureBlocks.FirstOrDefault<TextureBlock>().Write(streamHelper);
			}
		}

		// Token: 0x04000016 RID: 22
		public Header Header;

		// Token: 0x04000017 RID: 23
		public List<PaletteBlock> PaletteBlocks;

		// Token: 0x04000018 RID: 24
		public List<TextureBlock> TextureBlocks;
	}
}


<|start_filename|>tm2_converter/02_repack.bat<|end_filename|>
TalesOfDestinyTm2Converter.exe -r %1
pause

<|start_filename|>ps2/archive/PyTOR2_old/v7/04_insert_font.bat<|end_filename|>
python tod2_ps2.py 4
pause

<|start_filename|>ps2/archive/PyTOR2_old/v6/12_move_sced.bat<|end_filename|>
python move_skits.py 1
pause

<|start_filename|>ps2/archive/PyTOR2_old/v7/A_extract_pak1.bat<|end_filename|>
python pak1.py 1
pause

<|start_filename|>ps2/archive/PyTOR2_old/v7/02_insert_files.bat<|end_filename|>
python tod2_ps2.py 2
pause

<|start_filename|>ps2/archive/PyTOR2_old/v7/06_extract_scpk.bat<|end_filename|>
python tod2_ps2.py 6
pause

<|start_filename|>ps2/archive/PyTOR2_old/v7/A_move_skits.bat<|end_filename|>
for /r "%~dp0PAK1/pak1" %%i in (*.sced) do (
	move /y "%%~i" "%~dp0SKITS"
)
pause

<|start_filename|>ps2/archive/PyTOR2_old/v6/pack_pak0.bat<|end_filename|>
for %%i in (*) do pakcomposer.exe -c "%%i" -0
pause

<|start_filename|>tm2_converter/TalesOfDestinyTm2Converter/Quantizer/MedianCut.cs<|end_filename|>
﻿using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Imaging;
using System.Linq;
using System.Runtime.InteropServices;

namespace TalesOfDestinyTm2Converter.Quantizer
{
	// Token: 0x02000009 RID: 9
	public static class MedianCut
	{
		// Token: 0x06000049 RID: 73 RVA: 0x00004280 File Offset: 0x00002E80
		public static Bitmap Quantize(Bitmap bitmap, int colorsCount)
		{
			List<Color> list = (from g in MedianCut.GetAllColors(bitmap).ToLookup((Color g) => g)
			select g.Key).ToList<Color>();
			if (list.Count < colorsCount)
			{
				colorsCount = list.Count;
			}
			List<Bucket> list2 = new List<Bucket>
			{
				new Bucket(list)
			};
			while (list2.Count < colorsCount)
			{
				List<Bucket> list3 = new List<Bucket>();
				for (int i = 0; i < list2.Count; i++)
				{
					if (list3.Count + (list2.Count - i) >= colorsCount)
					{
						list3.AddRange(list2.GetRange(i, list2.Count - i));
						break;
					}
					Tuple<Bucket, Bucket> tuple = list2[i].Split();
					if (tuple.Item1.colours.Count > 0)
					{
						list3.Add(tuple.Item1);
					}
					if (tuple.Item2.colours.Count > 0)
					{
						list3.Add(tuple.Item2);
					}
				}
				list2 = list3;
			}
			Dictionary<Color, Color> dictionary = new Dictionary<Color, Color>();
			foreach (Bucket bucket in list2)
			{
				foreach (KeyValuePair<Color, int> keyValuePair in bucket.colours)
				{
					dictionary.Add(keyValuePair.Key, bucket.Colour);
				}
			}
			Bitmap bitmap2 = new Bitmap(bitmap.Width, bitmap.Height);
			for (int j = 0; j < bitmap.Width; j++)
			{
				for (int k = 0; k < bitmap.Height; k++)
				{
					Color color = dictionary[bitmap.GetPixel(j, k)];
					bitmap2.SetPixel(j, k, color);
				}
			}
			return bitmap2;
		}

		// Token: 0x0600004A RID: 74 RVA: 0x000044AC File Offset: 0x000030AC
		public static List<Color> GetAllColors(Bitmap bitmap)
		{
			List<Color> list = new List<Color>();
			BitmapData bitmapData = bitmap.LockBits(new Rectangle(0, 0, bitmap.Width, bitmap.Height), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);
			for (int i = 0; i < bitmap.Height; i++)
			{
				for (int j = 0; j < bitmap.Width; j++)
				{
					int argb = Marshal.ReadInt32(bitmapData.Scan0, j * 4 + i * bitmapData.Stride);
					list.Add(Color.FromArgb(argb));
				}
			}
			bitmap.UnlockBits(bitmapData);
			return list;
		}
	}
}


<|start_filename|>tm2_converter/ttemma.Helpers/Cryptography/CRC32CryptoProvider.cs<|end_filename|>
﻿using System;
using System.Security.Cryptography;

namespace ttemma.Helpers.Cryptography
{
	// Token: 0x02000005 RID: 5
	public class CRC32CryptoProvider : HashAlgorithm
	{
		// Token: 0x06000043 RID: 67 RVA: 0x00003794 File Offset: 0x00001D94
		private void InitializeTable()
		{
			this._cryptoTable = new uint[256];
			for (int i = 0; i < 256; i++)
			{
				uint num = (uint)((uint)i << 24);
				for (int j = 0; j < 8; j++)
				{
					if ((num & 2147483648U) != 0U)
					{
						num = (num << 1 ^ this._currentPolynominal);
					}
					else
					{
						num <<= 1;
					}
				}
				this._cryptoTable[i] = num;
			}
		}

		// Token: 0x06000044 RID: 68 RVA: 0x000037F5 File Offset: 0x00001DF5
		public override void Initialize()
		{
			this._hash = this._currentSeed;
		}

		// Token: 0x06000045 RID: 69 RVA: 0x00003804 File Offset: 0x00001E04
		public CRC32CryptoProvider(uint polynomial = 79764919U, uint seed = 4294967295U, uint xorValue = 4294967295U, bool refIn = true, bool refOut = true)
		{
			this._currentPolynominal = polynomial;
			this._hash = seed;
			this._currentSeed = seed;
			this._currentXor = xorValue;
			this._currentRefIn = refIn;
			this._currentRefOut = refOut;
			this.InitializeTable();
		}

		// Token: 0x06000046 RID: 70 RVA: 0x0000384B File Offset: 0x00001E4B
		public CRC32CryptoProvider() : this(79764919U, uint.MaxValue, uint.MaxValue, true, true)
		{
		}

		// Token: 0x06000047 RID: 71 RVA: 0x0000385C File Offset: 0x00001E5C
		protected override void HashCore(byte[] array, int ibStart, int cbSize)
		{
			this._hash = CRC32CryptoProvider.Calculate(this._cryptoTable, this._currentSeed, this._currentXor, this._currentRefIn, this._currentRefOut, array, ibStart, cbSize);
		}

		// Token: 0x06000048 RID: 72 RVA: 0x00003895 File Offset: 0x00001E95
		protected override byte[] HashFinal()
		{
			return BitConverter.GetBytes(this._hash);
		}

		// Token: 0x06000049 RID: 73 RVA: 0x000038A4 File Offset: 0x00001EA4
		private static byte Reflect8(byte val)
		{
			byte b = 0;
			for (int i = 0; i < 8; i++)
			{
				if (((int)val & 1 << i) != 0)
				{
					b |= (byte)(1 << 7 - i);
				}
			}
			return b;
		}

		// Token: 0x0600004A RID: 74 RVA: 0x000038D8 File Offset: 0x00001ED8
		private static uint Reflect32(uint val)
		{
			uint num = 0U;
			for (int i = 0; i < 32; i++)
			{
				if (((ulong)val & (ulong)(1L << (i & 31))) != 0UL)
				{
					num |= 1U << 31 - i;
				}
			}
			return num;
		}

		// Token: <KEY> RID: 75 RVA: 0x00003910 File Offset: 0x00001F10
		private static uint Calculate(uint[] table, uint seed, uint xorValue, bool refIn, bool refOut, byte[] array, int offset, int count)
		{
			uint num = seed;
			for (int i = offset; i < offset + count; i++)
			{
				byte b = refIn ? CRC32CryptoProvider.Reflect8(array[i]) : array[i];
				num = (uint)((ulong)num ^ (ulong)((long)((long)b << 24)));
				byte b2 = (byte)(num >> 24);
				num = (num << 8 ^ table[(int)b2]);
			}
			if (refOut)
			{
				num = CRC32CryptoProvider.Reflect32(num);
			}
			return num ^ xorValue;
		}

		// Token: 0x04000008 RID: 8
		private const uint DefaultPolynomial = 79764919U;

		// Token: 0x04000009 RID: 9
		private const uint DefaultSeed = 4294967295U;

		// Token: 0x0400000A RID: 10
		private const uint DefaultXor = 4294967295U;

		// Token: <KEY> RID: 11
		private uint[] _cryptoTable;

		// Token: 0x0400000C RID: 12
		private uint _currentSeed;

		// Token: 0x0400000D RID: 13
		private uint _currentPolynominal;

		// Token: 0x0400000E RID: 14
		private uint _currentXor;

		// Token: 0x0400000F RID: 15
		private bool _currentRefIn;

		// Token: 0x04000010 RID: 16
		private bool _currentRefOut;

		// Token: 0x04000011 RID: 17
		private uint _hash;
	}
}


<|start_filename|>tm2_converter/ttemma.Helpers/Math/MathHelper.cs<|end_filename|>
﻿using System;

namespace ttemma.Helpers.Math
{
	// Token: 0x02000004 RID: 4
	public static class MathHelper
	{
		// Token: 0x06000042 RID: 66 RVA: 0x00003774 File Offset: 0x00001D74
		public static int CalculateBlocksLength(int blockLength, int dataLength)
		{
			int num = dataLength / blockLength;
			int num2 = dataLength % blockLength;
			int num3 = num;
			if (num2 > 0)
			{
				num3++;
			}
			return num3 * blockLength;
		}
	}
}


<|start_filename|>docs/jpntohex/jpntohex.js<|end_filename|>
unicode_to_tod2 = new Object();
unicode_to_tod2[0x00] = "00"; // <control>
unicode_to_tod2[0x01] = "01"; // <control>
unicode_to_tod2[0x02] = "02"; // <control>
unicode_to_tod2[0x03] = "03"; // <control>
unicode_to_tod2[0x04] = "04"; // <control>
unicode_to_tod2[0x05] = "05"; // <control>
unicode_to_tod2[0x06] = "06"; // <control>
unicode_to_tod2[0x07] = "07"; // <control>
unicode_to_tod2[0x08] = "08"; // <control>
unicode_to_tod2[0x09] = "09"; // <control>
unicode_to_tod2[0x0A] = "0A"; // <control>
unicode_to_tod2[0x0B] = "0B"; // <control>
unicode_to_tod2[0x0C] = "0C"; // <control>
unicode_to_tod2[0x0D] = "0D"; // <control>
unicode_to_tod2[0x0E] = "0E"; // <control>
unicode_to_tod2[0x0F] = "0F"; // <control>
unicode_to_tod2[0x10] = "10"; // <control>
unicode_to_tod2[0x11] = "11"; // <control>
unicode_to_tod2[0x12] = "12"; // <control>
unicode_to_tod2[0x13] = "13"; // <control>
unicode_to_tod2[0x14] = "14"; // <control>
unicode_to_tod2[0x15] = "15"; // <control>
unicode_to_tod2[0x16] = "16"; // <control>
unicode_to_tod2[0x17] = "17"; // <control>
unicode_to_tod2[0x18] = "18"; // <control>
unicode_to_tod2[0x19] = "19"; // <control>
unicode_to_tod2[0x1A] = "1A"; // <control>
unicode_to_tod2[0x1B] = "1B"; // <control>
unicode_to_tod2[0x1C] = "1C"; // <control>
unicode_to_tod2[0x1D] = "1D"; // <control>
unicode_to_tod2[0x1E] = "1E"; // <control>
unicode_to_tod2[0x1F] = "1F"; // <control>
unicode_to_tod2[0x20] = "20"; // SPACE
unicode_to_tod2[0x21] = "21"; // EXCLAMATION MARK
unicode_to_tod2[0x22] = "22"; // QUOTATION MARK
unicode_to_tod2[0x23] = "23"; // NUMBER SIGN
unicode_to_tod2[0x24] = "24"; // DOLLAR SIGN
unicode_to_tod2[0x25] = "25"; // PERCENT SIGN
unicode_to_tod2[0x26] = "26"; // AMPERSAND
unicode_to_tod2[0x27] = "27"; // APOSTROPHE
unicode_to_tod2[0x28] = "28"; // LEFT PARENTHESIS
unicode_to_tod2[0x29] = "29"; // RIGHT PARENTHESIS
unicode_to_tod2[0x2A] = "2A"; // ASTERISK
unicode_to_tod2[0x2B] = "2B"; // PLUS SIGN
unicode_to_tod2[0x2C] = "2C"; // COMMA
unicode_to_tod2[0x2D] = "2D"; // HYPHEN-MINUS
unicode_to_tod2[0x2E] = "2E"; // FULL STOP
unicode_to_tod2[0x2F] = "2F"; // SOLIDUS
unicode_to_tod2[0x30] = "30"; // DIGIT ZERO
unicode_to_tod2[0x31] = "31"; // DIGIT ONE
unicode_to_tod2[0x32] = "32"; // DIGIT TWO
unicode_to_tod2[0x33] = "33"; // DIGIT THREE
unicode_to_tod2[0x34] = "34"; // DIGIT FOUR
unicode_to_tod2[0x35] = "35"; // DIGIT FIVE
unicode_to_tod2[0x36] = "36"; // DIGIT SIX
unicode_to_tod2[0x37] = "37"; // DIGIT SEVEN
unicode_to_tod2[0x38] = "38"; // DIGIT EIGHT
unicode_to_tod2[0x39] = "39"; // DIGIT NINE
unicode_to_tod2[0x3A] = "3A"; // COLON
unicode_to_tod2[0x3B] = "3B"; // SEMICOLON
unicode_to_tod2[0x3C] = "3C"; // LESS-THAN SIGN
unicode_to_tod2[0x3D] = "3D"; // EQUALS SIGN
unicode_to_tod2[0x3E] = "3E"; // GREATER-THAN SIGN
unicode_to_tod2[0x3F] = "3F"; // QUESTION MARK
unicode_to_tod2[0x40] = "40"; // COMMERCIAL AT
unicode_to_tod2[0x41] = "41"; // LATIN CAPITAL LETTER A
unicode_to_tod2[0x42] = "42"; // LATIN CAPITAL LETTER B
unicode_to_tod2[0x43] = "43"; // LATIN CAPITAL LETTER C
unicode_to_tod2[0x44] = "44"; // LATIN CAPITAL LETTER D
unicode_to_tod2[0x45] = "45"; // LATIN CAPITAL LETTER E
unicode_to_tod2[0x46] = "46"; // LATIN CAPITAL LETTER F
unicode_to_tod2[0x47] = "47"; // LATIN CAPITAL LETTER G
unicode_to_tod2[0x48] = "48"; // LATIN CAPITAL LETTER H
unicode_to_tod2[0x49] = "49"; // LATIN CAPITAL LETTER I
unicode_to_tod2[0x4A] = "4A"; // LATIN CAPITAL LETTER J
unicode_to_tod2[0x4B] = "4B"; // LATIN CAPITAL LETTER K
unicode_to_tod2[0x4C] = "4C"; // LATIN CAPITAL LETTER L
unicode_to_tod2[0x4D] = "4D"; // LATIN CAPITAL LETTER M
unicode_to_tod2[0x4E] = "4E"; // LATIN CAPITAL LETTER N
unicode_to_tod2[0x4F] = "4F"; // LATIN CAPITAL LETTER O
unicode_to_tod2[0x50] = "50"; // LATIN CAPITAL LETTER P
unicode_to_tod2[0x51] = "51"; // LATIN CAPITAL LETTER Q
unicode_to_tod2[0x52] = "52"; // LATIN CAPITAL LETTER R
unicode_to_tod2[0x53] = "53"; // LATIN CAPITAL LETTER S
unicode_to_tod2[0x54] = "54"; // LATIN CAPITAL LETTER T
unicode_to_tod2[0x55] = "55"; // LATIN CAPITAL LETTER U
unicode_to_tod2[0x56] = "56"; // LATIN CAPITAL LETTER V
unicode_to_tod2[0x57] = "57"; // LATIN CAPITAL LETTER W
unicode_to_tod2[0x58] = "58"; // LATIN CAPITAL LETTER X
unicode_to_tod2[0x59] = "59"; // LATIN CAPITAL LETTER Y
unicode_to_tod2[0x5A] = "5A"; // LATIN CAPITAL LETTER Z
unicode_to_tod2[0x5B] = "5B"; // LEFT SQUARE BRACKET
unicode_to_tod2[0xA5] = "5C"; // YEN SIGN
unicode_to_tod2[0x5D] = "5D"; // RIGHT SQUARE BRACKET
unicode_to_tod2[0x5E] = "5E"; // CIRCUMFLEX ACCENT
unicode_to_tod2[0x5F] = "5F"; // LOW LINE
unicode_to_tod2[0x60] = "60"; // GRAVE ACCENT
unicode_to_tod2[0x61] = "61"; // LATIN SMALL LETTER A
unicode_to_tod2[0x62] = "62"; // LATIN SMALL LETTER B
unicode_to_tod2[0x63] = "63"; // LATIN SMALL LETTER C
unicode_to_tod2[0x64] = "64"; // LATIN SMALL LETTER D
unicode_to_tod2[0x65] = "65"; // LATIN SMALL LETTER E
unicode_to_tod2[0x66] = "66"; // LATIN SMALL LETTER F
unicode_to_tod2[0x67] = "67"; // LATIN SMALL LETTER G
unicode_to_tod2[0x68] = "68"; // LATIN SMALL LETTER H
unicode_to_tod2[0x69] = "69"; // LATIN SMALL LETTER I
unicode_to_tod2[0x6A] = "6A"; // LATIN SMALL LETTER J
unicode_to_tod2[0x6B] = "6B"; // LATIN SMALL LETTER K
unicode_to_tod2[0x6C] = "6C"; // LATIN SMALL LETTER L
unicode_to_tod2[0x6D] = "6D"; // LATIN SMALL LETTER M
unicode_to_tod2[0x6E] = "6E"; // LATIN SMALL LETTER N
unicode_to_tod2[0x6F] = "6F"; // LATIN SMALL LETTER O
unicode_to_tod2[0x70] = "70"; // LATIN SMALL LETTER P
unicode_to_tod2[0x71] = "71"; // LATIN SMALL LETTER Q
unicode_to_tod2[0x72] = "72"; // LATIN SMALL LETTER R
unicode_to_tod2[0x73] = "73"; // LATIN SMALL LETTER S
unicode_to_tod2[0x74] = "74"; // LATIN SMALL LETTER T
unicode_to_tod2[0x75] = "75"; // LATIN SMALL LETTER U
unicode_to_tod2[0x76] = "76"; // LATIN SMALL LETTER V
unicode_to_tod2[0x77] = "77"; // LATIN SMALL LETTER W
unicode_to_tod2[0x78] = "78"; // LATIN SMALL LETTER X
unicode_to_tod2[0x79] = "79"; // LATIN SMALL LETTER Y
unicode_to_tod2[0x7A] = "7A"; // LATIN SMALL LETTER Z
unicode_to_tod2[0x7B] = "7B"; // LEFT CURLY BRACKET
unicode_to_tod2[0x7C] = "7C"; // VERTICAL LINE
unicode_to_tod2[0x7D] = "7D"; // RIGHT CURLY BRACKET
unicode_to_tod2[0x203E] = "7E"; // OVERLINE
unicode_to_tod2[0x7F] = "7F"; // <control>
unicode_to_tod2[0xFF61] = "A1"; // HALFWIDTH IDEOGRAPHIC FULL STOP
unicode_to_tod2[0xFF62] = "A2"; // HALFWIDTH LEFT CORNER BRACKET
unicode_to_tod2[0xFF63] = "A3"; // HALFWIDTH RIGHT CORNER BRACKET
unicode_to_tod2[0xFF64] = "A4"; // HALFWIDTH IDEOGRAPHIC COMMA
unicode_to_tod2[0xFF65] = "A5"; // HALFWIDTH KATAKANA MIDDLE DOT
unicode_to_tod2[0xFF66] = "A6"; // HALFWIDTH KATAKANA LETTER WO
unicode_to_tod2[0xFF67] = "A7"; // HALFWIDTH KATAKANA LETTER SMALL A
unicode_to_tod2[0xFF68] = "A8"; // HALFWIDTH KATAKANA LETTER SMALL I
unicode_to_tod2[0xFF69] = "A9"; // HALFWIDTH KATAKANA LETTER SMALL U
unicode_to_tod2[0xFF6A] = "AA"; // HALFWIDTH KATAKANA LETTER SMALL E
unicode_to_tod2[0xFF6B] = "AB"; // HALFWIDTH KATAKANA LETTER SMALL O
unicode_to_tod2[0xFF6C] = "AC"; // HALFWIDTH KATAKANA LETTER SMALL YA
unicode_to_tod2[0xFF6D] = "AD"; // HALFWIDTH KATAKANA LETTER SMALL YU
unicode_to_tod2[0xFF6E] = "AE"; // HALFWIDTH KATAKANA LETTER SMALL YO
unicode_to_tod2[0xFF6F] = "AF"; // HALFWIDTH KATAKANA LETTER SMALL TU
unicode_to_tod2[0xFF70] = "B0"; // HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK
unicode_to_tod2[0xFF71] = "B1"; // HALFWIDTH KATAKANA LETTER A
unicode_to_tod2[0xFF72] = "B2"; // HALFWIDTH KATAKANA LETTER I
unicode_to_tod2[0xFF73] = "B3"; // HALFWIDTH KATAKANA LETTER U
unicode_to_tod2[0xFF74] = "B4"; // HALFWIDTH KATAKANA LETTER E
unicode_to_tod2[0xFF75] = "B5"; // HALFWIDTH KATAKANA LETTER O
unicode_to_tod2[0xFF76] = "B6"; // HALFWIDTH KATAKANA LETTER KA
unicode_to_tod2[0xFF77] = "B7"; // HALFWIDTH KATAKANA LETTER KI
unicode_to_tod2[0xFF78] = "B8"; // HALFWIDTH KATAKANA LETTER KU
unicode_to_tod2[0xFF79] = "B9"; // HALFWIDTH KATAKANA LETTER KE
unicode_to_tod2[0xFF7A] = "BA"; // HALFWIDTH KATAKANA LETTER KO
unicode_to_tod2[0xFF7B] = "BB"; // HALFWIDTH KATAKANA LETTER SA
unicode_to_tod2[0xFF7C] = "BC"; // HALFWIDTH KATAKANA LETTER SI
unicode_to_tod2[0xFF7D] = "BD"; // HALFWIDTH KATAKANA LETTER SU
unicode_to_tod2[0xFF7E] = "BE"; // HALFWIDTH KATAKANA LETTER SE
unicode_to_tod2[0xFF7F] = "BF"; // HALFWIDTH KATAKANA LETTER SO
unicode_to_tod2[0xFF80] = "C0"; // HALFWIDTH KATAKANA LETTER TA
unicode_to_tod2[0xFF81] = "C1"; // HALFWIDTH KATAKANA LETTER TI
unicode_to_tod2[0xFF82] = "C2"; // HALFWIDTH KATAKANA LETTER TU
unicode_to_tod2[0xFF83] = "C3"; // HALFWIDTH KATAKANA LETTER TE
unicode_to_tod2[0xFF84] = "C4"; // HALFWIDTH KATAKANA LETTER TO
unicode_to_tod2[0xFF85] = "C5"; // HALFWIDTH KATAKANA LETTER NA
unicode_to_tod2[0xFF86] = "C6"; // HALFWIDTH KATAKANA LETTER NI
unicode_to_tod2[0xFF87] = "C7"; // HALFWIDTH KATAKANA LETTER NU
unicode_to_tod2[0xFF88] = "C8"; // HALFWIDTH KATAKANA LETTER NE
unicode_to_tod2[0xFF89] = "C9"; // HALFWIDTH KATAKANA LETTER NO
unicode_to_tod2[0xFF8A] = "CA"; // HALFWIDTH KATAKANA LETTER HA
unicode_to_tod2[0xFF8B] = "CB"; // HALFWIDTH KATAKANA LETTER HI
unicode_to_tod2[0xFF8C] = "CC"; // HALFWIDTH KATAKANA LETTER HU
unicode_to_tod2[0xFF8D] = "CD"; // HALFWIDTH KATAKANA LETTER HE
unicode_to_tod2[0xFF8E] = "CE"; // HALFWIDTH KATAKANA LETTER HO
unicode_to_tod2[0xFF8F] = "CF"; // HALFWIDTH KATAKANA LETTER MA
unicode_to_tod2[0xFF90] = "D0"; // HALFWIDTH KATAKANA LETTER MI
unicode_to_tod2[0xFF91] = "D1"; // HALFWIDTH KATAKANA LETTER MU
unicode_to_tod2[0xFF92] = "D2"; // HALFWIDTH KATAKANA LETTER ME
unicode_to_tod2[0xFF93] = "D3"; // HALFWIDTH KATAKANA LETTER MO
unicode_to_tod2[0xFF94] = "D4"; // HALFWIDTH KATAKANA LETTER YA
unicode_to_tod2[0xFF95] = "D5"; // HALFWIDTH KATAKANA LETTER YU
unicode_to_tod2[0xFF96] = "D6"; // HALFWIDTH KATAKANA LETTER YO
unicode_to_tod2[0xFF97] = "D7"; // HALFWIDTH KATAKANA LETTER RA
unicode_to_tod2[0xFF98] = "D8"; // HALFWIDTH KATAKANA LETTER RI
unicode_to_tod2[0xFF99] = "D9"; // HALFWIDTH KATAKANA LETTER RU
unicode_to_tod2[0xFF9A] = "DA"; // HALFWIDTH KATAKANA LETTER RE
unicode_to_tod2[0xFF9B] = "DB"; // HALFWIDTH KATAKANA LETTER RO
unicode_to_tod2[0xFF9C] = "DC"; // HALFWIDTH KATAKANA LETTER WA
unicode_to_tod2[0xFF9D] = "DD"; // HALFWIDTH KATAKANA LETTER N
unicode_to_tod2[0xFF9E] = "DE"; // HALFWIDTH KATAKANA VOICED SOUND MARK 
unicode_to_tod2[0xFF9F] = "DF"; // HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK 
unicode_to_tod2[0x3000] = "99 40"; // 　
unicode_to_tod2[0xFF0E] = "99 42"; // ．
unicode_to_tod2[0x30FB] = "99 43"; // ・
unicode_to_tod2[0xFF1A] = "99 44"; // ：
unicode_to_tod2[0xFF1F] = "99 45"; // ？
unicode_to_tod2[0xFF01] = "99 46"; // ！
unicode_to_tod2[0x30FC] = "99 47"; // ー
unicode_to_tod2[0xFF0F] = "99 48"; // ／
unicode_to_tod2[0xFF08] = "99 4A"; // （
unicode_to_tod2[0xFF09] = "99 4B"; // ）
unicode_to_tod2[0xFF05] = "99 4C"; // ％
unicode_to_tod2[0xFF10] = "99 4D"; // ０
unicode_to_tod2[0xFF11] = "99 4E"; // １
unicode_to_tod2[0xFF12] = "99 4F"; // ２
unicode_to_tod2[0xFF13] = "99 50"; // ３
unicode_to_tod2[0xFF14] = "99 51"; // ４
unicode_to_tod2[0xFF15] = "99 52"; // ５
unicode_to_tod2[0xFF16] = "99 53"; // ６
unicode_to_tod2[0xFF17] = "99 54"; // ７
unicode_to_tod2[0xFF18] = "99 55"; // ８
unicode_to_tod2[0xFF19] = "99 56"; // ９
unicode_to_tod2[0xFF21] = "99 57"; // Ａ
unicode_to_tod2[0xFF22] = "99 58"; // Ｂ
unicode_to_tod2[0xFF23] = "99 59"; // Ｃ
unicode_to_tod2[0xFF24] = "99 5A"; // Ｄ
unicode_to_tod2[0xFF25] = "99 5B"; // Ｅ
unicode_to_tod2[0xFF26] = "99 5C"; // Ｆ
unicode_to_tod2[0xFF26] = "99 5D"; // Ｆ
unicode_to_tod2[0xFF27] = "99 5E"; // Ｇ
unicode_to_tod2[0xFF28] = "99 5F"; // Ｈ
unicode_to_tod2[0xFF29] = "99 60"; // Ｉ
unicode_to_tod2[0xFF2A] = "99 61"; // Ｊ
unicode_to_tod2[0xFF2B] = "99 62"; // Ｋ
unicode_to_tod2[0xFF2C] = "99 63"; // Ｌ
unicode_to_tod2[0xFF2D] = "99 64"; // Ｍ
unicode_to_tod2[0xFF2E] = "99 65"; // Ｎ
unicode_to_tod2[0xFF2F] = "99 66"; // Ｏ
unicode_to_tod2[0xFF30] = "99 67"; // Ｐ
unicode_to_tod2[0xFF32] = "99 69"; // Ｒ
unicode_to_tod2[0xFF33] = "99 6A"; // Ｓ
unicode_to_tod2[0xFF34] = "99 6B"; // Ｔ
unicode_to_tod2[0xFF35] = "99 6C"; // Ｕ
unicode_to_tod2[0xFF36] = "99 6D"; // Ｖ
unicode_to_tod2[0xFF38] = "99 6F"; // Ｘ
unicode_to_tod2[0xFF39] = "99 70"; // Ｙ
unicode_to_tod2[0xFF3A] = "99 71"; // Ｚ
unicode_to_tod2[0x3041] = "99 72"; // ぁ
unicode_to_tod2[0x3042] = "99 73"; // あ
unicode_to_tod2[0x3043] = "99 74"; // ぃ
unicode_to_tod2[0x3044] = "99 75"; // い
unicode_to_tod2[0x3045] = "99 76"; // ぅ
unicode_to_tod2[0x3046] = "99 77"; // う
unicode_to_tod2[0x3047] = "99 78"; // ぇ
unicode_to_tod2[0x3048] = "99 79"; // え
unicode_to_tod2[0x3049] = "99 7A"; // ぉ
unicode_to_tod2[0x304A] = "99 7B"; // お
unicode_to_tod2[0x304B] = "99 7C"; // か
unicode_to_tod2[0x304C] = "99 7D"; // が
unicode_to_tod2[0x304D] = "99 7E"; // き
unicode_to_tod2[0x304E] = "99 80"; // ぎ
unicode_to_tod2[0x304F] = "99 81"; // く
unicode_to_tod2[0x3050] = "99 82"; // ぐ
unicode_to_tod2[0x3051] = "99 83"; // け
unicode_to_tod2[0x3052] = "99 84"; // げ
unicode_to_tod2[0x3053] = "99 85"; // こ
unicode_to_tod2[0x3054] = "99 86"; // ご
unicode_to_tod2[0x3055] = "99 87"; // さ
unicode_to_tod2[0x3056] = "99 88"; // ざ
unicode_to_tod2[0x3057] = "99 89"; // し
unicode_to_tod2[0x3058] = "99 8A"; // じ
unicode_to_tod2[0x3059] = "99 8B"; // す
unicode_to_tod2[0x305A] = "99 8C"; // ず
unicode_to_tod2[0x305B] = "99 8D"; // せ
unicode_to_tod2[0x305C] = "99 8E"; // ぜ
unicode_to_tod2[0x305D] = "99 8F"; // そ
unicode_to_tod2[0x305E] = "99 90"; // ぞ
unicode_to_tod2[0x305F] = "99 91"; // た
unicode_to_tod2[0x3060] = "99 92"; // だ
unicode_to_tod2[0x3061] = "99 93"; // ち
unicode_to_tod2[0x3062] = "99 94"; // ぢ
unicode_to_tod2[0x3063] = "99 95"; // っ
unicode_to_tod2[0x3064] = "99 96"; // つ
unicode_to_tod2[0x3065] = "99 97"; // づ
unicode_to_tod2[0x3066] = "99 98"; // て
unicode_to_tod2[0x3067] = "99 99"; // で
unicode_to_tod2[0x3068] = "99 9A"; // と
unicode_to_tod2[0x3069] = "99 9B"; // ど
unicode_to_tod2[0x306A] = "99 9C"; // な
unicode_to_tod2[0x306B] = "99 9D"; // に
unicode_to_tod2[0x306C] = "99 9E"; // ぬ
unicode_to_tod2[0x306D] = "99 9F"; // ね
unicode_to_tod2[0x306E] = "99 A0"; // の
unicode_to_tod2[0x306F] = "99 A1"; // は
unicode_to_tod2[0x3070] = "99 A2"; // ば
unicode_to_tod2[0x3071] = "99 A3"; // ぱ
unicode_to_tod2[0x3072] = "99 A4"; // ひ
unicode_to_tod2[0x3073] = "99 A5"; // び
unicode_to_tod2[0x3074] = "99 A6"; // ぴ
unicode_to_tod2[0x3075] = "99 A7"; // ふ
unicode_to_tod2[0x3076] = "99 A8"; // ぶ
unicode_to_tod2[0x3077] = "99 A9"; // ぷ
unicode_to_tod2[0x3078] = "99 AA"; // へ
unicode_to_tod2[0x3079] = "99 AB"; // べ
unicode_to_tod2[0x307A] = "99 AC"; // ぺ
unicode_to_tod2[0x307B] = "99 AD"; // ほ
unicode_to_tod2[0x307C] = "99 AE"; // ぼ
unicode_to_tod2[0x307D] = "99 AF"; // ぽ
unicode_to_tod2[0x307E] = "99 B0"; // ま
unicode_to_tod2[0x307F] = "99 B1"; // み
unicode_to_tod2[0x3080] = "99 B2"; // む
unicode_to_tod2[0x3081] = "99 B3"; // め
unicode_to_tod2[0x3082] = "99 B4"; // も
unicode_to_tod2[0x3083] = "99 B5"; // ゃ
unicode_to_tod2[0x3084] = "99 B6"; // や
unicode_to_tod2[0x3085] = "99 B7"; // ゅ
unicode_to_tod2[0x3086] = "99 B8"; // ゆ
unicode_to_tod2[0x3087] = "99 B9"; // ょ
unicode_to_tod2[0x3088] = "99 BA"; // よ
unicode_to_tod2[0x3089] = "99 BB"; // ら
unicode_to_tod2[0x308A] = "99 BC"; // り
unicode_to_tod2[0x308B] = "99 BD"; // る
unicode_to_tod2[0x308C] = "99 BE"; // れ
unicode_to_tod2[0x308D] = "99 BF"; // ろ
unicode_to_tod2[0xFF0B] = "99 C0"; // ＋
unicode_to_tod2[0x308F] = "99 C1"; // わ
unicode_to_tod2[0x300C] = "99 C2"; // 「
unicode_to_tod2[0x300D] = "99 C3"; // 」
unicode_to_tod2[0x3092] = "99 C4"; // を
unicode_to_tod2[0x3093] = "99 C5"; // ん
unicode_to_tod2[0x30A1] = "99 C6"; // ァ
unicode_to_tod2[0x30A2] = "99 C7"; // ア
unicode_to_tod2[0x30A3] = "99 C8"; // ィ
unicode_to_tod2[0x30A4] = "99 C9"; // イ
unicode_to_tod2[0x30A5] = "99 CA"; // ゥ
unicode_to_tod2[0x30A6] = "99 CB"; // ウ
unicode_to_tod2[0x30A7] = "99 CC"; // ェ
unicode_to_tod2[0x30A8] = "99 CD"; // エ
unicode_to_tod2[0x30A9] = "99 CE"; // ォ
unicode_to_tod2[0x30AA] = "99 CF"; // オ
unicode_to_tod2[0x30AB] = "99 D0"; // カ
unicode_to_tod2[0x30AC] = "99 D1"; // ガ
unicode_to_tod2[0x30AD] = "99 D2"; // キ
unicode_to_tod2[0x30AE] = "99 D3"; // ギ
unicode_to_tod2[0x30AF] = "99 D4"; // ク
unicode_to_tod2[0x30B0] = "99 D5"; // グ
unicode_to_tod2[0x30B1] = "99 D6"; // ケ
unicode_to_tod2[0x30B2] = "99 D7"; // ゲ
unicode_to_tod2[0x30B3] = "99 D8"; // コ
unicode_to_tod2[0x30B4] = "99 D9"; // ゴ
unicode_to_tod2[0x30B5] = "99 DA"; // サ
unicode_to_tod2[0x30B6] = "99 DB"; // ザ
unicode_to_tod2[0x30B7] = "99 DC"; // シ
unicode_to_tod2[0x30B8] = "99 DD"; // ジ
unicode_to_tod2[0x30B9] = "99 DE"; // ス
unicode_to_tod2[0x30BA] = "99 DF"; // ズ
unicode_to_tod2[0x30BB] = "99 E0"; // セ
unicode_to_tod2[0x30BC] = "99 E1"; // ゼ
unicode_to_tod2[0x30BD] = "99 E2"; // ソ
unicode_to_tod2[0x30BE] = "99 E3"; // ゾ
unicode_to_tod2[0x30BF] = "99 E4"; // タ
unicode_to_tod2[0x30C0] = "99 E5"; // ダ
unicode_to_tod2[0x30C1] = "99 E6"; // チ
unicode_to_tod2[0x30C3] = "99 E8"; // ッ
unicode_to_tod2[0x30C4] = "99 E9"; // ツ
unicode_to_tod2[0x30C5] = "99 EA"; // ヅ
unicode_to_tod2[0x30C6] = "99 EB"; // テ
unicode_to_tod2[0x30C7] = "99 EC"; // デ
unicode_to_tod2[0x30C8] = "99 ED"; // ト
unicode_to_tod2[0x30C9] = "99 EE"; // ド
unicode_to_tod2[0x30CA] = "99 EF"; // ナ
unicode_to_tod2[0x30CB] = "99 F0"; // ニ
unicode_to_tod2[0x30CC] = "99 F1"; // ヌ
unicode_to_tod2[0x30CD] = "99 F2"; // ネ
unicode_to_tod2[0x30CE] = "99 F3"; // ノ
unicode_to_tod2[0x30CF] = "99 F4"; // ハ
unicode_to_tod2[0x30D0] = "99 F5"; // バ
unicode_to_tod2[0x30D1] = "99 F6"; // パ
unicode_to_tod2[0x30D2] = "99 F7"; // ヒ
unicode_to_tod2[0x30D3] = "99 F8"; // ビ
unicode_to_tod2[0x30D4] = "99 F9"; // ピ
unicode_to_tod2[0x30D5] = "99 FA"; // フ
unicode_to_tod2[0x30D6] = "99 FB"; // ブ
unicode_to_tod2[0x30D7] = "99 FC"; // プ
unicode_to_tod2[0x30D8] = "9A 40"; // ヘ
unicode_to_tod2[0x30D9] = "9A 41"; // ベ
unicode_to_tod2[0x30DA] = "9A 42"; // ペ
unicode_to_tod2[0x30DB] = "9A 43"; // ホ
unicode_to_tod2[0x30DC] = "9A 44"; // ボ
unicode_to_tod2[0x30DD] = "9A 45"; // ポ
unicode_to_tod2[0x30DE] = "9A 46"; // マ
unicode_to_tod2[0x30DF] = "9A 47"; // ミ
unicode_to_tod2[0xFF06] = "9A 48"; // ＆
unicode_to_tod2[0x30E0] = "9A 49"; // ム
unicode_to_tod2[0x30E1] = "9A 4A"; // メ
unicode_to_tod2[0x30E2] = "9A 4B"; // モ
unicode_to_tod2[0x30E3] = "9A 4C"; // ャ
unicode_to_tod2[0x30E4] = "9A 4D"; // ヤ
unicode_to_tod2[0x30E5] = "9A 4E"; // ュ
unicode_to_tod2[0x30E6] = "9A 4F"; // ユ
unicode_to_tod2[0x30E7] = "9A 50"; // ョ
unicode_to_tod2[0x30E8] = "9A 51"; // ヨ
unicode_to_tod2[0x30E9] = "9A 52"; // ラ
unicode_to_tod2[0x30EA] = "9A 53"; // リ
unicode_to_tod2[0x30EB] = "9A 54"; // ル
unicode_to_tod2[0x30EC] = "9A 55"; // レ
unicode_to_tod2[0x30ED] = "9A 56"; // ロ
unicode_to_tod2[0xFF0D] = "9A 57"; // －
unicode_to_tod2[0x30EF] = "9A 58"; // ワ
unicode_to_tod2[0xFF1D] = "9A 59"; // ＝
unicode_to_tod2[0x2606] = "9A 5A"; // ☆
unicode_to_tod2[0x30F2] = "9A 5B"; // ヲ
unicode_to_tod2[0x30F3] = "9A 5D"; // ン
unicode_to_tod2[0x30F4] = "9A 5E"; // ヴ
unicode_to_tod2[0xD7] = "9A 7C"; // ×
unicode_to_tod2[0x266A] = "9A 80"; // ♪
unicode_to_tod2[0xFF5E] = "9A 81"; // ～
unicode_to_tod2[0x300E] = "9A 83"; // 『
unicode_to_tod2[0x300F] = "9A 84"; // 』
unicode_to_tod2[0x3001] = "9A 85"; // 、
unicode_to_tod2[0x3002] = "9A 86"; // 。
unicode_to_tod2[0x4E00] = "9A 87"; // 一
unicode_to_tod2[0x4E8C] = "9A 88"; // 二
unicode_to_tod2[0x5341] = "9A 89"; // 十
unicode_to_tod2[0x5343] = "9A 8A"; // 千
unicode_to_tod2[0x4E07] = "9A 8B"; // 万
unicode_to_tod2[0x5730] = "9A 8C"; // 地
unicode_to_tod2[0x6C34] = "9A 8D"; // 水
unicode_to_tod2[0x706B] = "9A 8E"; // 火
unicode_to_tod2[0x98A8] = "9A 8F"; // 風
unicode_to_tod2[0x5149] = "9A 90"; // 光
unicode_to_tod2[0x95C7] = "9A 91"; // 闇
unicode_to_tod2[0x5357] = "9A 92"; // 南
unicode_to_tod2[0x897F] = "9A 93"; // 西
unicode_to_tod2[0x5317] = "9A 94"; // 北
unicode_to_tod2[0x8D64] = "9A 95"; // 赤
unicode_to_tod2[0x767D] = "9A 96"; // 白
unicode_to_tod2[0x9ED2] = "9A 97"; // 黒
unicode_to_tod2[0x5E74] = "9A 98"; // 年
unicode_to_tod2[0x6708] = "9A 99"; // 月
unicode_to_tod2[0x65E5] = "9A 9A"; // 日
unicode_to_tod2[0x6642] = "9A 9B"; // 時
unicode_to_tod2[0x6226] = "9A 9C"; // 戦
unicode_to_tod2[0x95D8] = "9A 9D"; // 闘
unicode_to_tod2[0x653B] = "9A 9E"; // 攻
unicode_to_tod2[0x6483] = "9A 9F"; // 撃
unicode_to_tod2[0x9632] = "9A A0"; // 防
unicode_to_tod2[0x5FA1] = "9A A1"; // 御
unicode_to_tod2[0x56DE] = "9A A2"; // 回
unicode_to_tod2[0x907F] = "9A A3"; // 避
unicode_to_tod2[0x8853] = "9A A4"; // 術
unicode_to_tod2[0x6280] = "9A A5"; // 技
unicode_to_tod2[0x9053] = "9A A6"; // 道
unicode_to_tod2[0x5177] = "9A A7"; // 具
unicode_to_tod2[0x5408] = "9A A8"; // 合
unicode_to_tod2[0x6210] = "9A A9"; // 成
unicode_to_tod2[0x795E] = "9A AA"; // 神
unicode_to_tod2[0x5EA7] = "9A AB"; // 座
unicode_to_tod2[0x90FD] = "9A AC"; // 都
unicode_to_tod2[0x5E02] = "9A AD"; // 市
unicode_to_tod2[0x683C] = "9A AE"; // 格
unicode_to_tod2[0x5148] = "9A AF"; // 先
unicode_to_tod2[0x884C] = "9A B0"; // 行
unicode_to_tod2[0x4E16] = "9A B1"; // 世
unicode_to_tod2[0x697D] = "9A B2"; // 楽
unicode_to_tod2[0x5712] = "9A B3"; // 園
unicode_to_tod2[0x6848] = "9A B4"; // 案
unicode_to_tod2[0x5916] = "9A B5"; // 外
unicode_to_tod2[0x6240] = "9A B6"; // 所
unicode_to_tod2[0x77E5] = "9A B7"; // 知
unicode_to_tod2[0x5927] = "9A B8"; // 大
unicode_to_tod2[0x6614] = "9A B9"; // 昔
unicode_to_tod2[0x4EBA] = "9A BA"; // 人
unicode_to_tod2[0x9593] = "9A BB"; // 間
unicode_to_tod2[0x81EA] = "9A BC"; // 自
unicode_to_tod2[0x5206] = "9A BD"; // 分
unicode_to_tod2[0x751F] = "9A BE"; // 生
unicode_to_tod2[0x6BCE] = "9A BF"; // 毎
unicode_to_tod2[0x7948] = "9A C0"; // 祈
unicode_to_tod2[0x6C7A] = "9A C1"; // 決
unicode_to_tod2[0x4E0A] = "9A C2"; // 上
unicode_to_tod2[0x964D] = "9A C3"; // 降
unicode_to_tod2[0x4ECA] = "9A C4"; // 今
unicode_to_tod2[0x5EA6] = "9A C5"; // 度
unicode_to_tod2[0x6765] = "9A C6"; // 来
unicode_to_tod2[0x5F85] = "9A C7"; // 待
unicode_to_tod2[0x4E57] = "9A C8"; // 乗
unicode_to_tod2[0x7A7A] = "9A C9"; // 空
unicode_to_tod2[0x4F55] = "9A CA"; // 何
unicode_to_tod2[0x624B] = "9A CB"; // 手
unicode_to_tod2[0x5165] = "9A CC"; // 入
unicode_to_tod2[0x4EE5] = "9A CD"; // 以
unicode_to_tod2[0x6301] = "9A CE"; // 持
unicode_to_tod2[0x6B66] = "9A CF"; // 武
unicode_to_tod2[0x5668] = "9A D0"; // 器
unicode_to_tod2[0x5C4B] = "9A D1"; // 屋
unicode_to_tod2[0x6559] = "9A D2"; // 教
unicode_to_tod2[0x4F1A] = "9A D3"; // 会
unicode_to_tod2[0x98DF] = "9A D4"; // 食
unicode_to_tod2[0x6750] = "9A D5"; // 材
unicode_to_tod2[0x5BBF] = "9A D6"; // 宿
unicode_to_tod2[0x5BA2] = "9A D7"; // 客
unicode_to_tod2[0x5BA4] = "9A D8"; // 室
unicode_to_tod2[0x968E] = "9A D9"; // 階
unicode_to_tod2[0x5ECA] = "9A DA"; // 廊
unicode_to_tod2[0x4E0B] = "9A DB"; // 下
unicode_to_tod2[0x5909] = "9A DC"; // 変
unicode_to_tod2[0x7B2C] = "9A DD"; // 第
unicode_to_tod2[0x7AE0] = "9A DE"; // 章
unicode_to_tod2[0x4EE3] = "9A DF"; // 代
unicode_to_tod2[0x66F4] = "9A E0"; // 更
unicode_to_tod2[0x5E83] = "9A E1"; // 広
unicode_to_tod2[0x5834] = "9A E2"; // 場
unicode_to_tod2[0x65E7] = "9A E3"; // 旧
unicode_to_tod2[0x8857] = "9A E4"; // 街
unicode_to_tod2[0x524D] = "9A E5"; // 前
unicode_to_tod2[0x60AA] = "9A E6"; // 悪
unicode_to_tod2[0x5922] = "9A E7"; // 夢
unicode_to_tod2[0x5E30] = "9A E8"; // 帰
unicode_to_tod2[0x738B] = "9A E9"; // 王
unicode_to_tod2[0x958B] = "9A EA"; // 開
unicode_to_tod2[0x653E] = "9A EB"; // 放
unicode_to_tod2[0x571F] = "9A EC"; // 土
unicode_to_tod2[0x65B0] = "9A ED"; // 新
unicode_to_tod2[0x6D3B] = "9A EE"; // 活
unicode_to_tod2[0x6C17] = "9A EF"; // 気
unicode_to_tod2[0x4F4F] = "9A F0"; // 住
unicode_to_tod2[0x6069] = "9A F1"; // 恩
unicode_to_tod2[0x6700] = "9A F2"; // 最
unicode_to_tod2[0x8FD1] = "9A F3"; // 近
unicode_to_tod2[0x56FD] = "9A F4"; // 国
unicode_to_tod2[0x56E3] = "9A F5"; // 団
unicode_to_tod2[0x9032] = "9A F6"; // 進
unicode_to_tod2[0x51FA] = "9A F7"; // 出
unicode_to_tod2[0x4FE1] = "9A F8"; // 信
unicode_to_tod2[0x52A9] = "9A F9"; // 助
unicode_to_tod2[0x8A71] = "9A FA"; // 話
unicode_to_tod2[0x9854] = "9A FB"; // 顔
unicode_to_tod2[0x5FC3] = "9A FC"; // 心
unicode_to_tod2[0x5E95] = "9B 40"; // 底
unicode_to_tod2[0x57CE] = "9B 41"; // 城
unicode_to_tod2[0x97F3] = "9B 42"; // 音
unicode_to_tod2[0x805E] = "9B 43"; // 聞
unicode_to_tod2[0x6025] = "9B 44"; // 急
unicode_to_tod2[0x8EAB] = "9B 45"; // 身
unicode_to_tod2[0x8CCA] = "9B 46"; // 賊
unicode_to_tod2[0x8FBC] = "9B 47"; // 込
unicode_to_tod2[0x72D9] = "9B 48"; // 狙
unicode_to_tod2[0x7387] = "9B 49"; // 率
unicode_to_tod2[0x7CBE] = "9B 4A"; // 精
unicode_to_tod2[0x92ED] = "9B 4B"; // 鋭
unicode_to_tod2[0x4FDD] = "9B 4C"; // 保
unicode_to_tod2[0x8A3C] = "9B 4D"; // 証
unicode_to_tod2[0x8972] = "9B 4E"; // 襲
unicode_to_tod2[0x8CA0] = "9B 4F"; // 負
unicode_to_tod2[0x50B7] = "9B 50"; // 傷
unicode_to_tod2[0x596A] = "9B 51"; // 奪
unicode_to_tod2[0x8A00] = "9B 52"; // 言
unicode_to_tod2[0x82F1] = "9B 53"; // 英
unicode_to_tod2[0x96C4] = "9B 54"; // 雄
unicode_to_tod2[0x7537] = "9B 55"; // 男
unicode_to_tod2[0x898B] = "9B 56"; // 見
unicode_to_tod2[0x76EE] = "9B 57"; // 目
unicode_to_tod2[0x671D] = "9B 58"; // 朝
unicode_to_tod2[0x65E9] = "9B 59"; // 早
unicode_to_tod2[0x5973] = "9B 5A"; // 女
unicode_to_tod2[0x5B50] = "9B 5B"; // 子
unicode_to_tod2[0x6B62] = "9B 5D"; // 止
unicode_to_tod2[0x6BBF] = "9B 5E"; // 殿
unicode_to_tod2[0x5411] = "9B 5F"; // 向
unicode_to_tod2[0x96EA] = "9B 60"; // 雪
unicode_to_tod2[0x66F8] = "9B 61"; // 書
unicode_to_tod2[0x754C] = "9B 62"; // 界
unicode_to_tod2[0x4E2D] = "9B 63"; // 中
unicode_to_tod2[0x601D] = "9B 64"; // 思
unicode_to_tod2[0x6CE3] = "9B 65"; // 泣
unicode_to_tod2[0x99AC] = "9B 66"; // 馬
unicode_to_tod2[0x8DB3] = "9B 67"; // 足
unicode_to_tod2[0x604B] = "9B 68"; // 恋
unicode_to_tod2[0x76D7] = "9B 69"; // 盗
unicode_to_tod2[0x73FE] = "9B 6A"; // 現
unicode_to_tod2[0x6B4C] = "9B 6B"; // 歌
unicode_to_tod2[0x96A0] = "9B 6C"; // 隠
unicode_to_tod2[0x4E8B] = "9B 6D"; // 事
unicode_to_tod2[0x60C5] = "9B 6E"; // 情
unicode_to_tod2[0x8272] = "9B 6F"; // 色
unicode_to_tod2[0x611F] = "9B 70"; // 感
unicode_to_tod2[0x52D5] = "9B 71"; // 動
unicode_to_tod2[0x904B] = "9B 72"; // 運
unicode_to_tod2[0x547D] = "9B 73"; // 命
unicode_to_tod2[0x660E] = "9B 74"; // 明
unicode_to_tod2[0x5BD2] = "9B 75"; // 寒
unicode_to_tod2[0x6696] = "9B 76"; // 暖
unicode_to_tod2[0x623F] = "9B 77"; // 房
unicode_to_tod2[0x56F3] = "9B 78"; // 図
unicode_to_tod2[0x9928] = "9B 79"; // 館
unicode_to_tod2[0x672C] = "9B 7A"; // 本
unicode_to_tod2[0x8AAD] = "9B 7B"; // 読
unicode_to_tod2[0x756A] = "9B 7C"; // 番
unicode_to_tod2[0x5358] = "9B 7D"; // 単
unicode_to_tod2[0x6587] = "9B 7E"; // 文
unicode_to_tod2[0x5316] = "9B 80"; // 化
unicode_to_tod2[0x6C11] = "9B 81"; // 民
unicode_to_tod2[0x4E0E] = "9B 82"; // 与
unicode_to_tod2[0x5EFA] = "9B 83"; // 建
unicode_to_tod2[0x6B74] = "9B 84"; // 歴
unicode_to_tod2[0x53F2] = "9B 85"; // 史
unicode_to_tod2[0x7684] = "9B 86"; // 的
unicode_to_tod2[0x7F8E] = "9B 87"; // 美
unicode_to_tod2[0x79C1] = "9B 88"; // 私
unicode_to_tod2[0x8A9E] = "9B 89"; // 語
unicode_to_tod2[0x7981] = "9B 8A"; // 禁
unicode_to_tod2[0x516C] = "9B 8B"; // 公
unicode_to_tod2[0x9759] = "9B 8C"; // 静
unicode_to_tod2[0x843D] = "9B 8D"; // 落
unicode_to_tod2[0x65B9] = "9B 8E"; // 方
unicode_to_tod2[0x7206] = "9B 8F"; // 爆
unicode_to_tod2[0x767A] = "9B 90"; // 発
unicode_to_tod2[0x8D77] = "9B 91"; // 起
unicode_to_tod2[0x76F4] = "9B 92"; // 直
unicode_to_tod2[0x5F8C] = "9B 93"; // 後
unicode_to_tod2[0x623B] = "9B 94"; // 戻
unicode_to_tod2[0x597D] = "9B 95"; // 好
unicode_to_tod2[0x4E71] = "9B 96"; // 乱
unicode_to_tod2[0x7D42] = "9B 97"; // 終
unicode_to_tod2[0x5E73] = "9B 98"; // 平
unicode_to_tod2[0x548C] = "9B 99"; // 和
unicode_to_tod2[0x82E5] = "9B 9A"; // 若
unicode_to_tod2[0x65C5] = "9B 9B"; // 旅
unicode_to_tod2[0x8AF8] = "9B 9C"; // 諸
unicode_to_tod2[0x6E29] = "9B 9D"; // 温
unicode_to_tod2[0x80B2] = "9B 9E"; // 育
unicode_to_tod2[0x673A] = "9B 9F"; // 机
unicode_to_tod2[0x5B66] = "9B A0"; // 学
unicode_to_tod2[0x8449] = "9B A1"; // 葉
unicode_to_tod2[0x653F] = "9B A3"; // 政
unicode_to_tod2[0x6CBB] = "9B A4"; // 治
unicode_to_tod2[0x5FC5] = "9B A5"; // 必
unicode_to_tod2[0x8981] = "9B A6"; // 要
unicode_to_tod2[0x6211] = "9B A7"; // 我
unicode_to_tod2[0x8996] = "9B A8"; // 視
unicode_to_tod2[0x5BDF] = "9B A9"; // 察
unicode_to_tod2[0x7B11] = "9B AA"; // 笑
unicode_to_tod2[0x9060] = "9B AB"; // 遠
unicode_to_tod2[0x5B58] = "9B AC"; // 存
unicode_to_tod2[0x5728] = "9B AD"; // 在
unicode_to_tod2[0x5371] = "9B AE"; // 危
unicode_to_tod2[0x967A] = "9B AF"; // 険
unicode_to_tod2[0x5F7C] = "9B B0"; // 彼
unicode_to_tod2[0x91CE] = "9B B1"; // 野
unicode_to_tod2[0x671B] = "9B B2"; // 望
unicode_to_tod2[0x7A4D] = "9B B3"; // 積
unicode_to_tod2[0x5230] = "9B B4"; // 到
unicode_to_tod2[0x7740] = "9B B5"; // 着
unicode_to_tod2[0x9045] = "9B B6"; // 遅
unicode_to_tod2[0x8A98] = "9B B7"; // 誘
unicode_to_tod2[0x5C0E] = "9B B8"; // 導
unicode_to_tod2[0x5BB6] = "9B B9"; // 家
unicode_to_tod2[0x5C0F] = "9B BA"; // 小
unicode_to_tod2[0x793E] = "9B BB"; // 社
unicode_to_tod2[0x5EC3] = "9B BC"; // 廃
unicode_to_tod2[0x5751] = "9B BD"; // 坑
unicode_to_tod2[0x5B9D] = "9B BE"; // 宝
unicode_to_tod2[0x90E8] = "9B BF"; // 部
unicode_to_tod2[0x6094] = "9B C0"; // 悔
unicode_to_tod2[0x7279] = "9B C1"; // 特
unicode_to_tod2[0x5225] = "9B C2"; // 別
unicode_to_tod2[0x6697] = "9B C3"; // 暗
unicode_to_tod2[0x53F7] = "9B C4"; // 号
unicode_to_tod2[0x8005] = "9B C5"; // 者
unicode_to_tod2[0x7E41] = "9B C6"; // 繁
unicode_to_tod2[0x6804] = "9B C7"; // 栄
unicode_to_tod2[0x9858] = "9B C8"; // 願
unicode_to_tod2[0x8A18] = "9B C9"; // 記
unicode_to_tod2[0x8CA7] = "9B CA"; // 貧
unicode_to_tod2[0x5BCC] = "9B CB"; // 富
unicode_to_tod2[0x5DEE] = "9B CC"; // 差
unicode_to_tod2[0x5236] = "9B CE"; // 制
unicode_to_tod2[0x5F31] = "9B CF"; // 弱
unicode_to_tod2[0x6551] = "9B D0"; // 救
unicode_to_tod2[0x6E08] = "9B D1"; // 済
unicode_to_tod2[0x4E88] = "9B D2"; // 予
unicode_to_tod2[0x7B97] = "9B D3"; // 算
unicode_to_tod2[0x78BA] = "9B D4"; // 確
unicode_to_tod2[0x5B89] = "9B D5"; // 安
unicode_to_tod2[0x5B88] = "9B D6"; // 守
unicode_to_tod2[0x8B66] = "9B D7"; // 警
unicode_to_tod2[0x7D44] = "9B D8"; // 組
unicode_to_tod2[0x7E54] = "9B D9"; // 織
unicode_to_tod2[0x652F] = "9B DA"; // 支
unicode_to_tod2[0x63F4] = "9B DB"; // 援
unicode_to_tod2[0x610F] = "9B DC"; // 意
unicode_to_tod2[0x8B58] = "9B DD"; // 識
unicode_to_tod2[0x6539] = "9B DE"; // 改
unicode_to_tod2[0x9769] = "9B DF"; // 革
unicode_to_tod2[0x611B] = "9B E0"; // 愛
unicode_to_tod2[0x6761] = "9B E1"; // 条
unicode_to_tod2[0x60F3] = "9B E2"; // 想
unicode_to_tod2[0x7D20] = "9B E3"; // 素
unicode_to_tod2[0x6575] = "9B E4"; // 敵
unicode_to_tod2[0x5F53] = "9B E5"; // 当
unicode_to_tod2[0x8003] = "9B E6"; // 考
unicode_to_tod2[0x8AA4] = "9B E7"; // 誤
unicode_to_tod2[0x7406] = "9B E8"; // 理
unicode_to_tod2[0x5B9F] = "9B E9"; // 実
unicode_to_tod2[0x5373] = "9B EA"; // 即
unicode_to_tod2[0x52B9] = "9B EB"; // 効
unicode_to_tod2[0x6027] = "9B EC"; // 性
unicode_to_tod2[0x6C42] = "9B ED"; // 求
unicode_to_tod2[0x5287] = "9B EE"; // 劇
unicode_to_tod2[0x85AC] = "9B EF"; // 薬
unicode_to_tod2[0x9078] = "9B F0"; // 選
unicode_to_tod2[0x7D04] = "9B F1"; // 約
unicode_to_tod2[0x675F] = "9B F2"; // 束
unicode_to_tod2[0x5C4A] = "9B F3"; // 届
unicode_to_tod2[0x578B] = "9B F4"; // 型
unicode_to_tod2[0x5F15] = "9B F5"; // 引
unicode_to_tod2[0x529B] = "9B F6"; // 力
unicode_to_tod2[0x4F5C] = "9B F7"; // 作
unicode_to_tod2[0x5185] = "9B F8"; // 内
unicode_to_tod2[0x8A2D] = "9B F9"; // 設
unicode_to_tod2[0x5099] = "9B FA"; // 備
unicode_to_tod2[0x6570] = "9B FB"; // 数
unicode_to_tod2[0x679A] = "9B FC"; // 枚
unicode_to_tod2[0x53E5] = "9C 40"; // 句
unicode_to_tod2[0x4ED5] = "9C 41"; // 仕
unicode_to_tod2[0x5E78] = "9C 42"; // 幸
unicode_to_tod2[0x5965] = "9C 43"; // 奥
unicode_to_tod2[0x63A1] = "9C 44"; // 採
unicode_to_tod2[0x6398] = "9C 45"; // 掘
unicode_to_tod2[0x63A2] = "9C 46"; // 探
unicode_to_tod2[0x639B] = "9C 47"; // 掛
unicode_to_tod2[0x672A] = "9C 48"; // 未
unicode_to_tod2[0x7A3C] = "9C 49"; // 稼
unicode_to_tod2[0x7565] = "9C 4A"; // 略
unicode_to_tod2[0x5207] = "9C 4B"; // 切
unicode_to_tod2[0x66FF] = "9C 4C"; // 替
unicode_to_tod2[0x96FB] = "9C 4D"; // 電
unicode_to_tod2[0x6E90] = "9C 4E"; // 源
unicode_to_tod2[0x53F3] = "9C 4F"; // 右
unicode_to_tod2[0x6BB5] = "9C 50"; // 段
unicode_to_tod2[0x7A81] = "9C 51"; // 突
unicode_to_tod2[0x58C1] = "9C 52"; // 壁
unicode_to_tod2[0x8ABF] = "9C 53"; // 調
unicode_to_tod2[0x6E2F] = "9C 54"; // 港
unicode_to_tod2[0x8239] = "9C 55"; // 船
unicode_to_tod2[0x5B9A] = "9C 56"; // 定
unicode_to_tod2[0x671F] = "9C 57"; // 期
unicode_to_tod2[0x9577] = "9C 58"; // 長
unicode_to_tod2[0x4FEE] = "9C 59"; // 修
unicode_to_tod2[0x83DC] = "9C 5A"; // 菜
unicode_to_tod2[0x5546] = "9C 5B"; // 商
unicode_to_tod2[0x54C1] = "9C 5D"; // 品
unicode_to_tod2[0x53F0] = "9C 5E"; // 台
unicode_to_tod2[0x4E0D] = "9C 5F"; // 不
unicode_to_tod2[0x6545] = "9C 60"; // 故
unicode_to_tod2[0x5074] = "9C 61"; // 側
unicode_to_tod2[0x8CAC] = "9C 62"; // 責
unicode_to_tod2[0x4EFB] = "9C 63"; // 任
unicode_to_tod2[0x51E6] = "9C 64"; // 処
unicode_to_tod2[0x6B32] = "9C 65"; // 欲
unicode_to_tod2[0x6D77] = "9C 66"; // 海
unicode_to_tod2[0x8DEF] = "9C 67"; // 路
unicode_to_tod2[0x4ED6] = "9C 68"; // 他
unicode_to_tod2[0x6CD5] = "9C 69"; // 法
unicode_to_tod2[0x9000] = "9C 6A"; // 退
unicode_to_tod2[0x5C48] = "9C 6B"; // 屈
unicode_to_tod2[0x5931] = "9C 6C"; // 失
unicode_to_tod2[0x793C] = "9C 6D"; // 礼
unicode_to_tod2[0x8155] = "9C 6E"; // 腕
unicode_to_tod2[0x7ACB] = "9C 6F"; // 立
unicode_to_tod2[0x82B8] = "9C 70"; // 芸
unicode_to_tod2[0x53D7] = "9C 71"; // 受
unicode_to_tod2[0x53C2] = "9C 72"; // 参
unicode_to_tod2[0x7136] = "9C 73"; // 然
unicode_to_tod2[0x52C7] = "9C 74"; // 勇
unicode_to_tod2[0x6298] = "9C 75"; // 折
unicode_to_tod2[0x8D8A] = "9C 76"; // 越
unicode_to_tod2[0x5370] = "9C 77"; // 印
unicode_to_tod2[0x9678] = "9C 78"; // 陸
unicode_to_tod2[0x66AE] = "9C 79"; // 暮
unicode_to_tod2[0x6E96] = "9C 7A"; // 準
unicode_to_tod2[0x98DB] = "9C 7B"; // 飛
unicode_to_tod2[0x632F] = "9C 7C"; // 振
unicode_to_tod2[0x5FDC] = "9C 7D"; // 応
unicode_to_tod2[0x4F7F] = "9C 7E"; // 使
unicode_to_tod2[0x50D5] = "9C 80"; // 僕
unicode_to_tod2[0x983C] = "9C 81"; // 頼
unicode_to_tod2[0x4F01] = "9C 82"; // 企
unicode_to_tod2[0x696D] = "9C 83"; // 業
unicode_to_tod2[0x6EC5] = "9C 84"; // 滅
unicode_to_tod2[0x91D1] = "9C 85"; // 金
unicode_to_tod2[0x5EAB] = "9C 86"; // 庫
unicode_to_tod2[0x53CE] = "9C 87"; // 収
unicode_to_tod2[0x9727] = "9C 88"; // 霧
unicode_to_tod2[0x7720] = "9C 89"; // 眠
unicode_to_tod2[0x4F9D] = "9C 8A"; // 依
unicode_to_tod2[0x7533] = "9C 8B"; // 申
unicode_to_tod2[0x907A] = "9C 8C"; // 遺
unicode_to_tod2[0x7523] = "9C 8D"; // 産
unicode_to_tod2[0x72B6] = "9C 8E"; // 状
unicode_to_tod2[0x8CB4] = "9C 8F"; // 貴
unicode_to_tod2[0x69D8] = "9C 90"; // 様
unicode_to_tod2[0x5076] = "9C 91"; // 偶
unicode_to_tod2[0x4E3B] = "9C 92"; // 主
unicode_to_tod2[0x53D6] = "9C 93"; // 取
unicode_to_tod2[0x8DE1] = "9C 94"; // 跡
unicode_to_tod2[0x6577] = "9C 95"; // 敷
unicode_to_tod2[0x8CB7] = "9C 96"; // 買
unicode_to_tod2[0x9014] = "9C 97"; // 途
unicode_to_tod2[0x6B7B] = "9C 98"; // 死
unicode_to_tod2[0x88AB] = "9C 99"; // 被
unicode_to_tod2[0x5BB3] = "9C 9A"; // 害
unicode_to_tod2[0x58F2] = "9C 9B"; // 売
unicode_to_tod2[0x914D] = "9C 9C"; // 配
unicode_to_tod2[0x6674] = "9C 9D"; // 晴
unicode_to_tod2[0x88C5] = "9C 9E"; // 装
unicode_to_tod2[0x98FE] = "9C 9F"; // 飾
unicode_to_tod2[0x540D] = "9C A0"; // 名
unicode_to_tod2[0x5DE5] = "9C A1"; // 工
unicode_to_tod2[0x5B22] = "9C A2"; // 嬢
unicode_to_tod2[0x77F3] = "9C A3"; // 石
unicode_to_tod2[0x7BB1] = "9C A4"; // 箱
unicode_to_tod2[0x6E21] = "9C A5"; // 渡
unicode_to_tod2[0x7D50] = "9C A6"; // 結
unicode_to_tod2[0x5C40] = "9C A7"; // 局
unicode_to_tod2[0x6BD4] = "9C A8"; // 比
unicode_to_tod2[0x5C71] = "9C A9"; // 山
unicode_to_tod2[0x75B2] = "9C AA"; // 疲
unicode_to_tod2[0x7AEF] = "9C AB"; // 端
unicode_to_tod2[0x4F4D] = "9C AC"; // 位
unicode_to_tod2[0x7F6E] = "9C AD"; // 置
unicode_to_tod2[0x753A] = "9C AE"; // 町
unicode_to_tod2[0x4FFA] = "9C AF"; // 俺
unicode_to_tod2[0x4EEE] = "9C B0"; // 仮
unicode_to_tod2[0x9762] = "9C B1"; // 面
unicode_to_tod2[0x81E3] = "9C B2"; // 臣
unicode_to_tod2[0x9003] = "9C B3"; // 逃
unicode_to_tod2[0x79D8] = "9C B4"; // 秘
unicode_to_tod2[0x5BC6] = "9C B5"; // 密
unicode_to_tod2[0x591A] = "9C B6"; // 多
unicode_to_tod2[0x4EF2] = "9C B7"; // 仲
unicode_to_tod2[0x7D4C] = "9C B8"; // 経
unicode_to_tod2[0x8FFD] = "9C B9"; // 追
unicode_to_tod2[0x76F8] = "9C BA"; // 相
unicode_to_tod2[0x8FD4] = "9C BB"; // 返
unicode_to_tod2[0x7236] = "9C BC"; // 父
unicode_to_tod2[0x5C11] = "9C BD"; // 少
unicode_to_tod2[0x95A2] = "9C BE"; // 関
unicode_to_tod2[0x4FC2] = "9C BF"; // 係
unicode_to_tod2[0x5F62] = "9C C0"; // 形
unicode_to_tod2[0x6B69] = "9C C1"; // 歩
unicode_to_tod2[0x8AD6] = "9C C2"; // 論
unicode_to_tod2[0x591C] = "9C C3"; // 夜
unicode_to_tod2[0x4F11] = "9C C4"; // 休
unicode_to_tod2[0x6307] = "9C C5"; // 指
unicode_to_tod2[0x899A] = "9C C6"; // 覚
unicode_to_tod2[0x541B] = "9C C7"; // 君
unicode_to_tod2[0x4F53] = "9C C8"; // 体
unicode_to_tod2[0x5168] = "9C C9"; // 全
unicode_to_tod2[0x5305] = "9C CA"; // 包
unicode_to_tod2[0x6D6E] = "9C CB"; // 浮
unicode_to_tod2[0x7121] = "9C CC"; // 無
unicode_to_tod2[0x90F7] = "9C CD"; // 郷
unicode_to_tod2[0x540C] = "9C CE"; // 同
unicode_to_tod2[0x666E] = "9C CF"; // 普
unicode_to_tod2[0x901A] = "9C D0"; // 通
unicode_to_tod2[0x5143] = "9C D1"; // 元
unicode_to_tod2[0x5BDD] = "9C D2"; // 寝
unicode_to_tod2[0x4ED8] = "9C D3"; // 付
unicode_to_tod2[0x7D76] = "9C D4"; // 絶
unicode_to_tod2[0x5BFE] = "9C D5"; // 対
unicode_to_tod2[0x52DD] = "9C D6"; // 勝
unicode_to_tod2[0x5229] = "9C D7"; // 利
unicode_to_tod2[0x8A73] = "9C D8"; // 詳
unicode_to_tod2[0x5FD8] = "9C D9"; // 忘
unicode_to_tod2[0x5144] = "9C DA"; // 兄
unicode_to_tod2[0x5A5A] = "9C DB"; // 婚
unicode_to_tod2[0x7530] = "9C DC"; // 田
unicode_to_tod2[0x820E] = "9C DD"; // 舎
unicode_to_tod2[0x6751] = "9C DE"; // 村
unicode_to_tod2[0x89AA] = "9C DF"; // 親
unicode_to_tod2[0x58F0] = "9C E0"; // 声
unicode_to_tod2[0x53EB] = "9C E1"; // 叫
unicode_to_tod2[0x6253] = "9C E2"; // 打
unicode_to_tod2[0x5175] = "9C E3"; // 兵
unicode_to_tod2[0x58EB] = "9C E4"; // 士
unicode_to_tod2[0x6A5F] = "9C E5"; // 機
unicode_to_tod2[0x6D3E] = "9C E6"; // 派
unicode_to_tod2[0x6669] = "9C E7"; // 晩
unicode_to_tod2[0x6CCA] = "9C E8"; // 泊
unicode_to_tod2[0x4F3C] = "9C E9"; // 似
unicode_to_tod2[0x6BCD] = "9C EA"; // 母
unicode_to_tod2[0x9023] = "9C EB"; // 連
unicode_to_tod2[0x7528] = "9C EC"; // 用
unicode_to_tod2[0x9054] = "9C ED"; // 達
unicode_to_tod2[0x606F] = "9C EE"; // 息
unicode_to_tod2[0x5C0A] = "9C EF"; // 尊
unicode_to_tod2[0x656C] = "9C F0"; // 敬
unicode_to_tod2[0x904A] = "9C F1"; // 遊
unicode_to_tod2[0x89B3] = "9C F2"; // 観
unicode_to_tod2[0x5F37] = "9C F3"; // 強
unicode_to_tod2[0x5009] = "9C F4"; // 倉
unicode_to_tod2[0x602A] = "9C F5"; // 怪
unicode_to_tod2[0x7269] = "9C F6"; // 物
unicode_to_tod2[0x5012] = "9C F7"; // 倒
unicode_to_tod2[0x6C88] = "9C F8"; // 沈
unicode_to_tod2[0x554F] = "9C F9"; // 問
unicode_to_tod2[0x984C] = "9C FA"; // 題
unicode_to_tod2[0x8131] = "9C FB"; // 脱
unicode_to_tod2[0x54E1] = "9C FC"; // 員
unicode_to_tod2[0x7A0B] = "9D 40"; // 程
unicode_to_tod2[0x72A0] = "9D 41"; // 犠
unicode_to_tod2[0x7272] = "9D 42"; // 牲
unicode_to_tod2[0x5272] = "9D 43"; // 割
unicode_to_tod2[0x64CD] = "9D 44"; // 操
unicode_to_tod2[0x8235] = "9D 45"; // 舵
unicode_to_tod2[0x6FC0] = "9D 46"; // 激
unicode_to_tod2[0x521D] = "9D 47"; // 初
unicode_to_tod2[0x822A] = "9D 48"; // 航
unicode_to_tod2[0x7D9A] = "9D 49"; // 続
unicode_to_tod2[0x88DC] = "9D 4A"; // 補
unicode_to_tod2[0x5BF8] = "9D 4B"; // 寸
unicode_to_tod2[0x969B] = "9D 4C"; // 際
unicode_to_tod2[0x7167] = "9D 4D"; // 照
unicode_to_tod2[0x5B8C] = "9D 4E"; // 完
unicode_to_tod2[0x821E] = "9D 4F"; // 舞
unicode_to_tod2[0x7B49] = "9D 50"; // 等
unicode_to_tod2[0x7531] = "9D 51"; // 由
unicode_to_tod2[0x96E3] = "9D 52"; // 難
unicode_to_tod2[0x8A8D] = "9D 53"; // 認
unicode_to_tod2[0x5F97] = "9D 54"; // 得
unicode_to_tod2[0x4EF6] = "9D 55"; // 件
unicode_to_tod2[0x5BE9] = "9D 56"; // 審
unicode_to_tod2[0x6B21] = "9D 57"; // 次
unicode_to_tod2[0x5E79] = "9D 58"; // 幹
unicode_to_tod2[0x5D29] = "9D 59"; // 崩
unicode_to_tod2[0x58CA] = "9D 5A"; // 壊
unicode_to_tod2[0x5171] = "9D 5B"; // 共
unicode_to_tod2[0x6B73] = "9D 5D"; // 歳
unicode_to_tod2[0x539F] = "9D 5E"; // 原
unicode_to_tod2[0x56E0] = "9D 5F"; // 因
unicode_to_tod2[0x771F] = "9D 60"; // 真
unicode_to_tod2[0x5354] = "9D 61"; // 協
unicode_to_tod2[0x8AAC] = "9D 62"; // 説
unicode_to_tod2[0x552F] = "9D 63"; // 唯
unicode_to_tod2[0x9810] = "9D 64"; // 預
unicode_to_tod2[0x6CA1] = "9D 65"; // 没
unicode_to_tod2[0x614B] = "9D 66"; // 態
unicode_to_tod2[0x8AC7] = "9D 67"; // 談
unicode_to_tod2[0x6F6E] = "9D 69"; // 潮
unicode_to_tod2[0x9999] = "9D 6A"; // 香
unicode_to_tod2[0x8B70] = "9D 6B"; // 議
unicode_to_tod2[0x8EFD] = "9D 6C"; // 軽
unicode_to_tod2[0x4F1D] = "9D 6D"; // 伝
unicode_to_tod2[0x7D61] = "9D 6E"; // 絡
unicode_to_tod2[0x5F35] = "9D 6F"; // 張
unicode_to_tod2[0x5897] = "9D 70"; // 増
unicode_to_tod2[0x640D] = "9D 71"; // 損
unicode_to_tod2[0x547C] = "9D 72"; // 呼
unicode_to_tod2[0x6CB9] = "9D 73"; // 油
unicode_to_tod2[0x65AD] = "9D 74"; // 断
unicode_to_tod2[0x7A74] = "9D 75"; // 穴
unicode_to_tod2[0x9F3B] = "9D 76"; // 鼻
unicode_to_tod2[0x8208] = "9D 77"; // 興
unicode_to_tod2[0x5473] = "9D 78"; // 味
unicode_to_tod2[0x4FBF] = "9D 79"; // 便
unicode_to_tod2[0x62DD] = "9D 7A"; // 拝
unicode_to_tod2[0x5802] = "9D 7B"; // 堂
unicode_to_tod2[0x7DDA] = "9D 7C"; // 線
unicode_to_tod2[0x7C21] = "9D 7D"; // 簡
unicode_to_tod2[0x4F9B] = "9D 7E"; // 供
unicode_to_tod2[0x9A0E] = "9D 80"; // 騎
unicode_to_tod2[0x5C5E] = "9D 81"; // 属
unicode_to_tod2[0x6557] = "9D 82"; // 敗
unicode_to_tod2[0x8D70] = "9D 83"; // 走
unicode_to_tod2[0x96C6] = "9D 84"; // 集
unicode_to_tod2[0x80CC] = "9D 85"; // 背
unicode_to_tod2[0x666F] = "9D 86"; // 景
unicode_to_tod2[0x679C] = "9D 87"; // 果
unicode_to_tod2[0x505C] = "9D 88"; // 停
unicode_to_tod2[0x716E] = "9D 89"; // 煮
unicode_to_tod2[0x7C73] = "9D 8B"; // 米
unicode_to_tod2[0x7DD2] = "9D 8C"; // 緒
unicode_to_tod2[0x5F79] = "9D 8D"; // 役
unicode_to_tod2[0x71B1] = "9D 8E"; // 熱
unicode_to_tod2[0x9BAE] = "9D 8F"; // 鮮
unicode_to_tod2[0x6599] = "9D 90"; // 料
unicode_to_tod2[0x63DA] = "9D 91"; // 揚
unicode_to_tod2[0x53E3] = "9D 92"; // 口
unicode_to_tod2[0x5375] = "9D 93"; // 卵
unicode_to_tod2[0x713C] = "9D 94"; // 焼
unicode_to_tod2[0x629C] = "9D 95"; // 抜
unicode_to_tod2[0x8089] = "9D 96"; // 肉
unicode_to_tod2[0x7D71] = "9D 97"; // 統
unicode_to_tod2[0x52A0] = "9D 98"; // 加
unicode_to_tod2[0x6E1B] = "9D 99"; // 減
unicode_to_tod2[0x8CDE] = "9D 9A"; // 賞
unicode_to_tod2[0x592A] = "9D 9B"; // 太
unicode_to_tod2[0x523A] = "9D 9C"; // 刺
unicode_to_tod2[0x70C8] = "9D 9D"; // 烈
unicode_to_tod2[0x6D74] = "9D 9F"; // 浴
unicode_to_tod2[0x6CE2] = "9D A0"; // 波
unicode_to_tod2[0x6F02] = "9D A1"; // 漂
unicode_to_tod2[0x5E7B] = "9D A2"; // 幻
unicode_to_tod2[0x9154] = "9D A3"; // 酔
unicode_to_tod2[0x77AC] = "9D A4"; // 瞬
unicode_to_tod2[0x9B5A] = "9D A5"; // 魚
unicode_to_tod2[0x91CD] = "9D A6"; // 重
unicode_to_tod2[0x6DF1] = "9D A7"; // 深
unicode_to_tod2[0x51B7] = "9D A8"; // 冷
unicode_to_tod2[0x661F] = "9D AB"; // 星
unicode_to_tod2[0x8F1D] = "9D AC"; // 輝
unicode_to_tod2[0x8C6A] = "9D AD"; // 豪
unicode_to_tod2[0x5FEB] = "9D AE"; // 快
unicode_to_tod2[0x9EBB] = "9D AF"; // 麻
unicode_to_tod2[0x8150] = "9D B2"; // 腐
unicode_to_tod2[0x8F9B] = "9D B3"; // 辛
unicode_to_tod2[0x5999] = "9D B4"; // 妙
unicode_to_tod2[0x6975] = "9D B5"; // 極
unicode_to_tod2[0x9055] = "9D B6"; // 違
unicode_to_tod2[0x7570] = "9D B7"; // 異
unicode_to_tod2[0x9B54] = "9D B8"; // 魔
unicode_to_tod2[0x990A] = "9D B9"; // 養
unicode_to_tod2[0x8C4A] = "9D BA"; // 豊
unicode_to_tod2[0x76DB] = "9D BB"; // 盛
unicode_to_tod2[0x7D75] = "9D BC"; // 絵
unicode_to_tod2[0x753B] = "9D BD"; // 画
unicode_to_tod2[0x63CF] = "9D BE"; // 描
unicode_to_tod2[0x69CB] = "9D BF"; // 構
unicode_to_tod2[0x7518] = "9D C0"; // 甘
unicode_to_tod2[0x5DFB] = "9D C1"; // 巻
unicode_to_tod2[0x67D3] = "9D C2"; // 染
unicode_to_tod2[0x9AD8] = "9D C3"; // 高
unicode_to_tod2[0x4E92] = "9D C4"; // 互
unicode_to_tod2[0x79F0] = "9D C5"; // 称
unicode_to_tod2[0x8AB0] = "9D C6"; // 誰
unicode_to_tod2[0x5E7C] = "9D C7"; // 幼
unicode_to_tod2[0x9803] = "9D C8"; // 頃
unicode_to_tod2[0x6F14] = "9D C9"; // 演
unicode_to_tod2[0x4ECB] = "9D CB"; // 介
unicode_to_tod2[0x985E] = "9D CC"; // 類
unicode_to_tod2[0x8179] = "9D CD"; // 腹
unicode_to_tod2[0x5F0F] = "9D CE"; // 式
unicode_to_tod2[0x5438] = "9D CF"; // 吸
unicode_to_tod2[0x6E05] = "9D D1"; // 清
unicode_to_tod2[0x5947] = "9D D2"; // 奇
unicode_to_tod2[0x8D08] = "9D D3"; // 贈
unicode_to_tod2[0x98F2] = "9D D4"; // 飲
unicode_to_tod2[0x9808] = "9D D6"; // 須
unicode_to_tod2[0x4EA4] = "9D D7"; // 交
unicode_to_tod2[0x97FF] = "9D D8"; // 響
unicode_to_tod2[0x66F2] = "9D D9"; // 曲
unicode_to_tod2[0x594F] = "9D DA"; // 奏
unicode_to_tod2[0x901F] = "9D DB"; // 速
unicode_to_tod2[0x534A] = "9D DC"; // 半
unicode_to_tod2[0x62E1] = "9D DD"; // 拡
unicode_to_tod2[0x7E2E] = "9D DE"; // 縮
unicode_to_tod2[0x4E86] = "9D DF"; // 了
unicode_to_tod2[0x5F84] = "9D E0"; // 径
unicode_to_tod2[0x5192] = "9D E1"; // 冒
unicode_to_tod2[0x8CDB] = "9D E2"; // 賛
unicode_to_tod2[0x96E2] = "9D E3"; // 離
unicode_to_tod2[0x8FF7] = "9D E4"; // 迷
unicode_to_tod2[0x60D1] = "9D E5"; // 惑
unicode_to_tod2[0x5B64] = "9D E6"; // 孤
unicode_to_tod2[0x5150] = "9D E7"; // 児
unicode_to_tod2[0x9662] = "9D E8"; // 院
unicode_to_tod2[0x5B5D] = "9D E9"; // 孝
unicode_to_tod2[0x9006] = "9D EA"; // 逆
unicode_to_tod2[0x8EE2] = "9D EB"; // 転
unicode_to_tod2[0x5854] = "9D EC"; // 塔
unicode_to_tod2[0x5831] = "9D ED"; // 報
unicode_to_tod2[0x67FB] = "9D EE"; // 査
unicode_to_tod2[0x968A] = "9D EF"; // 隊
unicode_to_tod2[0x8B77] = "9D F0"; // 護
unicode_to_tod2[0x885B] = "9D F1"; // 衛
unicode_to_tod2[0x4FA1] = "9D F2"; // 価
unicode_to_tod2[0x5024] = "9D F3"; // 値
unicode_to_tod2[0x7D19] = "9D F4"; // 紙
unicode_to_tod2[0x82E6] = "9D F5"; // 苦
unicode_to_tod2[0x6163] = "9D F6"; // 慣
unicode_to_tod2[0x8840] = "9D F7"; // 血
unicode_to_tod2[0x6D41] = "9D F8"; // 流
unicode_to_tod2[0x52B4] = "9D F9"; // 労
unicode_to_tod2[0x60DC] = "9D FA"; // 惜
unicode_to_tod2[0x6368] = "9D FB"; // 捨
unicode_to_tod2[0x8CEA] = "9D FC"; // 質
unicode_to_tod2[0x80F8] = "9E 40"; // 胸
unicode_to_tod2[0x6574] = "9E 41"; // 整
unicode_to_tod2[0x5E97] = "9E 42"; // 店
unicode_to_tod2[0x8E0F] = "9E 43"; // 踏
unicode_to_tod2[0x5DE8] = "9E 44"; // 巨
unicode_to_tod2[0x7834] = "9E 45"; // 破
unicode_to_tod2[0x8863] = "9E 46"; // 衣
unicode_to_tod2[0x72AF] = "9E 47"; // 犯
unicode_to_tod2[0x6355] = "9E 48"; // 捕
unicode_to_tod2[0x7262] = "9E 49"; // 牢
unicode_to_tod2[0x59CB] = "9E 4A"; // 始
unicode_to_tod2[0x5ACC] = "9E 4B"; // 嫌
unicode_to_tod2[0x904E] = "9E 4C"; // 過
unicode_to_tod2[0x53BB] = "9E 4D"; // 去
unicode_to_tod2[0x529F] = "9E 4E"; // 功
unicode_to_tod2[0x7E3E] = "9E 4F"; // 績
unicode_to_tod2[0x4E21] = "9E 50"; // 両
unicode_to_tod2[0x8CB8] = "9E 51"; // 貸
unicode_to_tod2[0x8033] = "9E 52"; // 耳
unicode_to_tod2[0x8DA3] = "9E 53"; // 趣
unicode_to_tod2[0x5263] = "9E 54"; // 剣
unicode_to_tod2[0x5E55] = "9E 55"; // 幕
unicode_to_tod2[0x8A93] = "9E 56"; // 誓
unicode_to_tod2[0x6B6F] = "9E 57"; // 歯
unicode_to_tod2[0x773C] = "9E 58"; // 眼
unicode_to_tod2[0x609F] = "9E 59"; // 悟
unicode_to_tod2[0x5439] = "9E 5A"; // 吹
unicode_to_tod2[0x6628] = "9E 5B"; // 昨
unicode_to_tod2[0x7389] = "9E 5D"; // 玉
unicode_to_tod2[0x9001] = "9E 5E"; // 送
unicode_to_tod2[0x5B57] = "9E 5F"; // 字
unicode_to_tod2[0x66B4] = "9E 60"; // 暴
unicode_to_tod2[0x6050] = "9E 62"; // 恐
unicode_to_tod2[0x8B1D] = "9E 63"; // 謝
unicode_to_tod2[0x8056] = "9E 64"; // 聖
unicode_to_tod2[0x7DCF] = "9E 65"; // 総
unicode_to_tod2[0x9069] = "9E 66"; // 適
unicode_to_tod2[0x9806] = "9E 67"; // 順
unicode_to_tod2[0x7D0D] = "9E 68"; // 納
unicode_to_tod2[0x6367] = "9E 69"; // 捧
unicode_to_tod2[0x5049] = "9E 6A"; // 偉
unicode_to_tod2[0x795D] = "9E 6B"; // 祝
unicode_to_tod2[0x798F] = "9E 6C"; // 福
unicode_to_tod2[0x75DB] = "9E 6D"; // 痛
unicode_to_tod2[0x53CB] = "9E 6E"; // 友
unicode_to_tod2[0x9AEA] = "9E 6F"; // 髪
unicode_to_tod2[0x77ED] = "9E 70"; // 短
unicode_to_tod2[0x6B8B] = "9E 71"; // 残
unicode_to_tod2[0x5FF5] = "9E 72"; // 念
unicode_to_tod2[0x62B1] = "9E 73"; // 抱
unicode_to_tod2[0x60A9] = "9E 74"; // 悩
unicode_to_tod2[0x7815] = "9E 75"; // 砕
unicode_to_tod2[0x5A01] = "9E 76"; // 威
unicode_to_tod2[0x52E2] = "9E 77"; // 勢
unicode_to_tod2[0x50E7] = "9E 78"; // 僧
unicode_to_tod2[0x6B63] = "9E 79"; // 正
unicode_to_tod2[0x89E3] = "9E 7A"; // 解
unicode_to_tod2[0x866B] = "9E 7B"; // 虫
unicode_to_tod2[0x4EC7] = "9E 7C"; // 仇
unicode_to_tod2[0x8A0E] = "9E 7D"; // 討
unicode_to_tod2[0x6255] = "9E 7E"; // 払
unicode_to_tod2[0x9ED9] = "9E 80"; // 黙
unicode_to_tod2[0x793A] = "9E 81"; // 示
unicode_to_tod2[0x5F93] = "9E 82"; // 従
unicode_to_tod2[0x5FD9] = "9E 83"; // 忙
unicode_to_tod2[0x8B01] = "9E 84"; // 謁
unicode_to_tod2[0x9031] = "9E 85"; // 週
unicode_to_tod2[0x6BD2] = "9E 86"; // 毒
unicode_to_tod2[0x982D] = "9E 87"; // 頭
unicode_to_tod2[0x9A5A] = "9E 88"; // 驚
unicode_to_tod2[0x6709] = "9E 89"; // 有
unicode_to_tod2[0x8352] = "9E 8A"; // 荒
unicode_to_tod2[0x5FA9] = "9E 8B"; // 復
unicode_to_tod2[0x5883] = "9E 8C"; // 境
unicode_to_tod2[0x9047] = "9E 8D"; // 遇
unicode_to_tod2[0x5065] = "9E 8E"; // 健
unicode_to_tod2[0x75C5] = "9E 90"; // 病
unicode_to_tod2[0x5F71] = "9E 91"; // 影
unicode_to_tod2[0x786C] = "9E 92"; // 硬
unicode_to_tod2[0x616E] = "9E 93"; // 慮
unicode_to_tod2[0x96F2] = "9E 94"; // 雲
unicode_to_tod2[0x8A33] = "9E 95"; // 訳
unicode_to_tod2[0x8A31] = "9E 96"; // 許
unicode_to_tod2[0x63DB] = "9E 97"; // 換
unicode_to_tod2[0x62D2] = "9E 98"; // 拒
unicode_to_tod2[0x707D] = "9E 99"; // 災
unicode_to_tod2[0x62E0] = "9E 9A"; // 拠
unicode_to_tod2[0x80A9] = "9E 9B"; // 肩
unicode_to_tod2[0x53EF] = "9E 9C"; // 可
unicode_to_tod2[0x80FD] = "9E 9D"; // 能
unicode_to_tod2[0x507D] = "9E 9E"; // 偽
unicode_to_tod2[0x5584] = "9E 9F"; // 善
unicode_to_tod2[0x9CE5] = "9E A0"; // 鳥
unicode_to_tod2[0x5DE3] = "9E A1"; // 巣
unicode_to_tod2[0x61A7] = "9E A2"; // 憧
unicode_to_tod2[0x8CC7] = "9E A3"; // 資
unicode_to_tod2[0x8A87] = "9E A4"; // 誇
unicode_to_tod2[0x7BA1] = "9E A5"; // 管
unicode_to_tod2[0x91CF] = "9E A6"; // 量
unicode_to_tod2[0x7E01] = "9E A7"; // 縁
unicode_to_tod2[0x611A] = "9E A8"; // 愚
unicode_to_tod2[0x90AA] = "9E A9"; // 邪
unicode_to_tod2[0x5BB9] = "9E AA"; // 容
unicode_to_tod2[0x8D66] = "9E AB"; // 赦
unicode_to_tod2[0x50CF] = "9E AC"; // 像
unicode_to_tod2[0x4EF0] = "9E AD"; // 仰
unicode_to_tod2[0x56F0] = "9E AE"; // 困
unicode_to_tod2[0x629E] = "9E AF"; // 択
unicode_to_tod2[0x5915] = "9E B0"; // 夕
unicode_to_tod2[0x6271] = "9E B1"; // 扱
unicode_to_tod2[0x6C5A] = "9E B3"; // 汚
unicode_to_tod2[0x7F70] = "9E B4"; // 罰
unicode_to_tod2[0x732B] = "9E B6"; // 猫
unicode_to_tod2[0x68D2] = "9E B7"; // 棒
unicode_to_tod2[0x7D30] = "9E B8"; // 細
unicode_to_tod2[0x70B9] = "9E B9"; // 点
unicode_to_tod2[0x88FD] = "9E BA"; // 製
unicode_to_tod2[0x77E2] = "9E BB"; // 矢
unicode_to_tod2[0x5C45] = "9E BC"; // 居
unicode_to_tod2[0x809D] = "9E BD"; // 肝
unicode_to_tod2[0x7B54] = "9E BE"; // 答
unicode_to_tod2[0x7FA9] = "9E BF"; // 義
unicode_to_tod2[0x52D9] = "9E C0"; // 務
unicode_to_tod2[0x7559] = "9E C1"; // 留
unicode_to_tod2[0x969C] = "9E C2"; // 障
unicode_to_tod2[0x8A13] = "9E C3"; // 訓
unicode_to_tod2[0x5F1F] = "9E C4"; // 弟
unicode_to_tod2[0x59B9] = "9E C5"; // 妹
unicode_to_tod2[0x9996] = "9E C6"; // 首
unicode_to_tod2[0x8FCE] = "9E C7"; // 迎
unicode_to_tod2[0x59C9] = "9E C8"; // 姉
unicode_to_tod2[0x59FF] = "9E C9"; // 姿
unicode_to_tod2[0x5C06] = "9E CA"; // 将
unicode_to_tod2[0x6563] = "9E CB"; // 散
unicode_to_tod2[0x7DF4] = "9E CC"; // 練
unicode_to_tod2[0x50CD] = "9E CE"; // 働
unicode_to_tod2[0x4F8B] = "9E CF"; // 例
unicode_to_tod2[0x5FD7] = "9E D0"; // 志
unicode_to_tod2[0x5224] = "9E D1"; // 判
unicode_to_tod2[0x5197] = "9E D2"; // 冗
unicode_to_tod2[0x5B98] = "9E D3"; // 官
unicode_to_tod2[0x81E8] = "9E D4"; // 臨
unicode_to_tod2[0x523B] = "9E D5"; // 刻
unicode_to_tod2[0x6F5C] = "9E D6"; // 潜
unicode_to_tod2[0x670D] = "9E D7"; // 服
unicode_to_tod2[0x4F59] = "9E D8"; // 余
unicode_to_tod2[0x8A08] = "9E D9"; // 計
unicode_to_tod2[0x4E89] = "9E DA"; // 争
unicode_to_tod2[0x60B2] = "9E DB"; // 悲
unicode_to_tod2[0x9589] = "9E DC"; // 閉
unicode_to_tod2[0x6C38] = "9E DD"; // 永
unicode_to_tod2[0x8010] = "9E DE"; // 耐
unicode_to_tod2[0x79FB] = "9E DF"; // 移
unicode_to_tod2[0x5019] = "9E E0"; // 候
unicode_to_tod2[0x7FD2] = "9E E1"; // 習
unicode_to_tod2[0x7F6A] = "9E E2"; // 罪
unicode_to_tod2[0x72EC] = "9E E3"; // 独
unicode_to_tod2[0x663C] = "9E E4"; // 昼
unicode_to_tod2[0x53CD] = "9E E5"; // 反
unicode_to_tod2[0x6C37] = "9E E6"; // 氷
unicode_to_tod2[0x59BB] = "9E E7"; // 妻
unicode_to_tod2[0x6CE8] = "9E E8"; // 注
unicode_to_tod2[0x8868] = "9E E9"; // 表
unicode_to_tod2[0x7A76] = "9E EA"; // 究
unicode_to_tod2[0x5FB3] = "9E EB"; // 徳
unicode_to_tod2[0x5203] = "9E EC"; // 刃
unicode_to_tod2[0x500D] = "9E ED"; // 倍
unicode_to_tod2[0x6D17] = "9E EE"; // 洗
unicode_to_tod2[0x7F36] = "9E EF"; // 缶
unicode_to_tod2[0x62BC] = "9E F0"; // 押
unicode_to_tod2[0x767B] = "9E F1"; // 登
unicode_to_tod2[0x63D0] = "9E F2"; // 提
unicode_to_tod2[0x5E38] = "9E F3"; // 常
unicode_to_tod2[0x5200] = "9E F4"; // 刀
unicode_to_tod2[0x6012] = "9E F5"; // 怒
unicode_to_tod2[0x624D] = "9E F6"; // 才
unicode_to_tod2[0x6728] = "9E F7"; // 木
unicode_to_tod2[0x5F6B] = "9E F8"; // 彫
unicode_to_tod2[0x592B] = "9E F9"; // 夫
unicode_to_tod2[0x5A66] = "9E FA"; // 婦
unicode_to_tod2[0x82B1] = "9E FB"; // 花
unicode_to_tod2[0x9CF4] = "9E FC"; // 鳴
unicode_to_tod2[0x796D] = "9F 40"; // 祭
unicode_to_tod2[0x9A12] = "9F 41"; // 騒
unicode_to_tod2[0x6CC1] = "9F 42"; // 況
unicode_to_tod2[0x5AC9] = "9F 43"; // 嫉
unicode_to_tod2[0x59AC] = "9F 44"; // 妬
unicode_to_tod2[0x501F] = "9F 45"; // 借
unicode_to_tod2[0x5BC4] = "9F 46"; // 寄
unicode_to_tod2[0x8336] = "9F 47"; // 茶
unicode_to_tod2[0x9152] = "9F 48"; // 酒
unicode_to_tod2[0x71C3] = "9F 49"; // 燃
unicode_to_tod2[0x6295] = "9F 4A"; // 投
unicode_to_tod2[0x5E0C] = "9F 4B"; // 希
unicode_to_tod2[0x8CBB] = "9F 4C"; // 費
unicode_to_tod2[0x4E26] = "9F 4D"; // 並
unicode_to_tod2[0x559C] = "9F 4E"; // 喜
unicode_to_tod2[0x8FBA] = "9F 4F"; // 辺
unicode_to_tod2[0x4ED4] = "9F 50"; // 仔
unicode_to_tod2[0x5FB4] = "9F 51"; // 徴
unicode_to_tod2[0x574A] = "9F 52"; // 坊
unicode_to_tod2[0x98FC] = "9F 53"; // 飼
unicode_to_tod2[0x8096] = "9F 54"; // 肖
unicode_to_tod2[0x535A] = "9F 55"; // 博
unicode_to_tod2[0x5929] = "9F 56"; // 天
unicode_to_tod2[0x8ECD] = "9F 57"; // 軍
unicode_to_tod2[0x7956] = "9F 58"; // 祖
unicode_to_tod2[0x68DA] = "9F 59"; // 棚
unicode_to_tod2[0x8B1B] = "9F 5A"; // 講
unicode_to_tod2[0x533B] = "9F 5D"; // 医
unicode_to_tod2[0x52C9] = "9F 5E"; // 勉
unicode_to_tod2[0x5E03] = "9F 5F"; // 布
unicode_to_tod2[0x8A2A] = "9F 60"; // 訪
unicode_to_tod2[0x6DF7] = "9F 61"; // 混
unicode_to_tod2[0x4FB5] = "9F 62"; // 侵
unicode_to_tod2[0x7591] = "9F 63"; // 疑
unicode_to_tod2[0x5100] = "9F 64"; // 儀
unicode_to_tod2[0x52AA] = "9F 65"; // 努
unicode_to_tod2[0x76CA] = "9F 66"; // 益
unicode_to_tod2[0x9580] = "9F 67"; // 門
unicode_to_tod2[0x8A66] = "9F 68"; // 試
unicode_to_tod2[0x53B3] = "9F 69"; // 厳
unicode_to_tod2[0x88CF] = "9F 6A"; // 裏
unicode_to_tod2[0x8170] = "9F 6B"; // 腰
unicode_to_tod2[0x5E25] = "9F 6C"; // 帥
unicode_to_tod2[0x5C01] = "9F 6D"; // 封
unicode_to_tod2[0x67F1] = "9F 6E"; // 柱
unicode_to_tod2[0x7E4B] = "9F 6F"; // 繋
unicode_to_tod2[0x4E18] = "9F 70"; // 丘
unicode_to_tod2[0x7551] = "9F 71"; // 畑
unicode_to_tod2[0x5FCD] = "9F 72"; // 忍
unicode_to_tod2[0x5384] = "9F 73"; // 厄
unicode_to_tod2[0x5AC1] = "9F 74"; // 嫁
unicode_to_tod2[0x5C55] = "9F 75"; // 展
unicode_to_tod2[0x6C57] = "9F 76"; // 汗
unicode_to_tod2[0x8ECA] = "9F 77"; // 車
unicode_to_tod2[0x63A5] = "9F 78"; // 接
unicode_to_tod2[0x808C] = "9F 7A"; // 肌
unicode_to_tod2[0x9B42] = "9F 7B"; // 魂
unicode_to_tod2[0x7968] = "9F 7C"; // 票
unicode_to_tod2[0x6A4B] = "9F 7D"; // 橋
unicode_to_tod2[0x5A18] = "9F 7E"; // 娘
unicode_to_tod2[0x6839] = "9F 80"; // 根
unicode_to_tod2[0x6016] = "9F 81"; // 怖
unicode_to_tod2[0x5E45] = "9F 82"; // 幅
unicode_to_tod2[0x885D] = "9F 83"; // 衝
unicode_to_tod2[0x5C04] = "9F 84"; // 射
unicode_to_tod2[0x7F60] = "9F 85"; // 罠
unicode_to_tod2[0x5E8A] = "9F 86"; // 床
unicode_to_tod2[0x4E08] = "9F 87"; // 丈
unicode_to_tod2[0x533A] = "9F 88"; // 区
unicode_to_tod2[0x679D] = "9F 8A"; // 枝
unicode_to_tod2[0x53E4] = "9F 8B"; // 古
unicode_to_tod2[0x9802] = "9F 8C"; // 頂
unicode_to_tod2[0x6A2A] = "9F 8D"; // 横
unicode_to_tod2[0x62FE] = "9F 8E"; // 拾
unicode_to_tod2[0x826F] = "9F 8F"; // 良
unicode_to_tod2[0x7A6B] = "9F 90"; // 穫
unicode_to_tod2[0x627F] = "9F 91"; // 承
unicode_to_tod2[0x68EE] = "9F 92"; // 森
unicode_to_tod2[0x96D1] = "9F 93"; // 雑
unicode_to_tod2[0x8CA8] = "9F 94"; // 貨
unicode_to_tod2[0x65CF] = "9F 95"; // 族
unicode_to_tod2[0x7701] = "9F 96"; // 省
unicode_to_tod2[0x6383] = "9F 97"; // 掃
unicode_to_tod2[0x9664] = "9F 98"; // 除
unicode_to_tod2[0x7CA7] = "9F 99"; // 粧
unicode_to_tod2[0x6065] = "9F 9A"; // 恥
unicode_to_tod2[0x6FEF] = "9F 9B"; // 濯
unicode_to_tod2[0x5E2F] = "9F 9C"; // 帯
unicode_to_tod2[0x7B56] = "9F 9D"; // 策
unicode_to_tod2[0x88D5] = "9F 9E"; // 裕
unicode_to_tod2[0x65BD] = "9F 9F"; // 施
unicode_to_tod2[0x55B6] = "9F A0"; // 営
unicode_to_tod2[0x512A] = "9F A1"; // 優
unicode_to_tod2[0x9AA8] = "9F A2"; // 骨
unicode_to_tod2[0x57CB] = "9F A3"; // 埋
unicode_to_tod2[0x8E8D] = "9F A4"; // 躍
unicode_to_tod2[0x51AC] = "9F A5"; // 冬
unicode_to_tod2[0x5727] = "9F A7"; // 圧
unicode_to_tod2[0x8FEB] = "9F A8"; // 迫
unicode_to_tod2[0x7344] = "9F A9"; // 獄
unicode_to_tod2[0x518D] = "9F AA"; // 再
unicode_to_tod2[0x4EA1] = "9F AB"; // 亡
unicode_to_tod2[0x96E8] = "9F AC"; // 雨
unicode_to_tod2[0x67AF] = "9F AD"; // 枯
unicode_to_tod2[0x5674] = "9F AE"; // 噴
unicode_to_tod2[0x4E45] = "9F AF"; // 久
unicode_to_tod2[0x8870] = "9F B0"; // 衰
unicode_to_tod2[0x920D] = "9F B1"; // 鈍
unicode_to_tod2[0x51CD] = "9F B2"; // 凍
unicode_to_tod2[0x6607] = "9F B3"; // 昇
unicode_to_tod2[0x4F4E] = "9F B4"; // 低
unicode_to_tod2[0x7802] = "9F B5"; // 砂
unicode_to_tod2[0x542B] = "9F B6"; // 含
unicode_to_tod2[0x6676] = "9F B7"; // 晶
unicode_to_tod2[0x9EC4] = "9F BA"; // 黄
unicode_to_tod2[0x970A] = "9F BB"; // 霊
unicode_to_tod2[0x53EC] = "9F BC"; // 召
unicode_to_tod2[0x84BC] = "9F BE"; // 蒼
unicode_to_tod2[0x7D05] = "9F BF"; // 紅
unicode_to_tod2[0x8349] = "9F C1"; // 草
unicode_to_tod2[0x7A2E] = "9F C2"; // 種
unicode_to_tod2[0x74F6] = "9F C3"; // 瓶
unicode_to_tod2[0x9C57] = "9F C4"; // 鱗
unicode_to_tod2[0x73CD] = "9F C5"; // 珍
unicode_to_tod2[0x7363] = "9F C6"; // 獣
unicode_to_tod2[0x6B20] = "9F C9"; // 欠
unicode_to_tod2[0x5404] = "9F CA"; // 各
unicode_to_tod2[0x7159] = "9F CB"; // 煙
unicode_to_tod2[0x9020] = "9F CD"; // 造
unicode_to_tod2[0x70AD] = "9F CE"; // 炭
unicode_to_tod2[0x7089] = "9F CF"; // 炉
unicode_to_tod2[0x69FD] = "9F D0"; // 槽
unicode_to_tod2[0x82D7] = "9F D1"; // 苗
unicode_to_tod2[0x690D] = "9F D2"; // 植
unicode_to_tod2[0x5468] = "9F D3"; // 周
unicode_to_tod2[0x56F2] = "9F D4"; // 囲
unicode_to_tod2[0x9375] = "9F D5"; // 鍵
unicode_to_tod2[0x7D1A] = "9F D6"; // 級
unicode_to_tod2[0x5E72] = "9F D7"; // 干
unicode_to_tod2[0x5302] = "9F D8"; // 匂
unicode_to_tod2[0x6D99] = "9F D9"; // 涙
unicode_to_tod2[0x7403] = "9F DA"; // 球
unicode_to_tod2[0x6F2C] = "9F DB"; // 漬
unicode_to_tod2[0x81ED] = "9F DD"; // 臭
unicode_to_tod2[0x6BDB] = "9F DE"; // 毛
unicode_to_tod2[0x76AE] = "9F E0"; // 皮
unicode_to_tod2[0x4E38] = "9F E1"; // 丸
unicode_to_tod2[0x4E73] = "9F E3"; // 乳
unicode_to_tod2[0x80C3] = "9F E5"; // 胃
unicode_to_tod2[0x8FB2] = "9F E9"; // 農
unicode_to_tod2[0x516B] = "9F EA"; // 八
unicode_to_tod2[0x5B6B] = "9F EB"; // 孫
unicode_to_tod2[0x67D4] = "9F EC"; // 柔
unicode_to_tod2[0x9EA6] = "9F ED"; // 麦
unicode_to_tod2[0x7C89] = "9F EE"; // 粉
unicode_to_tod2[0x822C] = "9F EF"; // 般
unicode_to_tod2[0x65AC] = "9F F5"; // 斬
unicode_to_tod2[0x57FA] = "9F F6"; // 基
unicode_to_tod2[0x539A] = "9F F8"; // 厚
unicode_to_tod2[0x96F0] = "9F F9"; // 雰
unicode_to_tod2[0x6BBA] = "E0 40"; // 殺
unicode_to_tod2[0x5C3E] = "E0 41"; // 尾
unicode_to_tod2[0x51A0] = "E0 42"; // 冠
unicode_to_tod2[0x5320] = "E0 43"; // 匠
unicode_to_tod2[0x935B] = "E0 44"; // 鍛
unicode_to_tod2[0x8A89] = "E0 46"; // 誉
unicode_to_tod2[0x708E] = "E0 47"; // 炎
unicode_to_tod2[0x7ADC] = "E0 48"; // 竜
unicode_to_tod2[0x7D0B] = "E0 4B"; // 紋
unicode_to_tod2[0x5275] = "E0 4C"; // 創
unicode_to_tod2[0x7259] = "E0 4D"; // 牙
unicode_to_tod2[0x5CA9] = "E0 4E"; // 岩
unicode_to_tod2[0x526F] = "E0 51"; // 副
unicode_to_tod2[0x846C] = "E0 52"; // 葬
unicode_to_tod2[0x92FC] = "E0 53"; // 鋼
unicode_to_tod2[0x6613] = "E0 54"; // 易
unicode_to_tod2[0x88C2] = "E0 55"; // 裂
unicode_to_tod2[0x6148] = "E0 58"; // 慈
unicode_to_tod2[0x5FE0] = "E0 59"; // 忠
unicode_to_tod2[0x5186] = "E0 5A"; // 円
unicode_to_tod2[0x5E1D] = "E0 5D"; // 帝
unicode_to_tod2[0x5D50] = "E0 5E"; // 嵐
unicode_to_tod2[0x4E59] = "E0 5F"; // 乙
unicode_to_tod2[0x6756] = "E0 60"; // 杖
unicode_to_tod2[0x8077] = "E0 61"; // 職
unicode_to_tod2[0x6BB4] = "E0 62"; // 殴
unicode_to_tod2[0x6A29] = "E0 63"; // 権
unicode_to_tod2[0x6A19] = "E0 64"; // 標
unicode_to_tod2[0x72C2] = "E0 66"; // 狂
unicode_to_tod2[0x7BC0] = "E0 67"; // 節
unicode_to_tod2[0x5982] = "E0 6A"; // 如
unicode_to_tod2[0x89D2] = "E0 6B"; // 角
unicode_to_tod2[0x9752] = "E0 6C"; // 青
unicode_to_tod2[0x9280] = "E0 70"; // 銀
unicode_to_tod2[0x5DE6] = "E0 71"; // 左
unicode_to_tod2[0x6771] = "E0 72"; // 東
unicode_to_tod2[0x5339] = "E0 75"; // 匹
unicode_to_tod2[0x8A60] = "E0 78"; // 詠
unicode_to_tod2[0x5531] = "E0 79"; // 唱
unicode_to_tod2[0x67C4] = "E0 7A"; // 柄
unicode_to_tod2[0x65A7] = "E0 7B"; // 斧
unicode_to_tod2[0x69CD] = "E0 7C"; // 槍
unicode_to_tod2[0x77DB] = "E0 80"; // 矛
unicode_to_tod2[0x9244] = "E0 81"; // 鉄
unicode_to_tod2[0x9663] = "E0 82"; // 陣
unicode_to_tod2[0x56FA] = "E0 85"; // 固
unicode_to_tod2[0x7070] = "E0 87"; // 灰
unicode_to_tod2[0x51B6] = "E0 88"; // 冶
unicode_to_tod2[0x79D1] = "E0 89"; // 科
unicode_to_tod2[0x99C6] = "E0 8A"; // 駆
unicode_to_tod2[0x9AB8] = "E0 8D"; // 骸
unicode_to_tod2[0x7DD1] = "E0 8E"; // 緑
unicode_to_tod2[0x72E9] = "E0 91"; // 狩
unicode_to_tod2[0x5F13] = "E0 92"; // 弓
unicode_to_tod2[0x5F3E] = "E0 93"; // 弾
unicode_to_tod2[0x6249] = "E0 94"; // 扉
unicode_to_tod2[0x8CAB] = "E0 95"; // 貫
unicode_to_tod2[0x93A7] = "E0 96"; // 鎧
unicode_to_tod2[0x4E03] = "E0 97"; // 七
unicode_to_tod2[0x8ECC] = "E0 98"; // 軌
unicode_to_tod2[0x5410] = "E0 99"; // 吐
unicode_to_tod2[0x5C3D] = "E0 9A"; // 尽
unicode_to_tod2[0x74B0] = "E0 9C"; // 環
unicode_to_tod2[0x7E2B] = "E0 9D"; // 縫
unicode_to_tod2[0x677F] = "E0 9E"; // 板
unicode_to_tod2[0x7CF8] = "E0 9F"; // 糸
unicode_to_tod2[0x7532] = "E0 A0"; // 甲
unicode_to_tod2[0x6B8A] = "E0 A1"; // 殊
unicode_to_tod2[0x7D99] = "E0 A2"; // 継
unicode_to_tod2[0x585E] = "E0 A3"; // 塞
unicode_to_tod2[0x7DB2] = "E0 A5"; // 網
unicode_to_tod2[0x7DE8] = "E0 A6"; // 編
unicode_to_tod2[0x6D0B] = "E0 A7"; // 洋
unicode_to_tod2[0x5CF6] = "E0 A8"; // 島
unicode_to_tod2[0x515C] = "E0 AA"; // 兜
unicode_to_tod2[0x7BC9] = "E0 AC"; // 築
unicode_to_tod2[0x9811] = "E0 AD"; // 頑
unicode_to_tod2[0x6F22] = "E0 AE"; // 漢
unicode_to_tod2[0x5E3D] = "E0 AF"; // 帽
unicode_to_tod2[0x8584] = "E0 B0"; // 薄
unicode_to_tod2[0x6FC3] = "E0 B1"; // 濃
unicode_to_tod2[0x6109] = "E0 B2"; // 愉
unicode_to_tod2[0x8F2A] = "E0 B3"; // 輪
unicode_to_tod2[0x53CA] = "E0 B4"; // 及
unicode_to_tod2[0x55B0] = "E0 B5"; // 喰
unicode_to_tod2[0x81F4] = "E0 B7"; // 致
unicode_to_tod2[0x99C4] = "E0 B9"; // 駄
unicode_to_tod2[0x7BED] = "E0 BA"; // 篭
unicode_to_tod2[0x6388] = "E0 BB"; // 授
unicode_to_tod2[0x888B] = "E0 BC"; // 袋
unicode_to_tod2[0x4F50] = "E0 BF"; // 佐
unicode_to_tod2[0x8CE2] = "E0 C0"; // 賢
unicode_to_tod2[0x7652] = "E0 C1"; // 癒
unicode_to_tod2[0x504F] = "E0 C2"; // 偏
unicode_to_tod2[0x75BE] = "E0 C3"; // 疾
unicode_to_tod2[0x5DE7] = "E0 C4"; // 巧
unicode_to_tod2[0x4F34] = "E0 C5"; // 伴
unicode_to_tod2[0x9A13] = "E0 CA"; // 験
unicode_to_tod2[0x83EF] = "E0 CB"; // 華
unicode_to_tod2[0x59EB] = "E0 CC"; // 姫
unicode_to_tod2[0x8C61] = "E0 CD"; // 象
unicode_to_tod2[0x9774] = "E0 CE"; // 靴
unicode_to_tod2[0x8E74] = "E0 D0"; // 蹴
unicode_to_tod2[0x67A0] = "E0 D1"; // 枠
unicode_to_tod2[0x8B0E] = "E0 D2"; // 謎
unicode_to_tod2[0x96A3] = "E0 D3"; // 隣
unicode_to_tod2[0x5F92] = "E0 D4"; // 徒
unicode_to_tod2[0x643A] = "E0 D5"; // 携
unicode_to_tod2[0x5875] = "E0 D6"; // 塵
unicode_to_tod2[0x7E70] = "E0 D7"; // 繰
unicode_to_tod2[0x5782] = "E0 DC"; // 垂
unicode_to_tod2[0x53E9] = "E0 DF"; // 叩
unicode_to_tod2[0x7247] = "E0 E0"; // 片
unicode_to_tod2[0x8DF3] = "E0 E1"; // 跳
unicode_to_tod2[0x62DB] = "E0 E2"; // 招
unicode_to_tod2[0x898F] = "E0 E3"; // 規
unicode_to_tod2[0x6A21] = "E0 E4"; // 模
unicode_to_tod2[0x96F7] = "E0 E5"; // 雷
unicode_to_tod2[0x9418] = "E0 E6"; // 鐘
unicode_to_tod2[0x9707] = "E0 E7"; // 震
unicode_to_tod2[0x7BC4] = "E0 E9"; // 範
unicode_to_tod2[0x8907] = "E0 EA"; // 複
unicode_to_tod2[0x8DDD] = "E0 EC"; // 距
unicode_to_tod2[0x9271] = "E0 ED"; // 鉱
unicode_to_tod2[0x88C1] = "E0 F0"; // 裁
unicode_to_tod2[0x6F06] = "E0 F1"; // 漆
unicode_to_tod2[0x6DF5] = "E0 F2"; // 淵
unicode_to_tod2[0x7CFB] = "E0 F3"; // 系
unicode_to_tod2[0x5217] = "E0 F4"; // 列
unicode_to_tod2[0x9650] = "E0 F5"; // 限
unicode_to_tod2[0x63A7] = "E0 F6"; // 控
unicode_to_tod2[0x6E80] = "E0 F7"; // 満
unicode_to_tod2[0x9694] = "E0 F8"; // 隔
unicode_to_tod2[0x5618] = "E0 F9"; // 嘘
unicode_to_tod2[0x62AB] = "E0 FB"; // 披
unicode_to_tod2[0x9732] = "E0 FC"; // 露
unicode_to_tod2[0x4EE4] = "E1 40"; // 令
unicode_to_tod2[0x62B5] = "E1 41"; // 抵
unicode_to_tod2[0x6297] = "E1 42"; // 抗
unicode_to_tod2[0x75FA] = "E1 43"; // 痺
unicode_to_tod2[0x5EF6] = "E1 45"; // 延
unicode_to_tod2[0x79D2] = "E1 46"; // 秒
unicode_to_tod2[0x7E1B] = "E1 47"; // 縛
unicode_to_tod2[0x906D] = "E1 48"; // 遭
unicode_to_tod2[0x68B0] = "E1 4A"; // 械
unicode_to_tod2[0x7015] = "E1 4B"; // 瀕
unicode_to_tod2[0x5FAE] = "E1 4C"; // 微
unicode_to_tod2[0x718A] = "E1 4D"; // 熊
unicode_to_tod2[0x6D1E] = "E1 4E"; // 洞
unicode_to_tod2[0x7A9F] = "E1 4F"; // 窟
unicode_to_tod2[0x6D88] = "E1 50"; // 消
unicode_to_tod2[0x4E09] = "E1 51"; // 三
unicode_to_tod2[0x3005] = "E1 52"; // 々
unicode_to_tod2[0x2605] = "E1 53"; // ★
unicode_to_tod2[0xFF5A] = "E1 54"; // ｚ
unicode_to_tod2[0x7FFC] = "E1 59"; // 翼
unicode_to_tod2[0x6BBB] = "E1 5A"; // 殻
unicode_to_tod2[0x500B] = "E1 60"; // 個
unicode_to_tod2[0x524A] = "E1 61"; // 削
unicode_to_tod2[0x8F9E] = "E1 62"; // 辞
unicode_to_tod2[0x63FA] = "E1 63"; // 揺
unicode_to_tod2[0x9B45] = "E1 64"; // 魅
unicode_to_tod2[0x54C0] = "E1 65"; // 哀
unicode_to_tod2[0x691C] = "E1 66"; // 検
unicode_to_tod2[0x9084] = "E1 67"; // 還
unicode_to_tod2[0x8247] = "E1 68"; // 艇
unicode_to_tod2[0x7372] = "E1 69"; // 獲
unicode_to_tod2[0x618E] = "E1 6A"; // 憎
unicode_to_tod2[0x6075] = "E1 6B"; // 恵
unicode_to_tod2[0x7A3D] = "E1 6C"; // 稽
unicode_to_tod2[0x78E8] = "E1 6D"; // 磨
unicode_to_tod2[0x9298] = "E1 6E"; // 銘
unicode_to_tod2[0x7DCA] = "E1 70"; // 緊
unicode_to_tod2[0x77B3] = "E1 7C"; // 瞳
unicode_to_tod2[0x589C] = "E1 7D"; // 墜
unicode_to_tod2[0x7832] = "E1 80"; // 砲
unicode_to_tod2[0x53CC] = "E1 81"; // 双
unicode_to_tod2[0x62F3] = "E1 82"; // 拳
unicode_to_tod2[0x8986] = "E1 83"; // 覆
unicode_to_tod2[0x63A8] = "E1 84"; // 推
unicode_to_tod2[0x6E2C] = "E1 85"; // 測
unicode_to_tod2[0x8CBC] = "E1 86"; // 貼
unicode_to_tod2[0x89E6] = "E1 87"; // 触
unicode_to_tod2[0x61B6] = "E1 88"; // 憶
unicode_to_tod2[0x975E] = "E1 8A"; // 非
unicode_to_tod2[0x63E1] = "E1 8B"; // 握
unicode_to_tod2[0x6620] = "E1 8C"; // 映
unicode_to_tod2[0x5199] = "E1 8D"; // 写
unicode_to_tod2[0x6E09] = "E1 8E"; // 渉
unicode_to_tod2[0x8EF8] = "E1 8F"; // 軸
unicode_to_tod2[0x8FF0] = "E1 90"; // 述
unicode_to_tod2[0x7C8B] = "E1 91"; // 粋
unicode_to_tod2[0x59A8] = "E1 92"; // 妨
unicode_to_tod2[0x5409] = "E1 93"; // 吉
unicode_to_tod2[0x934B] = "E1 94"; // 鍋
unicode_to_tod2[0x4E01] = "E1 97"; // 丁
unicode_to_tod2[0x51F6] = "E1 98"; // 凶
unicode_to_tod2[0x967D] = "E1 99"; // 陽
unicode_to_tod2[0x6CB3] = "E1 9A"; // 河
unicode_to_tod2[0x8108] = "E1 9B"; // 脈
unicode_to_tod2[0x8D85] = "E1 9C"; // 超
unicode_to_tod2[0x9818] = "E1 9D"; // 領
unicode_to_tod2[0x98EF] = "E1 9F"; // 飯
unicode_to_tod2[0x5BFF] = "E1 A0"; // 寿
unicode_to_tod2[0x9913] = "E1 A1"; // 餓
unicode_to_tod2[0x53F8] = "E1 A2"; // 司
unicode_to_tod2[0x8377] = "E1 A3"; // 荷
unicode_to_tod2[0x62C5] = "E1 A4"; // 担
unicode_to_tod2[0x81D3] = "E1 A5"; // 臓
unicode_to_tod2[0x30F6] = "E1 A6"; // ヶ
unicode_to_tod2[0x544A] = "E1 A7"; // 告
unicode_to_tod2[0x6790] = "E1 A8"; // 析
unicode_to_tod2[0x900F] = "E1 A9"; // 透
unicode_to_tod2[0x7B4B] = "E1 AA"; // 筋
unicode_to_tod2[0x52B1] = "E1 AB"; // 励
unicode_to_tod2[0x770B] = "E1 AC"; // 看
unicode_to_tod2[0x76BF] = "E1 AD"; // 皿
unicode_to_tod2[0x8A8C] = "E1 AE"; // 誌
unicode_to_tod2[0x7891] = "E1 AF"; // 碑
unicode_to_tod2[0x711A] = "E1 B0"; // 焚
unicode_to_tod2[0x9F62] = "E1 B3"; // 齢
unicode_to_tod2[0x965B] = "E1 B4"; // 陛
unicode_to_tod2[0x59D1] = "E1 B5"; // 姑
unicode_to_tod2[0x6B53] = "E1 B6"; // 歓
unicode_to_tod2[0x7E4A] = "E1 B9"; // 繊
unicode_to_tod2[0x7C9B] = "E1 BA"; // 粛
unicode_to_tod2[0x5C02] = "E1 BB"; // 専
unicode_to_tod2[0x5DF1] = "E1 BC"; // 己
unicode_to_tod2[0x7D39] = "E1 BD"; // 紹
unicode_to_tod2[0x7C97] = "E1 BE"; // 粗
unicode_to_tod2[0x5F80] = "E1 BF"; // 往
unicode_to_tod2[0x90CE] = "E1 C0"; // 郎
unicode_to_tod2[0x61F8] = "E1 C1"; // 懸
unicode_to_tod2[0x9022] = "E1 C2"; // 逢
unicode_to_tod2[0x702C] = "E1 C3"; // 瀬
unicode_to_tod2[0x676F] = "E1 C4"; // 杯
unicode_to_tod2[0x5CB8] = "E1 C5"; // 岸
unicode_to_tod2[0x6CF3] = "E1 C6"; // 泳
unicode_to_tod2[0x8A70] = "E1 C7"; // 詰
unicode_to_tod2[0x8017] = "E1 C8"; // 耗
unicode_to_tod2[0x916C] = "E1 C9"; // 酬
unicode_to_tod2[0x565B] = "E1 CA"; // 噛
unicode_to_tod2[0x865A] = "E1 CB"; // 虚
unicode_to_tod2[0x84EE] = "E1 CC"; // 蓮
unicode_to_tod2[0x8E0A] = "E1 CD"; // 踊
unicode_to_tod2[0x62D3] = "E1 CE"; // 拓
unicode_to_tod2[0x5D07] = "E1 CF"; // 崇
unicode_to_tod2[0x4F38] = "E1 D0"; // 伸
unicode_to_tod2[0x829D] = "E1 D1"; // 芝
unicode_to_tod2[0x811A] = "E1 D2"; // 脚
unicode_to_tod2[0x56DB] = "E1 D3"; // 四
unicode_to_tod2[0x5893] = "E1 D4"; // 墓
unicode_to_tod2[0x99D2] = "E1 D5"; // 駒
unicode_to_tod2[0x5351] = "E1 D6"; // 卑
unicode_to_tod2[0x52A3] = "E1 D7"; // 劣
unicode_to_tod2[0x672B] = "E1 D8"; // 末
unicode_to_tod2[0x514B] = "E1 D9"; // 克
unicode_to_tod2[0x5426] = "E1 DA"; // 否
unicode_to_tod2[0x65D7] = "E1 DB"; // 旗
unicode_to_tod2[0x79E9] = "E1 DC"; // 秩
unicode_to_tod2[0x5E8F] = "E1 DD"; // 序
unicode_to_tod2[0x7D46] = "E1 DE"; // 絆
unicode_to_tod2[0x9177] = "E1 DF"; // 酷
unicode_to_tod2[0x5C64] = "E1 E0"; // 層
unicode_to_tod2[0x7814] = "E1 E1"; // 研
unicode_to_tod2[0x5A92] = "E1 E2"; // 媒
unicode_to_tod2[0x95A3] = "E1 E3"; // 閣
unicode_to_tod2[0x5DE1] = "E1 E4"; // 巡
unicode_to_tod2[0x99D0] = "E1 E5"; // 駐
unicode_to_tod2[0x5C6F] = "E1 E6"; // 屯
unicode_to_tod2[0x6311] = "E1 E7"; // 挑
unicode_to_tod2[0x614E] = "E1 E8"; // 慎
unicode_to_tod2[0x81C6] = "E1 E9"; // 臆
unicode_to_tod2[0x602F] = "E1 EA"; // 怯
unicode_to_tod2[0x63EE] = "E1 EB"; // 揮
unicode_to_tod2[0x8B39] = "E1 EC"; // 謹
unicode_to_tod2[0x8A95] = "E1 ED"; // 誕
unicode_to_tod2[0x73ED] = "E1 EE"; // 班
unicode_to_tod2[0x652A] = "E1 EF"; // 攪
unicode_to_tod2[0x6212] = "E1 F0"; // 戒
unicode_to_tod2[0x8001] = "E1 F1"; // 老
unicode_to_tod2[0x6392] = "E1 F2"; // 排
unicode_to_tod2[0x4F0F] = "E1 F3"; // 伏
unicode_to_tod2[0x5211] = "E1 F4"; // 刑
unicode_to_tod2[0x4E7E] = "E1 F5"; // 乾
unicode_to_tod2[0x9665] = "E1 F6"; // 陥
unicode_to_tod2[0x4E5E] = "E1 F7"; // 乞
unicode_to_tod2[0x81F3] = "E1 F8"; // 至
unicode_to_tod2[0x8074] = "E1 F9"; // 聴
unicode_to_tod2[0x7B26] = "E1 FA"; // 符
unicode_to_tod2[0x5BA3] = "E1 FB"; // 宣
unicode_to_tod2[0x8133] = "E1 FC"; // 脳
unicode_to_tod2[0x51CC] = "E2 40"; // 凌
unicode_to_tod2[0x99D5] = "E2 41"; // 駕
unicode_to_tod2[0x6B6A] = "E2 42"; // 歪
unicode_to_tod2[0xFF4D] = "E2 43"; // ｍ
unicode_to_tod2[0xFF4B] = "E2 44"; // ｋ
unicode_to_tod2[0xFF47] = "E2 45"; // ｇ
unicode_to_tod2[0x628A] = "E2 46"; // 把
unicode_to_tod2[0x6F20] = "E2 47"; // 漠
unicode_to_tod2[0x9332] = "E2 49"; // 録
unicode_to_tod2[0x5FB9] = "E2 4A"; // 徹
unicode_to_tod2[0x6C0F] = "E2 4B"; // 氏
unicode_to_tod2[0x64B9] = "E2 4C"; // 撹
unicode_to_tod2[0x963B] = "E2 4D"; // 阻
unicode_to_tod2[0x6E07] = "E2 4E"; // 渇
unicode_to_tod2[0x8B90] = "E2 4F"; // 讐
unicode_to_tod2[0x6068] = "E2 50"; // 恨
unicode_to_tod2[0x5374] = "E2 51"; // 却
unicode_to_tod2[0x985B] = "E2 52"; // 顛
unicode_to_tod2[0x5C90] = "E2 53"; // 岐
unicode_to_tod2[0x5F57] = "E2 56"; // 彗
unicode_to_tod2[0x9670] = "E2 58"; // 陰
unicode_to_tod2[0x8B00] = "E2 59"; // 謀
unicode_to_tod2[0x5DDD] = "E2 5A"; // 川
unicode_to_tod2[0x6CBF] = "E2 5B"; // 沿
unicode_to_tod2[0x6CC9] = "E2 5D"; // 泉
unicode_to_tod2[0x72AC] = "E2 5E"; // 犬
unicode_to_tod2[0x6162] = "E2 61"; // 慢
unicode_to_tod2[0x59D4] = "E2 63"; // 委
unicode_to_tod2[0x61A9] = "E2 64"; // 憩
unicode_to_tod2[0x7D66] = "E2 66"; // 給
unicode_to_tod2[0x5BAE] = "E2 68"; // 宮
unicode_to_tod2[0x7D2B] = "E2 69"; // 紫
unicode_to_tod2[0x71ED] = "E2 6A"; // 燭
unicode_to_tod2[0x706F] = "E2 6B"; // 灯
unicode_to_tod2[0x83CC] = "E2 6E"; // 菌
unicode_to_tod2[0x8AB2] = "E2 6F"; // 課
unicode_to_tod2[0x5EAD] = "E2 70"; // 庭
unicode_to_tod2[0x8846] = "E2 71"; // 衆
unicode_to_tod2[0x4ED9] = "E2 74"; // 仙
unicode_to_tod2[0x592E] = "E2 75"; // 央
unicode_to_tod2[0x6E6F] = "E2 76"; // 湯
unicode_to_tod2[0x5442] = "E2 77"; // 呂
unicode_to_tod2[0x6D78] = "E2 78"; // 浸
unicode_to_tod2[0x660F] = "E2 7B"; // 昏
unicode_to_tod2[0x70BA] = "E2 7C"; // 為
unicode_to_tod2[0x5237] = "E2 7D"; // 刷
unicode_to_tod2[0x6691] = "E2 7E"; // 暑
unicode_to_tod2[0x5B63] = "E2 80"; // 季
unicode_to_tod2[0x511F] = "E2 81"; // 償
unicode_to_tod2[0x5974] = "E2 82"; // 奴
unicode_to_tod2[0x635C] = "E2 83"; // 捜
unicode_to_tod2[0x8CA1] = "E2 84"; // 財
unicode_to_tod2[0x5949] = "E2 85"; // 奉
unicode_to_tod2[0x5E2B] = "E2 86"; // 師
unicode_to_tod2[0x8CFC] = "E2 87"; // 購
unicode_to_tod2[0x7642] = "E2 88"; // 療
unicode_to_tod2[0x6C60] = "E2 89"; // 池
unicode_to_tod2[0x7F85] = "E2 8A"; // 羅
unicode_to_tod2[0x6182] = "E2 8B"; // 憂
unicode_to_tod2[0x8A55] = "E2 8C"; // 評
unicode_to_tod2[0x4E94] = "E2 8F"; // 五
unicode_to_tod2[0x7E26] = "E2 90"; // 縦
unicode_to_tod2[0x8F29] = "E2 91"; // 輩
unicode_to_tod2[0x52C5] = "E2 92"; // 勅
unicode_to_tod2[0x8ACB] = "E2 93"; // 請
unicode_to_tod2[0x68C4] = "E2 94"; // 棄
unicode_to_tod2[0x60E7] = "E2 95"; // 惧
unicode_to_tod2[0x76E3] = "E2 96"; // 監
unicode_to_tod2[0x6EDD] = "E2 97"; // 滝
unicode_to_tod2[0x92AD] = "E2 98"; // 銭
unicode_to_tod2[0x596E] = "E2 99"; // 奮
unicode_to_tod2[0x7D14] = "E2 9A"; // 純
unicode_to_tod2[0x8CAF] = "E2 9E"; // 貯
unicode_to_tod2[0x8535] = "E2 9F"; // 蔵
unicode_to_tod2[0x7DAD] = "E2 A1"; // 維
unicode_to_tod2[0x6821] = "E2 A2"; // 校
unicode_to_tod2[0x932C] = "E2 A3"; // 錬
unicode_to_tod2[0x633A] = "E2 A4"; // 挺
unicode_to_tod2[0x5C09] = "E2 A6"; // 尉
unicode_to_tod2[0x4F73] = "E2 A7"; // 佳
unicode_to_tod2[0x614C] = "E2 A8"; // 慌
unicode_to_tod2[0x51C4] = "E2 AA"; // 凄
unicode_to_tod2[0x70B8] = "E2 AB"; // 炸
unicode_to_tod2[0x8015] = "E2 AD"; // 耕
unicode_to_tod2[0x6279] = "E2 AE"; // 批
unicode_to_tod2[0x5B97] = "E2 AF"; // 宗
unicode_to_tod2[0x723A] = "E2 B0"; // 爺
unicode_to_tod2[0x790E] = "E2 B1"; // 礎
unicode_to_tod2[0x7CE7] = "E2 B2"; // 糧
unicode_to_tod2[0x84C4] = "E2 B3"; // 蓄
unicode_to_tod2[0x8F38] = "E2 B4"; // 輸
unicode_to_tod2[0x8266] = "E2 B5"; // 艦
unicode_to_tod2[0x642D] = "E2 B6"; // 搭
unicode_to_tod2[0x8F09] = "E2 B7"; // 載
unicode_to_tod2[0x52E7] = "E2 B8"; // 勧
unicode_to_tod2[0x5352] = "E2 B9"; // 卒
unicode_to_tod2[0x5642] = "E2 BA"; // 噂
unicode_to_tod2[0x6E56] = "E2 BB"; // 湖
unicode_to_tod2[0x5B85] = "E2 BC"; // 宅
unicode_to_tod2[0x52E4] = "E2 BD"; // 勤
unicode_to_tod2[0x731B] = "E2 BE"; // 猛
unicode_to_tod2[0x7686] = "E2 BF"; // 皆
unicode_to_tod2[0x6F54] = "E2 C0"; // 潔
unicode_to_tod2[0x93E1] = "E2 C1"; // 鏡
unicode_to_tod2[0x9E97] = "E2 C2"; // 麗
unicode_to_tod2[0x66F9] = "E2 C3"; // 曹
unicode_to_tod2[0x7384] = "E2 C4"; // 玄
unicode_to_tod2[0x5BC2] = "E2 C5"; // 寂
unicode_to_tod2[0x58C7] = "E2 C6"; // 壇
unicode_to_tod2[0x5815] = "E2 C7"; // 堕
unicode_to_tod2[0x67B6] = "E2 C8"; // 架
unicode_to_tod2[0x64EC] = "E2 C9"; // 擬
unicode_to_tod2[0x9283] = "E2 CA"; // 銃
unicode_to_tod2[0x8CA2] = "E2 CB"; // 貢
unicode_to_tod2[0x732E] = "E2 CC"; // 献
unicode_to_tod2[0x9685] = "E2 CE"; // 隅
unicode_to_tod2[0x8A69] = "E2 CF"; // 詩
unicode_to_tod2[0x541F] = "E2 D0"; // 吟
unicode_to_tod2[0x8457] = "E2 D1"; // 著
unicode_to_tod2[0x5360] = "E2 D3"; // 占
unicode_to_tod2[0x767E] = "E2 D4"; // 百
unicode_to_tod2[0x6562] = "E2 D6"; // 敢
unicode_to_tod2[0x60E8] = "E2 D7"; // 惨
unicode_to_tod2[0x7D22] = "E2 D8"; // 索
unicode_to_tod2[0x6A39] = "E2 D9"; // 樹
unicode_to_tod2[0x6797] = "E2 DA"; // 林
unicode_to_tod2[0x906E] = "E2 DB"; // 遮
unicode_to_tod2[0x6DBC] = "E2 DC"; // 涼
unicode_to_tod2[0x7C92] = "E2 DD"; // 粒
unicode_to_tod2[0x62CD] = "E2 DE"; // 拍
unicode_to_tod2[0x697C] = "E2 DF"; // 楼
unicode_to_tod2[0x93AE] = "E2 E0"; // 鎮
unicode_to_tod2[0x7267] = "E2 E1"; // 牧
unicode_to_tod2[0x6734] = "E2 E2"; // 朴
unicode_to_tod2[0x76FE] = "E2 E3"; // 盾
unicode_to_tod2[0x6838] = "E2 E4"; // 核
unicode_to_tod2[0x7687] = "E2 E5"; // 皇
unicode_to_tod2[0x5F8B] = "E2 E6"; // 律
unicode_to_tod2[0x5036] = "E2 E7"; // 倶
unicode_to_tod2[0x5E7D] = "E2 E8"; // 幽
unicode_to_tod2[0x516D] = "E2 EB"; // 六
unicode_to_tod2[0x51A5] = "E2 EC"; // 冥
unicode_to_tod2[0x4E95] = "E2 ED"; // 井
unicode_to_tod2[0x6238] = "E2 EE"; // 戸
unicode_to_tod2[0x61D0] = "E2 EF"; // 懐
unicode_to_tod2[0x5145] = "E2 F0"; // 充
unicode_to_tod2[0x8EDF] = "E2 F1"; // 軟
unicode_to_tod2[0x518A] = "E2 F2"; // 冊
unicode_to_tod2[0x50DA] = "E2 F3"; // 僚
unicode_to_tod2[0x5F01] = "E2 F4"; // 弁
unicode_to_tod2[0x8A5E] = "E2 F5"; // 詞
unicode_to_tod2[0x7763] = "E2 F6"; // 督
unicode_to_tod2[0x6EDE] = "E2 F7"; // 滞
unicode_to_tod2[0x6155] = "E2 F8"; // 慕
unicode_to_tod2[0x5606] = "E2 F9"; // 嘆
unicode_to_tod2[0x6EB6] = "E2 FA"; // 溶
unicode_to_tod2[0x5378] = "E2 FB"; // 卸
unicode_to_tod2[0x517C] = "E2 FC"; // 兼
unicode_to_tod2[0x6670] = "E3 40"; // 晰
unicode_to_tod2[0x7165] = "E3 41"; // 煥
unicode_to_tod2[0x51E1] = "E3 42"; // 凡
unicode_to_tod2[0x72ED] = "E3 49"; // 狭
unicode_to_tod2[0x9700] = "E3 4D"; // 需
unicode_to_tod2[0x6ED1] = "E3 4E"; // 滑
unicode_to_tod2[0x984D] = "E3 4F"; // 額
unicode_to_tod2[0x8896] = "E3 50"; // 袖
unicode_to_tod2[0x8CA9] = "E3 51"; // 販
unicode_to_tod2[0x5E33] = "E3 52"; // 帳
unicode_to_tod2[0x7C3F] = "E3 53"; // 簿
unicode_to_tod2[0x9676] = "E3 55"; // 陶
unicode_to_tod2[0x5075] = "E3 56"; // 偵
unicode_to_tod2[0x60A3] = "E3 57"; // 患
unicode_to_tod2[0x75C7] = "E3 58"; // 症
unicode_to_tod2[0x54B2] = "E3 59"; // 咲
unicode_to_tod2[0x714E] = "E3 5A"; // 煎
unicode_to_tod2[0x7248] = "E3 5D"; // 版
unicode_to_tod2[0x901D] = "E3 5F"; // 逝
unicode_to_tod2[0x9396] = "E3 60"; // 鎖
unicode_to_tod2[0x733F] = "E3 61"; // 猿
unicode_to_tod2[0x7A93] = "E3 62"; // 窓
unicode_to_tod2[0x6168] = "E3 63"; // 慨
unicode_to_tod2[0x4FD7] = "E3 64"; // 俗
unicode_to_tod2[0x7768] = "E3 65"; // 睨
unicode_to_tod2[0x7AF6] = "E3 66"; // 競
unicode_to_tod2[0x7D33] = "E3 67"; // 紳
unicode_to_tod2[0x6D6A] = "E3 68"; // 浪
unicode_to_tod2[0x7656] = "E3 69"; // 癖
unicode_to_tod2[0x63B4] = "E3 6A"; // 掴
unicode_to_tod2[0x60DA] = "E3 6B"; // 惚
unicode_to_tod2[0x57F7] = "E3 6C"; // 執
unicode_to_tod2[0x695A] = "E3 6F"; // 楚
unicode_to_tod2[0x91C8] = "E3 71"; // 釈
unicode_to_tod2[0x672D] = "E3 72"; // 札
unicode_to_tod2[0x79C0] = "E3 73"; // 秀
unicode_to_tod2[0x80A5] = "E3 74"; // 肥
unicode_to_tod2[0x96CC] = "E3 75"; // 雌
unicode_to_tod2[0x98E2] = "E3 76"; // 飢
unicode_to_tod2[0x7E55] = "E3 77"; // 繕
unicode_to_tod2[0x59D3] = "E3 78"; // 姓
unicode_to_tod2[0x6170] = "E3 7A"; // 慰
unicode_to_tod2[0x98FD] = "E3 7B"; // 飽
unicode_to_tod2[0x6982] = "E3 7C"; // 概
unicode_to_tod2[0x514D] = "E3 7D"; // 免
unicode_to_tod2[0x75AB] = "E3 7E"; // 疫
unicode_to_tod2[0x6CE5] = "E3 80"; // 泥
unicode_to_tod2[0x5C3B] = "E3 81"; // 尻
unicode_to_tod2[0x8107] = "E3 82"; // 脇
unicode_to_tod2[0x84B8] = "E3 83"; // 蒸
unicode_to_tod2[0x6E7F] = "E3 84"; // 湿
unicode_to_tod2[0x6F84] = "E3 85"; // 澄
unicode_to_tod2[0x5F81] = "E3 86"; // 征
unicode_to_tod2[0x7DE0] = "E3 87"; // 締
unicode_to_tod2[0x6625] = "E3 88"; // 春
unicode_to_tod2[0x66C7] = "E3 89"; // 曇
unicode_to_tod2[0x6349] = "E3 8A"; // 捉
unicode_to_tod2[0x5256] = "E3 8B"; // 剖
unicode_to_tod2[0x8B19] = "E3 8C"; // 謙
unicode_to_tod2[0x7FA4] = "E3 8D"; // 群
unicode_to_tod2[0x6687] = "E3 8E"; // 暇
unicode_to_tod2[0x7126] = "E3 8F"; // 焦
unicode_to_tod2[0x59A5] = "E3 90"; // 妥
unicode_to_tod2[0x4FC4] = "E3 91"; // 俄
unicode_to_tod2[0x902E] = "E3 92"; // 逮
unicode_to_tod2[0x62D8] = "E3 93"; // 拘
unicode_to_tod2[0x8105] = "E3 94"; // 脅
unicode_to_tod2[0x6F64] = "E3 95"; // 潤
unicode_to_tod2[0x8B72] = "E3 96"; // 譲
unicode_to_tod2[0x80BA] = "E3 97"; // 肺
unicode_to_tod2[0x6DAF] = "E3 98"; // 涯
unicode_to_tod2[0x6458] = "E3 99"; // 摘
unicode_to_tod2[0x82BD] = "E3 9A"; // 芽
unicode_to_tod2[0x4E5D] = "E3 9B"; // 九
unicode_to_tod2[0x64A4] = "E3 9C"; // 撤
unicode_to_tod2[0x52D8] = "E3 9D"; // 勘
unicode_to_tod2[0x878D] = "E3 9E"; // 融
unicode_to_tod2[0x8CED] = "E3 9F"; // 賭
unicode_to_tod2[0x50BE] = "E3 A0"; // 傾
unicode_to_tod2[0x533F] = "E3 A1"; // 匿
unicode_to_tod2[0x8AA0] = "E3 A2"; // 誠
unicode_to_tod2[0x2025] = "E3 A3"; // ‥
unicode_to_tod2[0x6D5C] = "E3 A5"; // 浜
unicode_to_tod2[0x5E2D] = "E3 A6"; // 席
unicode_to_tod2[0x5F69] = "E3 A7"; // 彩
unicode_to_tod2[0x983B] = "E3 A8"; // 頻
unicode_to_tod2[0x58EE] = "E3 A9"; // 壮
unicode_to_tod2[0x6DB2] = "E3 AA"; // 液
unicode_to_tod2[0x589F] = "E3 AB"; // 墟
unicode_to_tod2[0x8C37] = "E3 AC"; // 谷
unicode_to_tod2[0x81B3] = "E3 AD"; // 膳
unicode_to_tod2[0x4EC1] = "E3 AE"; // 仁
unicode_to_tod2[0x76C6] = "E3 AF"; // 盆
unicode_to_tod2[0x683D] = "E3 B0"; // 栽
unicode_to_tod2[0x57F9] = "E3 B1"; // 培
unicode_to_tod2[0x9B3C] = "E3 B3"; // 鬼
unicode_to_tod2[0x7E04] = "E3 B4"; // 縄
unicode_to_tod2[0x68AF] = "E3 B5"; // 梯
unicode_to_tod2[0x7C60] = "E3 B6"; // 籠
unicode_to_tod2[0x5D16] = "E4 4C"; // 崖
unicode_to_tod2[0x71E5] = "E4 65"; // 燥
unicode_to_tod2[0x8ED2] = "E4 66"; // 軒

<|start_filename|>ps2/archive/PyTOR2_old/v7/backup_pak1.bat<|end_filename|>
for %%i in (*.pak1) do ren "%%i" "%%i_bak"
pause

<|start_filename|>ps2/scripts/abcde/Build_Run_AllTools.bat<|end_filename|>
python Build_Run.py slps_AllTools 600 C0228  28 2

<|start_filename|>ps2/scripts/abcde/TOD2_extract_item.bat<|end_filename|>
perl abcde.pl -m bin2text -cm abcde::Cartographer "SLPS_251.72" "slps_item_script.txt" slps_item_dump -s
pause

<|start_filename|>ps2/archive/PyTOR2_old/v6/pack_pak3.bat<|end_filename|>
for %%i in (*) do pakcomposer.exe -c "%%i" -3 -x -u -v
pause

<|start_filename|>ps2/archive/PyTOR2_old/v7/09_pack_scpk.bat<|end_filename|>
python tod2_ps2.py 9
pause

<|start_filename|>ps2/archive/PyTOR2_old/v6/pack_pak1.bat<|end_filename|>
for %%i in (*) do pakcomposer.exe -c "%%i" -1 -x -u -v -tod2_ps2_skit_padding
REM remove -tod2_ps2_skit_padding for non-skit files
pause

<|start_filename|>ps2/scripts/abcde/TOD2_dump.bat<|end_filename|>
perl abcde.pl -m bin2text -cm abcde::Cartographer "SLPS_251.72" "slps_dump_item.txt" slps_item_test -s
pause

<|start_filename|>ps2/archive/PyTOR2_old/v7/rename_extension.bat<|end_filename|>
for /f "delims=" %%i in ('dir /a-d/b/s *.pak1_bak') do ren "%%i" "%%~ni.pak1"
pause

<|start_filename|>tm2_converter/ttemma.Helpers/ByteEncoding.cs<|end_filename|>
﻿using System;
using System.ComponentModel;
using System.Diagnostics;

namespace ttemma.Helpers
{
	// Token: 0x02000002 RID: 2
	public enum ByteEncoding
	{
		// Token: 0x04000002 RID: 2
		[Description("Not set byte encoding")]
		None,
		// Token: 0x04000003 RID: 3
		[Description("Read bytes from right to left.")]
		Little,
		// Token: 0x04000004 RID: 4
		[Description("Read bytes from left to right.")]
		Big
	}
}


<|start_filename|>ps2/scripts/abcde/Build_Run_Artes.bat<|end_filename|>
python Build_Run.py slps_Artes 600 B75AC 28 3

<|start_filename|>ps2/archive/PyTOR2_old/v7/05_extract_fpb.bat<|end_filename|>
python tod2_ps2.py 5
pause

<|start_filename|>ps2/archive/PyTOR2_old/v7/03_pack_fpb.bat<|end_filename|>
python tod2_ps2.py 3
pause

<|start_filename|>tm2_converter/TalesOfDestinyTm2Converter/TextureTypeEnum.cs<|end_filename|>
﻿using System;

namespace TalesOfDestinyTm2Converter
{
	// Token: 0x02000006 RID: 6
	public enum TextureTypeEnum
	{
		// Token: 0x04000014 RID: 20
		Indexed_4bit = 20,
		// Token: 0x04000015 RID: 21
		Indexed_8bit = 19
	}
}


<|start_filename|>ps2/PyTOD2/bat/B_move_skits.bat<|end_filename|>
for /r "%~dp0PAK1" %%i in (*.sced) do (
	move /y "%%~i" "%~dp0SKITS\SCED"
)
pause

<|start_filename|>tm2_converter/TalesOfDestinyTm2Converter/TextureBlock.cs<|end_filename|>
﻿using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Imaging;
using ttemma.Helpers;

namespace TalesOfDestinyTm2Converter
{
	// Token: 0x02000005 RID: 5
	public class TextureBlock
	{
		// Token: 0x1700000D RID: 13
		// (get) Token: 0x06000027 RID: 39 RVA: 0x00003758 File Offset: 0x00002358
		// (set) Token: 0x06000028 RID: 40 RVA: 0x00003760 File Offset: 0x00002360
		public int Length { get; set; }

		// Token: 0x1700000E RID: 14
		// (get) Token: 0x06000029 RID: 41 RVA: 0x00003769 File Offset: 0x00002369
		// (set) Token: 0x0600002A RID: 42 RVA: 0x00003771 File Offset: 0x00002371
		public int TypeBinary { get; set; }

		// Token: 0x1700000F RID: 15
		// (get) Token: 0x0600002B RID: 43 RVA: 0x0000377A File Offset: 0x0000237A
		public TextureTypeEnum Type
		{
			get
			{
				return (TextureTypeEnum)this.TypeBinary;
			}
		}

		// Token: 0x17000010 RID: 16
		// (get) Token: 0x0600002C RID: 44 RVA: 0x00003782 File Offset: 0x00002382
		// (set) Token: 0x0600002D RID: 45 RVA: 0x0000378A File Offset: 0x0000238A
		public int Dummy { get; set; }

		// Token: 0x17000011 RID: 17
		// (get) Token: 0x0600002E RID: 46 RVA: 0x00003793 File Offset: 0x00002393
		// (set) Token: 0x0600002F RID: 47 RVA: 0x0000379B File Offset: 0x0000239B
		public short Width { get; set; }

		// Token: 0x17000012 RID: 18
		// (get) Token: 0x06000030 RID: 48 RVA: 0x000037A4 File Offset: 0x000023A4
		// (set) Token: 0x06000031 RID: 49 RVA: 0x000037AC File Offset: 0x000023AC
		public short Height { get; set; }

		// Token: 0x17000013 RID: 19
		// (get) Token: 0x06000032 RID: 50 RVA: 0x000037B5 File Offset: 0x000023B5
		// (set) Token: 0x06000033 RID: 51 RVA: 0x000037BD File Offset: 0x000023BD
		public byte[] Data { get; set; }

		// Token: 0x06000034 RID: 52 RVA: 0x000037C8 File Offset: 0x000023C8
		public static TextureBlock Read(StreamHelper streamHelper)
		{
			TextureBlock textureBlock = new TextureBlock();
			textureBlock.Length = streamHelper.ReadInt32(ByteEncoding.None);
			textureBlock.TypeBinary = streamHelper.ReadInt32(ByteEncoding.None);
			textureBlock.Dummy = streamHelper.ReadInt32(ByteEncoding.None);
			textureBlock.Width = streamHelper.ReadInt16(ByteEncoding.None);
			textureBlock.Height = streamHelper.ReadInt16(ByteEncoding.None);
			textureBlock.Data = streamHelper.ReadByteArray(textureBlock.Length - 16);
			return textureBlock;
		}

		// Token: 0x06000035 RID: 53 RVA: 0x00003834 File Offset: 0x00002434
		public void Write(StreamHelper streamHelper)
		{
			streamHelper.Write<int>(this.Length, ByteEncoding.None);
			streamHelper.Write<int>(this.TypeBinary, ByteEncoding.None);
			streamHelper.Write<int>(this.Dummy, ByteEncoding.None);
			streamHelper.Write<short>(this.Width, ByteEncoding.None);
			streamHelper.Write<short>(this.Height, ByteEncoding.None);
			streamHelper.WriteByteArray(this.Data);
		}

		// Token: 0x06000036 RID: 54 RVA: 0x00003890 File Offset: 0x00002490
		public PixelFormat GetPixelFormat()
		{
			TextureTypeEnum type = this.Type;
			if (type == TextureTypeEnum.Indexed_8bit)
			{
				return PixelFormat.Format8bppIndexed;
			}
			if (type == TextureTypeEnum.Indexed_4bit)
			{
				return PixelFormat.Format4bppIndexed;
			}
			throw new NotSupportedException(string.Format("Not supported texture type 0x{0:X}", this.TypeBinary));
		}

		// Token: 0x06000037 RID: 55 RVA: 0x000038D4 File Offset: 0x000024D4
		public void ApplyTextureData(Bitmap bitmap, Dictionary<int, Color> palette)
		{
			TextureTypeEnum type = this.Type;
			if (type == TextureTypeEnum.Indexed_8bit)
			{
				this.Apply8bit(bitmap, palette);
				return;
			}
			if (type == TextureTypeEnum.Indexed_4bit)
			{
				this.Apply4bit(bitmap, palette);
				return;
			}
			throw new NotSupportedException(string.Format("Not supported texture type 0x{0:X}", this.TypeBinary));
		}

		// Token: 0x06000038 RID: 56 RVA: 0x00003920 File Offset: 0x00002520
		private void Apply4bit(Bitmap bitmap, Dictionary<int, Color> palette)
		{
			int num = 0;
			for (int i = 0; i < (int)this.Height; i++)
			{
				for (int j = 0; j < (int)this.Width; j += 2)
				{
					byte b = this.Data[num++];
					byte key = (byte)(b >> 4 & 15);
					byte key2 = (Byte)(b & 15);
					bitmap.SetPixel(j, i, palette[(int)key2]);
					bitmap.SetPixel(j + 1, i, palette[(int)key]);
				}
			}
		}

		// Token: 0x06000039 RID: 57 RVA: 0x0000398C File Offset: 0x0000258C
		private void Apply8bit(Bitmap bitmap, Dictionary<int, Color> palette)
		{
			int num = 0;
			for (int i = 0; i < (int)this.Height; i++)
			{
				for (int j = 0; j < (int)this.Width; j++)
				{
					byte key = this.Data[num++];
					bitmap.SetPixel(j, i, palette[(int)key]);
				}
			}
		}

		// Token: 0x0600003A RID: 58 RVA: 0x000039DC File Offset: 0x000025DC
		public void ApplyBitmapData(Bitmap bitmap, Dictionary<Color, int> indexByColor)
		{
			TextureTypeEnum type = this.Type;
			if (type == TextureTypeEnum.Indexed_8bit)
			{
				this.ApplyBitmap8bit(bitmap, indexByColor);
				return;
			}
			if (type == TextureTypeEnum.Indexed_4bit)
			{
				this.ApplyBitmap4bit(bitmap, indexByColor);
				return;
			}
			throw new NotSupportedException(string.Format("Not supported texture type 0x{0:X}", this.TypeBinary));
		}

		// Token: 0x0600003B RID: 59 RVA: 0x00003A28 File Offset: 0x00002628
		public void ApplyBitmap4bit(Bitmap bitmap, Dictionary<Color, int> indexByColor)
		{
			List<byte> list = new List<byte>();
			for (int i = 0; i < (int)this.Height; i++)
			{
				for (int j = 0; j < (int)this.Width; j += 2)
				{
					Color pixel = bitmap.GetPixel(j, i);
					Color pixel2 = bitmap.GetPixel(j + 1, i);
					int num;
					if (!indexByColor.TryGetValue(pixel, out num))
					{
						throw new Exception("Convert error.");
					}
					int num2;
					if (!indexByColor.TryGetValue(pixel2, out num2))
					{
						throw new Exception("Convert error.");
					}
					int num3 = num2 << 4 | num;
					list.Add((byte)num3);
				}
			}
			this.Data = list.ToArray();
		}

		// Token: 0x0600003C RID: 60 RVA: 0x00003AC0 File Offset: 0x000026C0
		public void ApplyBitmap8bit(Bitmap bitmap, Dictionary<Color, int> indexByColor)
		{
			List<byte> list = new List<byte>();
			for (int i = 0; i < (int)this.Height; i++)
			{
				for (int j = 0; j < (int)this.Width; j++)
				{
					Color pixel = bitmap.GetPixel(j, i);
					int num;
					if (!indexByColor.TryGetValue(pixel, out num))
					{
						throw new Exception("Convert error.");
					}
					list.Add((byte)num);
				}
			}
			this.Data = list.ToArray();
		}
	}
}


<|start_filename|>docs/style.css<|end_filename|>
a, a:visited {
  color: #555555;
}
a:hover {
  color: #888888;
}
body {
  margin-left: 5%;
  margin-right: 5%;
}
h1{
  background-color: #dddddd;
  margin-left: -3%;
  padding: 2%;
}
#discord-widget {
  float: right;
  margin-right: 5%;
}
/*alternate styling for small windows or mobile devices*/
@media screen and (max-width: 600px) {
  #discord-widget {
    display: block;
    float: none;
    margin-left: auto;
    margin-right: auto;
  }
  body {
    text-align: center;
  }
  ul {
    display: inline-block;
  }
}


<|start_filename|>ps2/archive/PyTOR2_old/v6/13_move_sced_pak1.bat<|end_filename|>
python move_skits.py 2
pause

<|start_filename|>ps2/scripts/abcde/TOD2_extract_Names.bat<|end_filename|>
perl abcde.pl -m bin2text -cm abcde::Cartographer "SLPS_251.72" slps_Names_script.txt slps_Names_dump -s
pause

<|start_filename|>ps2/archive/PyTOR2_old/v7/07_extract_sced.bat<|end_filename|>
python tod2_ps2.py 7
pause

<|start_filename|>ps2/archive/PyTOR2_old/v6/unpack_pak0.bat<|end_filename|>
for %%i in (*.pak0) do pakcomposer.exe -d "%%i" -0 -x -u
pause

<|start_filename|>ps2/archive/PyTOR2_old/v7/B_copy_sced_pak1.bat<|end_filename|>
setlocal enabledelayedexpansion
set folderpath=%~dp0SKITS
for %%f in (%folderpath%\SCED_NEW\*.sced) do (
  set "foldername=%%~nf"
  move "%%f" "%~dp0PAK1\!foldername:~0,-5!"
) 
pause

<|start_filename|>tm2_converter/TalesOfDestinyTm2Converter/Program.cs<|end_filename|>
﻿using System;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;

namespace TalesOfDestinyTm2Converter
{
	// Token: 0x02000004 RID: 4
	internal class Program
	{
		// Token: 0x06000025 RID: 37 RVA: 0x00003668 File Offset: 0x00002268
		private static void Main(string[] args)
		{
			if (args.Length == 0)
			{
				return;
			}
			if (args[0] == "-e")
			{
				TM2 tm = TM2.ReadBinary(args[1]);
				string filename = args[1] + ".png";
				string value;
				if (!tm.Validate(out value))
				{
					Console.WriteLine(value);
					filename = args[1] + ".ERROR.png";
				}
				tm.GetImage(null, null).Save(filename, ImageFormat.Png);
			}
			if (args[0] == "-r")
			{
				TM2 tm2 = TM2.ReadBinary(args[1]);
				string str;
				if (!tm2.Validate(out str))
				{
					Console.WriteLine("Repack error: " + str);
					return;
				}
				if (!File.Exists(args[1] + ".png"))
				{
					Console.WriteLine("Repack error: file " + args[1] + ".png not found");
					return;
				}
				Bitmap image = (Bitmap)Image.FromFile(args[1] + ".png");
				tm2.SetImage(image);
				tm2.Save(args[1]);
			}
		}
	}
}


<|start_filename|>tm2_converter/TalesOfDestinyTm2Converter/Header.cs<|end_filename|>
﻿using System;
using ttemma.Helpers;

namespace TalesOfDestinyTm2Converter
{
	// Token: 0x02000002 RID: 2
	public class Header
	{
		// Token: 0x17000001 RID: 1
		// (get) Token: 0x06000001 RID: 1 RVA: 0x000030D4 File Offset: 0x00001CD4
		// (set) Token: 0x06000002 RID: 2 RVA: 0x000030DC File Offset: 0x00001CDC
		public byte CountTextures { get; set; }

		// Token: 0x17000002 RID: 2
		// (get) Token: 0x06000003 RID: 3 RVA: 0x000030E5 File Offset: 0x00001CE5
		// (set) Token: 0x06000004 RID: 4 RVA: 0x000030ED File Offset: 0x00001CED
		public byte CountPalette { get; set; }

		// Token: 0x17000003 RID: 3
		// (get) Token: 0x06000005 RID: 5 RVA: 0x000030F6 File Offset: 0x00001CF6
		// (set) Token: 0x06000006 RID: 6 RVA: 0x000030FE File Offset: 0x00001CFE
		public byte CountUnknown { get; set; }

		// Token: 0x17000004 RID: 4
		// (get) Token: 0x06000007 RID: 7 RVA: 0x00003107 File Offset: 0x00001D07
		// (set) Token: 0x06000008 RID: 8 RVA: 0x0000310F File Offset: 0x00001D0F
		public byte Dummy { get; set; }

		// Token: 0x17000005 RID: 5
		// (get) Token: 0x06000009 RID: 9 RVA: 0x00003118 File Offset: 0x00001D18
		// (set) Token: 0x0600000A RID: 10 RVA: 0x00003120 File Offset: 0x00001D20
		public int Dummy2 { get; set; }

		// Token: 0x17000006 RID: 6
		// (get) Token: 0x0600000B RID: 11 RVA: 0x00003129 File Offset: 0x00001D29
		// (set) Token: 0x0600000C RID: 12 RVA: 0x00003131 File Offset: 0x00001D31
		public int Dummy3 { get; set; }

		// Token: 0x0600000D RID: 13 RVA: 0x0000313C File Offset: 0x00001D3C
		public static Header Read(StreamHelper streamHelper)
		{
			Header header = new Header();
			uint num = streamHelper.ReadUInt32(ByteEncoding.Big);
			if (num != 1414345280U)
			{
				throw new NotSupportedException(string.Format("Invalid magic 0x{0:X}", num));
			}
			header.CountTextures = streamHelper.ReadByte();
			header.CountPalette = streamHelper.ReadByte();
			header.CountUnknown = streamHelper.ReadByte();
			header.Dummy = streamHelper.ReadByte();
			header.Dummy2 = streamHelper.ReadInt32(ByteEncoding.None);
			header.Dummy3 = streamHelper.ReadInt32(ByteEncoding.None);
			return header;
		}
	}
}


<|start_filename|>ps2/archive/PyTOR2_old/v7/08_insert_sced.bat<|end_filename|>
python tod2_ps2.py 8
pause

<|start_filename|>tm2_converter/TalesOfDestinyTm2Converter/PaletteBlock.cs<|end_filename|>
﻿using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using ttemma.Helpers;

namespace TalesOfDestinyTm2Converter
{
	// Token: 0x02000003 RID: 3
	public class PaletteBlock
	{
		// Token: 0x17000007 RID: 7
		// (get) Token: 0x0600000F RID: 15 RVA: 0x000031C6 File Offset: 0x00001DC6
		// (set) Token: 0x06000010 RID: 16 RVA: 0x000031CE File Offset: 0x00001DCE
		public int Length { get; set; }

		// Token: 0x17000008 RID: 8
		// (get) Token: 0x06000011 RID: 17 RVA: 0x000031D7 File Offset: 0x00001DD7
		// (set) Token: 0x06000012 RID: 18 RVA: 0x000031DF File Offset: 0x00001DDF
		public int Dummy { get; set; }

		// Token: 0x17000009 RID: 9
		// (get) Token: 0x06000013 RID: 19 RVA: 0x000031E8 File Offset: 0x00001DE8
		// (set) Token: 0x06000014 RID: 20 RVA: 0x000031F0 File Offset: 0x00001DF0
		public int Dummy2 { get; set; }

		// Token: 0x1700000A RID: 10
		// (get) Token: 0x06000015 RID: 21 RVA: 0x000031F9 File Offset: 0x00001DF9
		// (set) Token: 0x06000016 RID: 22 RVA: 0x00003201 File Offset: 0x00001E01
		public short Width { get; set; }

		// Token: 0x1700000B RID: 11
		// (get) Token: 0x06000017 RID: 23 RVA: 0x0000320A File Offset: 0x00001E0A
		// (set) Token: 0x06000018 RID: 24 RVA: 0x00003212 File Offset: 0x00001E12
		public short Height { get; set; }

		// Token: 0x1700000C RID: 12
		// (get) Token: 0x06000019 RID: 25 RVA: 0x0000321B File Offset: 0x00001E1B
		// (set) Token: 0x0600001A RID: 26 RVA: 0x00003223 File Offset: 0x00001E23
		public List<Color> Colors { get; set; }

		// Token: 0x0600001B RID: 27 RVA: 0x0000322C File Offset: 0x00001E2C
		private static Color ReadColor(StreamHelper streamHelper)
		{
			uint num = streamHelper.ReadUInt32(ByteEncoding.Big);
			byte red = (byte)(num >> 24 & 255U);
			byte green = (byte)(num >> 16 & 255U);
			byte blue = (byte)(num >> 8 & 255U);
			return Color.FromArgb((int)((byte)Math.Min((num & 255U) << 1, 255U)), (int)red, (int)green, (int)blue);
		}

		// Token: 0x0600001C RID: 28 RVA: 0x0000327E File Offset: 0x00001E7E
		private static void WriteColor(StreamHelper streamHelper, Color color)
		{
			streamHelper.WriteByte(color.R);
			streamHelper.WriteByte(color.G);
			streamHelper.WriteByte(color.B);
			streamHelper.WriteByte((byte)(color.A & 128));
		}

		// Token: 0x0600001D RID: 29 RVA: 0x000032BC File Offset: 0x00001EBC
		private static List<Color> ReadColorBlock(StreamHelper streamHelper)
		{
			List<Color> list = new List<Color>(8);
			for (int i = 0; i < 8; i++)
			{
				list.Add(PaletteBlock.ReadColor(streamHelper));
			}
			return list;
		}

		// Token: 0x0600001E RID: 30 RVA: 0x000032E9 File Offset: 0x00001EE9
		private List<Color> GetColorBlock(int idx)
		{
			return this.Colors.Skip(idx * 8).Take(8).ToList<Color>();
		}

		// Token: 0x0600001F RID: 31 RVA: 0x00003304 File Offset: 0x00001F04
		private void WriteColorList(StreamHelper streamHelper, List<Color> colorList)
		{
			foreach (Color color in colorList)
			{
				PaletteBlock.WriteColor(streamHelper, color);
			}
		}

		// Token: 0x06000020 RID: 32 RVA: 0x00003354 File Offset: 0x00001F54
		public static PaletteBlock Read(StreamHelper streamHelper)
		{
			PaletteBlock paletteBlock = new PaletteBlock();
			paletteBlock.Length = streamHelper.ReadInt32(ByteEncoding.None);
			paletteBlock.Dummy = streamHelper.ReadInt32(ByteEncoding.None);
			paletteBlock.Dummy2 = streamHelper.ReadInt32(ByteEncoding.None);
			paletteBlock.Width = streamHelper.ReadInt16(ByteEncoding.None);
			paletteBlock.Height = streamHelper.ReadInt16(ByteEncoding.None);
			paletteBlock.Colors = new List<Color>();
			int num = (paletteBlock.Length - 16) / 4;
			if (num <= 16)
			{
				for (int i = 0; i < num; i++)
				{
					paletteBlock.Colors.Add(PaletteBlock.ReadColor(streamHelper));
				}
			}
			else
			{
				for (int j = 0; j < num / 8 / 4; j++)
				{
					List<Color> collection = PaletteBlock.ReadColorBlock(streamHelper);
					List<Color> collection2 = PaletteBlock.ReadColorBlock(streamHelper);
					List<Color> collection3 = PaletteBlock.ReadColorBlock(streamHelper);
					List<Color> collection4 = PaletteBlock.ReadColorBlock(streamHelper);
					paletteBlock.Colors.AddRange(collection);
					paletteBlock.Colors.AddRange(collection3);
					paletteBlock.Colors.AddRange(collection2);
					paletteBlock.Colors.AddRange(collection4);
				}
			}
			return paletteBlock;
		}

		// Token: 0x06000021 RID: 33 RVA: 0x00003448 File Offset: 0x00002048
		public void Write(StreamHelper streamHelper)
		{
			streamHelper.Write<int>(this.Length, ByteEncoding.None);
			streamHelper.Write<int>(this.Dummy, ByteEncoding.None);
			streamHelper.Write<int>(this.Dummy, ByteEncoding.None);
			streamHelper.Write<short>(this.Width, ByteEncoding.None);
			streamHelper.Write<short>(this.Height, ByteEncoding.None);
			this.PrepareColors();
			int num = (this.Length - 16) / 4;
			if (num <= 16)
			{
				for (int i = 0; i < this.Colors.Count; i++)
				{
					PaletteBlock.WriteColor(streamHelper, this.Colors[i]);
				}
				return;
			}
			int num2 = 0;
			for (int j = 0; j < num / 8 / 4; j++)
			{
				List<Color> colorBlock = this.GetColorBlock(num2++);
				List<Color> colorBlock2 = this.GetColorBlock(num2++);
				List<Color> colorBlock3 = this.GetColorBlock(num2++);
				List<Color> colorBlock4 = this.GetColorBlock(num2++);
				this.WriteColorList(streamHelper, colorBlock);
				this.WriteColorList(streamHelper, colorBlock3);
				this.WriteColorList(streamHelper, colorBlock2);
				this.WriteColorList(streamHelper, colorBlock4);
			}
		}

		// Token: 0x06000022 RID: 34 RVA: 0x00003540 File Offset: 0x00002140
		private void PrepareColors()
		{
			if ((this.Length - 16) / 4 <= 16)
			{
				if (this.Colors.Count < 16)
				{
					while (this.Colors.Count < 16)
					{
						this.Colors.Add(Color.Black);
					}
				}
				if (this.Colors.Count > 16)
				{
					this.Colors = this.Colors.Take(16).ToList<Color>();
					return;
				}
			}
			else
			{
				if (this.Colors.Count < 256)
				{
					while (this.Colors.Count < 256)
					{
						this.Colors.Add(Color.Black);
					}
				}
				if (this.Colors.Count > 256)
				{
					this.Colors = this.Colors.Take(256).ToList<Color>();
				}
			}
		}

		// Token: 0x06000023 RID: 35 RVA: 0x00003618 File Offset: 0x00002218
		public bool Validate(out string error)
		{
			error = string.Empty;
			if (this.Width != 8 && this.Width != 16)
			{
				error = "Not supported palette format";
				return false;
			}
			if (this.Height != 2 && this.Height != 16)
			{
				error = "Not supported palette format";
				return false;
			}
			return true;
		}
	}
}


<|start_filename|>ps2/archive/PyTOR2_old/v7/10_export_tbl.bat<|end_filename|>
python tod2_ps2.py 10
pause

<|start_filename|>ps2/scripts/abcde/Build_Run_Menu4.bat<|end_filename|>
python Build_Run.py slps_Menu4 600 F6D7C 8 1

<|start_filename|>ps2/scripts/MenuScripts/TOD2_update_All.bat<|end_filename|>
python "BaseScripts/updateBlock.py" All
pause

<|start_filename|>tm2_converter/TalesOfDestinyTm2Converter/Quantizer/Bucket.cs<|end_filename|>
﻿using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;

namespace TalesOfDestinyTm2Converter.Quantizer
{
	// Token: 0x02000008 RID: 8
	public class Bucket
	{
		// Token: 0x17000014 RID: 20
		// (get) Token: 0x06000044 RID: 68 RVA: 0x00003E74 File Offset: 0x00002A74
		public Color Colour { get; }

		// Token: 0x06000045 RID: 69 RVA: 0x00003E7C File Offset: 0x00002A7C
		public Bucket(IEnumerable<Color> colours)
		{
			this.colours = colours.ToLookup((Color c) => c).ToDictionary((IGrouping<Color, Color> c) => c.Key, (IGrouping<Color, Color> c) => c.Count<Color>());
			this.Colour = Bucket.Average(this.colours);
		}

		// Token: 0x06000046 RID: 70 RVA: 0x00003F10 File Offset: 0x00002B10
		public Bucket(IEnumerable<KeyValuePair<Color, int>> enumerable)
		{
			this.colours = enumerable.ToDictionary((KeyValuePair<Color, int> c) => c.Key, (KeyValuePair<Color, int> c) => c.Value);
			this.Colour = Bucket.Average(this.colours);
		}

		// Token: 0x06000047 RID: 71 RVA: 0x00003F80 File Offset: 0x00002B80
		private static Color Average(IEnumerable<KeyValuePair<Color, int>> colours)
		{
			int num = colours.Sum((KeyValuePair<Color, int> c) => c.Value);
			if (num == 0)
			{
				return Color.Black;
			}
			return Color.FromArgb(colours.Sum((KeyValuePair<Color, int> c) => (int)c.Key.A * c.Value) / num, colours.Sum((KeyValuePair<Color, int> c) => (int)c.Key.R * c.Value) / num, colours.Sum((KeyValuePair<Color, int> c) => (int)c.Key.G * c.Value) / num, colours.Sum((KeyValuePair<Color, int> c) => (int)c.Key.B * c.Value) / num);
		}

		// Token: 0x06000048 RID: 72 RVA: 0x00004060 File Offset: 0x00002C60
		public Tuple<Bucket, Bucket> Split()
		{
			int num = (int)(this.colours.Keys.Max((Color c) => c.R) - this.colours.Keys.Min((Color c) => c.R));
			int num2 = (int)(this.colours.Keys.Max((Color c) => c.G) - this.colours.Keys.Min((Color c) => c.G));
			int num3 = (int)(this.colours.Keys.Max((Color c) => c.B) - this.colours.Keys.Min((Color c) => c.B));
			Func<Color, int> sorter;
			if (num > num2)
			{
				if (num > num3)
				{
					sorter = ((Color c) => (int)c.R);
				}
				else
				{
					sorter = ((Color c) => (int)c.B);
				}
			}
			else if (num2 > num3)
			{
				sorter = ((Color c) => (int)c.G);
			}
			else
			{
				sorter = ((Color c) => (int)c.B);
			}
			IOrderedEnumerable<KeyValuePair<Color, int>> source = from c in this.colours
			orderby sorter(c.Key)
			select c;
			int count = source.Count<KeyValuePair<Color, int>>() / 2;
			Bucket item = new Bucket(source.Take(count));
			Bucket item2 = new Bucket(source.Skip(count));
			return new Tuple<Bucket, Bucket>(item, item2);
		}

		// Token: 0x04000019 RID: 25
		public readonly IDictionary<Color, int> colours;
	}
}


<|start_filename|>tm2_converter/ttemma.Helpers/StreamHelper.cs<|end_filename|>
﻿using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Text;

namespace ttemma.Helpers
{
	// Token: 0x02000003 RID: 3
	public class StreamHelper : IDisposable
	{
		// Token: 0x17000001 RID: 1
		// (get) Token: 0x06000001 RID: 1 RVA: 0x00002AC4 File Offset: 0x000010C4
		// (set) Token: 0x06000002 RID: 2 RVA: 0x00002AD1 File Offset: 0x000010D1
		public long Position
		{
			get
			{
				return this._stream.Position;
			}
			set
			{
				this._stream.Position = value;
			}
		}

		// Token: 0x17000002 RID: 2
		// (get) Token: 0x06000003 RID: 3 RVA: 0x00002ADF File Offset: 0x000010DF
		// (set) Token: 0x06000004 RID: 4 RVA: 0x00002AEC File Offset: 0x000010EC
		public long Length
		{
			get
			{
				return this._stream.Length;
			}
			set
			{
				this._stream.SetLength(value);
			}
		}

		// Token: 0x17000003 RID: 3
		// (get) Token: 0x06000005 RID: 5 RVA: 0x00002AFA File Offset: 0x000010FA
		// (set) Token: 0x06000006 RID: 6 RVA: 0x00002B02 File Offset: 0x00001102
		public ByteEncoding SelectedByteEncoding
		{
			get
			{
				return this._byteEncoding;
			}
			set
			{
				this.SetByteEncoding(value);
			}
		}

		// Token: 0x17000004 RID: 4
		// (get) Token: 0x06000007 RID: 7 RVA: 0x00002B0B File Offset: 0x0000110B
		public Stream Stream
		{
			get
			{
				return this._stream;
			}
		}

		// Token: 0x17000005 RID: 5
		// (get) Token: 0x06000008 RID: 8 RVA: 0x00002B13 File Offset: 0x00001113
		public Type StreamType
		{
			get
			{
				return this._streamType;
			}
		}

		// Token: 0x06000009 RID: 9 RVA: 0x00002B1B File Offset: 0x0000111B
		public StreamHelper(ByteEncoding byteEncoding = ByteEncoding.Little)
		{
			this._stream = new MemoryStream();
			this._streamType = typeof(MemoryStream);
			this.SetByteEncoding(byteEncoding);
		}

		// Token: 0x0600000A RID: 10 RVA: 0x00002B45 File Offset: 0x00001145
		public StreamHelper(Stream stream, ByteEncoding byteEncoding = ByteEncoding.Little, Type streamType = null)
		{
			this._stream = stream;
			this._streamType = (streamType ?? typeof(Stream));
			this.SetByteEncoding(byteEncoding);
		}

		// Token: 0x0600000B RID: 11 RVA: 0x00002B70 File Offset: 0x00001170
		public StreamHelper(string fileName, ByteEncoding byteEncoding = ByteEncoding.Little, FileMode fileMode = FileMode.OpenOrCreate, FileAccess fileAccess = FileAccess.ReadWrite, FileShare fileShare = FileShare.Read)
		{
			this._stream = new FileStream(fileName, fileMode, fileAccess, fileShare);
			this._streamType = typeof(FileStream);
			this.SetByteEncoding(byteEncoding);
		}

		// Token: 0x0600000C RID: 12 RVA: 0x00002BA0 File Offset: 0x000011A0
		public StreamHelper(List<byte> bytes, ByteEncoding byteEncoding = ByteEncoding.Little)
		{
			this.SetByteEncoding(byteEncoding);
			this._stream = new MemoryStream();
			this._streamType = typeof(MemoryStream);
			this._stream.Write(bytes.ToArray(), 0, bytes.Count);
			this.Position = 0L;
		}

		// Token: 0x0600000D RID: 13 RVA: 0x00002BF8 File Offset: 0x000011F8
		public StreamHelper(byte[] bytes, ByteEncoding byteEncoding = ByteEncoding.Little)
		{
			this.SetByteEncoding(byteEncoding);
			this._stream = new MemoryStream();
			this._streamType = typeof(MemoryStream);
			this._stream.Write(bytes, 0, bytes.Length);
			this.Position = 0L;
		}

		// Token: 0x0600000E RID: 14 RVA: 0x00002C45 File Offset: 0x00001245
		public void Dispose()
		{
			Stream stream = this._stream;
			if (stream == null)
			{
				return;
			}
			stream.Dispose();
		}

		// Token: 0x0600000F RID: 15 RVA: 0x00002C57 File Offset: 0x00001257
		public void SetByteEncoding(ByteEncoding byteEncoding)
		{
			if (byteEncoding == ByteEncoding.None)
			{
				this._byteEncoding = ByteEncoding.Little;
				return;
			}
			this._byteEncoding = byteEncoding;
		}

		// Token: 0x06000010 RID: 16 RVA: 0x00002C6B File Offset: 0x0000126B
		private void ThrowStreamEndException()
		{
			throw new Exception("#Error 0 - Stream end.");
		}

		// Token: 0x06000011 RID: 17 RVA: 0x00002C78 File Offset: 0x00001278
		private void ExecuteMethod(string typeMethod, string nameMethod, object[] param)
		{
			MethodInfo method = typeof(StreamHelper).GetMethod(typeMethod + nameMethod);
			if (method == null)
			{
				return;
			}
			method.Invoke(this, param);
		}

		// Token: 0x06000012 RID: 18 RVA: 0x00002CAF File Offset: 0x000012AF
		public byte ReadByte()
		{
			int num = this._stream.ReadByte();
			if (num == -1)
			{
				this.ThrowStreamEndException();
			}
			return (byte)num;
		}

		// Token: 0x06000013 RID: 19 RVA: 0x00002CC8 File Offset: 0x000012C8
		public void Read<T>(out T value, ByteEncoding byteEncoding = ByteEncoding.None) where T : struct
		{
			ByteEncoding byteEncoding2 = (byteEncoding == ByteEncoding.None) ? this._byteEncoding : byteEncoding;
			string name = typeof(T).Name;
			object obj = new object();
			if (name == "Byte")
			{
				this.ExecuteMethod("Read", name, new object[]
				{
					obj
				});
			}
			else
			{
				this.ExecuteMethod("Read", name, new object[]
				{
					obj,
					byteEncoding2
				});
			}
			value = (T)((object)obj);
		}

		// Token: 0x06000014 RID: 20 RVA: 0x00002D48 File Offset: 0x00001348
		public short ReadInt16(ByteEncoding byteEncoding = ByteEncoding.None)
		{
			if (((byteEncoding == ByteEncoding.None) ? this._byteEncoding : byteEncoding) == ByteEncoding.Little)
			{
				return (short)((int)this.ReadByte() | (int)this.ReadByte() << 8);
			}
			return (short)((int)this.ReadByte() << 8 | (int)this.ReadByte());
		}

		// Token: 0x06000015 RID: 21 RVA: 0x00002D7C File Offset: 0x0000137C
		public int ReadInt32(ByteEncoding byteEncoding = ByteEncoding.None)
		{
			ByteEncoding byteEncoding2 = (byteEncoding == ByteEncoding.None) ? this._byteEncoding : byteEncoding;
			if (byteEncoding2 == ByteEncoding.Little)
			{
				return (int)this.ReadUInt16(byteEncoding2) | (int)this.ReadInt16(byteEncoding2) << 16;
			}
			return (int)this.ReadInt16(byteEncoding2) << 16 | (int)this.ReadUInt16(byteEncoding2);
		}

		// Token: 0x06000016 RID: 22 RVA: 0x00002DC0 File Offset: 0x000013C0
		public long ReadInt64(ByteEncoding byteEncoding = ByteEncoding.None)
		{
			ByteEncoding byteEncoding2 = (byteEncoding == ByteEncoding.None) ? this._byteEncoding : byteEncoding;
			if (byteEncoding2 == ByteEncoding.Little)
			{
				return (long)((ulong)this.ReadUInt32(byteEncoding2) | (ulong)((long)this.ReadInt32(byteEncoding2)));
			}
			return (long)this.ReadInt32(byteEncoding2) | (long)((ulong)this.ReadUInt32(byteEncoding2));
		}

		// Token: 0x06000017 RID: 23 RVA: 0x00002E01 File Offset: 0x00001401
		public ushort ReadUInt16(ByteEncoding byteEncoding = ByteEncoding.None)
		{
			if (((byteEncoding == ByteEncoding.None) ? this._byteEncoding : byteEncoding) == ByteEncoding.Little)
			{
				return (ushort)((int)this.ReadByte() | (int)this.ReadByte() << 8);
			}
			return (ushort)((int)this.ReadByte() << 8 | (int)this.ReadByte());
		}

		// Token: 0x06000018 RID: 24 RVA: 0x00002E34 File Offset: 0x00001434
		public uint ReadUInt32(ByteEncoding byteEncoding = ByteEncoding.None)
		{
			ByteEncoding byteEncoding2 = (byteEncoding == ByteEncoding.None) ? this._byteEncoding : byteEncoding;
			if (byteEncoding2 == ByteEncoding.Little)
			{
				return (uint)((int)this.ReadUInt16(byteEncoding2) | (int)this.ReadUInt16(byteEncoding2) << 16);
			}
			return (uint)((int)this.ReadUInt16(byteEncoding2) << 16 | (int)this.ReadUInt16(byteEncoding2));
		}

		// Token: 0x06000019 RID: 25 RVA: 0x00002E78 File Offset: 0x00001478
		public ulong ReadUInt64(ByteEncoding byteEncoding = ByteEncoding.None)
		{
			ByteEncoding byteEncoding2 = (byteEncoding == ByteEncoding.None) ? this._byteEncoding : byteEncoding;
			return (ulong)(this.ReadUInt32(byteEncoding2) | this.ReadUInt32(byteEncoding2));
		}

		// Token: 0x0600001A RID: 26 RVA: 0x00002EA6 File Offset: 0x000014A6
		public void WriteByte(byte value)
		{
			this._stream.WriteByte(value);
		}

		// Token: 0x0600001B RID: 27 RVA: 0x00002EB4 File Offset: 0x000014B4
		public void Write<T>(T value, ByteEncoding byteEncoding = ByteEncoding.None) where T : struct
		{
			ByteEncoding byteEncoding2 = (byteEncoding == ByteEncoding.None) ? this._byteEncoding : byteEncoding;
			string name = typeof(T).Name;
			if (name == "Byte")
			{
				this.ExecuteMethod("Write", name, new object[]
				{
					value
				});
				return;
			}
			this.ExecuteMethod("Write", name, new object[]
			{
				value,
				byteEncoding2
			});
		}

		// Token: 0x0600001C RID: 28 RVA: 0x00002F2C File Offset: 0x0000152C
		public void WriteInt16(short value, ByteEncoding byteEncoding = ByteEncoding.None)
		{
			if (((byteEncoding == ByteEncoding.None) ? this._byteEncoding : byteEncoding) == ByteEncoding.Little)
			{
				this.WriteByte((byte)(value & 255));
				this.WriteByte((byte)(value >> 8 & 255));
				return;
			}
			this.WriteByte((byte)(value >> 8 & 255));
			this.WriteByte((byte)(value & 255));
		}

		// Token: 0x0600001D RID: 29 RVA: 0x00002F88 File Offset: 0x00001588
		public void WriteInt32(int value, ByteEncoding byteEncoding = ByteEncoding.None)
		{
			ByteEncoding byteEncoding2 = (byteEncoding == ByteEncoding.None) ? this._byteEncoding : byteEncoding;
			if (byteEncoding2 == ByteEncoding.Little)
			{
				this.WriteInt16((short)(value & 65535), byteEncoding2);
				this.WriteInt16((short)(value >> 16 & 65535), byteEncoding2);
				return;
			}
			this.WriteInt16((short)(value >> 16 & 65535), byteEncoding2);
			this.WriteInt16((short)(value & 65535), byteEncoding2);
		}

		// Token: 0x0600001E RID: 30 RVA: 0x00002FEC File Offset: 0x000015EC
		public void WriteInt64(long value, ByteEncoding byteEncoding = ByteEncoding.None)
		{
			ByteEncoding byteEncoding2 = (byteEncoding == ByteEncoding.None) ? this._byteEncoding : byteEncoding;
			if (byteEncoding2 == ByteEncoding.Little)
			{
				this.WriteInt32((int)(value & (long)(/*(ulong)*/-1)), byteEncoding2);
				this.WriteInt32((int)(value >> 32 & (long)(/*(ulong)*/-1)), byteEncoding2);
				return;
			}
			this.WriteInt32((int)(value >> 32 & (long)(/*(ulong)*/-1)), byteEncoding2);
			this.WriteInt32((int)(value & (long)(/*(ulong)*/-1)), byteEncoding2);
		}

		// Token: 0x0600001F RID: 31 RVA: 0x00002F2C File Offset: 0x0000152C
		public void WriteUInt16(ushort value, ByteEncoding byteEncoding = ByteEncoding.None)
		{
			if (((byteEncoding == ByteEncoding.None) ? this._byteEncoding : byteEncoding) == ByteEncoding.Little)
			{
				this.WriteByte((byte)(value & 255));
				this.WriteByte((byte)(value >> 8 & 255));
				return;
			}
			this.WriteByte((byte)(value >> 8 & 255));
			this.WriteByte((byte)(value & 255));
		}

		// Token: 0x06000020 RID: 32 RVA: 0x00003044 File Offset: 0x00001644
		public void WriteUInt32(uint value, ByteEncoding byteEncoding = ByteEncoding.None)
		{
			ByteEncoding byteEncoding2 = (byteEncoding == ByteEncoding.None) ? this._byteEncoding : byteEncoding;
			if (byteEncoding2 == ByteEncoding.Little)
			{
				this.WriteUInt16((ushort)(value & 65535U), byteEncoding2);
				this.WriteUInt16((ushort)(value >> 16 & 65535U), byteEncoding2);
				return;
			}
			this.WriteUInt16((ushort)(value >> 16 & 65535U), byteEncoding2);
			this.WriteUInt16((ushort)(value & 65535U), byteEncoding2);
		}

		// Token: 0x06000021 RID: 33 RVA: 0x000030A8 File Offset: 0x000016A8
		public void WriteUInt64(ulong value, ByteEncoding byteEncoding = ByteEncoding.None)
		{
			ByteEncoding byteEncoding2 = (byteEncoding == ByteEncoding.None) ? this._byteEncoding : byteEncoding;
			if (byteEncoding2 == ByteEncoding.Little)
			{
				this.WriteUInt32((uint)((uint)value & /*(ulong)*/-1), byteEncoding2);
				this.WriteUInt32((uint)((uint)value >> 32 & /*(ulong)*/-1), byteEncoding2);
				return;
			}
			this.WriteUInt32((uint)((uint)value >> 32 & /*(ulong)*/-1), byteEncoding2);
			this.WriteUInt32((uint)((uint)value & /*(ulong)*/-1), byteEncoding2);
		}

		// Token: 0x06000022 RID: 34 RVA: 0x00003100 File Offset: 0x00001700
		public byte[] ReadByteArray(int count)
		{
			byte[] array = new byte[count];
			int count2 = this._stream.Read(array, 0, count);
			return array.Take(count2).ToArray<byte>();
		}

		// Token: 0x06000023 RID: 35 RVA: 0x0000312F File Offset: 0x0000172F
		public List<byte> ReadByteList(int count)
		{
			return this.ReadByteArray(count).ToList<byte>();
		}

		// Token: 0x06000024 RID: 36 RVA: 0x0000313D File Offset: 0x0000173D
		public void WriteByteArray(byte[] array)
		{
			this._stream.Write(array, 0, array.Length);
		}

		// Token: 0x06000025 RID: 37 RVA: 0x0000314F File Offset: 0x0000174F
		public void WriteByteArray(byte[] array, int size)
		{
			this._stream.Write(array, 0, size);
		}

		// Token: 0x06000026 RID: 38 RVA: 0x0000315F File Offset: 0x0000175F
		public void WriteByteArray(byte[] array, int idx, int size)
		{
			this._stream.Write(array, idx, size);
		}

		// Token: 0x06000027 RID: 39 RVA: 0x0000316F File Offset: 0x0000176F
		public void WriteByteList(List<byte> listBytes)
		{
			this.WriteByteArray(listBytes.ToArray());
		}

		// Token: 0x06000028 RID: 40 RVA: 0x00003180 File Offset: 0x00001780
		public void WriteRepeatByte(byte value, int count)
		{
			byte[] array = new byte[count];
			for (int i = 0; i < count; i++)
			{
				array[i] = value;
			}
			this.WriteByteArray(array);
		}

		// Token: 0x06000029 RID: 41 RVA: 0x000031AC File Offset: 0x000017AC
		public void CopyPartFromByteArray(byte[] source, int size, int bufferSize = 4096)
		{
			if (size <= 0)
			{
				throw new Exception("#Error 2 - Array specified size is zero.");
			}
			if (source.Length < size)
			{
				size = source.Length;
			}
			if (bufferSize > size)
			{
				bufferSize = size;
			}
			int i = 0;
			while (i < size)
			{
				this._stream.Write(source, i, bufferSize);
				i += bufferSize;
				if (size - i < bufferSize)
				{
					bufferSize = size - i;
				}
			}
		}

		// Token: 0x0600002A RID: 42 RVA: 0x00003200 File Offset: 0x00001800
		public void CopyPartFromStream(Stream source, int size, int bufferSize = 4096)
		{
			if (size <= 0)
			{
				throw new Exception("#Error 2 - Stream specified size is zero.");
			}
			if (source.Length < (long)size)
			{
				size = (int)source.Length;
			}
			if (bufferSize > size)
			{
				bufferSize = size;
			}
			byte[] buffer = new byte[bufferSize];
			int count;
			while ((count = source.Read(buffer, 0, bufferSize)) != 0)
			{
				this._stream.Write(buffer, 0, count);
				size -= bufferSize;
				if (size < bufferSize)
				{
					bufferSize = size;
				}
			}
		}

		// Token: 0x0600002B RID: 43 RVA: 0x00003268 File Offset: 0x00001868
		public void CopyPartFromStream(Stream destination, int bufferSize = 4096)
		{
			this.CopyPartFromStream(destination, (int)destination.Length, bufferSize);
		}

		// Token: 0x0600002C RID: 44 RVA: 0x00003279 File Offset: 0x00001879
		public void CopyPartFromStreamHelper(StreamHelper source, int size, int bufferSize = 4096)
		{
			this.CopyPartFromStream(source._stream, size, bufferSize);
		}

		// Token: 0x0600002D RID: 45 RVA: 0x0000328C File Offset: 0x0000188C
		[Obsolete]
		public void CopyPartToByteArray(ref byte[] destination, int size, int bufferSize = 4096)
		{
			if (size <= 0)
			{
				throw new Exception("#Error 2 - Array specified size is zero.");
			}
			if (destination.Length < size)
			{
				size = destination.Length;
			}
			if ((long)size + this._stream.Position > this._stream.Length)
			{
				size = (int)(this._stream.Length - this._stream.Position);
			}
			if (bufferSize > size)
			{
				bufferSize = size;
			}
			byte[] array = new byte[bufferSize];
			int num = 0;
			int num2;
			while ((num2 = this._stream.Read(array, 0, bufferSize)) != 0)
			{
				Array.Copy(array, 0, destination, num, num2);
				num += num2;
				size -= num2;
				if (size == 0)
				{
					return;
				}
				if (size < bufferSize)
				{
					bufferSize = size;
				}
			}
		}

		// Token: 0x0600002E RID: 46 RVA: 0x00003330 File Offset: 0x00001930
		public byte[] CopyPartToByteArray(int size)
		{
			if (size <= 0)
			{
				throw new Exception("#Error 2 - Array specified size is zero.");
			}
			if ((long)size + this._stream.Position > this._stream.Length)
			{
				size = (int)(this._stream.Length - this._stream.Position);
			}
			return this.ReadByteArray(size);
		}

		// Token: 0x0600002F RID: 47 RVA: 0x00003388 File Offset: 0x00001988
		public void CopyPartToStream(Stream destination, int size, int bufferSize = 4096)
		{
			if (size <= 0)
			{
				throw new Exception("#Error 2 - Array specified size is zero.");
			}
			if (destination.Length < (long)size)
			{
				size = (int)destination.Length;
			}
			if ((long)size + this._stream.Position > this._stream.Length)
			{
				size = (int)(this._stream.Length - this._stream.Position);
			}
			if (bufferSize > size)
			{
				bufferSize = size;
			}
			byte[] buffer = new byte[bufferSize];
			int num;
			while ((num = this._stream.Read(buffer, 0, bufferSize)) != 0)
			{
				destination.Write(buffer, 0, num);
				size -= num;
				if (size < bufferSize)
				{
					bufferSize = size;
				}
			}
		}

		// Token: 0x06000030 RID: 48 RVA: 0x00003423 File Offset: 0x00001A23
		public void CopyPartToStreamHelper(StreamHelper destination, int size, int bufferSize = 4096)
		{
			this.CopyPartToStream(destination.Stream, size, bufferSize);
		}

		// Token: 0x06000031 RID: 49 RVA: 0x00003434 File Offset: 0x00001A34
		public string ReadAnsiString(int length, Encoding encoding)
		{
			byte[] array = new byte[length];
			this._stream.Read(array, 0, length);
			for (int i = 0; i < length; i++)
			{
				if (array[i] == 0)
				{
					length = i;
					break;
				}
			}
			return encoding.GetString(array, 0, length);
		}

		// Token: 0x06000032 RID: 50 RVA: 0x00003476 File Offset: 0x00001A76
		public string ReadAnsiString(int length, int codePage = 1252)
		{
			return this.ReadAnsiString(length, Encoding.GetEncoding(codePage));
		}

		// Token: 0x06000033 RID: 51 RVA: 0x00003488 File Offset: 0x00001A88
		public string ReadAnsiStringWithStopByte(Encoding encoding, byte stopByte = 0)
		{
			int num = 0;
			long position = this._stream.Position;
			while (this.ReadByte() != stopByte)
			{
				num++;
			}
			this.Position = position;
			string result = this.ReadAnsiString(num, encoding);
			long position2 = this.Position;
			this.Position = position2 + 1L;
			return result;
		}

		// Token: 0x06000034 RID: 52 RVA: 0x000034D2 File Offset: 0x00001AD2
		public string ReadAnsiStringWithStopByte(byte stopByte = 0, int codePage = 1252)
		{
			return this.ReadAnsiStringWithStopByte(Encoding.GetEncoding(codePage), stopByte);
		}

		// Token: 0x06000035 RID: 53 RVA: 0x000034E4 File Offset: 0x00001AE4
		public void WriteAnsiString(string str, Encoding encoding)
		{
			byte[] bytes = encoding.GetBytes(str);
			this._stream.Write(bytes, 0, bytes.Length);
		}

		// Token: 0x06000036 RID: 54 RVA: 0x00003509 File Offset: 0x00001B09
		public void WriteAnsiString(string str, int codePage = 1251)
		{
			this.WriteAnsiString(str, Encoding.GetEncoding(codePage));
		}

		// Token: 0x06000037 RID: 55 RVA: 0x00003518 File Offset: 0x00001B18
		public void WriteAnsiStringFixedLength(string str, int fixedLength, Encoding encoding, byte nullableValue = 0)
		{
			byte[] bytes = encoding.GetBytes(str);
			if (bytes.Length > fixedLength)
			{
				this._stream.Write(bytes, 0, fixedLength);
				return;
			}
			this._stream.Write(bytes, 0, bytes.Length);
			int count = fixedLength - bytes.Length;
			this.WriteRepeatByte(nullableValue, count);
		}

		// Token: 0x06000038 RID: 56 RVA: 0x00003561 File Offset: 0x00001B61
		public void WriteAnsiStringFixedLength(string str, int fixedLength, byte nullableValue = 0, int codePage = 1251)
		{
			this.WriteAnsiStringFixedLength(str, fixedLength, Encoding.GetEncoding(codePage), nullableValue);
		}

		// Token: 0x06000039 RID: 57 RVA: 0x00003573 File Offset: 0x00001B73
		public void WriteAnsiStringWithStopByte(string str, Encoding encoding, byte stopByte = 0)
		{
			this.WriteAnsiString(str, encoding);
			this.WriteByte(stopByte);
		}

		// Token: 0x0600003A RID: 58 RVA: 0x00003584 File Offset: 0x00001B84
		public void WriteAnsiStringWithStopByte(string str, byte stopByte = 0, int codePage = 1252)
		{
			this.WriteAnsiStringWithStopByte(str, Encoding.GetEncoding(codePage), stopByte);
		}

		// Token: 0x0600003B RID: 59 RVA: 0x00003594 File Offset: 0x00001B94
		public string ReadUnicodeStringWithStopWord(ushort stopWord = 0)
		{
			int num = 0;
			long position = this._stream.Position;
			while (this.ReadUInt16(ByteEncoding.None) != stopWord)
			{
				num += 2;
			}
			this.Position = position;
			Encoding encoding = Encoding.Unicode;
			if (this.SelectedByteEncoding == ByteEncoding.Big)
			{
				encoding = Encoding.BigEndianUnicode;
			}
			byte[] bytes = this.ReadByteArray(num);
			this.Position += 2L;
			return encoding.GetString(bytes);
		}

		// Token: 0x0600003C RID: 60 RVA: 0x000035FC File Offset: 0x00001BFC
		public void WriteUnicodeStringWithStopWord(string str, ushort stopWord = 0)
		{
			Encoding encoding = Encoding.Unicode;
			if (this.SelectedByteEncoding == ByteEncoding.Big)
			{
				encoding = Encoding.BigEndianUnicode;
			}
			this.WriteAnsiString(str, encoding);
			this.WriteUInt16(stopWord, ByteEncoding.None);
		}

		// Token: 0x0600003D RID: 61 RVA: 0x00003630 File Offset: 0x00001C30
		public void AlignPosition(int value)
		{
			while (this._stream.Position % (long)value != 0L)
			{
				Stream stream = this._stream;
				long position = stream.Position;
				stream.Position = position + 1L;
			}
		}

		// Token: 0x0600003E RID: 62 RVA: 0x00003665 File Offset: 0x00001C65
		public void AlignPositionWithByte(int value, byte alignByte = 0)
		{
			while (this._stream.Position % (long)value != 0L)
			{
				this._stream.WriteByte(alignByte);
			}
		}

		// Token: 0x0600003F RID: 63 RVA: 0x00003688 File Offset: 0x00001C88
		public byte[] GetStreamBytes()
		{
			long position = this.Position;
			this.Position = 0L;
			byte[] result = this.ReadByteArray((int)this.Length);
			this.Position = position;
			return result;
		}

		// Token: 0x06000040 RID: 64 RVA: 0x000036B8 File Offset: 0x00001CB8
		public static StreamHelper CreateFromFileInMemory(string fileName)
		{
			StreamHelper streamHelper = new StreamHelper(ByteEncoding.Little);
			using (FileStream fileStream = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.Read))
			{
				fileStream.CopyTo(streamHelper.Stream);
			}
			streamHelper.Position = 0L;
			return streamHelper;
		}

		// Token: 0x06000041 RID: 65 RVA: 0x00003708 File Offset: 0x00001D08
		public void SaveToFile(string fileName, bool removeIfExist = false)
		{
			if (removeIfExist && File.Exists(fileName))
			{
				File.Delete(fileName);
			}
			using (FileStream fileStream = new FileStream(fileName, FileMode.OpenOrCreate, FileAccess.ReadWrite))
			{
				this._stream.Position = 0L;
				this._stream.CopyTo(fileStream, 4096);
			}
			this.Position = 0L;
		}

		// Token: 0x04000005 RID: 5
		private Stream _stream;

		// Token: 0x04000006 RID: 6
		private Type _streamType;

		// Token: 0x04000007 RID: 7
		private ByteEncoding _byteEncoding;
	}
}


<|start_filename|>tm2_converter/TalesOfDestinyTm2Converter/Properties/AssemblyInfo.cs<|end_filename|>
﻿using System;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;

[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyConfiguration("Release")]
[assembly: AssemblyCompany("TalesOfDestinyTm2Converter")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyProduct("TalesOfDestinyTm2Converter")]
[assembly: AssemblyTitle("TalesOfDestinyTm2Converter")]


<|start_filename|>ps2/archive/PyTOR2_old/v6/unpack_pak3.bat<|end_filename|>
for %%i in (*.pak3) do pakcomposer.exe -d "%%i" -3 -x -u
pause

<|start_filename|>ps2/archive/PyTOR2_old/v7/01_extract_files.bat<|end_filename|>
python tod2_ps2.py 1
pause