From: Yegor Kozlov Date: Fri, 11 Mar 2011 09:33:22 +0000 (+0000) Subject: fixed RecordFormatException when reading unicode strings with photenic data, see... X-Git-Tag: REL_3_8_BETA2~29 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=dd87e86c4424896d8c05e4ae36ca522e838bf847;p=poi.git fixed RecordFormatException when reading unicode strings with photenic data, see Bugzilla 50779 git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1080496 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/src/documentation/content/xdocs/status.xml b/src/documentation/content/xdocs/status.xml index 8ef8414dbb..435cf86955 100644 --- a/src/documentation/content/xdocs/status.xml +++ b/src/documentation/content/xdocs/status.xml @@ -34,6 +34,7 @@ + 50779 - fixed RecordFormatException when reading unicode strings with photenic data 50718 - More helpful error message when you try to create a CellReference with #REF! 50784 - XSSFColors return by XSSFFont now have theme information applied to them 50846 - Improve how XSSFColor inherits from Themes diff --git a/src/java/org/apache/poi/hssf/record/common/UnicodeString.java b/src/java/org/apache/poi/hssf/record/common/UnicodeString.java index 3d0813c87b..cd8147a62d 100644 --- a/src/java/org/apache/poi/hssf/record/common/UnicodeString.java +++ b/src/java/org/apache/poi/hssf/record/common/UnicodeString.java @@ -22,6 +22,7 @@ import java.util.Collections; import java.util.Iterator; import java.util.List; +import org.apache.poi.hssf.record.cont.ContinuableRecordInput; import org.apache.poi.hssf.record.RecordInputStream; import org.apache.poi.hssf.record.cont.ContinuableRecordOutput; import org.apache.poi.util.BitField; @@ -435,7 +436,7 @@ public class UnicodeString implements Comparable { // TODO - make } if (isExtendedText() && (extensionLength > 0)) { - field_5_ext_rst = new ExtRst(in, extensionLength); + field_5_ext_rst = new ExtRst(new ContinuableRecordInput(in), extensionLength); if(field_5_ext_rst.getDataSize()+4 != extensionLength) { System.err.println("ExtRst was supposed to be " + extensionLength + " bytes long, but seems to actually be " + (field_5_ext_rst.getDataSize()+4)); } diff --git a/src/java/org/apache/poi/hssf/record/cont/ContinuableRecordInput.java b/src/java/org/apache/poi/hssf/record/cont/ContinuableRecordInput.java new file mode 100644 index 0000000000..9925ad3eb0 --- /dev/null +++ b/src/java/org/apache/poi/hssf/record/cont/ContinuableRecordInput.java @@ -0,0 +1,118 @@ +/* + * ==================================================================== + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ==================================================================== + */ + +package org.apache.poi.hssf.record.cont; + +import org.apache.poi.hssf.record.RecordInputStream; +import org.apache.poi.hssf.record.ContinueRecord; +import org.apache.poi.util.LittleEndianInput; + +/** + * A decorated {@link RecordInputStream} that can read primitive data types + * (short, int, long, etc.) spanned across a {@link ContinueRecord } boundary. + * + *

+ * Most records construct themselves from {@link RecordInputStream}. + * This class assumes that a {@link ContinueRecord} record break always occurs at the type boundary, + * however, it is not always so. + *

+ * Two attachments to Bugzilla 50779 + * demonstrate that a CONTINUE break can appear right in between two bytes of a unicode character + * or between two bytes of a short. The problematic portion of the data is + * in a Asian Phonetic Settings Block (ExtRst) of a UnicodeString. + *

+ * {@link RecordInputStream} greedily requests the bytes to be read and stumbles on such files with a + * "Not enough data (1) to read requested (2) bytes" exception. The ContinuableRecordInput + * class circumvents this "type boundary" rule and reads data byte-by-byte rolling over CONTINUE if necessary. + *

+ * + *

+ * YK: For now (March 2011) this class is only used to read + * @link org.apache.poi.hssf.record.common.UnicodeString.ExtRst} blocks of a UnicodeString. + * + *

+ * + * @author Yegor Kozlov + */ +public class ContinuableRecordInput implements LittleEndianInput { + private final RecordInputStream _in; + + public ContinuableRecordInput(RecordInputStream in){ + _in = in; + } + public int available(){ + return _in.available(); + } + + public byte readByte(){ + return _in.readByte(); + } + + public int readUByte(){ + return _in.readUByte(); + } + + public short readShort(){ + return _in.readShort(); + } + + public int readUShort(){ + int ch1 = readUByte(); + int ch2 = readUByte(); + return (ch2 << 8) + (ch1 << 0); + } + + public int readInt(){ + int ch1 = _in.readUByte(); + int ch2 = _in.readUByte(); + int ch3 = _in.readUByte(); + int ch4 = _in.readUByte(); + return (ch4 << 24) + (ch3 << 16) + (ch2 << 8) + (ch1 << 0); + } + + public long readLong(){ + int b0 = _in.readUByte(); + int b1 = _in.readUByte(); + int b2 = _in.readUByte(); + int b3 = _in.readUByte(); + int b4 = _in.readUByte(); + int b5 = _in.readUByte(); + int b6 = _in.readUByte(); + int b7 = _in.readUByte(); + return (((long)b7 << 56) + + ((long)b6 << 48) + + ((long)b5 << 40) + + ((long)b4 << 32) + + ((long)b3 << 24) + + (b2 << 16) + + (b1 << 8) + + (b0 << 0)); + } + + public double readDouble(){ + return _in.readDouble(); + } + public void readFully(byte[] buf){ + _in.readFully(buf); + } + public void readFully(byte[] buf, int off, int len){ + _in.readFully(buf, off, len); + } + +} diff --git a/src/testcases/org/apache/poi/hssf/record/TestSSTRecord.java b/src/testcases/org/apache/poi/hssf/record/TestSSTRecord.java index 65d56cf318..c7d911b807 100644 --- a/src/testcases/org/apache/poi/hssf/record/TestSSTRecord.java +++ b/src/testcases/org/apache/poi/hssf/record/TestSSTRecord.java @@ -355,4 +355,1145 @@ public final class TestSSTRecord extends TestCase { HSSFTestDataSamples.writeOutAndReadBack(wb); } + + /** + * hex dump from UnicodeStringFailCase1.xls atatched to Bugzilla 50779 + */ + private static final String data_50779_1 = + //Offset=0x00000612(1554) recno=71 sid=0x00FC size=0x2020(8224) + " FC 00 20 20 51 00 00 00 51 00 00 00 32 00" + + "05 10 00 00 00 42 30 44 30 46 30 48 30 4A 30 4B" + + "30 4D 30 4F 30 51 30 53 30 55 30 57 30 59 30 5B" + + "30 5D 30 5F 30 61 30 64 30 66 30 68 30 6A 30 6B" + + "30 6C 30 6D 30 6E 30 6F 30 72 30 75 30 78 30 7B" + + "30 7E 30 7F 30 80 30 81 30 82 30 84 30 86 30 88" + + "30 89 30 8A 30 8B 30 8C 30 8D 30 8F 30 92 30 93" + + "30 30 00 30 00 30 00 31 00 01 00 0C 00 05 00 35" + + "00 00 00 00 00 00 00 4B 30 32 00 01 42 30 44 30" + + "46 30 48 30 4A 30 4B 30 4D 30 4F 30 51 30 53 30" + + "55 30 57 30 59 30 5B 30 5D 30 5F 30 61 30 64 30" + + "66 30 68 30 6A 30 6B 30 6C 30 6D 30 6E 30 6F 30" + + "72 30 75 30 78 30 7B 30 7E 30 7F 30 80 30 81 30" + + "82 30 84 30 86 30 88 30 89 30 8A 30 8B 30 8C 30" + + "8D 30 8F 30 92 30 93 30 30 00 30 00 30 00 32 00" + + "32 00 01 42 30 44 30 46 30 48 30 4A 30 4B 30 4D" + + "30 4F 30 51 30 53 30 55 30 57 30 59 30 5B 30 5D" + + "30 5F 30 61 30 64 30 66 30 68 30 6A 30 6B 30 6C" + + "30 6D 30 6E 30 6F 30 72 30 75 30 78 30 7B 30 7E" + + "30 7F 30 80 30 81 30 82 30 84 30 86 30 88 30 89" + + "30 8A 30 8B 30 8C 30 8D 30 8F 30 92 30 93 30 30" + + "00 30 00 30 00 33 00 32 00 01 42 30 44 30 46 30" + + "48 30 4A 30 4B 30 4D 30 4F 30 51 30 53 30 55 30" + + "57 30 59 30 5B 30 5D 30 5F 30 61 30 64 30 66 30" + + "68 30 6A 30 6B 30 6C 30 6D 30 6E 30 6F 30 72 30" + + "75 30 78 30 7B 30 7E 30 7F 30 80 30 81 30 82 30" + + "84 30 86 30 88 30 89 30 8A 30 8B 30 8C 30 8D 30" + + "8F 30 92 30 93 30 30 00 30 00 30 00 34 00 32 00" + + "01 42 30 44 30 46 30 48 30 4A 30 4B 30 4D 30 4F" + + "30 51 30 53 30 55 30 57 30 59 30 5B 30 5D 30 5F" + + "30 61 30 64 30 66 30 68 30 6A 30 6B 30 6C 30 6D" + + "30 6E 30 6F 30 72 30 75 30 78 30 7B 30 7E 30 7F" + + "30 80 30 81 30 82 30 84 30 86 30 88 30 89 30 8A" + + "30 8B 30 8C 30 8D 30 8F 30 92 30 93 30 30 00 30" + + "00 30 00 35 00 32 00 01 42 30 44 30 46 30 48 30" + + "4A 30 4B 30 4D 30 4F 30 51 30 53 30 55 30 57 30" + + "59 30 5B 30 5D 30 5F 30 61 30 64 30 66 30 68 30" + + "6A 30 6B 30 6C 30 6D 30 6E 30 6F 30 72 30 75 30" + + "78 30 7B 30 7E 30 7F 30 80 30 81 30 82 30 84 30" + + "86 30 88 30 89 30 8A 30 8B 30 8C 30 8D 30 8F 30" + + "92 30 93 30 30 00 30 00 30 00 36 00 32 00 01 42" + + "30 44 30 46 30 48 30 4A 30 4B 30 4D 30 4F 30 51" + + "30 53 30 55 30 57 30 59 30 5B 30 5D 30 5F 30 61" + + "30 64 30 66 30 68 30 6A 30 6B 30 6C 30 6D 30 6E" + + "30 6F 30 72 30 75 30 78 30 7B 30 7E 30 7F 30 80" + + "30 81 30 82 30 84 30 86 30 88 30 89 30 8A 30 8B" + + "30 8C 30 8D 30 8F 30 92 30 93 30 30 00 30 00 30" + + "00 37 00 32 00 01 42 30 44 30 46 30 48 30 4A 30" + + "4B 30 4D 30 4F 30 51 30 53 30 55 30 57 30 59 30" + + "5B 30 5D 30 5F 30 61 30 64 30 66 30 68 30 6A 30" + + "6B 30 6C 30 6D 30 6E 30 6F 30 72 30 75 30 78 30" + + "7B 30 7E 30 7F 30 80 30 81 30 82 30 84 30 86 30" + + "88 30 89 30 8A 30 8B 30 8C 30 8D 30 8F 30 92 30" + + "93 30 30 00 30 00 30 00 38 00 32 00 01 42 30 44" + + "30 46 30 48 30 4A 30 4B 30 4D 30 4F 30 51 30 53" + + "30 55 30 57 30 59 30 5B 30 5D 30 5F 30 61 30 64" + + "30 66 30 68 30 6A 30 6B 30 6C 30 6D 30 6E 30 6F" + + "30 72 30 75 30 78 30 7B 30 7E 30 7F 30 80 30 81" + + "30 82 30 84 30 86 30 88 30 89 30 8A 30 8B 30 8C" + + "30 8D 30 8F 30 92 30 93 30 30 00 30 00 30 00 39" + + "00 32 00 01 42 30 44 30 46 30 48 30 4A 30 4B 30" + + "4D 30 4F 30 51 30 53 30 55 30 57 30 59 30 5B 30" + + "5D 30 5F 30 61 30 64 30 66 30 68 30 6A 30 6B 30" + + "6C 30 6D 30 6E 30 6F 30 72 30 75 30 78 30 7B 30" + + "7E 30 7F 30 80 30 81 30 82 30 84 30 86 30 88 30" + + "89 30 8A 30 8B 30 8C 30 8D 30 8F 30 92 30 93 30" + + "30 00 30 00 31 00 30 00 32 00 01 42 30 44 30 46" + + "30 48 30 4A 30 4B 30 4D 30 4F 30 51 30 53 30 55" + + "30 57 30 59 30 5B 30 5D 30 5F 30 61 30 64 30 66" + + "30 68 30 6A 30 6B 30 6C 30 6D 30 6E 30 6F 30 72" + + "30 75 30 78 30 7B 30 7E 30 7F 30 80 30 81 30 82" + + "30 84 30 86 30 88 30 89 30 8A 30 8B 30 8C 30 8D" + + "30 8F 30 92 30 93 30 30 00 30 00 31 00 31 00 32" + + "00 01 42 30 44 30 46 30 48 30 4A 30 4B 30 4D 30" + + "4F 30 51 30 53 30 55 30 57 30 59 30 5B 30 5D 30" + + "5F 30 61 30 64 30 66 30 68 30 6A 30 6B 30 6C 30" + + "6D 30 6E 30 6F 30 72 30 75 30 78 30 7B 30 7E 30" + + "7F 30 80 30 81 30 82 30 84 30 86 30 88 30 89 30" + + "8A 30 8B 30 8C 30 8D 30 8F 30 92 30 93 30 30 00" + + "30 00 31 00 32 00 32 00 01 42 30 44 30 46 30 48" + + "30 4A 30 4B 30 4D 30 4F 30 51 30 53 30 55 30 57" + + "30 59 30 5B 30 5D 30 5F 30 61 30 64 30 66 30 68" + + "30 6A 30 6B 30 6C 30 6D 30 6E 30 6F 30 72 30 75" + + "30 78 30 7B 30 7E 30 7F 30 80 30 81 30 82 30 84" + + "30 86 30 88 30 89 30 8A 30 8B 30 8C 30 8D 30 8F" + + "30 92 30 93 30 30 00 30 00 31 00 33 00 32 00 01" + + "42 30 44 30 46 30 48 30 4A 30 4B 30 4D 30 4F 30" + + "51 30 53 30 55 30 57 30 59 30 5B 30 5D 30 5F 30" + + "61 30 64 30 66 30 68 30 6A 30 6B 30 6C 30 6D 30" + + "6E 30 6F 30 72 30 75 30 78 30 7B 30 7E 30 7F 30" + + "80 30 81 30 82 30 84 30 86 30 88 30 89 30 8A 30" + + "8B 30 8C 30 8D 30 8F 30 92 30 93 30 30 00 30 00" + + "31 00 34 00 32 00 01 42 30 44 30 46 30 48 30 4A" + + "30 4B 30 4D 30 4F 30 51 30 53 30 55 30 57 30 59" + + "30 5B 30 5D 30 5F 30 61 30 64 30 66 30 68 30 6A" + + "30 6B 30 6C 30 6D 30 6E 30 6F 30 72 30 75 30 78" + + "30 7B 30 7E 30 7F 30 80 30 81 30 82 30 84 30 86" + + "30 88 30 89 30 8A 30 8B 30 8C 30 8D 30 8F 30 92" + + "30 93 30 30 00 30 00 31 00 35 00 32 00 01 42 30" + + "44 30 46 30 48 30 4A 30 4B 30 4D 30 4F 30 51 30" + + "53 30 55 30 57 30 59 30 5B 30 5D 30 5F 30 61 30" + + "64 30 66 30 68 30 6A 30 6B 30 6C 30 6D 30 6E 30" + + "6F 30 72 30 75 30 78 30 7B 30 7E 30 7F 30 80 30" + + "81 30 82 30 84 30 86 30 88 30 89 30 8A 30 8B 30" + + "8C 30 8D 30 8F 30 92 30 93 30 30 00 30 00 31 00" + + "36 00 32 00 01 42 30 44 30 46 30 48 30 4A 30 4B" + + "30 4D 30 4F 30 51 30 53 30 55 30 57 30 59 30 5B" + + "30 5D 30 5F 30 61 30 64 30 66 30 68 30 6A 30 6B" + + "30 6C 30 6D 30 6E 30 6F 30 72 30 75 30 78 30 7B" + + "30 7E 30 7F 30 80 30 81 30 82 30 84 30 86 30 88" + + "30 89 30 8A 30 8B 30 8C 30 8D 30 8F 30 92 30 93" + + "30 30 00 30 00 31 00 37 00 32 00 01 42 30 44 30" + + "46 30 48 30 4A 30 4B 30 4D 30 4F 30 51 30 53 30" + + "55 30 57 30 59 30 5B 30 5D 30 5F 30 61 30 64 30" + + "66 30 68 30 6A 30 6B 30 6C 30 6D 30 6E 30 6F 30" + + "72 30 75 30 78 30 7B 30 7E 30 7F 30 80 30 81 30" + + "82 30 84 30 86 30 88 30 89 30 8A 30 8B 30 8C 30" + + "8D 30 8F 30 92 30 93 30 30 00 30 00 31 00 38 00" + + "32 00 01 42 30 44 30 46 30 48 30 4A 30 4B 30 4D" + + "30 4F 30 51 30 53 30 55 30 57 30 59 30 5B 30 5D" + + "30 5F 30 61 30 64 30 66 30 68 30 6A 30 6B 30 6C" + + "30 6D 30 6E 30 6F 30 72 30 75 30 78 30 7B 30 7E" + + "30 7F 30 80 30 81 30 82 30 84 30 86 30 88 30 89" + + "30 8A 30 8B 30 8C 30 8D 30 8F 30 92 30 93 30 30" + + "00 30 00 31 00 39 00 32 00 01 42 30 44 30 46 30" + + "48 30 4A 30 4B 30 4D 30 4F 30 51 30 53 30 55 30" + + "57 30 59 30 5B 30 5D 30 5F 30 61 30 64 30 66 30" + + "68 30 6A 30 6B 30 6C 30 6D 30 6E 30 6F 30 72 30" + + "75 30 78 30 7B 30 7E 30 7F 30 80 30 81 30 82 30" + + "84 30 86 30 88 30 89 30 8A 30 8B 30 8C 30 8D 30" + + "8F 30 92 30 93 30 30 00 30 00 32 00 30 00 32 00" + + "01 42 30 44 30 46 30 48 30 4A 30 4B 30 4D 30 4F" + + "30 51 30 53 30 55 30 57 30 59 30 5B 30 5D 30 5F" + + "30 61 30 64 30 66 30 68 30 6A 30 6B 30 6C 30 6D" + + "30 6E 30 6F 30 72 30 75 30 78 30 7B 30 7E 30 7F" + + "30 80 30 81 30 82 30 84 30 86 30 88 30 89 30 8A" + + "30 8B 30 8C 30 8D 30 8F 30 92 30 93 30 30 00 30" + + "00 32 00 31 00 32 00 01 42 30 44 30 46 30 48 30" + + "4A 30 4B 30 4D 30 4F 30 51 30 53 30 55 30 57 30" + + "59 30 5B 30 5D 30 5F 30 61 30 64 30 66 30 68 30" + + "6A 30 6B 30 6C 30 6D 30 6E 30 6F 30 72 30 75 30" + + "78 30 7B 30 7E 30 7F 30 80 30 81 30 82 30 84 30" + + "86 30 88 30 89 30 8A 30 8B 30 8C 30 8D 30 8F 30" + + "92 30 93 30 30 00 30 00 32 00 32 00 32 00 01 42" + + "30 44 30 46 30 48 30 4A 30 4B 30 4D 30 4F 30 51" + + "30 53 30 55 30 57 30 59 30 5B 30 5D 30 5F 30 61" + + "30 64 30 66 30 68 30 6A 30 6B 30 6C 30 6D 30 6E" + + "30 6F 30 72 30 75 30 78 30 7B 30 7E 30 7F 30 80" + + "30 81 30 82 30 84 30 86 30 88 30 89 30 8A 30 8B" + + "30 8C 30 8D 30 8F 30 92 30 93 30 30 00 30 00 32" + + "00 33 00 32 00 01 42 30 44 30 46 30 48 30 4A 30" + + "4B 30 4D 30 4F 30 51 30 53 30 55 30 57 30 59 30" + + "5B 30 5D 30 5F 30 61 30 64 30 66 30 68 30 6A 30" + + "6B 30 6C 30 6D 30 6E 30 6F 30 72 30 75 30 78 30" + + "7B 30 7E 30 7F 30 80 30 81 30 82 30 84 30 86 30" + + "88 30 89 30 8A 30 8B 30 8C 30 8D 30 8F 30 92 30" + + "93 30 30 00 30 00 32 00 34 00 32 00 01 42 30 44" + + "30 46 30 48 30 4A 30 4B 30 4D 30 4F 30 51 30 53" + + "30 55 30 57 30 59 30 5B 30 5D 30 5F 30 61 30 64" + + "30 66 30 68 30 6A 30 6B 30 6C 30 6D 30 6E 30 6F" + + "30 72 30 75 30 78 30 7B 30 7E 30 7F 30 80 30 81" + + "30 82 30 84 30 86 30 88 30 89 30 8A 30 8B 30 8C" + + "30 8D 30 8F 30 92 30 93 30 30 00 30 00 32 00 35" + + "00 32 00 01 42 30 44 30 46 30 48 30 4A 30 4B 30" + + "4D 30 4F 30 51 30 53 30 55 30 57 30 59 30 5B 30" + + "5D 30 5F 30 61 30 64 30 66 30 68 30 6A 30 6B 30" + + "6C 30 6D 30 6E 30 6F 30 72 30 75 30 78 30 7B 30" + + "7E 30 7F 30 80 30 81 30 82 30 84 30 86 30 88 30" + + "89 30 8A 30 8B 30 8C 30 8D 30 8F 30 92 30 93 30" + + "30 00 30 00 32 00 36 00 32 00 01 42 30 44 30 46" + + "30 48 30 4A 30 4B 30 4D 30 4F 30 51 30 53 30 55" + + "30 57 30 59 30 5B 30 5D 30 5F 30 61 30 64 30 66" + + "30 68 30 6A 30 6B 30 6C 30 6D 30 6E 30 6F 30 72" + + "30 75 30 78 30 7B 30 7E 30 7F 30 80 30 81 30 82" + + "30 84 30 86 30 88 30 89 30 8A 30 8B 30 8C 30 8D" + + "30 8F 30 92 30 93 30 30 00 30 00 32 00 37 00 32" + + "00 01 42 30 44 30 46 30 48 30 4A 30 4B 30 4D 30" + + "4F 30 51 30 53 30 55 30 57 30 59 30 5B 30 5D 30" + + "5F 30 61 30 64 30 66 30 68 30 6A 30 6B 30 6C 30" + + "6D 30 6E 30 6F 30 72 30 75 30 78 30 7B 30 7E 30" + + "7F 30 80 30 81 30 82 30 84 30 86 30 88 30 89 30" + + "8A 30 8B 30 8C 30 8D 30 8F 30 92 30 93 30 30 00" + + "30 00 32 00 38 00 32 00 01 42 30 44 30 46 30 48" + + "30 4A 30 4B 30 4D 30 4F 30 51 30 53 30 55 30 57" + + "30 59 30 5B 30 5D 30 5F 30 61 30 64 30 66 30 68" + + "30 6A 30 6B 30 6C 30 6D 30 6E 30 6F 30 72 30 75" + + "30 78 30 7B 30 7E 30 7F 30 80 30 81 30 82 30 84" + + "30 86 30 88 30 89 30 8A 30 8B 30 8C 30 8D 30 8F" + + "30 92 30 93 30 30 00 30 00 32 00 39 00 32 00 01" + + "42 30 44 30 46 30 48 30 4A 30 4B 30 4D 30 4F 30" + + "51 30 53 30 55 30 57 30 59 30 5B 30 5D 30 5F 30" + + "61 30 64 30 66 30 68 30 6A 30 6B 30 6C 30 6D 30" + + "6E 30 6F 30 72 30 75 30 78 30 7B 30 7E 30 7F 30" + + "80 30 81 30 82 30 84 30 86 30 88 30 89 30 8A 30" + + "8B 30 8C 30 8D 30 8F 30 92 30 93 30 30 00 30 00" + + "33 00 30 00 32 00 01 42 30 44 30 46 30 48 30 4A" + + "30 4B 30 4D 30 4F 30 51 30 53 30 55 30 57 30 59" + + "30 5B 30 5D 30 5F 30 61 30 64 30 66 30 68 30 6A" + + "30 6B 30 6C 30 6D 30 6E 30 6F 30 72 30 75 30 78" + + "30 7B 30 7E 30 7F 30 80 30 81 30 82 30 84 30 86" + + "30 88 30 89 30 8A 30 8B 30 8C 30 8D 30 8F 30 92" + + "30 93 30 30 00 30 00 33 00 31 00 32 00 01 42 30" + + "44 30 46 30 48 30 4A 30 4B 30 4D 30 4F 30 51 30" + + "53 30 55 30 57 30 59 30 5B 30 5D 30 5F 30 61 30" + + "64 30 66 30 68 30 6A 30 6B 30 6C 30 6D 30 6E 30" + + "6F 30 72 30 75 30 78 30 7B 30 7E 30 7F 30 80 30" + + "81 30 82 30 84 30 86 30 88 30 89 30 8A 30 8B 30" + + "8C 30 8D 30 8F 30 92 30 93 30 30 00 30 00 33 00" + + "32 00 32 00 01 42 30 44 30 46 30 48 30 4A 30 4B" + + "30 4D 30 4F 30 51 30 53 30 55 30 57 30 59 30 5B" + + "30 5D 30 5F 30 61 30 64 30 66 30 68 30 6A 30 6B" + + "30 6C 30 6D 30 6E 30 6F 30 72 30 75 30 78 30 7B" + + "30 7E 30 7F 30 80 30 81 30 82 30 84 30 86 30 88" + + "30 89 30 8A 30 8B 30 8C 30 8D 30 8F 30 92 30 93" + + "30 30 00 30 00 33 00 33 00 32 00 01 42 30 44 30" + + "46 30 48 30 4A 30 4B 30 4D 30 4F 30 51 30 53 30" + + "55 30 57 30 59 30 5B 30 5D 30 5F 30 61 30 64 30" + + "66 30 68 30 6A 30 6B 30 6C 30 6D 30 6E 30 6F 30" + + "72 30 75 30 78 30 7B 30 7E 30 7F 30 80 30 81 30" + + "82 30 84 30 86 30 88 30 89 30 8A 30 8B 30 8C 30" + + "8D 30 8F 30 92 30 93 30 30 00 30 00 33 00 34 00" + + "32 00 01 42 30 44 30 46 30 48 30 4A 30 4B 30 4D" + + "30 4F 30 51 30 53 30 55 30 57 30 59 30 5B 30 5D" + + "30 5F 30 61 30 64 30 66 30 68 30 6A 30 6B 30 6C" + + "30 6D 30 6E 30 6F 30 72 30 75 30 78 30 7B 30 7E" + + "30 7F 30 80 30 81 30 82 30 84 30 86 30 88 30 89" + + "30 8A 30 8B 30 8C 30 8D 30 8F 30 92 30 93 30 30" + + "00 30 00 33 00 35 00 32 00 01 42 30 44 30 46 30" + + "48 30 4A 30 4B 30 4D 30 4F 30 51 30 53 30 55 30" + + "57 30 59 30 5B 30 5D 30 5F 30 61 30 64 30 66 30" + + "68 30 6A 30 6B 30 6C 30 6D 30 6E 30 6F 30 72 30" + + "75 30 78 30 7B 30 7E 30 7F 30 80 30 81 30 82 30" + + "84 30 86 30 88 30 89 30 8A 30 8B 30 8C 30 8D 30" + + "8F 30 92 30 93 30 30 00 30 00 33 00 36 00 32 00" + + "01 42 30 44 30 46 30 48 30 4A 30 4B 30 4D 30 4F" + + "30 51 30 53 30 55 30 57 30 59 30 5B 30 5D 30 5F" + + "30 61 30 64 30 66 30 68 30 6A 30 6B 30 6C 30 6D" + + "30 6E 30 6F 30 72 30 75 30 78 30 7B 30 7E 30 7F" + + "30 80 30 81 30 82 30 84 30 86 30 88 30 89 30 8A" + + "30 8B 30 8C 30 8D 30 8F 30 92 30 93 30 30 00 30" + + "00 33 00 37 00 32 00 01 42 30 44 30 46 30 48 30" + + "4A 30 4B 30 4D 30 4F 30 51 30 53 30 55 30 57 30" + + "59 30 5B 30 5D 30 5F 30 61 30 64 30 66 30 68 30" + + "6A 30 6B 30 6C 30 6D 30 6E 30 6F 30 72 30 75 30" + + "78 30 7B 30 7E 30 7F 30 80 30 81 30 82 30 84 30" + + "86 30 88 30 89 30 8A 30 8B 30 8C 30 8D 30 8F 30" + + "92 30 93 30 30 00 30 00 33 00 38 00 32 00 01 42" + + "30 44 30 46 30 48 30 4A 30 4B 30 4D 30 4F 30 51" + + "30 53 30 55 30 57 30 59 30 5B 30 5D 30 5F 30 61" + + "30 64 30 66 30 68 30 6A 30 6B 30 6C 30 6D 30 6E" + + "30 6F 30 72 30 75 30 78 30 7B 30 7E 30 7F 30 80" + + "30 81 30 82 30 84 30 86 30 88 30 89 30 8A 30 8B" + + "30 8C 30 8D 30 8F 30 92 30 93 30 30 00 30 00 33" + + "00 39 00 32 00 01 42 30 44 30 46 30 48 30 4A 30" + + "4B 30 4D 30 4F 30 51 30 53 30 55 30 57 30 59 30" + + "5B 30 5D 30 5F 30 61 30 64 30 66 30 68 30 6A 30" + + "6B 30 6C 30 6D 30 6E 30 6F 30 72 30 75 30 78 30" + + "7B 30 7E 30 7F 30 80 30 81 30 82 30 84 30 86 30" + + "88 30 89 30 8A 30 8B 30 8C 30 8D 30 8F 30 92 30" + + "93 30 30 00 30 00 34 00 30 00 32 00 01 42 30 44" + + "30 46 30 48 30 4A 30 4B 30 4D 30 4F 30 51 30 53" + + "30 55 30 57 30 59 30 5B 30 5D 30 5F 30 61 30 64" + + "30 66 30 68 30 6A 30 6B 30 6C 30 6D 30 6E 30 6F" + + "30 72 30 75 30 78 30 7B 30 7E 30 7F 30 80 30 81" + + "30 82 30 84 30 86 30 88 30 89 30 8A 30 8B 30 8C" + + "30 8D 30 8F 30 92 30 93 30 30 00 30 00 34 00 31" + + "00 32 00 01 42 30 44 30 46 30 48 30 4A 30 4B 30" + + "4D 30 4F 30 51 30 53 30 55 30 57 30 59 30 5B 30" + + "5D 30 5F 30 61 30 64 30 66 30 68 30 6A 30 6B 30" + + "6C 30 6D 30 6E 30 6F 30 72 30 75 30 78 30 7B 30" + + "7E 30 7F 30 80 30 81 30 82 30 84 30 86 30 88 30" + + "89 30 8A 30 8B 30 8C 30 8D 30 8F 30 92 30 93 30" + + "30 00 30 00 34 00 32 00 32 00 01 42 30 44 30 46" + + "30 48 30 4A 30 4B 30 4D 30 4F 30 51 30 53 30 55" + + "30 57 30 59 30 5B 30 5D 30 5F 30 61 30 64 30 66" + + "30 68 30 6A 30 6B 30 6C 30 6D 30 6E 30 6F 30 72" + + "30 75 30 78 30 7B 30 7E 30 7F 30 80 30 81 30 82" + + "30 84 30 86 30 88 30 89 30 8A 30 8B 30 8C 30 8D" + + "30 8F 30 92 30 93 30 30 00 30 00 34 00 33 00 32" + + "00 01 42 30 44 30 46 30 48 30 4A 30 4B 30 4D 30" + + "4F 30 51 30 53 30 55 30 57 30 59 30 5B 30 5D 30" + + "5F 30 61 30 64 30 66 30 68 30 6A 30 6B 30 6C 30" + + "6D 30 6E 30 6F 30 72 30 75 30 78 30 7B 30 7E 30" + + "7F 30 80 30 81 30 82 30 84 30 86 30 88 30 89 30" + + "8A 30 8B 30 8C 30 8D 30 8F 30 92 30 93 30 30 00" + + "30 00 34 00 34 00 32 00 01 42 30 44 30 46 30 48" + + "30 4A 30 4B 30 4D 30 4F 30 51 30 53 30 55 30 57" + + "30 59 30 5B 30 5D 30 5F 30 61 30 64 30 66 30 68" + + "30 6A 30 6B 30 6C 30 6D 30 6E 30 6F 30 72 30 75" + + "30 78 30 7B 30 7E 30 7F 30 80 30 81 30 82 30 84" + + "30 86 30 88 30 89 30 8A 30 8B 30 8C 30 8D 30 8F" + + "30 92 30 93 30 30 00 30 00 34 00 35 00 32 00 01" + + "42 30 44 30 46 30 48 30 4A 30 4B 30 4D 30 4F 30" + + "51 30 53 30 55 30 57 30 59 30 5B 30 5D 30 5F 30" + + "61 30 64 30 66 30 68 30 6A 30 6B 30 6C 30 6D 30" + + "6E 30 6F 30 72 30 75 30 78 30 7B 30 7E 30 7F 30" + + "80 30 81 30 82 30 84 30 86 30 88 30 89 30 8A 30" + + "8B 30 8C 30 8D 30 8F 30 92 30 93 30 30 00 30 00" + + "34 00 36 00 32 00 01 42 30 44 30 46 30 48 30 4A" + + "30 4B 30 4D 30 4F 30 51 30 53 30 55 30 57 30 59" + + "30 5B 30 5D 30 5F 30 61 30 64 30 66 30 68 30 6A" + + "30 6B 30 6C 30 6D 30 6E 30 6F 30 72 30 75 30 78" + + "30 7B 30 7E 30 7F 30 80 30 81 30 82 30 84 30 86" + + "30 88 30 89 30 8A 30 8B 30 8C 30 8D 30 8F 30 92" + + "30 93 30 30 00 30 00 34 00 37 00 32 00 01 42 30" + + "44 30 46 30 48 30 4A 30 4B 30 4D 30 4F 30 51 30" + + "53 30 55 30 57 30 59 30 5B 30 5D 30 5F 30 61 30" + + "64 30 66 30 68 30 6A 30 6B 30 6C 30 6D 30 6E 30" + + "6F 30 72 30 75 30 78 30 7B 30 7E 30 7F 30 80 30" + + "81 30 82 30 84 30 86 30 88 30 89 30 8A 30 8B 30" + + "8C 30 8D 30 8F 30 92 30 93 30 30 00 30 00 34 00" + + "38 00 32 00 01 42 30 44 30 46 30 48 30 4A 30 4B" + + "30 4D 30 4F 30 51 30 53 30 55 30 57 30 59 30 5B" + + "30 5D 30 5F 30 61 30 64 30 66 30 68 30 6A 30 6B" + + "30 6C 30 6D 30 6E 30 6F 30 72 30 75 30 78 30 7B" + + "30 7E 30 7F 30 80 30 81 30 82 30 84 30 86 30 88" + + "30 89 30 8A 30 8B 30 8C 30 8D 30 8F 30 92 30 93" + + "30 30 00 30 00 34 00 39 00 32 00 01 42 30 44 30" + + "46 30 48 30 4A 30 4B 30 4D 30 4F 30 51 30 53 30" + + "55 30 57 30 59 30 5B 30 5D 30 5F 30 61 30 64 30" + + "66 30 68 30 6A 30 6B 30 6C 30 6D 30 6E 30 6F 30" + + "72 30 75 30 78 30 7B 30 7E 30 7F 30 80 30 81 30" + + "82 30 84 30 86 30 88 30 89 30 8A 30 8B 30 8C 30" + + "8D 30 8F 30 92 30 93 30 30 00 30 00 35 00 30 00" + + "32 00 01 42 30 44 30 46 30 48 30 4A 30 4B 30 4D" + + "30 4F 30 51 30 53 30 55 30 57 30 59 30 5B 30 5D" + + "30 5F 30 61 30 64 30 66 30 68 30 6A 30 6B 30 6C" + + "30 6D 30 6E 30 6F 30 72 30 75 30 78 30 7B 30 7E" + + "30 7F 30 80 30 81 30 82 30 84 30 86 30 88 30 89" + + "30 8A 30 8B 30 8C 30 8D 30 8F 30 92 30 93 30 30" + + "00 30 00 35 00 31 00 32 00 01 42 30 44 30 46 30" + + "48 30 4A 30 4B 30 4D 30 4F 30 51 30 53 30 55 30" + + "57 30 59 30 5B 30 5D 30 5F 30 61 30 64 30 66 30" + + "68 30 6A 30 6B 30 6C 30 6D 30 6E 30 6F 30 72 30" + + "75 30 78 30 7B 30 7E 30 7F 30 80 30 81 30 82 30" + + "84 30 86 30 88 30 89 30 8A 30 8B 30 8C 30 8D 30" + + "8F 30 92 30 93 30 30 00 30 00 35 00 32 00 32 00" + + "01 42 30 44 30 46 30 48 30 4A 30 4B 30 4D 30 4F" + + "30 51 30 53 30 55 30 57 30 59 30 5B 30 5D 30 5F" + + "30 61 30 64 30 66 30 68 30 6A 30 6B 30 6C 30 6D" + + "30 6E 30 6F 30 72 30 75 30 78 30 7B 30 7E 30 7F" + + "30 80 30 81 30 82 30 84 30 86 30 88 30 89 30 8A" + + "30 8B 30 8C 30 8D 30 8F 30 92 30 93 30 30 00 30" + + "00 35 00 33 00 32 00 01 42 30 44 30 46 30 48 30" + + "4A 30 4B 30 4D 30 4F 30 51 30 53 30 55 30 57 30" + + "59 30 5B 30 5D 30 5F 30 61 30 64 30 66 30 68 30" + + "6A 30 6B 30 6C 30 6D 30 6E 30 6F 30 72 30 75 30" + + "78 30 7B 30 7E 30 7F 30 80 30 81 30 82 30 84 30" + + "86 30 88 30 89 30 8A 30 8B 30 8C 30 8D 30 8F 30" + + "92 30 93 30 30 00 30 00 35 00 34 00 32 00 01 42" + + "30 44 30 46 30 48 30 4A 30 4B 30 4D 30 4F 30 51" + + "30 53 30 55 30 57 30 59 30 5B 30 5D 30 5F 30 61" + + "30 64 30 66 30 68 30 6A 30 6B 30 6C 30 6D 30 6E" + + "30 6F 30 72 30 75 30 78 30 7B 30 7E 30 7F 30 80" + + "30 81 30 82 30 84 30 86 30 88 30 89 30 8A 30 8B" + + "30 8C 30 8D 30 8F 30 92 30 93 30 30 00 30 00 35" + + "00 35 00 32 00 01 42 30 44 30 46 30 48 30 4A 30" + + "4B 30 4D 30 4F 30 51 30 53 30 55 30 57 30 59 30" + + "5B 30 5D 30 5F 30 61 30 64 30 66 30 68 30 6A 30" + + "6B 30 6C 30 6D 30 6E 30 6F 30 72 30 75 30 78 30" + + "7B 30 7E 30 7F 30 80 30 81 30 82 30 84 30 86 30" + + "88 30 89 30 8A 30 8B 30 8C 30 8D 30 8F 30 92 30" + + "93 30 30 00 30 00 35 00 36 00 32 00 01 42 30 44" + + "30 46 30 48 30 4A 30 4B 30 4D 30 4F 30 51 30 53" + + "30 55 30 57 30 59 30 5B 30 5D 30 5F 30 61 30 64" + + "30 66 30 68 30 6A 30 6B 30 6C 30 6D 30 6E 30 6F" + + "30 72 30 75 30 78 30 7B 30 7E 30 7F 30 80 30 81" + + "30 82 30 84 30 86 30 88 30 89 30 8A 30 8B 30 8C" + + "30 8D 30 8F 30 92 30 93 30 30 00 30 00 35 00 37" + + "00 32 00 01 42 30 44 30 46 30 48 30 4A 30 4B 30" + + "4D 30 4F 30 51 30 53 30 55 30 57 30 59 30 5B 30" + + "5D 30 5F 30 61 30 64 30 66 30 68 30 6A 30 6B 30" + + "6C 30 6D 30 6E 30 6F 30 72 30 75 30 78 30 7B 30" + + "7E 30 7F 30 80 30 81 30 82 30 84 30 86 30 88 30" + + "89 30 8A 30 8B 30 8C 30 8D 30 8F 30 92 30 93 30" + + "30 00 30 00 35 00 38 00 32 00 01 42 30 44 30 46" + + "30 48 30 4A 30 4B 30 4D 30 4F 30 51 30 53 30 55" + + "30 57 30 59 30 5B 30 5D 30 5F 30 61 30 64 30 66" + + "30 68 30 6A 30 6B 30 6C 30 6D 30 6E 30 6F 30 72" + + "30 75 30 78 30 7B 30 7E 30 7F 30 80 30 81 30 82" + + "30 84 30 86 30 88 30 89 30 8A 30 8B 30 8C 30 8D" + + "30 8F 30 92 30 93 30 30 00 30 00 35 00 39 00 32" + + "00 01 42 30 44 30 46 30 48 30 4A 30 4B 30 4D 30" + + "4F 30 51 30 53 30 55 30 57 30 59 30 5B 30 5D 30" + + "5F 30 61 30 64 30 66 30 68 30 6A 30 6B 30 6C 30" + + "6D 30 6E 30 6F 30 72 30 75 30 78 30 7B 30 7E 30" + + "7F 30 80 30 81 30 82 30 84 30 86 30 88 30 89 30" + + "8A 30 8B 30 8C 30 8D 30 8F 30 92 30 93 30 30 00" + + "30 00 36 00 30 00 32 00 01 42 30 44 30 46 30 48" + + "30 4A 30 4B 30 4D 30 4F 30 51 30 53 30 55 30 57" + + "30 59 30 5B 30 5D 30 5F 30 61 30 64 30 66 30 68" + + "30 6A 30 6B 30 6C 30 6D 30 6E 30 6F 30 72 30 75" + + "30 78 30 7B 30 7E 30 7F 30 80 30 81 30 82 30 84" + + "30 86 30 88 30 89 30 8A 30 8B 30 8C 30 8D 30 8F" + + "30 92 30 93 30 30 00 30 00 36 00 31 00 32 00 01" + + "42 30 44 30 46 30 48 30 4A 30 4B 30 4D 30 4F 30" + + "51 30 53 30 55 30 57 30 59 30 5B 30 5D 30 5F 30" + + "61 30 64 30 66 30 68 30 6A 30 6B 30 6C 30 6D 30" + + "6E 30 6F 30 72 30 75 30 78 30 7B 30 7E 30 7F 30" + + "80 30 81 30 82 30 84 30 86 30 88 30 89 30 8A 30" + + "8B 30 8C 30 8D 30 8F 30 92 30 93 30 30 00 30 00" + + "36 00 32 00 32 00 01 42 30 44 30 46 30 48 30 4A" + + "30 4B 30 4D 30 4F 30 51 30 53 30 55 30 57 30 59" + + "30 5B 30 5D 30 5F 30 61 30 64 30 66 30 68 30 6A" + + "30 6B 30 6C 30 6D 30 6E 30 6F 30 72 30 75 30 78" + + "30 7B 30 7E 30 7F 30 80 30 81 30 82 30 84 30 86" + + "30 88 30 89 30 8A 30 8B 30 8C 30 8D 30 8F 30 92" + + "30 93 30 30 00 30 00 36 00 33 00 32 00 01 42 30" + + "44 30 46 30 48 30 4A 30 4B 30 4D 30 4F 30 51 30" + + "53 30 55 30 57 30 59 30 5B 30 5D 30 5F 30 61 30" + + "64 30 66 30 68 30 6A 30 6B 30 6C 30 6D 30 6E 30" + + "6F 30 72 30 75 30 78 30 7B 30 7E 30 7F 30 80 30" + + "81 30 82 30 84 30 86 30 88 30 89 30 8A 30 8B 30" + + "8C 30 8D 30 8F 30 92 30 93 30 30 00 30 00 36 00" + + "34 00 32 00 01 42 30 44 30 46 30 48 30 4A 30 4B" + + "30 4D 30 4F 30 51 30 53 30 55 30 57 30 59 30 5B" + + "30 5D 30 5F 30 61 30 64 30 66 30 68 30 6A 30 6B" + + "30 6C 30 6D 30 6E 30 6F 30 72 30 75 30 78 30 7B" + + "30 7E 30 7F 30 80 30 81 30 82 30 84 30 86 30 88" + + "30 89 30 8A 30 8B 30 8C 30 8D 30 8F 30 92 30 93" + + "30 30 00 30 00 36 00 35 00 32 00 01 42 30 44 30" + + "46 30 48 30 4A 30 4B 30 4D 30 4F 30 51 30 53 30" + + "55 30 57 30 59 30 5B 30 5D 30 5F 30 61 30 64 30" + + "66 30 68 30 6A 30 6B 30 6C 30 6D 30 6E 30 6F 30" + + "72 30 75 30 78 30 7B 30 7E 30 7F 30 80 30 81 30" + + "82 30 84 30 86 30 88 30 89 30 8A 30 8B 30 8C 30" + + "8D 30 8F 30 92 30 93 30 30 00 30 00 36 00 36 00" + + "32 00 01 42 30 44 30 46 30 48 30 4A 30 4B 30 4D" + + "30 4F 30 51 30 53 30 55 30 57 30 59 30 5B 30 5D" + + "30 5F 30 61 30 64 30 66 30 68 30 6A 30 6B 30 6C" + + "30 6D 30 6E 30 6F 30 72 30 75 30 78 30 7B 30 7E" + + "30 7F 30 80 30 81 30 82 30 84 30 86 30 88 30 89" + + "30 8A 30 8B 30 8C 30 8D 30 8F 30 92 30 93 30 30" + + "00 30 00 36 00 37 00 32 00 01 42 30 44 30 46 30" + + "48 30 4A 30 4B 30 4D 30 4F 30 51 30 53 30 55 30" + + "57 30 59 30 5B 30 5D 30 5F 30 61 30 64 30 66 30" + + "68 30 6A 30 6B 30 6C 30 6D 30 6E 30 6F 30 72 30" + + "75 30 78 30 7B 30 7E 30 7F 30 80 30 81 30 82 30" + + "84 30 86 30 88 30 89 30 8A 30 8B 30 8C 30 8D 30" + + "8F 30 92 30 93 30 30 00 30 00 36 00 38 00 32 00" + + "01 42 30 44 30 46 30 48 30 4A 30 4B 30 4D 30 4F" + + "30 51 30 53 30 55 30 57 30 59 30 5B 30 5D 30 5F" + + "30 61 30 64 30 66 30 68 30 6A 30 6B 30 6C 30 6D" + + "30 6E 30 6F 30 72 30 75 30 78 30 7B 30 7E 30 7F" + + "30 80 30 81 30 82 30 84 30 86 30 88 30 89 30 8A" + + "30 8B 30 8C 30 8D 30 8F 30 92 30 93 30 30 00 30" + + "00 36 00 39 00 32 00 01 42 30 44 30 46 30 48 30" + + "4A 30 4B 30 4D 30 4F 30 51 30 53 30 55 30 57 30" + + "59 30 5B 30 5D 30 5F 30 61 30 64 30 66 30 68 30" + + "6A 30 6B 30 6C 30 6D 30 6E 30 6F 30 72 30 75 30" + + "78 30 7B 30 7E 30 7F 30 80 30 81 30 82 30 84 30" + + "86 30 88 30 89 30 8A 30 8B 30 8C 30 8D 30 8F 30" + + "92 30 93 30 30 00 30 00 37 00 30 00 32 00 01 42" + + "30 44 30 46 30 48 30 4A 30 4B 30 4D 30 4F 30 51" + + "30 53 30 55 30 57 30 59 30 5B 30 5D 30 5F 30 61" + + "30 64 30 66 30 68 30 6A 30 6B 30 6C 30 6D 30 6E" + + "30 6F 30 72 30 75 30 78 30 7B 30 7E 30 7F 30 80" + + "30 81 30 82 30 84 30 86 30 88 30 89 30 8A 30 8B" + + "30 8C 30 8D 30 8F 30 92 30 93 30 30 00 30 00 37" + + "00 31 00 32 00 01 42 30 44 30 46 30 48 30 4A 30" + + "4B 30 4D 30 4F 30 51 30 53 30 55 30 57 30 59 30" + + "5B 30 5D 30 5F 30 61 30 64 30 66 30 68 30 6A 30" + + "6B 30 6C 30 6D 30 6E 30 6F 30 72 30 75 30 78 30" + + "7B 30 7E 30 7F 30 80 30 81 30 82 30 84 30 86 30" + + "88 30 89 30 8A 30 8B 30 8C 30 8D 30 8F 30 92 30" + + "93 30 30 00 30 00 37 00 32 00 32 00 01 42 30 44" + + "30 46 30 48 30 4A 30 4B 30 4D 30 4F 30 51 30 53" + + "30 55 30 57 30 59 30 5B 30 5D 30 5F 30 61 30 64" + + "30 66 30 68 30 6A 30 6B 30 6C 30 6D 30 6E 30 6F" + + "30 72 30 75 30 78 30 7B 30 7E 30 7F 30 80 30 81" + + "30 82 30 84 30 86 30 88 30 89 30 8A 30 8B 30 8C" + + "30 8D 30 8F 30 92 30 93 30 30 00 30 00 37 00 33" + + "00 32 00 01 42 30 44 30 46 30 48 30 4A 30 4B 30" + + "4D 30 4F 30 51 30 53 30 55 30 57 30 59 30 5B 30" + + "5D 30 5F 30 61 30 64 30 66 30 68 30 6A 30 6B 30" + + "6C 30 6D 30 6E 30 6F 30 72 30 75 30 78 30 7B 30" + + "7E 30 7F 30 80 30 81 30 82 30 84 30 86 30 88 30" + + "89 30 8A 30 8B 30 8C 30 8D 30 8F 30 92 30 93 30" + + "30 00 30 00 37 00 34 00 32 00 01 42 30 44 30 46" + + "30 48 30 4A 30 4B 30 4D 30 4F 30 51 30 53 30 55" + + "30 57 30 59 30 5B 30 5D 30 5F 30 61 30 64 30 66" + + "30 68 30 6A 30 6B 30 6C 30 6D 30 6E 30 6F 30 72" + + "30 75 30 78 30 7B 30 7E 30 7F 30 80 30 81 30 82" + + "30 84 30 86 30 88 30 89 30 8A 30 8B 30 8C 30 8D" + + "30 8F 30 92 30 93 30 30 00 30 00 37 00 35 00 32" + + "00 01 42 30 44 30 46 30 48 30 4A 30 4B 30 4D 30" + + "4F 30 51 30 53 30 55 30 57 30 59 30 5B 30 5D 30" + + "5F 30 61 30 64 30 66 30 68 30 6A 30 6B 30 6C 30" + + "6D 30 6E 30 6F 30 72 30 75 30 78 30 7B 30 7E 30" + + "7F 30 80 30 81 30 82 30 84 30 86 30 88 30 89 30" + + "8A 30 8B 30 8C 30 8D 30 8F 30 92 30 93 30 30 00" + + "30 00 37 00 36 00 32 00 01 42 30 44 30 46 30 48" + + "30 4A 30 4B 30 4D 30 4F 30 51 30 53 30 55 30 57" + + "30 59 30 5B 30 5D 30 5F 30 61 30 64 30 66 30 68" + + "30 6A 30 6B 30 6C 30 6D 30 6E 30 6F 30 72 30 75" + + "30 78 30 7B 30 7E 30 7F 30 80 30 81 30 82 30 84" + + "30 86 30 88 30 89 30 8A 30 8B 30 8C 30 8D 30 8F" + + "30 92 30 93 30 30 00 30 00 37 00 37 00 32 00 01" + + "42 30 44 30 46 30 48 30 4A 30 4B 30 4D 30 4F 30" + + "51 30 53 30 55 30 57 30 59 30 5B 30 5D 30 5F 30" + + "61 30 64 30 66 30 68 30 6A 30 6B 30 6C 30 6D 30" + + "6E 30 6F 30 72 30 75 30 78 30 7B 30 7E 30 7F 30" + + "80 30 81 30 82 30 84 30 86 30 88 30 89 30 8A 30" + + "8B 30 8C 30 8D 30 8F 30 92 30 93 30 30 00 30 00" + + "37 00 38 00 1F 00 05 B8 00 00 00 17 53 77 6D 53" + + "90 52 97 EE 68 0C 77 A9 5C 4B 62 0C 77 8F 79 F6" + + "5C 0C 77 03 68 28 67 0C 77 FC 57 89 73 0C 77 71" + + "67 AC 4E FD 90 43 53 49 84 0C 77 5E 79 48 59 DD" + + "5D 0C 77 77 95 CE 91 0C 77 01 00 B4 00 05 00 35" + + "00 0A 00 37 00 37 00 DB 30 C3 30 AB 30 A4 30 C9" + + "30 A6 30 A2 30 AA 30 E2 30 EA 30 B1 30 F3 30 A4" + + "30 EF 30 C6 30 B1 30 F3 30 D5 30 AF 30 B7 30 DE" + + "30 B1 30 F3 30 C8 30 C1 30 AE 30 B1 30 F3 30 B5" + + "30 A4 30 BF 30 DE 30 B1 30 F3 30 C8 30 A6 30 AD" + + "30 E7 30 A6 30 C8 " + + + // Offset=0x00002636(9782) recno=72 sid=0x003C size=0x0151(337) + " 3C 00 51 01 30 C1 30 D0 30 B1" + + "30 F3 30 AB 30 CA 30 AC 30 EF 30 B1 30 F3 30 CA" + + "30 AC 30 CE 30 B1 30 F3 30 00 00 00 00 03 00 06" + + "00 03 00 03 00 0C 00 06 00 03 00 11 00 09 00 03" + + "00 17 00 0C 00 03 00 1C 00 0F 00 03 00 22 00 12" + + "00 03 00 28 00 15 00 03 00 2C 00 18 00 04 00 32" + + "00 1C 00 03 00 32 00 05 10 00 00 00 42 30 44 30" + + "46 30 48 30 4A 30 4B 30 4D 30 4F 30 51 30 53 30" + + "55 30 57 30 59 30 5B 30 5D 30 5F 30 61 30 64 30" + + "66 30 68 30 6A 30 6B 30 6C 30 6D 30 6E 30 6F 30" + + "72 30 75 30 78 30 7B 30 7E 30 7F 30 80 30 81 30" + + "82 30 84 30 86 30 88 30 89 30 8A 30 8B 30 8C 30" + + "8D 30 8F 30 92 30 93 30 30 00 30 00 37 00 39 00" + + "01 00 0C 00 05 00 35 00 00 00 00 00 00 00 00 00" + + "32 00 05 10 00 00 00 42 30 44 30 46 30 48 30 4A" + + "30 4B 30 4D 30 4F 30 51 30 53 30 55 30 57 30 59" + + "30 5B 30 5D 30 5F 30 61 30 64 30 66 30 68 30 6A" + + "30 6B 30 6C 30 6D 30 6E 30 6F 30 72 30 75 30 78" + + "30 7B 30 7E 30 7F 30 80 30 81 30 82 30 84 30 86" + + "30 88 30 89 30 8A 30 8B 30 8C 30 8D 30 8F 30 92" + + "30 93 30 30 00 30 00 38 00 30 00 01 00 0C 00 05" + + "00 35 00 00 00 00 00 00 00 4B 30 "; + + + /** + * hex dump from UnicodeStringFailCase2.xls atatched to Bugzilla 50779 + */ + private static final String data_50779_2 = + //"Offset=0x00000612(1554) recno=71 sid=0x00FC size=0x2020(8224)\n" + + " FC 00 20 20 51 00 00 00 51 00 00 00 32 00" + + "01 42 30 44 30 46 30 48 30 4A 30 4B 30 4D 30 4F" + + "30 51 30 53 30 55 30 57 30 59 30 5B 30 5D 30 5F" + + "30 61 30 64 30 66 30 68 30 6A 30 6B 30 6C 30 6D" + + "30 6E 30 6F 30 72 30 75 30 78 30 7B 30 7E 30 7F" + + "30 80 30 81 30 82 30 84 30 86 30 88 30 89 30 8A" + + "30 8B 30 8C 30 8D 30 8F 30 92 30 93 30 30 00 30" + + "00 30 00 31 00 32 00 01 42 30 44 30 46 30 48 30" + + "4A 30 4B 30 4D 30 4F 30 51 30 53 30 55 30 57 30" + + "59 30 5B 30 5D 30 5F 30 61 30 64 30 66 30 68 30" + + "6A 30 6B 30 6C 30 6D 30 6E 30 6F 30 72 30 75 30" + + "78 30 7B 30 7E 30 7F 30 80 30 81 30 82 30 84 30" + + "86 30 88 30 89 30 8A 30 8B 30 8C 30 8D 30 8F 30" + + "92 30 93 30 30 00 30 00 30 00 32 00 32 00 01 42" + + "30 44 30 46 30 48 30 4A 30 4B 30 4D 30 4F 30 51" + + "30 53 30 55 30 57 30 59 30 5B 30 5D 30 5F 30 61" + + "30 64 30 66 30 68 30 6A 30 6B 30 6C 30 6D 30 6E" + + "30 6F 30 72 30 75 30 78 30 7B 30 7E 30 7F 30 80" + + "30 81 30 82 30 84 30 86 30 88 30 89 30 8A 30 8B" + + "30 8C 30 8D 30 8F 30 92 30 93 30 30 00 30 00 30" + + "00 33 00 32 00 01 42 30 44 30 46 30 48 30 4A 30" + + "4B 30 4D 30 4F 30 51 30 53 30 55 30 57 30 59 30" + + "5B 30 5D 30 5F 30 61 30 64 30 66 30 68 30 6A 30" + + "6B 30 6C 30 6D 30 6E 30 6F 30 72 30 75 30 78 30" + + "7B 30 7E 30 7F 30 80 30 81 30 82 30 84 30 86 30" + + "88 30 89 30 8A 30 8B 30 8C 30 8D 30 8F 30 92 30" + + "93 30 30 00 30 00 30 00 34 00 32 00 01 42 30 44" + + "30 46 30 48 30 4A 30 4B 30 4D 30 4F 30 51 30 53" + + "30 55 30 57 30 59 30 5B 30 5D 30 5F 30 61 30 64" + + "30 66 30 68 30 6A 30 6B 30 6C 30 6D 30 6E 30 6F" + + "30 72 30 75 30 78 30 7B 30 7E 30 7F 30 80 30 81" + + "30 82 30 84 30 86 30 88 30 89 30 8A 30 8B 30 8C" + + "30 8D 30 8F 30 92 30 93 30 30 00 30 00 30 00 35" + + "00 32 00 01 42 30 44 30 46 30 48 30 4A 30 4B 30" + + "4D 30 4F 30 51 30 53 30 55 30 57 30 59 30 5B 30" + + "5D 30 5F 30 61 30 64 30 66 30 68 30 6A 30 6B 30" + + "6C 30 6D 30 6E 30 6F 30 72 30 75 30 78 30 7B 30" + + "7E 30 7F 30 80 30 81 30 82 30 84 30 86 30 88 30" + + "89 30 8A 30 8B 30 8C 30 8D 30 8F 30 92 30 93 30" + + "30 00 30 00 30 00 36 00 32 00 01 42 30 44 30 46" + + "30 48 30 4A 30 4B 30 4D 30 4F 30 51 30 53 30 55" + + "30 57 30 59 30 5B 30 5D 30 5F 30 61 30 64 30 66" + + "30 68 30 6A 30 6B 30 6C 30 6D 30 6E 30 6F 30 72" + + "30 75 30 78 30 7B 30 7E 30 7F 30 80 30 81 30 82" + + "30 84 30 86 30 88 30 89 30 8A 30 8B 30 8C 30 8D" + + "30 8F 30 92 30 93 30 30 00 30 00 30 00 37 00 32" + + "00 01 42 30 44 30 46 30 48 30 4A 30 4B 30 4D 30" + + "4F 30 51 30 53 30 55 30 57 30 59 30 5B 30 5D 30" + + "5F 30 61 30 64 30 66 30 68 30 6A 30 6B 30 6C 30" + + "6D 30 6E 30 6F 30 72 30 75 30 78 30 7B 30 7E 30" + + "7F 30 80 30 81 30 82 30 84 30 86 30 88 30 89 30" + + "8A 30 8B 30 8C 30 8D 30 8F 30 92 30 93 30 30 00" + + "30 00 30 00 38 00 32 00 01 42 30 44 30 46 30 48" + + "30 4A 30 4B 30 4D 30 4F 30 51 30 53 30 55 30 57" + + "30 59 30 5B 30 5D 30 5F 30 61 30 64 30 66 30 68" + + "30 6A 30 6B 30 6C 30 6D 30 6E 30 6F 30 72 30 75" + + "30 78 30 7B 30 7E 30 7F 30 80 30 81 30 82 30 84" + + "30 86 30 88 30 89 30 8A 30 8B 30 8C 30 8D 30 8F" + + "30 92 30 93 30 30 00 30 00 30 00 39 00 32 00 01" + + "42 30 44 30 46 30 48 30 4A 30 4B 30 4D 30 4F 30" + + "51 30 53 30 55 30 57 30 59 30 5B 30 5D 30 5F 30" + + "61 30 64 30 66 30 68 30 6A 30 6B 30 6C 30 6D 30" + + "6E 30 6F 30 72 30 75 30 78 30 7B 30 7E 30 7F 30" + + "80 30 81 30 82 30 84 30 86 30 88 30 89 30 8A 30" + + "8B 30 8C 30 8D 30 8F 30 92 30 93 30 30 00 30 00" + + "31 00 30 00 32 00 01 42 30 44 30 46 30 48 30 4A" + + "30 4B 30 4D 30 4F 30 51 30 53 30 55 30 57 30 59" + + "30 5B 30 5D 30 5F 30 61 30 64 30 66 30 68 30 6A" + + "30 6B 30 6C 30 6D 30 6E 30 6F 30 72 30 75 30 78" + + "30 7B 30 7E 30 7F 30 80 30 81 30 82 30 84 30 86" + + "30 88 30 89 30 8A 30 8B 30 8C 30 8D 30 8F 30 92" + + "30 93 30 30 00 30 00 31 00 31 00 32 00 01 42 30" + + "44 30 46 30 48 30 4A 30 4B 30 4D 30 4F 30 51 30" + + "53 30 55 30 57 30 59 30 5B 30 5D 30 5F 30 61 30" + + "64 30 66 30 68 30 6A 30 6B 30 6C 30 6D 30 6E 30" + + "6F 30 72 30 75 30 78 30 7B 30 7E 30 7F 30 80 30" + + "81 30 82 30 84 30 86 30 88 30 89 30 8A 30 8B 30" + + "8C 30 8D 30 8F 30 92 30 93 30 30 00 30 00 31 00" + + "32 00 32 00 01 42 30 44 30 46 30 48 30 4A 30 4B" + + "30 4D 30 4F 30 51 30 53 30 55 30 57 30 59 30 5B" + + "30 5D 30 5F 30 61 30 64 30 66 30 68 30 6A 30 6B" + + "30 6C 30 6D 30 6E 30 6F 30 72 30 75 30 78 30 7B" + + "30 7E 30 7F 30 80 30 81 30 82 30 84 30 86 30 88" + + "30 89 30 8A 30 8B 30 8C 30 8D 30 8F 30 92 30 93" + + "30 30 00 30 00 31 00 33 00 32 00 01 42 30 44 30" + + "46 30 48 30 4A 30 4B 30 4D 30 4F 30 51 30 53 30" + + "55 30 57 30 59 30 5B 30 5D 30 5F 30 61 30 64 30" + + "66 30 68 30 6A 30 6B 30 6C 30 6D 30 6E 30 6F 30" + + "72 30 75 30 78 30 7B 30 7E 30 7F 30 80 30 81 30" + + "82 30 84 30 86 30 88 30 89 30 8A 30 8B 30 8C 30" + + "8D 30 8F 30 92 30 93 30 30 00 30 00 31 00 34 00" + + "32 00 01 42 30 44 30 46 30 48 30 4A 30 4B 30 4D" + + "30 4F 30 51 30 53 30 55 30 57 30 59 30 5B 30 5D" + + "30 5F 30 61 30 64 30 66 30 68 30 6A 30 6B 30 6C" + + "30 6D 30 6E 30 6F 30 72 30 75 30 78 30 7B 30 7E" + + "30 7F 30 80 30 81 30 82 30 84 30 86 30 88 30 89" + + "30 8A 30 8B 30 8C 30 8D 30 8F 30 92 30 93 30 30" + + "00 30 00 31 00 35 00 32 00 01 42 30 44 30 46 30" + + "48 30 4A 30 4B 30 4D 30 4F 30 51 30 53 30 55 30" + + "57 30 59 30 5B 30 5D 30 5F 30 61 30 64 30 66 30" + + "68 30 6A 30 6B 30 6C 30 6D 30 6E 30 6F 30 72 30" + + "75 30 78 30 7B 30 7E 30 7F 30 80 30 81 30 82 30" + + "84 30 86 30 88 30 89 30 8A 30 8B 30 8C 30 8D 30" + + "8F 30 92 30 93 30 30 00 30 00 31 00 36 00 32 00" + + "01 42 30 44 30 46 30 48 30 4A 30 4B 30 4D 30 4F" + + "30 51 30 53 30 55 30 57 30 59 30 5B 30 5D 30 5F" + + "30 61 30 64 30 66 30 68 30 6A 30 6B 30 6C 30 6D" + + "30 6E 30 6F 30 72 30 75 30 78 30 7B 30 7E 30 7F" + + "30 80 30 81 30 82 30 84 30 86 30 88 30 89 30 8A" + + "30 8B 30 8C 30 8D 30 8F 30 92 30 93 30 30 00 30" + + "00 31 00 37 00 32 00 01 42 30 44 30 46 30 48 30" + + "4A 30 4B 30 4D 30 4F 30 51 30 53 30 55 30 57 30" + + "59 30 5B 30 5D 30 5F 30 61 30 64 30 66 30 68 30" + + "6A 30 6B 30 6C 30 6D 30 6E 30 6F 30 72 30 75 30" + + "78 30 7B 30 7E 30 7F 30 80 30 81 30 82 30 84 30" + + "86 30 88 30 89 30 8A 30 8B 30 8C 30 8D 30 8F 30" + + "92 30 93 30 30 00 30 00 31 00 38 00 32 00 01 42" + + "30 44 30 46 30 48 30 4A 30 4B 30 4D 30 4F 30 51" + + "30 53 30 55 30 57 30 59 30 5B 30 5D 30 5F 30 61" + + "30 64 30 66 30 68 30 6A 30 6B 30 6C 30 6D 30 6E" + + "30 6F 30 72 30 75 30 78 30 7B 30 7E 30 7F 30 80" + + "30 81 30 82 30 84 30 86 30 88 30 89 30 8A 30 8B" + + "30 8C 30 8D 30 8F 30 92 30 93 30 30 00 30 00 31" + + "00 39 00 32 00 01 42 30 44 30 46 30 48 30 4A 30" + + "4B 30 4D 30 4F 30 51 30 53 30 55 30 57 30 59 30" + + "5B 30 5D 30 5F 30 61 30 64 30 66 30 68 30 6A 30" + + "6B 30 6C 30 6D 30 6E 30 6F 30 72 30 75 30 78 30" + + "7B 30 7E 30 7F 30 80 30 81 30 82 30 84 30 86 30" + + "88 30 89 30 8A 30 8B 30 8C 30 8D 30 8F 30 92 30" + + "93 30 30 00 30 00 32 00 30 00 32 00 01 42 30 44" + + "30 46 30 48 30 4A 30 4B 30 4D 30 4F 30 51 30 53" + + "30 55 30 57 30 59 30 5B 30 5D 30 5F 30 61 30 64" + + "30 66 30 68 30 6A 30 6B 30 6C 30 6D 30 6E 30 6F" + + "30 72 30 75 30 78 30 7B 30 7E 30 7F 30 80 30 81" + + "30 82 30 84 30 86 30 88 30 89 30 8A 30 8B 30 8C" + + "30 8D 30 8F 30 92 30 93 30 30 00 30 00 32 00 31" + + "00 32 00 01 42 30 44 30 46 30 48 30 4A 30 4B 30" + + "4D 30 4F 30 51 30 53 30 55 30 57 30 59 30 5B 30" + + "5D 30 5F 30 61 30 64 30 66 30 68 30 6A 30 6B 30" + + "6C 30 6D 30 6E 30 6F 30 72 30 75 30 78 30 7B 30" + + "7E 30 7F 30 80 30 81 30 82 30 84 30 86 30 88 30" + + "89 30 8A 30 8B 30 8C 30 8D 30 8F 30 92 30 93 30" + + "30 00 30 00 32 00 32 00 32 00 01 42 30 44 30 46" + + "30 48 30 4A 30 4B 30 4D 30 4F 30 51 30 53 30 55" + + "30 57 30 59 30 5B 30 5D 30 5F 30 61 30 64 30 66" + + "30 68 30 6A 30 6B 30 6C 30 6D 30 6E 30 6F 30 72" + + "30 75 30 78 30 7B 30 7E 30 7F 30 80 30 81 30 82" + + "30 84 30 86 30 88 30 89 30 8A 30 8B 30 8C 30 8D" + + "30 8F 30 92 30 93 30 30 00 30 00 32 00 33 00 32" + + "00 01 42 30 44 30 46 30 48 30 4A 30 4B 30 4D 30" + + "4F 30 51 30 53 30 55 30 57 30 59 30 5B 30 5D 30" + + "5F 30 61 30 64 30 66 30 68 30 6A 30 6B 30 6C 30" + + "6D 30 6E 30 6F 30 72 30 75 30 78 30 7B 30 7E 30" + + "7F 30 80 30 81 30 82 30 84 30 86 30 88 30 89 30" + + "8A 30 8B 30 8C 30 8D 30 8F 30 92 30 93 30 30 00" + + "30 00 32 00 34 00 32 00 01 42 30 44 30 46 30 48" + + "30 4A 30 4B 30 4D 30 4F 30 51 30 53 30 55 30 57" + + "30 59 30 5B 30 5D 30 5F 30 61 30 64 30 66 30 68" + + "30 6A 30 6B 30 6C 30 6D 30 6E 30 6F 30 72 30 75" + + "30 78 30 7B 30 7E 30 7F 30 80 30 81 30 82 30 84" + + "30 86 30 88 30 89 30 8A 30 8B 30 8C 30 8D 30 8F" + + "30 92 30 93 30 30 00 30 00 32 00 35 00 32 00 01" + + "42 30 44 30 46 30 48 30 4A 30 4B 30 4D 30 4F 30" + + "51 30 53 30 55 30 57 30 59 30 5B 30 5D 30 5F 30" + + "61 30 64 30 66 30 68 30 6A 30 6B 30 6C 30 6D 30" + + "6E 30 6F 30 72 30 75 30 78 30 7B 30 7E 30 7F 30" + + "80 30 81 30 82 30 84 30 86 30 88 30 89 30 8A 30" + + "8B 30 8C 30 8D 30 8F 30 92 30 93 30 30 00 30 00" + + "32 00 36 00 32 00 01 42 30 44 30 46 30 48 30 4A" + + "30 4B 30 4D 30 4F 30 51 30 53 30 55 30 57 30 59" + + "30 5B 30 5D 30 5F 30 61 30 64 30 66 30 68 30 6A" + + "30 6B 30 6C 30 6D 30 6E 30 6F 30 72 30 75 30 78" + + "30 7B 30 7E 30 7F 30 80 30 81 30 82 30 84 30 86" + + "30 88 30 89 30 8A 30 8B 30 8C 30 8D 30 8F 30 92" + + "30 93 30 30 00 30 00 32 00 37 00 32 00 01 42 30" + + "44 30 46 30 48 30 4A 30 4B 30 4D 30 4F 30 51 30" + + "53 30 55 30 57 30 59 30 5B 30 5D 30 5F 30 61 30" + + "64 30 66 30 68 30 6A 30 6B 30 6C 30 6D 30 6E 30" + + "6F 30 72 30 75 30 78 30 7B 30 7E 30 7F 30 80 30" + + "81 30 82 30 84 30 86 30 88 30 89 30 8A 30 8B 30" + + "8C 30 8D 30 8F 30 92 30 93 30 30 00 30 00 32 00" + + "38 00 32 00 01 42 30 44 30 46 30 48 30 4A 30 4B" + + "30 4D 30 4F 30 51 30 53 30 55 30 57 30 59 30 5B" + + "30 5D 30 5F 30 61 30 64 30 66 30 68 30 6A 30 6B" + + "30 6C 30 6D 30 6E 30 6F 30 72 30 75 30 78 30 7B" + + "30 7E 30 7F 30 80 30 81 30 82 30 84 30 86 30 88" + + "30 89 30 8A 30 8B 30 8C 30 8D 30 8F 30 92 30 93" + + "30 30 00 30 00 32 00 39 00 32 00 01 42 30 44 30" + + "46 30 48 30 4A 30 4B 30 4D 30 4F 30 51 30 53 30" + + "55 30 57 30 59 30 5B 30 5D 30 5F 30 61 30 64 30" + + "66 30 68 30 6A 30 6B 30 6C 30 6D 30 6E 30 6F 30" + + "72 30 75 30 78 30 7B 30 7E 30 7F 30 80 30 81 30" + + "82 30 84 30 86 30 88 30 89 30 8A 30 8B 30 8C 30" + + "8D 30 8F 30 92 30 93 30 30 00 30 00 33 00 30 00" + + "32 00 01 42 30 44 30 46 30 48 30 4A 30 4B 30 4D" + + "30 4F 30 51 30 53 30 55 30 57 30 59 30 5B 30 5D" + + "30 5F 30 61 30 64 30 66 30 68 30 6A 30 6B 30 6C" + + "30 6D 30 6E 30 6F 30 72 30 75 30 78 30 7B 30 7E" + + "30 7F 30 80 30 81 30 82 30 84 30 86 30 88 30 89" + + "30 8A 30 8B 30 8C 30 8D 30 8F 30 92 30 93 30 30" + + "00 30 00 33 00 31 00 32 00 01 42 30 44 30 46 30" + + "48 30 4A 30 4B 30 4D 30 4F 30 51 30 53 30 55 30" + + "57 30 59 30 5B 30 5D 30 5F 30 61 30 64 30 66 30" + + "68 30 6A 30 6B 30 6C 30 6D 30 6E 30 6F 30 72 30" + + "75 30 78 30 7B 30 7E 30 7F 30 80 30 81 30 82 30" + + "84 30 86 30 88 30 89 30 8A 30 8B 30 8C 30 8D 30" + + "8F 30 92 30 93 30 30 00 30 00 33 00 32 00 32 00" + + "01 42 30 44 30 46 30 48 30 4A 30 4B 30 4D 30 4F" + + "30 51 30 53 30 55 30 57 30 59 30 5B 30 5D 30 5F" + + "30 61 30 64 30 66 30 68 30 6A 30 6B 30 6C 30 6D" + + "30 6E 30 6F 30 72 30 75 30 78 30 7B 30 7E 30 7F" + + "30 80 30 81 30 82 30 84 30 86 30 88 30 89 30 8A" + + "30 8B 30 8C 30 8D 30 8F 30 92 30 93 30 30 00 30" + + "00 33 00 33 00 32 00 01 42 30 44 30 46 30 48 30" + + "4A 30 4B 30 4D 30 4F 30 51 30 53 30 55 30 57 30" + + "59 30 5B 30 5D 30 5F 30 61 30 64 30 66 30 68 30" + + "6A 30 6B 30 6C 30 6D 30 6E 30 6F 30 72 30 75 30" + + "78 30 7B 30 7E 30 7F 30 80 30 81 30 82 30 84 30" + + "86 30 88 30 89 30 8A 30 8B 30 8C 30 8D 30 8F 30" + + "92 30 93 30 30 00 30 00 33 00 34 00 32 00 01 42" + + "30 44 30 46 30 48 30 4A 30 4B 30 4D 30 4F 30 51" + + "30 53 30 55 30 57 30 59 30 5B 30 5D 30 5F 30 61" + + "30 64 30 66 30 68 30 6A 30 6B 30 6C 30 6D 30 6E" + + "30 6F 30 72 30 75 30 78 30 7B 30 7E 30 7F 30 80" + + "30 81 30 82 30 84 30 86 30 88 30 89 30 8A 30 8B" + + "30 8C 30 8D 30 8F 30 92 30 93 30 30 00 30 00 33" + + "00 35 00 32 00 01 42 30 44 30 46 30 48 30 4A 30" + + "4B 30 4D 30 4F 30 51 30 53 30 55 30 57 30 59 30" + + "5B 30 5D 30 5F 30 61 30 64 30 66 30 68 30 6A 30" + + "6B 30 6C 30 6D 30 6E 30 6F 30 72 30 75 30 78 30" + + "7B 30 7E 30 7F 30 80 30 81 30 82 30 84 30 86 30" + + "88 30 89 30 8A 30 8B 30 8C 30 8D 30 8F 30 92 30" + + "93 30 30 00 30 00 33 00 36 00 32 00 01 42 30 44" + + "30 46 30 48 30 4A 30 4B 30 4D 30 4F 30 51 30 53" + + "30 55 30 57 30 59 30 5B 30 5D 30 5F 30 61 30 64" + + "30 66 30 68 30 6A 30 6B 30 6C 30 6D 30 6E 30 6F" + + "30 72 30 75 30 78 30 7B 30 7E 30 7F 30 80 30 81" + + "30 82 30 84 30 86 30 88 30 89 30 8A 30 8B 30 8C" + + "30 8D 30 8F 30 92 30 93 30 30 00 30 00 33 00 37" + + "00 32 00 01 42 30 44 30 46 30 48 30 4A 30 4B 30" + + "4D 30 4F 30 51 30 53 30 55 30 57 30 59 30 5B 30" + + "5D 30 5F 30 61 30 64 30 66 30 68 30 6A 30 6B 30" + + "6C 30 6D 30 6E 30 6F 30 72 30 75 30 78 30 7B 30" + + "7E 30 7F 30 80 30 81 30 82 30 84 30 86 30 88 30" + + "89 30 8A 30 8B 30 8C 30 8D 30 8F 30 92 30 93 30" + + "30 00 30 00 33 00 38 00 32 00 01 42 30 44 30 46" + + "30 48 30 4A 30 4B 30 4D 30 4F 30 51 30 53 30 55" + + "30 57 30 59 30 5B 30 5D 30 5F 30 61 30 64 30 66" + + "30 68 30 6A 30 6B 30 6C 30 6D 30 6E 30 6F 30 72" + + "30 75 30 78 30 7B 30 7E 30 7F 30 80 30 81 30 82" + + "30 84 30 86 30 88 30 89 30 8A 30 8B 30 8C 30 8D" + + "30 8F 30 92 30 93 30 30 00 30 00 33 00 39 00 32" + + "00 01 42 30 44 30 46 30 48 30 4A 30 4B 30 4D 30" + + "4F 30 51 30 53 30 55 30 57 30 59 30 5B 30 5D 30" + + "5F 30 61 30 64 30 66 30 68 30 6A 30 6B 30 6C 30" + + "6D 30 6E 30 6F 30 72 30 75 30 78 30 7B 30 7E 30" + + "7F 30 80 30 81 30 82 30 84 30 86 30 88 30 89 30" + + "8A 30 8B 30 8C 30 8D 30 8F 30 92 30 93 30 30 00" + + "30 00 34 00 30 00 32 00 01 42 30 44 30 46 30 48" + + "30 4A 30 4B 30 4D 30 4F 30 51 30 53 30 55 30 57" + + "30 59 30 5B 30 5D 30 5F 30 61 30 64 30 66 30 68" + + "30 6A 30 6B 30 6C 30 6D 30 6E 30 6F 30 72 30 75" + + "30 78 30 7B 30 7E 30 7F 30 80 30 81 30 82 30 84" + + "30 86 30 88 30 89 30 8A 30 8B 30 8C 30 8D 30 8F" + + "30 92 30 93 30 30 00 30 00 34 00 31 00 32 00 01" + + "42 30 44 30 46 30 48 30 4A 30 4B 30 4D 30 4F 30" + + "51 30 53 30 55 30 57 30 59 30 5B 30 5D 30 5F 30" + + "61 30 64 30 66 30 68 30 6A 30 6B 30 6C 30 6D 30" + + "6E 30 6F 30 72 30 75 30 78 30 7B 30 7E 30 7F 30" + + "80 30 81 30 82 30 84 30 86 30 88 30 89 30 8A 30" + + "8B 30 8C 30 8D 30 8F 30 92 30 93 30 30 00 30 00" + + "34 00 32 00 32 00 01 42 30 44 30 46 30 48 30 4A" + + "30 4B 30 4D 30 4F 30 51 30 53 30 55 30 57 30 59" + + "30 5B 30 5D 30 5F 30 61 30 64 30 66 30 68 30 6A" + + "30 6B 30 6C 30 6D 30 6E 30 6F 30 72 30 75 30 78" + + "30 7B 30 7E 30 7F 30 80 30 81 30 82 30 84 30 86" + + "30 88 30 89 30 8A 30 8B 30 8C 30 8D 30 8F 30 92" + + "30 93 30 30 00 30 00 34 00 33 00 32 00 01 42 30" + + "44 30 46 30 48 30 4A 30 4B 30 4D 30 4F 30 51 30" + + "53 30 55 30 57 30 59 30 5B 30 5D 30 5F 30 61 30" + + "64 30 66 30 68 30 6A 30 6B 30 6C 30 6D 30 6E 30" + + "6F 30 72 30 75 30 78 30 7B 30 7E 30 7F 30 80 30" + + "81 30 82 30 84 30 86 30 88 30 89 30 8A 30 8B 30" + + "8C 30 8D 30 8F 30 92 30 93 30 30 00 30 00 34 00" + + "34 00 32 00 01 42 30 44 30 46 30 48 30 4A 30 4B" + + "30 4D 30 4F 30 51 30 53 30 55 30 57 30 59 30 5B" + + "30 5D 30 5F 30 61 30 64 30 66 30 68 30 6A 30 6B" + + "30 6C 30 6D 30 6E 30 6F 30 72 30 75 30 78 30 7B" + + "30 7E 30 7F 30 80 30 81 30 82 30 84 30 86 30 88" + + "30 89 30 8A 30 8B 30 8C 30 8D 30 8F 30 92 30 93" + + "30 30 00 30 00 34 00 35 00 32 00 01 42 30 44 30" + + "46 30 48 30 4A 30 4B 30 4D 30 4F 30 51 30 53 30" + + "55 30 57 30 59 30 5B 30 5D 30 5F 30 61 30 64 30" + + "66 30 68 30 6A 30 6B 30 6C 30 6D 30 6E 30 6F 30" + + "72 30 75 30 78 30 7B 30 7E 30 7F 30 80 30 81 30" + + "82 30 84 30 86 30 88 30 89 30 8A 30 8B 30 8C 30" + + "8D 30 8F 30 92 30 93 30 30 00 30 00 34 00 36 00" + + "32 00 01 42 30 44 30 46 30 48 30 4A 30 4B 30 4D" + + "30 4F 30 51 30 53 30 55 30 57 30 59 30 5B 30 5D" + + "30 5F 30 61 30 64 30 66 30 68 30 6A 30 6B 30 6C" + + "30 6D 30 6E 30 6F 30 72 30 75 30 78 30 7B 30 7E" + + "30 7F 30 80 30 81 30 82 30 84 30 86 30 88 30 89" + + "30 8A 30 8B 30 8C 30 8D 30 8F 30 92 30 93 30 30" + + "00 30 00 34 00 37 00 32 00 01 42 30 44 30 46 30" + + "48 30 4A 30 4B 30 4D 30 4F 30 51 30 53 30 55 30" + + "57 30 59 30 5B 30 5D 30 5F 30 61 30 64 30 66 30" + + "68 30 6A 30 6B 30 6C 30 6D 30 6E 30 6F 30 72 30" + + "75 30 78 30 7B 30 7E 30 7F 30 80 30 81 30 82 30" + + "84 30 86 30 88 30 89 30 8A 30 8B 30 8C 30 8D 30" + + "8F 30 92 30 93 30 30 00 30 00 34 00 38 00 32 00" + + "01 42 30 44 30 46 30 48 30 4A 30 4B 30 4D 30 4F" + + "30 51 30 53 30 55 30 57 30 59 30 5B 30 5D 30 5F" + + "30 61 30 64 30 66 30 68 30 6A 30 6B 30 6C 30 6D" + + "30 6E 30 6F 30 72 30 75 30 78 30 7B 30 7E 30 7F" + + "30 80 30 81 30 82 30 84 30 86 30 88 30 89 30 8A" + + "30 8B 30 8C 30 8D 30 8F 30 92 30 93 30 30 00 30" + + "00 34 00 39 00 32 00 01 42 30 44 30 46 30 48 30" + + "4A 30 4B 30 4D 30 4F 30 51 30 53 30 55 30 57 30" + + "59 30 5B 30 5D 30 5F 30 61 30 64 30 66 30 68 30" + + "6A 30 6B 30 6C 30 6D 30 6E 30 6F 30 72 30 75 30" + + "78 30 7B 30 7E 30 7F 30 80 30 81 30 82 30 84 30" + + "86 30 88 30 89 30 8A 30 8B 30 8C 30 8D 30 8F 30" + + "92 30 93 30 30 00 30 00 35 00 30 00 32 00 01 42" + + "30 44 30 46 30 48 30 4A 30 4B 30 4D 30 4F 30 51" + + "30 53 30 55 30 57 30 59 30 5B 30 5D 30 5F 30 61" + + "30 64 30 66 30 68 30 6A 30 6B 30 6C 30 6D 30 6E" + + "30 6F 30 72 30 75 30 78 30 7B 30 7E 30 7F 30 80" + + "30 81 30 82 30 84 30 86 30 88 30 89 30 8A 30 8B" + + "30 8C 30 8D 30 8F 30 92 30 93 30 30 00 30 00 35" + + "00 31 00 32 00 01 42 30 44 30 46 30 48 30 4A 30" + + "4B 30 4D 30 4F 30 51 30 53 30 55 30 57 30 59 30" + + "5B 30 5D 30 5F 30 61 30 64 30 66 30 68 30 6A 30" + + "6B 30 6C 30 6D 30 6E 30 6F 30 72 30 75 30 78 30" + + "7B 30 7E 30 7F 30 80 30 81 30 82 30 84 30 86 30" + + "88 30 89 30 8A 30 8B 30 8C 30 8D 30 8F 30 92 30" + + "93 30 30 00 30 00 35 00 32 00 32 00 01 42 30 44" + + "30 46 30 48 30 4A 30 4B 30 4D 30 4F 30 51 30 53" + + "30 55 30 57 30 59 30 5B 30 5D 30 5F 30 61 30 64" + + "30 66 30 68 30 6A 30 6B 30 6C 30 6D 30 6E 30 6F" + + "30 72 30 75 30 78 30 7B 30 7E 30 7F 30 80 30 81" + + "30 82 30 84 30 86 30 88 30 89 30 8A 30 8B 30 8C" + + "30 8D 30 8F 30 92 30 93 30 30 00 30 00 35 00 33" + + "00 32 00 01 42 30 44 30 46 30 48 30 4A 30 4B 30" + + "4D 30 4F 30 51 30 53 30 55 30 57 30 59 30 5B 30" + + "5D 30 5F 30 61 30 64 30 66 30 68 30 6A 30 6B 30" + + "6C 30 6D 30 6E 30 6F 30 72 30 75 30 78 30 7B 30" + + "7E 30 7F 30 80 30 81 30 82 30 84 30 86 30 88 30" + + "89 30 8A 30 8B 30 8C 30 8D 30 8F 30 92 30 93 30" + + "30 00 30 00 35 00 34 00 32 00 01 42 30 44 30 46" + + "30 48 30 4A 30 4B 30 4D 30 4F 30 51 30 53 30 55" + + "30 57 30 59 30 5B 30 5D 30 5F 30 61 30 64 30 66" + + "30 68 30 6A 30 6B 30 6C 30 6D 30 6E 30 6F 30 72" + + "30 75 30 78 30 7B 30 7E 30 7F 30 80 30 81 30 82" + + "30 84 30 86 30 88 30 89 30 8A 30 8B 30 8C 30 8D" + + "30 8F 30 92 30 93 30 30 00 30 00 35 00 35 00 32" + + "00 01 42 30 44 30 46 30 48 30 4A 30 4B 30 4D 30" + + "4F 30 51 30 53 30 55 30 57 30 59 30 5B 30 5D 30" + + "5F 30 61 30 64 30 66 30 68 30 6A 30 6B 30 6C 30" + + "6D 30 6E 30 6F 30 72 30 75 30 78 30 7B 30 7E 30" + + "7F 30 80 30 81 30 82 30 84 30 86 30 88 30 89 30" + + "8A 30 8B 30 8C 30 8D 30 8F 30 92 30 93 30 30 00" + + "30 00 35 00 36 00 32 00 01 42 30 44 30 46 30 48" + + "30 4A 30 4B 30 4D 30 4F 30 51 30 53 30 55 30 57" + + "30 59 30 5B 30 5D 30 5F 30 61 30 64 30 66 30 68" + + "30 6A 30 6B 30 6C 30 6D 30 6E 30 6F 30 72 30 75" + + "30 78 30 7B 30 7E 30 7F 30 80 30 81 30 82 30 84" + + "30 86 30 88 30 89 30 8A 30 8B 30 8C 30 8D 30 8F" + + "30 92 30 93 30 30 00 30 00 35 00 37 00 32 00 01" + + "42 30 44 30 46 30 48 30 4A 30 4B 30 4D 30 4F 30" + + "51 30 53 30 55 30 57 30 59 30 5B 30 5D 30 5F 30" + + "61 30 64 30 66 30 68 30 6A 30 6B 30 6C 30 6D 30" + + "6E 30 6F 30 72 30 75 30 78 30 7B 30 7E 30 7F 30" + + "80 30 81 30 82 30 84 30 86 30 88 30 89 30 8A 30" + + "8B 30 8C 30 8D 30 8F 30 92 30 93 30 30 00 30 00" + + "35 00 38 00 32 00 01 42 30 44 30 46 30 48 30 4A" + + "30 4B 30 4D 30 4F 30 51 30 53 30 55 30 57 30 59" + + "30 5B 30 5D 30 5F 30 61 30 64 30 66 30 68 30 6A" + + "30 6B 30 6C 30 6D 30 6E 30 6F 30 72 30 75 30 78" + + "30 7B 30 7E 30 7F 30 80 30 81 30 82 30 84 30 86" + + "30 88 30 89 30 8A 30 8B 30 8C 30 8D 30 8F 30 92" + + "30 93 30 30 00 30 00 35 00 39 00 32 00 01 42 30" + + "44 30 46 30 48 30 4A 30 4B 30 4D 30 4F 30 51 30" + + "53 30 55 30 57 30 59 30 5B 30 5D 30 5F 30 61 30" + + "64 30 66 30 68 30 6A 30 6B 30 6C 30 6D 30 6E 30" + + "6F 30 72 30 75 30 78 30 7B 30 7E 30 7F 30 80 30" + + "81 30 82 30 84 30 86 30 88 30 89 30 8A 30 8B 30" + + "8C 30 8D 30 8F 30 92 30 93 30 30 00 30 00 36 00" + + "30 00 32 00 01 42 30 44 30 46 30 48 30 4A 30 4B" + + "30 4D 30 4F 30 51 30 53 30 55 30 57 30 59 30 5B" + + "30 5D 30 5F 30 61 30 64 30 66 30 68 30 6A 30 6B" + + "30 6C 30 6D 30 6E 30 6F 30 72 30 75 30 78 30 7B" + + "30 7E 30 7F 30 80 30 81 30 82 30 84 30 86 30 88" + + "30 89 30 8A 30 8B 30 8C 30 8D 30 8F 30 92 30 93" + + "30 30 00 30 00 36 00 31 00 32 00 01 42 30 44 30" + + "46 30 48 30 4A 30 4B 30 4D 30 4F 30 51 30 53 30" + + "55 30 57 30 59 30 5B 30 5D 30 5F 30 61 30 64 30" + + "66 30 68 30 6A 30 6B 30 6C 30 6D 30 6E 30 6F 30" + + "72 30 75 30 78 30 7B 30 7E 30 7F 30 80 30 81 30" + + "82 30 84 30 86 30 88 30 89 30 8A 30 8B 30 8C 30" + + "8D 30 8F 30 92 30 93 30 30 00 30 00 36 00 32 00" + + "32 00 01 42 30 44 30 46 30 48 30 4A 30 4B 30 4D" + + "30 4F 30 51 30 53 30 55 30 57 30 59 30 5B 30 5D" + + "30 5F 30 61 30 64 30 66 30 68 30 6A 30 6B 30 6C" + + "30 6D 30 6E 30 6F 30 72 30 75 30 78 30 7B 30 7E" + + "30 7F 30 80 30 81 30 82 30 84 30 86 30 88 30 89" + + "30 8A 30 8B 30 8C 30 8D 30 8F 30 92 30 93 30 30" + + "00 30 00 36 00 33 00 32 00 01 42 30 44 30 46 30" + + "48 30 4A 30 4B 30 4D 30 4F 30 51 30 53 30 55 30" + + "57 30 59 30 5B 30 5D 30 5F 30 61 30 64 30 66 30" + + "68 30 6A 30 6B 30 6C 30 6D 30 6E 30 6F 30 72 30" + + "75 30 78 30 7B 30 7E 30 7F 30 80 30 81 30 82 30" + + "84 30 86 30 88 30 89 30 8A 30 8B 30 8C 30 8D 30" + + "8F 30 92 30 93 30 30 00 30 00 36 00 34 00 32 00" + + "01 42 30 44 30 46 30 48 30 4A 30 4B 30 4D 30 4F" + + "30 51 30 53 30 55 30 57 30 59 30 5B 30 5D 30 5F" + + "30 61 30 64 30 66 30 68 30 6A 30 6B 30 6C 30 6D" + + "30 6E 30 6F 30 72 30 75 30 78 30 7B 30 7E 30 7F" + + "30 80 30 81 30 82 30 84 30 86 30 88 30 89 30 8A" + + "30 8B 30 8C 30 8D 30 8F 30 92 30 93 30 30 00 30" + + "00 36 00 35 00 32 00 01 42 30 44 30 46 30 48 30" + + "4A 30 4B 30 4D 30 4F 30 51 30 53 30 55 30 57 30" + + "59 30 5B 30 5D 30 5F 30 61 30 64 30 66 30 68 30" + + "6A 30 6B 30 6C 30 6D 30 6E 30 6F 30 72 30 75 30" + + "78 30 7B 30 7E 30 7F 30 80 30 81 30 82 30 84 30" + + "86 30 88 30 89 30 8A 30 8B 30 8C 30 8D 30 8F 30" + + "92 30 93 30 30 00 30 00 36 00 36 00 32 00 01 42" + + "30 44 30 46 30 48 30 4A 30 4B 30 4D 30 4F 30 51" + + "30 53 30 55 30 57 30 59 30 5B 30 5D 30 5F 30 61" + + "30 64 30 66 30 68 30 6A 30 6B 30 6C 30 6D 30 6E" + + "30 6F 30 72 30 75 30 78 30 7B 30 7E 30 7F 30 80" + + "30 81 30 82 30 84 30 86 30 88 30 89 30 8A 30 8B" + + "30 8C 30 8D 30 8F 30 92 30 93 30 30 00 30 00 36" + + "00 37 00 32 00 01 42 30 44 30 46 30 48 30 4A 30" + + "4B 30 4D 30 4F 30 51 30 53 30 55 30 57 30 59 30" + + "5B 30 5D 30 5F 30 61 30 64 30 66 30 68 30 6A 30" + + "6B 30 6C 30 6D 30 6E 30 6F 30 72 30 75 30 78 30" + + "7B 30 7E 30 7F 30 80 30 81 30 82 30 84 30 86 30" + + "88 30 89 30 8A 30 8B 30 8C 30 8D 30 8F 30 92 30" + + "93 30 30 00 30 00 36 00 38 00 32 00 01 42 30 44" + + "30 46 30 48 30 4A 30 4B 30 4D 30 4F 30 51 30 53" + + "30 55 30 57 30 59 30 5B 30 5D 30 5F 30 61 30 64" + + "30 66 30 68 30 6A 30 6B 30 6C 30 6D 30 6E 30 6F" + + "30 72 30 75 30 78 30 7B 30 7E 30 7F 30 80 30 81" + + "30 82 30 84 30 86 30 88 30 89 30 8A 30 8B 30 8C" + + "30 8D 30 8F 30 92 30 93 30 30 00 30 00 36 00 39" + + "00 32 00 01 42 30 44 30 46 30 48 30 4A 30 4B 30" + + "4D 30 4F 30 51 30 53 30 55 30 57 30 59 30 5B 30" + + "5D 30 5F 30 61 30 64 30 66 30 68 30 6A 30 6B 30" + + "6C 30 6D 30 6E 30 6F 30 72 30 75 30 78 30 7B 30" + + "7E 30 7F 30 80 30 81 30 82 30 84 30 86 30 88 30" + + "89 30 8A 30 8B 30 8C 30 8D 30 8F 30 92 30 93 30" + + "30 00 30 00 37 00 30 00 32 00 01 42 30 44 30 46" + + "30 48 30 4A 30 4B 30 4D 30 4F 30 51 30 53 30 55" + + "30 57 30 59 30 5B 30 5D 30 5F 30 61 30 64 30 66" + + "30 68 30 6A 30 6B 30 6C 30 6D 30 6E 30 6F 30 72" + + "30 75 30 78 30 7B 30 7E 30 7F 30 80 30 81 30 82" + + "30 84 30 86 30 88 30 89 30 8A 30 8B 30 8C 30 8D" + + "30 8F 30 92 30 93 30 30 00 30 00 37 00 31 00 32" + + "00 01 42 30 44 30 46 30 48 30 4A 30 4B 30 4D 30" + + "4F 30 51 30 53 30 55 30 57 30 59 30 5B 30 5D 30" + + "5F 30 61 30 64 30 66 30 68 30 6A 30 6B 30 6C 30" + + "6D 30 6E 30 6F 30 72 30 75 30 78 30 7B 30 7E 30" + + "7F 30 80 30 81 30 82 30 84 30 86 30 88 30 89 30" + + "8A 30 8B 30 8C 30 8D 30 8F 30 92 30 93 30 30 00" + + "30 00 37 00 32 00 32 00 01 42 30 44 30 46 30 48" + + "30 4A 30 4B 30 4D 30 4F 30 51 30 53 30 55 30 57" + + "30 59 30 5B 30 5D 30 5F 30 61 30 64 30 66 30 68" + + "30 6A 30 6B 30 6C 30 6D 30 6E 30 6F 30 72 30 75" + + "30 78 30 7B 30 7E 30 7F 30 80 30 81 30 82 30 84" + + "30 86 30 88 30 89 30 8A 30 8B 30 8C 30 8D 30 8F" + + "30 92 30 93 30 30 00 30 00 37 00 33 00 32 00 01" + + "42 30 44 30 46 30 48 30 4A 30 4B 30 4D 30 4F 30" + + "51 30 53 30 55 30 57 30 59 30 5B 30 5D 30 5F 30" + + "61 30 64 30 66 30 68 30 6A 30 6B 30 6C 30 6D 30" + + "6E 30 6F 30 72 30 75 30 78 30 7B 30 7E 30 7F 30" + + "80 30 81 30 82 30 84 30 86 30 88 30 89 30 8A 30" + + "8B 30 8C 30 8D 30 8F 30 92 30 93 30 30 00 30 00" + + "37 00 34 00 32 00 01 42 30 44 30 46 30 48 30 4A" + + "30 4B 30 4D 30 4F 30 51 30 53 30 55 30 57 30 59" + + "30 5B 30 5D 30 5F 30 61 30 64 30 66 30 68 30 6A" + + "30 6B 30 6C 30 6D 30 6E 30 6F 30 72 30 75 30 78" + + "30 7B 30 7E 30 7F 30 80 30 81 30 82 30 84 30 86" + + "30 88 30 89 30 8A 30 8B 30 8C 30 8D 30 8F 30 92" + + "30 93 30 30 00 30 00 37 00 35 00 32 00 01 42 30" + + "44 30 46 30 48 30 4A 30 4B 30 4D 30 4F 30 51 30" + + "53 30 55 30 57 30 59 30 5B 30 5D 30 5F 30 61 30" + + "64 30 66 30 68 30 6A 30 6B 30 6C 30 6D 30 6E 30" + + "6F 30 72 30 75 30 78 30 7B 30 7E 30 7F 30 80 30" + + "81 30 82 30 84 30 86 30 88 30 89 30 8A 30 8B 30" + + "8C 30 8D 30 8F 30 92 30 93 30 30 00 30 00 37 00" + + "36 00 32 00 01 42 30 44 30 46 30 48 30 4A 30 4B" + + "30 4D 30 4F 30 51 30 53 30 55 30 57 30 59 30 5B" + + "30 5D 30 5F 30 61 30 64 30 66 30 68 30 6A 30 6B" + + "30 6C 30 6D 30 6E 30 6F 30 72 30 75 30 78 30 7B" + + "30 7E 30 7F 30 80 30 81 30 82 30 84 30 86 30 88" + + "30 89 30 8A 30 8B 30 8C 30 8D 30 8F 30 92 30 93" + + "30 30 00 30 00 37 00 37 00 32 00 01 42 30 44 30" + + "46 30 48 30 4A 30 4B 30 4D 30 4F 30 51 30 53 30" + + "55 30 57 30 59 30 5B 30 5D 30 5F 30 61 30 64 30" + + "66 30 68 30 6A 30 6B 30 6C 30 6D 30 6E 30 6F 30" + + "72 30 75 30 78 30 7B 30 7E 30 7F 30 80 30 81 30" + + "82 30 84 30 86 30 88 30 89 30 8A 30 8B 30 8C 30" + + "8D 30 8F 30 92 30 93 30 30 00 30 00 37 00 38 00" + + "18 00 05 96 00 00 00 17 53 77 6D 53 90 52 97 EE" + + "68 0C 77 A9 5C 4B 62 0C 77 8F 79 F6 5C 0C 77 03" + + "68 28 67 0C 77 FC 57 89 73 0C 77 71 67 AC 4E FD" + + "90 43 53 49 84 0C 77 01 00 92 00 05 00 35 00 08" + + "00 2C 00 2C 00 DB 30 C3 30 AB 30 A4 30 C9 30 A6" + + "30 A2 30 AA 30 E2 30 EA 30 B1 30 F3 30 A4 30 EF" + + "30 C6 30 B1 30 F3 30 D5 30 AF 30 B7 30 DE 30 B1" + + "30 F3 30 C8 30 C1 30 AE 30 B1 30 F3 30 B5 30 A4" + + "30 BF 30 DE 30 B1 30 F3 30 C8 30 A6 30 AD 30 E7" + + "30 A6 30 C8 30 C1 30 D0 30 B1 30 F3 30 00 00 00" + + "00 03 00 06 00 03 00 03 00 0C 00 06 00 03 00 11" + + "00 09 00 03 00 17 " + + + //Offset=0x00002636(9782) recno=72 sid=0x003C size=0x010D(269) + " 3C 00 0D 01 00 0C 00 03 00 1C" + + "00 0F 00 03 00 22 00 12 00 03 00 28 00 15 00 03" + + "00 32 00 05 10 00 00 00 42 30 44 30 46 30 48 30" + + "4A 30 4B 30 4D 30 4F 30 51 30 53 30 55 30 57 30" + + "59 30 5B 30 5D 30 5F 30 61 30 64 30 66 30 68 30" + + "6A 30 6B 30 6C 30 6D 30 6E 30 6F 30 72 30 75 30" + + "78 30 7B 30 7E 30 7F 30 80 30 81 30 82 30 84 30" + + "86 30 88 30 89 30 8A 30 8B 30 8C 30 8D 30 8F 30" + + "92 30 93 30 30 00 30 00 37 00 39 00 01 00 0C 00" + + "05 00 35 00 00 00 00 00 00 00 00 00 32 00 05 10" + + "00 00 00 42 30 44 30 46 30 48 30 4A 30 4B 30 4D" + + "30 4F 30 51 30 53 30 55 30 57 30 59 30 5B 30 5D" + + "30 5F 30 61 30 64 30 66 30 68 30 6A 30 6B 30 6C" + + "30 6D 30 6E 30 6F 30 72 30 75 30 78 30 7B 30 7E" + + "30 7F 30 80 30 81 30 82 30 84 30 86 30 88 30 89" + + "30 8A 30 8B 30 8C 30 8D 30 8F 30 92 30 93 30 30" + + "00 30 00 38 00 30 00 01 00 0C 00 05 00 35 00 00" + + "00 00 00 00 00 4B 30 "; + + + /** + * deep comparison of two SST records + */ + public static void assertEquals(SSTRecord expected, SSTRecord actual){ + assertEquals("number of strings", expected.getNumStrings(), actual.getNumStrings()); + assertEquals("number of unique strings", expected.getNumUniqueStrings(), actual.getNumUniqueStrings()); + assertEquals("count of strings", expected.countStrings(), actual.countStrings()); + for ( int k = 0; k < expected.countStrings(); k++ ) { + org.apache.poi.hssf.record.common.UnicodeString us1 = expected.getString(k); + org.apache.poi.hssf.record.common.UnicodeString us2 = actual.getString(k); + + assertTrue("String at idx=" + k, us1.equals(us2)); + } + } + + + public void test50779_1(){ + byte[] bytes = HexRead.readFromString(data_50779_1); + + RecordInputStream in = TestcaseRecordInputStream.create(bytes); + assertEquals(SSTRecord.sid, in.getSid()); + SSTRecord src = new SSTRecord(in); + assertEquals(81, src.getNumStrings()); + + byte[] serialized = src.serialize(); + + in = TestcaseRecordInputStream.create(serialized); + assertEquals(SSTRecord.sid, in.getSid()); + SSTRecord dst = new SSTRecord(in); + assertEquals(81, dst.getNumStrings()); + + assertEquals(src, dst); + } + + public void test50779_2() { + byte[] bytes = HexRead.readFromString(data_50779_2); + + RecordInputStream in = TestcaseRecordInputStream.create(bytes); + assertEquals(SSTRecord.sid, in.getSid()); + SSTRecord src = new SSTRecord(in); + assertEquals(81, src.getNumStrings()); + + byte[] serialized = src.serialize(); + + in = TestcaseRecordInputStream.create(serialized); + assertEquals(SSTRecord.sid, in.getSid()); + SSTRecord dst = new SSTRecord(in); + assertEquals(81, dst.getNumStrings()); + + assertEquals(src, dst); + } + } diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java b/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java index 2725528e86..08566a2e9b 100644 --- a/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java +++ b/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java @@ -2019,4 +2019,13 @@ if(1==2) { // TODO Identify what excel doesn't like, and check for that } + + public void test50779() throws Exception { + HSSFWorkbook wb1 = openSample("50779_1.xls"); + writeOutAndReadBack(wb1); + + HSSFWorkbook wb2 = openSample("50779_2.xls"); + writeOutAndReadBack(wb2); + } + } diff --git a/test-data/spreadsheet/50779_1.xls b/test-data/spreadsheet/50779_1.xls new file mode 100644 index 0000000000..17d32ece8f Binary files /dev/null and b/test-data/spreadsheet/50779_1.xls differ diff --git a/test-data/spreadsheet/50779_2.xls b/test-data/spreadsheet/50779_2.xls new file mode 100644 index 0000000000..ee29d0bc55 Binary files /dev/null and b/test-data/spreadsheet/50779_2.xls differ