From 12c173389f0cec05f7bc3ca5ad8920eeb4468bc1 Mon Sep 17 00:00:00 2001 From: Yegor Kozlov Date: Tue, 14 Dec 2010 18:17:59 +0000 Subject: [PATCH] Support for continued NameRecords, see bugzilla 50244 git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1049202 13f79535-47bb-0310-9956-ffa450edef68 --- src/documentation/content/xdocs/status.xml | 1 + .../apache/poi/hssf/record/NameRecord.java | 25 +- .../record/cont/ContinuableRecordOutput.java | 16 +- .../poi/hssf/record/TestNameRecord.java | 609 ++++++++++++++++++ 4 files changed, 641 insertions(+), 10 deletions(-) diff --git a/src/documentation/content/xdocs/status.xml b/src/documentation/content/xdocs/status.xml index 5eb09cae6a..589ce752cb 100644 --- a/src/documentation/content/xdocs/status.xml +++ b/src/documentation/content/xdocs/status.xml @@ -34,6 +34,7 @@ + 50244 - Support for continued NameRecords 50416 - Correct shifting of the first or last row in a sheet by multiple rows 50440 - Support evaluating formulas with newlines in them, which XSSF may have (but HSSF may not) Added inline string support to XSSF EventModel diff --git a/src/java/org/apache/poi/hssf/record/NameRecord.java b/src/java/org/apache/poi/hssf/record/NameRecord.java index 25049fdade..904133ce64 100644 --- a/src/java/org/apache/poi/hssf/record/NameRecord.java +++ b/src/java/org/apache/poi/hssf/record/NameRecord.java @@ -17,14 +17,13 @@ package org.apache.poi.hssf.record; +import org.apache.poi.hssf.record.cont.ContinuableRecord; +import org.apache.poi.hssf.record.cont.ContinuableRecordOutput; import org.apache.poi.ss.formula.ptg.Area3DPtg; import org.apache.poi.ss.formula.ptg.Ptg; import org.apache.poi.ss.formula.ptg.Ref3DPtg; import org.apache.poi.ss.formula.Formula; -import org.apache.poi.util.HexDump; -import org.apache.poi.util.LittleEndianInput; -import org.apache.poi.util.LittleEndianOutput; -import org.apache.poi.util.StringUtil; +import org.apache.poi.util.*; /** * Title: DEFINEDNAME Record (0x0018)

@@ -35,7 +34,7 @@ import org.apache.poi.util.StringUtil; * @author Glen Stampoultzis (glens at apache.org) * @author Petr Udalau - added method setFunction(boolean) */ -public final class NameRecord extends StandardRecord { +public final class NameRecord extends ContinuableRecord { public final static short sid = 0x0018; /**Included for completeness sake, not implemented */ public final static byte BUILTIN_CONSOLIDATE_AREA = 1; @@ -342,8 +341,12 @@ public final class NameRecord extends StandardRecord { return field_17_status_bar_text; } - - public void serialize(LittleEndianOutput out) { + /** + * NameRecord can span into + * + * @param out a data output stream + */ + public void serialize(ContinuableRecordOutput out) { int field_7_length_custom_menu = field_14_custom_menu_text.length(); int field_8_length_description_text = field_15_description_text.length(); @@ -430,7 +433,13 @@ public final class NameRecord extends StandardRecord { * @param ris the RecordInputstream to read the record from */ public NameRecord(RecordInputStream ris) { - LittleEndianInput in = ris; + // YK: Formula data can span into continue records, for example, + // when containing a large array of strings. See Bugzilla 50244 + + // read all remaining bytes and wrap into a LittleEndianInput + byte[] remainder = ris.readAllContinuedRemainder(); + LittleEndianInput in = new LittleEndianByteArrayInputStream(remainder); + field_1_option_flag = in.readShort(); field_2_keyboard_shortcut = in.readByte(); int field_3_length_name_text = in.readUByte(); diff --git a/src/java/org/apache/poi/hssf/record/cont/ContinuableRecordOutput.java b/src/java/org/apache/poi/hssf/record/cont/ContinuableRecordOutput.java index 0f85139a3d..d26c85dff8 100644 --- a/src/java/org/apache/poi/hssf/record/cont/ContinuableRecordOutput.java +++ b/src/java/org/apache/poi/hssf/record/cont/ContinuableRecordOutput.java @@ -204,10 +204,22 @@ public final class ContinuableRecordOutput implements LittleEndianOutput { writeContinueIfRequired(b.length); _ulrOutput.write(b); } + public void write(byte[] b, int offset, int len) { - writeContinueIfRequired(len); - _ulrOutput.write(b, offset, len); + + int i=0; + while(true) { + int nWritableChars = Math.min(len - i, _ulrOutput.getAvailableSpace() / 1); + for ( ; nWritableChars > 0; nWritableChars--) { + _ulrOutput.writeByte(b[offset + i++]); + } + if (i >= len) { + break; + } + writeContinue(); + } } + public void writeByte(int v) { writeContinueIfRequired(1); _ulrOutput.writeByte(v); diff --git a/src/testcases/org/apache/poi/hssf/record/TestNameRecord.java b/src/testcases/org/apache/poi/hssf/record/TestNameRecord.java index 8840960a5a..c68dbd340e 100644 --- a/src/testcases/org/apache/poi/hssf/record/TestNameRecord.java +++ b/src/testcases/org/apache/poi/hssf/record/TestNameRecord.java @@ -19,6 +19,9 @@ package org.apache.poi.hssf.record; import org.apache.poi.hssf.usermodel.HSSFName; import org.apache.poi.hssf.usermodel.HSSFWorkbook; +import org.apache.poi.ss.formula.ptg.ArrayPtg; +import org.apache.poi.ss.formula.ptg.Ptg; +import org.apache.poi.util.HexDump; import org.apache.poi.util.HexRead; import junit.framework.AssertionFailedError; @@ -81,4 +84,610 @@ public final class TestNameRecord extends TestCase { name.setRefersToFormula("5*6"); assertEquals("5*6", name.getRefersToFormula()); } + + /** + * A NameRecord followed by a ContinueRecord. See Bugzilla 50244 + */ + public void test50244(){ + String record_0x0018 = + " 18 00 " + + "21 1E 00 00 00 11 08 00 00 00 03 00 00 00 00 00 " + + "00 77 44 61 74 61 47 72 75 70 70 65 53 65 72 69 " + + "65 2E 60 00 B7 02 0C 00 57 03 00 B7 02 02 09 00 " + + "00 31 2E 54 32 30 2E 30 30 31 02 09 00 00 31 2E " + + "54 32 30 2E 30 30 31 02 09 00 00 31 2E 54 32 30 " + + "2E 30 30 31 02 09 00 00 31 2E 54 32 30 2E 30 30 " + + "32 02 09 00 00 31 2E 54 32 30 2E 30 30 32 02 09 " + + "00 00 31 2E 54 32 30 2E 30 30 32 02 09 00 00 31 " + + "2E 54 32 30 2E 30 30 33 02 09 00 00 31 2E 54 32 " + + "30 2E 30 30 33 02 09 00 00 31 2E 54 32 30 2E 30 " + + "30 33 02 09 00 00 31 2E 54 32 30 2E 30 31 33 02 " + + "09 00 00 31 2E 54 32 30 2E 30 31 33 02 09 00 00 " + + "31 2E 54 32 30 2E 30 31 33 02 09 00 00 31 2E 54 " + + "32 30 2E 30 31 34 02 09 00 00 31 2E 54 32 30 2E " + + "30 31 34 02 09 00 00 31 2E 54 32 30 2E 30 31 34 " + + "02 09 00 00 31 2E 54 32 30 2E 30 31 35 02 09 00 " + + "00 31 2E 54 32 30 2E 30 31 35 02 09 00 00 31 2E " + + "54 32 30 2E 30 31 35 02 09 00 00 31 2E 54 32 30 " + + "2E 30 32 35 02 09 00 00 31 2E 54 32 30 2E 30 32 " + + "35 02 09 00 00 31 2E 54 32 30 2E 30 32 35 02 09 " + + "00 00 31 2E 54 32 30 2E 30 32 36 02 09 00 00 31 " + + "2E 54 32 30 2E 30 32 36 02 09 00 00 31 2E 54 32 " + + "30 2E 30 32 36 02 09 00 00 31 2E 54 32 30 2E 30 " + + "32 37 02 09 00 00 31 2E 54 32 30 2E 30 32 37 02 " + + "09 00 00 31 2E 54 32 30 2E 30 32 37 02 09 00 00 " + + "31 2E 54 32 30 2E 30 33 37 02 09 00 00 31 2E 54 " + + "32 30 2E 30 33 37 02 09 00 00 31 2E 54 32 30 2E " + + "30 33 37 02 09 00 00 31 2E 54 32 30 2E 30 33 38 " + + "02 09 00 00 31 2E 54 32 30 2E 30 33 38 02 09 00 " + + "00 31 2E 54 32 30 2E 30 33 38 02 09 00 00 31 2E " + + "54 32 30 2E 30 33 39 02 09 00 00 31 2E 54 32 30 " + + "2E 30 33 39 02 09 00 00 31 2E 54 32 30 2E 30 33 " + + "39 02 09 00 00 31 2E 54 32 30 2E 30 34 39 02 09 " + + "00 00 31 2E 54 32 30 2E 30 34 39 02 09 00 00 31 " + + "2E 54 32 30 2E 30 34 39 02 09 00 00 31 2E 54 32 " + + "30 2E 30 35 30 02 09 00 00 31 2E 54 32 30 2E 30 " + + "35 30 02 09 00 00 31 2E 54 32 30 2E 30 35 30 02 " + + "09 00 00 31 2E 54 32 30 2E 30 35 31 02 09 00 00 " + + "31 2E 54 32 30 2E 30 35 31 02 09 00 00 31 2E 54 " + + "32 30 2E 30 35 31 02 09 00 00 31 2E 54 32 30 2E " + + "30 36 31 02 09 00 00 31 2E 54 32 30 2E 30 36 31 " + + "02 09 00 00 31 2E 54 32 30 2E 30 36 31 02 09 00 " + + "00 31 2E 54 32 30 2E 30 36 32 02 09 00 00 31 2E " + + "54 32 30 2E 30 36 32 02 09 00 00 31 2E 54 32 30 " + + "2E 30 36 32 02 09 00 00 31 2E 54 32 30 2E 30 36 " + + "33 02 09 00 00 31 2E 54 32 30 2E 30 36 33 02 09 " + + "00 00 31 2E 54 32 30 2E 30 36 33 02 09 00 00 31 " + + "2E 54 32 30 2E 30 37 33 02 09 00 00 31 2E 54 32 " + + "30 2E 30 37 33 02 09 00 00 31 2E 54 32 30 2E 30 " + + "37 33 02 09 00 00 31 2E 54 32 30 2E 30 37 34 02 " + + "09 00 00 31 2E 54 32 30 2E 30 37 34 02 09 00 00 " + + "31 2E 54 32 30 2E 30 37 34 02 09 00 00 31 2E 54 " + + "32 30 2E 30 37 35 02 09 00 00 31 2E 54 32 30 2E " + + "30 37 35 02 09 00 00 31 2E 54 32 30 2E 30 37 35 " + + "02 09 00 00 31 2E 54 32 30 2E 30 38 35 02 09 00 " + + "00 31 2E 54 32 30 2E 30 38 35 02 09 00 00 31 2E " + + "54 32 30 2E 30 38 35 02 09 00 00 31 2E 54 32 30 " + + "2E 30 38 36 02 09 00 00 31 2E 54 32 30 2E 30 38 " + + "36 02 09 00 00 31 2E 54 32 30 2E 30 38 36 02 09 " + + "00 00 31 2E 54 32 30 2E 30 38 37 02 09 00 00 31 " + + "2E 54 32 30 2E 30 38 37 02 09 00 00 31 2E 54 32 " + + "30 2E 30 38 37 02 09 00 00 31 2E 54 32 30 2E 30 " + + "39 37 02 09 00 00 31 2E 54 32 30 2E 30 39 37 02 " + + "09 00 00 31 2E 54 32 30 2E 30 39 37 02 09 00 00 " + + "31 2E 54 32 30 2E 30 39 38 02 09 00 00 31 2E 54 " + + "32 30 2E 30 39 38 02 09 00 00 31 2E 54 32 30 2E " + + "30 39 38 02 09 00 00 31 2E 54 32 30 2E 30 39 39 " + + "02 09 00 00 31 2E 54 32 30 2E 30 39 39 02 09 00 " + + "00 31 2E 54 32 30 2E 30 39 39 02 09 00 00 31 2E " + + "54 32 30 2E 31 30 39 02 09 00 00 31 2E 54 32 30 " + + "2E 31 30 39 02 09 00 00 31 2E 54 32 30 2E 31 30 " + + "39 02 09 00 00 31 2E 54 32 30 2E 31 31 30 02 09 " + + "00 00 31 2E 54 32 30 2E 31 31 30 02 09 00 00 31 " + + "2E 54 32 30 2E 31 31 30 02 09 00 00 31 2E 54 32 " + + "30 2E 31 31 31 02 09 00 00 31 2E 54 32 30 2E 31 " + + "31 31 02 09 00 00 31 2E 54 32 30 2E 31 31 31 02 " + + "09 00 00 31 2E 54 32 30 2E 31 32 31 02 09 00 00 " + + "31 2E 54 32 30 2E 31 32 31 02 09 00 00 31 2E 54 " + + "32 30 2E 31 32 31 02 09 00 00 31 2E 54 32 30 2E " + + "31 32 32 02 09 00 00 31 2E 54 32 30 2E 31 32 32 " + + "02 09 00 00 31 2E 54 32 30 2E 31 32 32 02 09 00 " + + "00 31 2E 54 32 30 2E 31 32 33 02 09 00 00 31 2E " + + "54 32 30 2E 31 32 33 02 09 00 00 31 2E 54 32 30 " + + "2E 31 32 33 02 09 00 00 31 2E 54 32 30 2E 31 33 " + + "33 02 09 00 00 31 2E 54 32 30 2E 31 33 33 02 09 " + + "00 00 31 2E 54 32 30 2E 31 33 33 02 09 00 00 31 " + + "2E 54 32 30 2E 31 33 34 02 09 00 00 31 2E 54 32 " + + "30 2E 31 33 34 02 09 00 00 31 2E 54 32 30 2E 31 " + + "33 34 02 09 00 00 31 2E 54 32 30 2E 31 33 35 02 " + + "09 00 00 31 2E 54 32 30 2E 31 33 35 02 09 00 00 " + + "31 2E 54 32 30 2E 31 33 35 02 09 00 00 31 2E 54 " + + "32 30 2E 31 34 35 02 09 00 00 31 2E 54 32 30 2E " + + "31 34 35 02 09 00 00 31 2E 54 32 30 2E 31 34 35 " + + "02 09 00 00 31 2E 54 32 30 2E 31 34 36 02 09 00 " + + "00 31 2E 54 32 30 2E 31 34 36 02 09 00 00 31 2E " + + "54 32 30 2E 31 34 36 02 09 00 00 31 2E 54 32 30 " + + "2E 31 34 37 02 09 00 00 31 2E 54 32 30 2E 31 34 " + + "37 02 09 00 00 31 2E 54 32 30 2E 31 34 37 02 09 " + + "00 00 31 2E 54 32 30 2E 31 35 37 02 09 00 00 31 " + + "2E 54 32 30 2E 31 35 37 02 09 00 00 31 2E 54 32 " + + "30 2E 31 35 37 02 09 00 00 31 2E 54 32 30 2E 31 " + + "35 38 02 09 00 00 31 2E 54 32 30 2E 31 35 38 02 " + + "09 00 00 31 2E 54 32 30 2E 31 35 38 02 09 00 00 " + + "31 2E 54 32 30 2E 31 35 39 02 09 00 00 31 2E 54 " + + "32 30 2E 31 35 39 02 09 00 00 31 2E 54 32 30 2E " + + "31 35 39 02 09 00 00 31 2E 54 32 30 2E 31 36 39 " + + "02 09 00 00 31 2E 54 32 30 2E 31 36 39 02 09 00 " + + "00 31 2E 54 32 30 2E 31 36 39 02 09 00 00 31 2E " + + "54 32 30 2E 31 37 30 02 09 00 00 31 2E 54 32 30 " + + "2E 31 37 30 02 09 00 00 31 2E 54 32 30 2E 31 37 " + + "30 02 09 00 00 31 2E 54 32 30 2E 31 37 31 02 09 " + + "00 00 31 2E 54 32 30 2E 31 37 31 02 09 00 00 31 " + + "2E 54 32 30 2E 31 37 31 02 09 00 00 31 2E 54 36 " + + "30 2E 30 30 39 02 09 00 00 31 2E 54 36 30 2E 30 " + + "30 39 02 09 00 00 31 2E 54 36 30 2E 30 30 39 02 " + + "09 00 00 31 2E 54 36 30 2E 30 31 30 02 09 00 00 " + + "31 2E 54 36 30 2E 30 31 30 02 09 00 00 31 2E 54 " + + "36 30 2E 30 31 30 02 09 00 00 31 2E 54 36 30 2E " + + "30 31 31 02 09 00 00 31 2E 54 36 30 2E 30 31 31 " + + "02 09 00 00 31 2E 54 36 30 2E 30 31 31 02 09 00 " + + "00 31 2E 54 36 30 2E 30 32 31 02 09 00 00 31 2E " + + "54 36 30 2E 30 32 31 02 09 00 00 31 2E 54 36 30 " + + "2E 30 32 31 02 09 00 00 31 2E 54 36 30 2E 30 32 " + + "32 02 09 00 00 31 2E 54 36 30 2E 30 32 32 02 09 " + + "00 00 31 2E 54 36 30 2E 30 32 32 02 09 00 00 31 " + + "2E 54 36 30 2E 30 32 33 02 09 00 00 31 2E 54 36 " + + "30 2E 30 32 33 02 09 00 00 31 2E 54 36 30 2E 30 " + + "32 33 02 09 00 00 31 2E 54 36 30 2E 30 33 33 02 " + + "09 00 00 31 2E 54 36 30 2E 30 33 33 02 09 00 00 " + + "31 2E 54 36 30 2E 30 33 33 02 09 00 00 31 2E 54 " + + "36 30 2E 30 33 34 02 09 00 00 31 2E 54 36 30 2E " + + "30 33 34 02 09 00 00 31 2E 54 36 30 2E 30 33 34 " + + "02 09 00 00 31 2E 54 36 30 2E 30 33 35 02 09 00 " + + "00 31 2E 54 36 30 2E 30 33 35 02 09 00 00 31 2E " + + "54 36 30 2E 30 33 35 02 09 00 00 31 2E 54 36 30 " + + "2E 30 34 35 02 09 00 00 31 2E 54 36 30 2E 30 34 " + + "35 02 09 00 00 31 2E 54 36 30 2E 30 34 35 02 09 " + + "00 00 31 2E 54 36 30 2E 30 34 36 02 09 00 00 31 " + + "2E 54 36 30 2E 30 34 36 02 09 00 00 31 2E 54 36 " + + "30 2E 30 34 36 02 09 00 00 31 2E 54 36 30 2E 30 " + + "34 37 02 09 00 00 31 2E 54 36 30 2E 30 34 37 02 " + + "09 00 00 31 2E 54 36 30 2E 30 34 37 02 09 00 00 " + + "31 2E 54 36 30 2E 30 35 37 02 09 00 00 31 2E 54 " + + "36 30 2E 30 35 37 02 09 00 00 31 2E 54 36 30 2E " + + "30 35 37 02 09 00 00 31 2E 54 36 30 2E 30 35 38 " + + "02 09 00 00 31 2E 54 36 30 2E 30 35 38 02 09 00 " + + "00 31 2E 54 36 30 2E 30 35 38 02 09 00 00 31 2E " + + "54 36 30 2E 30 35 39 02 09 00 00 31 2E 54 36 30 " + + "2E 30 35 39 02 09 00 00 31 2E 54 36 30 2E 30 35 " + + "39 02 09 00 00 31 2E 54 36 30 2E 30 36 30 02 09 " + + "00 00 31 2E 54 36 30 2E 30 36 30 02 09 00 00 31 " + + "2E 54 36 30 2E 30 36 30 02 09 00 00 31 2E 54 36 " + + "30 2E 30 35 30 02 09 00 00 31 2E 54 36 30 2E 30 " + + "35 30 02 09 00 00 31 2E 54 36 30 2E 30 35 30 02 " + + "09 00 00 31 2E 54 36 30 2E 30 34 39 02 09 00 00 " + + "31 2E 54 36 30 2E 30 34 39 02 09 00 00 31 2E 54 " + + "36 30 2E 30 34 39 02 09 00 00 31 2E 54 36 30 2E " + + "30 34 38 02 09 00 00 31 2E 54 36 30 2E 30 34 38 " + + "02 09 00 00 31 2E 54 36 30 2E 30 34 38 02 09 00 " + + "00 31 2E 54 36 30 2E 30 33 38 02 09 00 00 31 2E " + + "54 36 30 2E 30 33 38 02 09 00 00 31 2E 54 36 30 " + + "2E 30 33 38 02 09 00 00 31 2E 54 36 30 2E 30 33 " + + "37 02 09 00 00 31 2E 54 36 30 2E 30 33 37 02 09 " + + "00 00 31 2E 54 36 30 2E 30 33 37 02 09 00 00 31 " + + "2E 54 36 30 2E 30 33 36 02 09 00 00 31 2E 54 36 " + + "30 2E 30 33 36 02 09 00 00 31 2E 54 36 30 2E 30 " + + "33 36 02 09 00 00 31 2E 54 36 30 2E 30 32 36 02 " + + "09 00 00 31 2E 54 36 30 2E 30 32 36 02 09 00 00 " + + "31 2E 54 36 30 2E 30 32 36 02 09 00 00 31 2E 54 " + + "36 30 2E 30 32 35 02 09 00 00 31 2E 54 36 30 2E " + + "30 32 35 02 09 00 00 31 2E 54 36 30 2E 30 32 35 " + + "02 09 00 00 31 2E 54 36 30 2E 30 32 34 02 09 00 " + + "00 31 2E 54 36 30 2E 30 32 34 02 09 00 00 31 2E " + + "54 36 30 2E 30 32 34 02 09 00 00 31 2E 54 36 30 " + + "2E 30 31 34 02 09 00 00 31 2E 54 36 30 2E 30 31 " + + "34 02 09 00 00 31 2E 54 36 30 2E 30 31 34 02 09 " + + "00 00 31 2E 54 36 30 2E 30 31 33 02 09 00 00 31 " + + "2E 54 36 30 2E 30 31 33 02 09 00 00 31 2E 54 36 " + + "30 2E 30 31 33 02 09 00 00 31 2E 54 36 30 2E 30 " + + "31 32 02 09 00 00 31 2E 54 36 30 2E 30 31 32 02 " + + "09 00 00 31 2E 54 36 30 2E 30 31 32 02 09 00 00 " + + "31 2E 54 36 30 2E 30 30 32 02 09 00 00 31 2E 54 " + + "36 30 2E 30 30 32 02 09 00 00 31 2E 54 36 30 2E " + + "30 30 32 02 09 00 00 31 2E 54 36 30 2E 30 30 31 " + + "02 09 00 00 31 2E 54 36 30 2E 30 30 31 02 09 00 " + + "00 31 2E 54 36 30 2E 30 30 31 02 09 00 00 31 2E " + + "54 32 30 2E 31 37 32 02 09 00 00 31 2E 54 32 30 " + + "2E 31 37 32 02 09 00 00 31 2E 54 32 30 2E 31 37 " + + "32 02 09 00 00 31 2E 54 32 30 2E 31 36 32 02 09 " + + "00 00 31 2E 54 32 30 2E 31 36 32 02 09 00 00 31 " + + "2E 54 32 30 2E 31 36 32 02 09 00 00 31 2E 54 32 " + + "30 2E 31 36 31 02 09 00 00 31 2E 54 32 30 2E 31 " + + "36 31 02 09 00 00 31 2E 54 32 30 2E 31 36 31 02 " + + "09 00 00 31 2E 54 32 30 2E 31 36 30 02 09 00 00 " + + "31 2E 54 32 30 2E 31 36 30 02 09 00 00 31 2E 54 " + + "32 30 2E 31 36 30 02 09 00 00 31 2E 54 32 30 2E " + + "31 35 30 02 09 00 00 31 2E 54 32 30 2E 31 35 30 " + + "02 09 00 00 31 2E 54 32 30 2E 31 35 30 02 09 00 " + + "00 31 2E 54 32 30 2E 31 34 39 02 09 00 00 31 2E " + + "54 32 30 2E 31 34 39 02 09 00 00 31 2E 54 32 30 " + + "2E 31 34 39 02 09 00 00 31 2E 54 32 30 2E 31 34 " + + "38 02 09 00 00 31 2E 54 32 30 2E 31 34 38 02 09 " + + "00 00 31 2E 54 32 30 2E 31 34 38 02 09 00 00 31 " + + "2E 54 32 30 2E 31 33 38 02 09 00 00 31 2E 54 32 " + + "30 2E 31 33 38 02 09 00 00 31 2E 54 32 30 2E 31 " + + "33 38 02 09 00 00 31 2E 54 32 30 2E 31 33 37 02 " + + "09 00 00 31 2E 54 32 30 2E 31 33 37 02 09 00 00 " + + "31 2E 54 32 30 2E 31 33 37 02 09 00 00 31 2E 54 " + + "32 30 2E 31 33 36 02 09 00 00 31 2E 54 32 30 2E " + + "31 33 36 02 09 00 00 31 2E 54 32 30 2E 31 33 36 " + + "02 09 00 00 31 2E 54 32 30 2E 31 32 36 02 09 00 " + + "00 31 2E 54 32 30 2E 31 32 36 02 09 00 00 31 2E " + + "54 32 30 2E 31 32 36 02 09 00 00 31 2E 54 32 30 " + + "2E 31 32 35 02 09 00 00 31 2E 54 32 30 2E 31 32 " + + "35 02 09 00 00 31 2E 54 32 30 2E 31 32 35 02 09 " + + "00 00 31 2E 54 32 30 2E 31 32 34 02 09 00 00 31 " + + "2E 54 32 30 2E 31 32 34 02 09 00 00 31 2E 54 32 " + + "30 2E 31 32 34 02 09 00 00 31 2E 54 32 30 2E 31 " + + "31 34 02 09 00 00 31 2E 54 32 30 2E 31 31 34 02 " + + "09 00 00 31 2E 54 32 30 2E 31 31 34 02 09 00 00 " + + "31 2E 54 32 30 2E 31 31 33 02 09 00 00 31 2E 54 " + + "32 30 2E 31 31 33 02 09 00 00 31 2E 54 32 30 2E " + + "31 31 33 02 09 00 00 31 2E 54 32 30 2E 31 31 32 " + + "02 09 00 00 31 2E 54 32 30 2E 31 31 32 02 09 00 " + + "00 31 2E 54 32 30 2E 31 31 32 02 09 00 00 31 2E " + + "54 32 30 2E 31 30 32 02 09 00 00 31 2E 54 32 30 " + + "2E 31 30 32 02 09 00 00 31 2E 54 32 30 2E 31 30 " + + "32 02 09 00 00 31 2E 54 32 30 2E 31 30 31 02 09 " + + "00 00 31 2E 54 32 30 2E 31 30 31 02 09 00 00 31 " + + "2E 54 32 30 2E 31 30 31 02 09 00 00 31 2E 54 32 " + + "30 2E 31 30 30 02 09 00 00 31 2E 54 32 30 2E 31 " + + "30 30 02 09 00 00 31 2E 54 32 30 2E 31 30 30 02 " + + "09 00 00 31 2E 54 32 30 2E 30 39 30 02 09 00 00 " + + "31 2E 54 32 30 2E 30 39 30 02 09 00 00 31 2E 54 " + + "32 30 2E 30 39 30 02 09 00 00 31 2E 54 32 30 2E " + + "30 38 39 02 09 00 00 31 2E 54 32 30 2E 30 38 39 " + + "02 09 00 00 31 2E 54 32 30 2E 30 38 39 02 09 00 " + + "00 31 2E 54 32 30 2E 30 38 38 02 09 00 00 31 2E " + + "54 32 30 2E 30 38 38 02 09 00 00 31 2E 54 32 30 " + + "2E 30 38 38 02 09 00 00 31 2E 54 32 30 2E 30 37 " + + "38 02 09 00 00 31 2E 54 32 30 2E 30 37 38 02 09 " + + "00 00 31 2E 54 32 30 2E 30 37 38 02 09 00 00 31 " + + "2E 54 32 30 2E 30 37 37 02 09 00 00 31 2E 54 32 " + + "30 2E 30 37 37 02 09 00 00 31 2E 54 32 30 2E 30 " + + "37 37 02 09 00 00 31 2E 54 32 30 2E 30 37 36 02 " + + "09 00 00 31 2E 54 32 30 2E 30 37 36 02 09 00 00 " + + "31 2E 54 32 30 2E 30 37 36 02 09 00 00 31 2E 54 " + + "32 30 2E 30 36 36 02 09 00 00 31 2E 54 32 30 2E " + + "30 36 36 02 09 00 00 31 2E 54 32 30 2E 30 36 36 " + + "02 09 00 00 31 2E 54 32 30 2E 30 36 35 02 09 00 " + + "00 31 2E 54 32 30 2E 30 36 35 02 09 00 00 31 2E " + + "54 32 30 2E 30 36 35 02 09 00 00 31 2E 54 32 30 " + + "2E 30 36 34 02 09 00 00 31 2E 54 32 30 2E 30 36 " + + "34 02 09 00 00 31 2E 54 32 30 2E 30 36 34 02 09 " + + "00 00 31 2E 54 32 30 2E 30 35 34 02 09 00 00 31 " + + "2E 54 32 30 2E 30 35 34 02 09 00 00 31 2E 54 32 " + + "30 2E 30 35 34 02 09 00 00 31 2E 54 32 30 2E 30 " + + "35 33 02 09 00 00 31 2E 54 32 30 2E 30 35 33 02 " + + "09 00 00 31 2E 54 32 30 2E 30 35 33 02 09 00 00 " + + "31 2E 54 32 30 2E 30 35 32 02 09 00 00 31 2E 54 " + + "32 30 2E 30 35 32 02 09 00 00 31 2E 54 32 30 2E " + + "30 35 32 02 09 00 00 31 2E 54 32 30 2E 30 34 32 " + + "02 09 00 00 31 2E 54 32 30 2E 30 34 32 02 09 00 " + + "00 31 2E 54 32 30 2E 30 34 32 02 09 00 00 31 2E " + + "54 32 30 2E 30 34 31 02 09 00 00 31 2E 54 32 30 " + + "2E 30 34 31 02 09 00 00 31 2E 54 32 30 2E 30 34 " + + "31 02 09 00 00 31 2E 54 32 30 2E 30 34 30 02 09 " + + "00 00 31 2E 54 32 30 2E 30 34 30 02 09 00 00 31 " + + "2E 54 32 30 2E 30 34 30 02 09 00 00 31 2E 54 32 " + + "30 2E 30 33 30 02 09 00 00 31 2E 54 32 30 2E 30 " + + "33 30 02 09 00 00 31 2E 54 32 30 2E 30 33 30 02 " + + "09 00 00 31 2E 54 32 30 2E 30 32 39 02 09 00 00 " + + "31 2E 54 32 30 2E 30 32 39 02 09 00 00 31 2E 54 " + + "32 30 2E 30 32 39 02 09 00 00 31 2E 54 32 30 2E " + + "30 32 38 02 09 00 00 31 2E 54 32 30 2E 30 32 38 " + + "02 09 00 00 31 2E 54 32 30 2E 30 32 38 02 09 00 " + + "00 31 2E 54 32 30 2E 30 31 38 02 09 00 00 31 2E " + + "54 32 30 2E 30 31 38 02 09 00 00 31 2E 54 32 30 " + + "2E 30 31 38 02 09 00 00 31 2E 54 32 30 2E 30 31 " + + "37 02 09 00 00 31 2E 54 32 30 2E 30 31 37 02 09 " + + "00 00 31 2E 54 32 30 2E 30 31 37 02 09 00 00 31 " + + "2E 54 32 30 2E 30 31 36 02 09 00 00 31 2E 54 32 " + + "30 2E 30 31 36 02 09 00 00 31 2E 54 32 30 2E 30 " + + "31 36 02 09 00 00 31 2E 54 32 30 2E 30 30 36 02 " + + "09 00 00 31 2E 54 32 30 2E 30 30 36 02 09 00 00 " + + "31 2E 54 32 30 2E 30 30 36 02 09 00 00 31 2E 54 " + + "32 30 2E 30 30 35 02 09 00 00 31 2E 54 32 30 2E " + + "30 30 35 02 09 00 00 31 2E 54 32 30 2E 30 30 35 " + + "02 09 00 00 31 2E 54 32 30 2E 30 30 34 02 09 00 " + + "00 31 2E 54 32 30 2E 30 30 34 02 09 00 00 31 2E " + + "54 32 30 2E 30 30 34 02 09 00 00 31 2E 54 32 30 " + + "2E 30 30 37 02 09 00 00 31 2E 54 32 30 2E 30 30 " + + "37 02 09 00 00 31 2E 54 32 30 2E 30 30 37 02 09 " + + "00 00 31 2E 54 32 30 2E 30 30 38 02 09 00 00 31 " + + "2E 54 32 30 2E 30 30 38 02 09 00 00 31 2E 54 32 " + + "30 2E 30 30 38 02 09 00 00 31 2E 54 32 30 2E 30 " + + "30 39 02 09 00 00 31 2E 54 32 30 2E 30 30 39 02 " + + "09 00 00 31 2E 54 32 30 2E 30 30 39 02 09 00 00 " + + "31 2E 54 32 30 2E 30 31 39 02 09 00 00 31 2E 54 " + + "32 30 2E 30 31 39 02 09 00 00 31 2E 54 32 30 2E " + + "30 31 39 02 09 00 00 31 2E 54 32 30 2E 30 32 30 " + + "02 09 00 00 31 2E 54 32 30 2E 30 32 30 02 09 00 " + + "00 31 2E 54 32 30 2E 30 32 30 02 09 00 00 31 2E " + + "54 32 30 2E 30 32 31 02 09 00 00 31 2E 54 32 30 " + + "2E 30 32 31 02 09 00 00 31 2E 54 32 30 2E 30 32 " + + "31 02 09 00 00 31 2E 54 32 30 2E 30 33 31 02 09 " + + "00 00 31 2E 54 32 30 2E 30 33 31 02 09 00 00 31 " + + "2E 54 32 30 2E 30 33 31 02 09 00 00 31 2E 54 32 " + + "30 2E 30 33 32 02 09 00 00 31 2E 54 32 30 2E 30 " + + "33 32 02 09 00 00 31 2E 54 32 30 2E 30 33 32 02 " + + "09 00 00 31 2E 54 32 30 2E 30 33 33 02 09 00 00 " + + "31 2E 54 32 30 2E 30 33 33 02 09 00 00 31 2E 54 " + + "32 30 2E 30 33 33 02 09 00 00 31 2E 54 32 30 2E " + + "30 34 33 02 09 00 00 31 2E 54 32 30 2E 30 34 33 " + + "02 09 00 00 31 2E 54 32 30 2E 30 34 33 02 09 00 " + + "00 31 2E 54 32 30 2E 30 34 34 02 09 00 00 31 2E " + + "54 32 30 2E 30 34 34 02 09 00 00 31 2E 54 32 30 " + + "2E 30 34 34 02 09 00 00 31 2E 54 32 30 2E 30 34 " + + "35 02 09 00 00 31 2E 54 32 30 2E 30 34 35 02 09 " + + "00 00 31 2E 54 32 30 2E 30 34 35 02 09 00 00 31 " + + "2E 54 32 30 2E 30 35 35 02 09 00 00 31 2E 54 32 " + + "30 2E 30 35 35 02 09 00 00 31 2E 54 32 30 2E 30 " + + "35 35 02 09 00 00 31 2E 54 32 30 2E 30 35 36 02 " + + "09 00 00 31 2E 54 32 30 2E 30 35 36 02 09 00 00 " + + "31 2E 54 32 30 2E 30 35 36 02 09 00 00 31 2E 54 " + + "32 30 2E 30 35 37 02 09 00 00 31 2E 54 32 30 2E " + + "30 35 37 02 09 00 00 31 2E 54 32 30 2E 30 35 37 " + + "02 09 00 00 31 2E 54 32 30 2E 30 36 37 02 09 00 " + + "00 31 2E 54 32 30 2E 30 36 37 02 09 00 00 31 2E " + + "54 32 30 2E 30 36 37 02 09 00 00 31 2E 54 32 30 " + + "2E 30 36 38 02 09 00 00 31 2E 54 32 30 2E 30 36 " + + "38 02 09 00 00 31 2E 54 32 30 2E 30 36 38 02 09 " + + "00 00 31 2E 54 32 30 2E 30 36 39 02 09 00 00 31 " + + "2E 54 32 30 2E 30 36 39 02 09 00 00 31 2E 54 32 " + + "30 2E 30 36 39 02 09 00 00 31 2E 54 32 30 2E 30 " + + "37 39 02 09 00 00 31 2E 54 32 30 2E 30 37 39 02 " + + "09 00 00 31 2E 54 32 30 2E 30 37 39 02 09 00 00 " + + "31 2E 54 32 30 2E 30 38 30 02 09 00 00 31 2E 54 " + + "32 30 2E 30 38 30 02 09 00 00 31 2E 54 32 30 2E " + + "30 38 30 02 09 00 00 31 2E 54 32 30 2E 30 38 31 " + + "02 09 00 00 31 2E 54 32 30 2E 30 38 31 02 09 00 " + + "00 31 2E 54 32 30 2E 30 38 31 02 09 00 00 31 2E " + + "54 32 30 2E 30 39 31 02 09 00 00 31 2E 54 32 30 " + + "2E 30 39 31 02 09 00 00 31 2E 54 32 30 2E 30 39 " + + "31 02 09 00 00 31 2E 54 32 30 2E 30 39 32 02 09 " + + "00 00 31 2E 54 32 30 2E 30 39 32 02 09 00 00 31 " + + "2E 54 32 30 2E 30 39 32 02 09 00 00 31 2E 54 32 " + + "30 2E 30 39 33 02 09 00 00 31 2E 54 32 30 2E 30 " + + "39 33 02 09 00 00 31 2E 54 32 30 2E 30 39 33 02 " + + "09 00 00 31 2E 54 32 30 2E 31 30 33 02 09 00 00 " + + "31 2E 54 32 30 2E 31 30 33 02 09 00 00 31 2E 54 " + + "32 30 2E 31 30 33 02 09 00 00 31 2E 54 32 30 2E " + + "31 30 34 02 09 00 00 31 2E 54 32 30 2E 31 30 34 " + + "02 09 00 00 31 2E 54 32 30 2E 31 30 34 02 09 00 " + + "00 31 2E 54 32 30 2E 31 30 35 02 09 00 00 31 2E " + + "54 32 30 2E 31 30 35 02 09 00 00 31 2E 54 32 30 " + + "2E 31 30 35 02 09 00 00 31 2E 54 32 30 2E 31 31 " + + "35 02 09 00 00 31 2E 54 32 30 2E 31 31 35 02 09 " + + "00 00 31 2E 54 32 30 2E 31 31 35 02 09 00 00 31 " + + "2E 54 32 30 2E 31 31 36 02 09 00 00 31 2E 54 32 " + + "30 2E 31 31 36 02 09 00 00 31 2E 54 32 30 2E 31 " + + "31 36 02 09 00 00 31 2E 54 32 30 2E 31 31 37 02 " + + "09 00 00 31 2E 54 32 30 2E 31 31 37 02 09 00 00 " + + "31 2E 54 32 30 2E 31 31 37 02 09 00 00 31 2E 54 " + + "32 30 2E 31 32 37 02 09 00 00 31 2E 54 32 30 2E " + + "31 32 37 02 09 00 00 31 2E 54 32 30 2E 31 32 37 " + + "02 09 00 00 31 2E 54 32 30 2E 31 32 38 02 09 00 " + + "00 31 2E 54 32 30 2E 31 32 38 02 09 00 00 31 2E " + + "54 32 30 2E 31 32 38 02 09 00 00 31 2E 54 32 30 " + + "2E 31 32 39 02 09 00 00 31 2E 54 32 30 2E 31 32 " + + "39 02 09 00 00 31 2E 54 32 30 2E 31 32 39 02 09 " + + "00 00 31 2E 54 32 30 2E 31 33 39 02 09 00 00 31 " + + "2E 54 32 30 2E 31 33 39 02 09 00 00 31 2E 54 32 " + + "30 2E 31 33 39 02 09 00 00 31 2E 54 32 30 2E 31 " + + "34 30 02 09 00 00 31 2E 54 32 30 2E 31 34 30 02 " + + "09 00 00 31 2E 54 32 30 2E 31 34 30 02 09 00 00 " + + "31 2E 54 32 30 2E 31 34 31 02 09 00 00 31 2E 54 " + + "32 30 2E 31 34 31 02 09 00 00 31 2E 54 32 30 2E " + + "31 34 31 02 09 00 00 31 2E 54 32 30 2E 31 35 31 " + + "02 09 00 00 31 2E 54 32 30 2E 31 35 31 02 09 00 " + + "00 31 2E 54 32 30 2E 31 35 31 02 09 00 00 31 2E " + + "54 32 30 2E 31 35 32 02 09 00 00 31 2E 54 32 30 " + + "2E 31 35 32 02 09 00 00 31 2E 54 32 30 2E 31 35 " + + "32 02 09 00 00 31 2E 54 32 30 2E 31 35 33 02 09 " + + "00 00 31 2E 54 32 30 2E 31 35 33 02 09 00 00 31 " + + "2E 54 32 30 2E 31 35 33 02 09 00 00 31 2E 54 32 " + + "30 2E 31 36 33 02 09 00 00 31 2E 54 32 30 2E 31 " + + "36 33 02 09 00 00 31 2E 54 32 30 2E 31 36 33 02 " + + "09 00 00 31 2E 54 32 30 2E 31 36 34 02 09 00 00 " + + "31 2E 54 32 30 2E 31 36 34 02 09 00 00 31 2E 54 " + + "32 30 2E 31 36 34 02 09 00 00 31 2E 54 32 30 2E " + + "31 36 35 02 09 00 00 31 2E 54 32 30 2E 31 36 35 " + + "02 09 00 00 31 2E 54 32 30 2E 31 36 35 02 09 00 " + + "00 31 2E 54 36 30 2E 30 30 33 02 09 00 00 31 2E " + + "54 36 30 2E 30 30 33 02 09 00 00 31 2E 54 36 30 " + + "2E 30 30 33 02 09 00 00 31 2E 54 36 30 2E 30 30 " + + "34 02 09 00 00 31 2E 54 36 30 2E 30 30 34 02 09 " + + "00 00 31 2E 54 36 30 2E 30 30 34 02 09 00 00 31 " + + "2E 54 36 30 2E 30 30 35 02 09 00 00 31 2E 54 36 " + + "30 2E 30 30 35 02 09 00 00 31 2E 54 36 30 2E 30 " + + "30 35 02 09 00 00 31 2E 54 36 30 2E 30 31 35 02 " + + "09 00 00 31 2E 54 36 30 2E 30 31 35 02 09 00 00 " + + "31 2E 54 36 30 2E 30 31 35 02 09 00 00 31 2E 54 " + + "36 30 2E 30 31 36 02 09 00 00 31 2E 54 36 30 2E " + + "30 31 36 02 09 00 00 31 2E 54 36 30 2E 30 31 36 " + + "02 09 00 00 31 2E 54 36 30 2E 30 31 37 02 09 00 " + + "00 31 2E 54 36 30 2E 30 31 37 02 09 00 00 31 2E " + + "54 36 30 2E 30 31 37 02 09 00 00 31 2E 54 36 30 " + + "2E 30 32 37 02 09 00 00 31 2E 54 36 30 2E 30 32 " + + "37 02 09 00 00 31 2E 54 36 30 2E 30 32 37 02 09 " + + "00 00 31 2E 54 36 30 2E 30 32 38 02 09 00 00 31 " + + "2E 54 36 30 2E 30 32 38 02 09 00 00 31 2E 54 36 " + + "30 2E 30 32 38 02 09 00 00 31 2E 54 36 30 2E 30 " + + "32 39 02 09 00 00 31 2E 54 36 30 2E 30 32 39 02 " + + "09 00 00 31 2E 54 36 30 2E 30 32 39 02 09 00 00 " + + "31 2E 54 36 30 2E 30 33 39 02 09 00 00 31 2E 54 " + + "36 30 2E 30 33 39 02 09 00 00 31 2E 54 36 30 2E " + + "30 33 39 02 09 00 00 31 2E 54 36 30 2E 30 34 30 " + + "02 09 00 00 31 2E 54 36 30 2E 30 34 30 02 09 00 " + + "00 31 2E 54 36 30 2E 30 34 30 02 09 00 00 31 2E " + + "54 36 30 2E 30 34 31 02 09 00 00 31 2E 54 36 30 " + + "2E 30 34 31 02 09 00 00 31 2E 54 36 30 2E 30 34 " + + "31 02 09 00 00 31 2E 54 36 30 2E 30 35 31 02 09 " + + "00 00 31 2E 54 36 30 2E 30 35 31 02 09 00 00 31 " + + "2E 54 36 30 2E 30 35 31 02 09 00 00 31 2E 54 36 " + + "30 2E 30 35 32 02 09 00 00 31 2E 54 36 30 2E 30 " + + "35 32 02 09 00 00 31 2E 54 36 30 2E 30 35 32 02 " + + "09 00 00 31 2E 54 36 30 2E 30 35 33 02 09 00 00 " + + "31 2E 54 36 30 2E 30 35 33 02 09 00 00 31 2E 54 " + + "36 30 2E 30 35 33 02 09 00 00 31 2E 54 36 30 2E " + + "30 35 36 02 09 00 00 31 2E 54 36 30 2E 30 35 36 " + + "02 09 00 00 31 2E 54 36 30 2E 30 35 36 02 09 00 " + + "00 31 2E 54 36 30 2E 30 35 35 02 09 00 00 31 2E " + + "54 36 30 2E 30 35 35 02 09 00 00 31 2E 54 36 30 " + + "2E 30 35 35 02 09 00 00 31 2E 54 36 30 2E 30 35 " + + "34 02 09 00 00 31 2E 54 36 30 2E 30 35 34 02 09 " + + "00 00 31 2E 54 36 30 2E 30 35 34 02 09 00 00 31 " + + "2E 54 36 30 2E 30 34 34 02 09 00 00 31 2E 54 36 " + + "30 2E 30 34 34 02 09 00 00 31 2E 54 36 30 2E 30 " + + "34 34 02 09 00 00 31 2E 54 36 30 2E 30 34 33 02 " + + "09 00 00 31 2E 54 36 30 2E 30 34 33 02 09 00 00 " + + "31 2E 54 36 30 2E 30 34 33 02 09 00 00 31 2E 54 " + + "36 30 2E 30 34 32 02 09 00 00 31 2E 54 36 30 2E " + + "30 34 32 02 09 00 00 31 2E 54 36 30 2E 30 34 32 " + + "02 09 00 00 31 2E 54 36 30 2E 30 33 32 02 09 00 " + + "00 31 2E 54 36 30 2E 30 33 32 02 09 00 00 31 2E " + + "54 36 30 2E 30 33 32 02 09 00 00 31 2E 54 36 30 " + + "2E 30 33 31 02 09 00 00 31 2E 54 36 30 2E 30 33 " + + "31 02 09 00 00 31 2E 54 36 30 2E 30 33 31 02 09 " + + "00 00 31 2E 54 36 30 2E 30 33 30 02 09 00 00 31 " + + "2E 54 36 30 2E 30 33 30 02 09 00 00 31 2E 54 36 " + + "30 2E 30 33 30 02 09 00 00 31 2E 54 36 30 2E 30 " + + "32 30 02 09 00 00 31 2E 54 36 30 2E 30 32 30 02 " + + "09 00 00 31 2E 54 36 30 2E 30 32 30 02 09 00 00 " + + "31 2E 54 36 30 2E 30 31 39 02 09 00 00 31 2E 54 " + + "36 30 2E 30 31 39 02 09 00 00 31 2E 54 36 30 2E " + + "30 31 39 02 09 00 00 31 2E 54 36 30 2E 30 31 38 " + + "02 09 00 00 31 2E 54 36 30 2E 30 31 38 02 09 00 " + + "00 31 2E 54 36 30 2E 30 31 38 02 09 00 00 31 2E " + + "54 36 30 2E 30 30 38 02 09 00 00 31 2E 54 36 30 " + + "2E 30 30 38 02 09 00 00 31 2E 54 36 30 2E 30 30 " + + "38 02 09 00 00 31 2E 54 36 30 2E 30 30 37 02 09 " + + "00 00 31 2E 54 36 30 2E 30 30 37 02 09 00 00 31 " + + "2E 54 36 30 2E 30 30 37 02 09 00 00 31 2E 54 36 " + + "30 2E 30 30 36 02 09 00 00 31 2E 54 36 30 2E 30 " + + "30 36 02 09 00 00 31 2E 54 36 30 2E 30 30 36 02 " + + "09 00 00 31 2E 54 32 30 2E 31 36 38 02 09 00 00 " + + "31 2E 54 32 30 2E 31 36 38 02 09 00 00 31 2E 54 " + + "32 30 2E 31 36 38 02 09 00 00 31 2E 54 32 30 2E " + + "31 36 37 02 09 00 00 31 2E 54 32 30 2E 31 36 37 " + + "02 09 00 00 31 2E 54 32 30 2E 31 36 37 02 09 00 " + + "00 31 2E 54 32 30 2E 31 36 36 02 09 00 00 31 2E " + + "54 32 30 2E 31 36 36 02 09 00 00 31 2E 54 32 30 " + + "2E 31 36 36 02 09 00 00 31 2E 54 32 30 2E 31 35 " + + "36 02 09 00 00 31 2E 54 32 30 2E 31 35 36 02 09 " + + "00 00 31 2E 54 32 30 2E 31 35 36 02 09 00 00 31 " + + "2E 54 32 30 2E 31 35 35 02 09 00 00 31 2E 54 32 " + + "30 2E 31 35 35 02 09 00 00 31 2E 54 32 30 2E 31 " + + "35 35 02 09 00 00 31 2E 54 32 30 2E 31 35 34 02 " + + "09 00 00 31 2E 54 32 30 2E 31 35 34 02 09 00 00 " + + "31 2E 54 32 30 2E 31 35 34 02 09 00 00 31 2E 54 " + + "32 30 2E 31 34 34 02 09 00 00 31 2E 54 32 30 2E " + + "31 34 34 "; + + String record_0x03C = + " 3C 00 62 05 02 09 00 00 31 2E 54 32 30 " + + "2E 31 34 34 02 09 00 00 31 2E 54 32 30 2E 31 34 " + + "33 02 09 00 00 31 2E 54 32 30 2E 31 34 33 02 09 " + + "00 00 31 2E 54 32 30 2E 31 34 33 02 09 00 00 31 " + + "2E 54 32 30 2E 31 34 32 02 09 00 00 31 2E 54 32 " + + "30 2E 31 34 32 02 09 00 00 31 2E 54 32 30 2E 31 " + + "34 32 02 09 00 00 31 2E 54 32 30 2E 31 33 32 02 " + + "09 00 00 31 2E 54 32 30 2E 31 33 32 02 09 00 00 " + + "31 2E 54 32 30 2E 31 33 32 02 09 00 00 31 2E 54 " + + "32 30 2E 31 33 31 02 09 00 00 31 2E 54 32 30 2E " + + "31 33 31 02 09 00 00 31 2E 54 32 30 2E 31 33 31 " + + "02 09 00 00 31 2E 54 32 30 2E 31 33 30 02 09 00 " + + "00 31 2E 54 32 30 2E 31 33 30 02 09 00 00 31 2E " + + "54 32 30 2E 31 33 30 02 09 00 00 31 2E 54 32 30 " + + "2E 31 32 30 02 09 00 00 31 2E 54 32 30 2E 31 32 " + + "30 02 09 00 00 31 2E 54 32 30 2E 31 32 30 02 09 " + + "00 00 31 2E 54 32 30 2E 31 31 39 02 09 00 00 31 " + + "2E 54 32 30 2E 31 31 39 02 09 00 00 31 2E 54 32 " + + "30 2E 31 31 39 02 09 00 00 31 2E 54 32 30 2E 31 " + + "31 38 02 09 00 00 31 2E 54 32 30 2E 31 31 38 02 " + + "09 00 00 31 2E 54 32 30 2E 31 31 38 02 09 00 00 " + + "31 2E 54 32 30 2E 31 30 38 02 09 00 00 31 2E 54 " + + "32 30 2E 31 30 38 02 09 00 00 31 2E 54 32 30 2E " + + "31 30 38 02 09 00 00 31 2E 54 32 30 2E 31 30 37 " + + "02 09 00 00 31 2E 54 32 30 2E 31 30 37 02 09 00 " + + "00 31 2E 54 32 30 2E 31 30 37 02 09 00 00 31 2E " + + "54 32 30 2E 31 30 36 02 09 00 00 31 2E 54 32 30 " + + "2E 31 30 36 02 09 00 00 31 2E 54 32 30 2E 31 30 " + + "36 02 09 00 00 31 2E 54 32 30 2E 30 39 36 02 09 " + + "00 00 31 2E 54 32 30 2E 30 39 36 02 09 00 00 31 " + + "2E 54 32 30 2E 30 39 36 02 09 00 00 31 2E 54 32 " + + "30 2E 30 39 35 02 09 00 00 31 2E 54 32 30 2E 30 " + + "39 35 02 09 00 00 31 2E 54 32 30 2E 30 39 35 02 " + + "09 00 00 31 2E 54 32 30 2E 30 39 34 02 09 00 00 " + + "31 2E 54 32 30 2E 30 39 34 02 09 00 00 31 2E 54 " + + "32 30 2E 30 39 34 02 09 00 00 31 2E 54 32 30 2E " + + "30 38 34 02 09 00 00 31 2E 54 32 30 2E 30 38 34 " + + "02 09 00 00 31 2E 54 32 30 2E 30 38 34 02 09 00 " + + "00 31 2E 54 32 30 2E 30 38 33 02 09 00 00 31 2E " + + "54 32 30 2E 30 38 33 02 09 00 00 31 2E 54 32 30 " + + "2E 30 38 33 02 09 00 00 31 2E 54 32 30 2E 30 38 " + + "32 02 09 00 00 31 2E 54 32 30 2E 30 38 32 02 09 " + + "00 00 31 2E 54 32 30 2E 30 38 32 02 09 00 00 31 " + + "2E 54 32 30 2E 30 37 32 02 09 00 00 31 2E 54 32 " + + "30 2E 30 37 32 02 09 00 00 31 2E 54 32 30 2E 30 " + + "37 32 02 09 00 00 31 2E 54 32 30 2E 30 37 31 02 " + + "09 00 00 31 2E 54 32 30 2E 30 37 31 02 09 00 00 " + + "31 2E 54 32 30 2E 30 37 31 02 09 00 00 31 2E 54 " + + "32 30 2E 30 37 30 02 09 00 00 31 2E 54 32 30 2E " + + "30 37 30 02 09 00 00 31 2E 54 32 30 2E 30 37 30 " + + "02 09 00 00 31 2E 54 32 30 2E 30 36 30 02 09 00 " + + "00 31 2E 54 32 30 2E 30 36 30 02 09 00 00 31 2E " + + "54 32 30 2E 30 36 30 02 09 00 00 31 2E 54 32 30 " + + "2E 30 35 39 02 09 00 00 31 2E 54 32 30 2E 30 35 " + + "39 02 09 00 00 31 2E 54 32 30 2E 30 35 39 02 09 " + + "00 00 31 2E 54 32 30 2E 30 35 38 02 09 00 00 31 " + + "2E 54 32 30 2E 30 35 38 02 09 00 00 31 2E 54 32 " + + "30 2E 30 35 38 02 09 00 00 31 2E 54 32 30 2E 30 " + + "34 38 02 09 00 00 31 2E 54 32 30 2E 30 34 38 02 " + + "09 00 00 31 2E 54 32 30 2E 30 34 38 02 09 00 00 " + + "31 2E 54 32 30 2E 30 34 37 02 09 00 00 31 2E 54 " + + "32 30 2E 30 34 37 02 09 00 00 31 2E 54 32 30 2E " + + "30 34 37 02 09 00 00 31 2E 54 32 30 2E 30 34 36 " + + "02 09 00 00 31 2E 54 32 30 2E 30 34 36 02 09 00 " + + "00 31 2E 54 32 30 2E 30 34 36 02 09 00 00 31 2E " + + "54 32 30 2E 30 33 36 02 09 00 00 31 2E 54 32 30 " + + "2E 30 33 36 02 09 00 00 31 2E 54 32 30 2E 30 33 " + + "36 02 09 00 00 31 2E 54 32 30 2E 30 33 35 02 09 " + + "00 00 31 2E 54 32 30 2E 30 33 35 02 09 00 00 31 " + + "2E 54 32 30 2E 30 33 35 02 09 00 00 31 2E 54 32 " + + "30 2E 30 33 34 02 09 00 00 31 2E 54 32 30 2E 30 " + + "33 34 02 09 00 00 31 2E 54 32 30 2E 30 33 34 02 " + + "09 00 00 31 2E 54 32 30 2E 30 32 34 02 09 00 00 " + + "31 2E 54 32 30 2E 30 32 34 02 09 00 00 31 2E 54 " + + "32 30 2E 30 32 34 02 09 00 00 31 2E 54 32 30 2E " + + "30 32 33 02 09 00 00 31 2E 54 32 30 2E 30 32 33 " + + "02 09 00 00 31 2E 54 32 30 2E 30 32 33 02 09 00 " + + "00 31 2E 54 32 30 2E 30 32 32 02 09 00 00 31 2E " + + "54 32 30 2E 30 32 32 02 09 00 00 31 2E 54 32 30 " + + "2E 30 32 32 02 09 00 00 31 2E 54 32 30 2E 30 31 " + + "32 02 09 00 00 31 2E 54 32 30 2E 30 31 32 02 09 " + + "00 00 31 2E 54 32 30 2E 30 31 32 02 09 00 00 31 " + + "2E 54 32 30 2E 30 31 31 02 09 00 00 31 2E 54 32 " + + "30 2E 30 31 31 02 09 00 00 31 2E 54 32 30 2E 30 " + + "31 31 02 09 00 00 31 2E 54 32 30 2E 30 31 30 02 " + + "09 00 00 31 2E 54 32 30 2E 30 31 30 02 09 00 00 " + + "31 2E 54 32 30 2E 30 31 30 "; + + byte[] data1 = HexRead.readFromString(record_0x0018 + record_0x03C); + RecordInputStream in1 = TestcaseRecordInputStream.create(data1); + NameRecord nr1 = new NameRecord(in1); + System.out.println(nr1); + assert_bug50244(nr1); + + + byte[] data2 = nr1.serialize(); + + assertEquals(data1.length, data2.length); + RecordInputStream in2 = TestcaseRecordInputStream.create(data2); + NameRecord nr2 = new NameRecord(in2); + assert_bug50244(nr2); + } + + private void assert_bug50244(NameRecord nr){ + assertEquals("wDataGruppeSerie.", nr.getNameText()); + Ptg[] ptg = nr.getNameDefinition(); + assertEquals(1, ptg.length); + ArrayPtg arr = (ArrayPtg)ptg[0]; + assertEquals(696, arr.getRowCount()); + assertEquals(1, arr.getColumnCount()); + Object[][] vals = arr.getTokenArrayValues(); + assertEquals("1.T20.001", vals[0][0]); + assertEquals("1.T20.010", vals[vals.length - 1][0]); + } }