Beispiel #1
0
        public void SetUp()
        {

            dgg = new EscherDggRecord();
            dgg.FileIdClusters = (new EscherDggRecord.FileIdCluster[0]);
            drawingManager2 = new DrawingManager2(dgg);
        }
Beispiel #2
0
        public void TestCreateAggregate()
        {
            String msoDrawingRecord1 =
                    "0F 00 02 F0 20 01 00 00 10 00 08 F0 08 00 00 00 " +
                    "03 00 00 00 02 04 00 00 0F 00 03 F0 08 01 00 00 " +
                    "0F 00 04 F0 28 00 00 00 01 00 09 F0 10 00 00 00 " +
                    "00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 " +
                    "02 00 0A F0 08 00 00 00 00 04 00 00 05 00 00 00 " +
                    "0F 00 04 F0 64 00 00 00 42 01 0A F0 08 00 00 00 " +
                    "01 04 00 00 00 0A 00 00 73 00 0B F0 2A 00 00 00 " +
                    "BF 00 08 00 08 00 44 01 04 00 00 00 7F 01 00 00 " +
                    "01 00 BF 01 00 00 11 00 C0 01 40 00 00 08 FF 01 " +
                    "10 00 10 00 BF 03 00 00 08 00 00 00 10 F0 12 00 " +
                    "00 00 00 00 01 00 54 00 05 00 45 00 01 00 88 03 " +
                    "05 00 94 00 00 00 11 F0 00 00 00 00";

            String msoDrawingRecord2 =
                    "0F 00 04 F0 64 00 00 00 42 01 0A F0 08 00 00 00 " +
                    "02 04 00 00 80 0A 00 00 73 00 0B F0 2A 00 00 00 " +
                    "BF 00 08 00 08 00 44 01 04 00 00 00 7F 01 00 00 " +
                    "01 00 BF 01 00 00 11 00 C0 01 40 00 00 08 FF 01 " +
                    "10 00 10 00 BF 03 00 00 08 00 00 00 10 F0 12 00 " +
                    "00 00 00 00 01 00 8D 03 05 00 E4 00 03 00 4D 03 " +
                    "0B 00 0C 00 00 00 11 F0 00 00 00 00";

            DrawingRecord d1 = new DrawingRecord();
            d1.Data = (HexRead.ReadFromString(msoDrawingRecord1));

            ObjRecord r1 = new ObjRecord();

            DrawingRecord d2 = new DrawingRecord();
            d2.Data = (HexRead.ReadFromString(msoDrawingRecord2));

            ObjRecord r2 = new ObjRecord();

            ArrayList records = new ArrayList();
            records.Add(d1);
            records.Add(r1);
            records.Add(d2);
            records.Add(r2);

            DrawingManager2 drawingManager = new DrawingManager2(new EscherDggRecord());
            EscherAggregate aggregate = EscherAggregate.CreateAggregate(records, 0, drawingManager);

            Assert.AreEqual(1, aggregate.EscherRecords.Count);
            Assert.AreEqual(unchecked((short)0xF002), aggregate.GetEscherRecord(0).RecordId);
            Assert.AreEqual(2, aggregate.GetEscherRecord(0).ChildRecords.Count);

            //        System.out.println( "aggregate = " + aggregate );
        }
Beispiel #3
0
        private void ConfirmAggregatedRecords(List<RecordBase> recordStream)
        {
            InternalSheet sheet = InternalSheet.CreateSheet();
            sheet.Records.Clear();
            ((List<RecordBase>)sheet.Records).AddRange(recordStream);

            IList sheetRecords = sheet.Records;

            DrawingManager2 drawingManager = new DrawingManager2(new EscherDggRecord());
            sheet.AggregateDrawingRecords(drawingManager, false);

            Assert.AreEqual(4, sheetRecords.Count);
            Assert.AreEqual(BOFRecord.sid, ((Record)sheetRecords[0]).Sid);
            Assert.AreEqual(EscherAggregate.sid, ((Record)sheetRecords[1]).Sid);
            Assert.AreEqual(WindowTwoRecord.sid, ((Record)sheetRecords[2]).Sid);
            Assert.AreEqual(EOFRecord.sid, ((Record)sheetRecords[3]).Sid);
        }
        /**
         * Creates a primary drawing Group record.  If it already 
         *  exists then it's modified.
         */
        public void CreateDrawingGroup()
        {
            if (drawingManager == null)
            {
                EscherContainerRecord dggContainer = new EscherContainerRecord();
                EscherDggRecord dgg = new EscherDggRecord();
                EscherOptRecord opt = new EscherOptRecord();
                EscherSplitMenuColorsRecord splitMenuColors = new EscherSplitMenuColorsRecord();

                dggContainer.RecordId=unchecked((short)0xF000);
                dggContainer.Options=(short)0x000F;
                dgg.RecordId=EscherDggRecord.RECORD_ID;
                dgg.Options=(short)0x0000;
                dgg.ShapeIdMax=1024;
                dgg.NumShapesSaved=0;
                dgg.DrawingsSaved=0;
                dgg.FileIdClusters=new EscherDggRecord.FileIdCluster[] { };
                drawingManager = new DrawingManager2(dgg);
                EscherContainerRecord bstoreContainer = null;
                if (escherBSERecords.Count > 0)
                {
                    bstoreContainer = new EscherContainerRecord();
                    bstoreContainer.RecordId=EscherContainerRecord.BSTORE_CONTAINER;
                    bstoreContainer.Options=(short)((escherBSERecords.Count << 4) | 0xF);
                    for (IEnumerator iterator = escherBSERecords.GetEnumerator(); iterator.MoveNext(); )
                    {
                        EscherRecord escherRecord = (EscherRecord)iterator.Current;
                        bstoreContainer.AddChildRecord(escherRecord);
                    }
                }
                opt.RecordId=unchecked((short)0xF00B);
                opt.Options=(short)0x0033;
                opt.AddEscherProperty(new EscherBoolProperty(EscherProperties.TEXT__SIZE_TEXT_TO_FIT_SHAPE, 524296));
                opt.AddEscherProperty(new EscherRGBProperty(EscherProperties.FILL__FILLCOLOR, 0x08000041));
                opt.AddEscherProperty(new EscherRGBProperty(EscherProperties.LINESTYLE__COLOR, 134217792));
                splitMenuColors.RecordId=unchecked((short)0xF11E);
                splitMenuColors.Options=(short)0x0040;
                splitMenuColors.Color1=0x0800000D;
                splitMenuColors.Color2=0x0800000C;
                splitMenuColors.Color3=0x08000017;
                splitMenuColors.Color4=0x100000F7;

                dggContainer.AddChildRecord(dgg);
                if (bstoreContainer != null)
                    dggContainer.AddChildRecord(bstoreContainer);
                dggContainer.AddChildRecord(opt);
                dggContainer.AddChildRecord(splitMenuColors);

                int dgLoc = FindFirstRecordLocBySid(DrawingGroupRecord.sid);
                if (dgLoc == -1)
                {
                    DrawingGroupRecord drawingGroup = new DrawingGroupRecord();
                    drawingGroup.AddEscherRecord(dggContainer);
                    int loc = FindFirstRecordLocBySid(CountryRecord.sid);

                    Records.Insert(loc + 1, drawingGroup);
                }
                else
                {
                    DrawingGroupRecord drawingGroup = new DrawingGroupRecord();
                    drawingGroup.AddEscherRecord(dggContainer);
                    Records[dgLoc]= drawingGroup;
                }

            }
        }
        /**
         * Finds the primary drawing Group, if one already exists
         */
        public DrawingManager2 FindDrawingGroup()
        {
            if (drawingManager != null)
            {
                // We already have it!
                return drawingManager;
            }

            // Need to Find a DrawingGroupRecord that
            //  Contains a EscherDggRecord
            for (IEnumerator rit = records.GetEnumerator(); rit.MoveNext(); )
            {
                Record r = (Record)rit.Current;

                if (r is DrawingGroupRecord)
                {
                    DrawingGroupRecord dg = (DrawingGroupRecord)r;
                    dg.ProcessChildRecords();

                    EscherContainerRecord cr =
                        dg.GetEscherContainer();
                    if (cr == null)
                    {
                        continue;
                    }

                    EscherDggRecord dgg = null;
                    EscherContainerRecord bStore = null;
                    for (IEnumerator it = cr.ChildRecords.GetEnumerator(); it.MoveNext(); )
                    {
                        EscherRecord er = (EscherRecord)it.Current;
                        if (er is EscherDggRecord)
                        {
                            dgg = (EscherDggRecord)er;
                        }
                        else if (er.RecordId == EscherContainerRecord.BSTORE_CONTAINER)
                        {
                            bStore = (EscherContainerRecord)er;
                        }
                    }

                    if (dgg != null)
                    {
                        drawingManager = new DrawingManager2(dgg);
                        if (bStore != null)
                        {
                            foreach (EscherRecord bs in bStore.ChildRecords)
                            {
                                if (bs is EscherBSERecord)
                                    escherBSERecords.Add((EscherBSERecord)bs);
                            }
                        }
                        return drawingManager;
                    }
                }
            }

            // Look for the DrawingGroup record
            int dgLoc = FindFirstRecordLocBySid(DrawingGroupRecord.sid);

            // If there is one, does it have a EscherDggRecord?
            if (dgLoc != -1)
            {
                DrawingGroupRecord dg =
                    (DrawingGroupRecord)records[dgLoc];
                EscherDggRecord dgg = null;
                EscherContainerRecord bStore = null;

                for (IEnumerator it = dg.EscherRecords.GetEnumerator(); it.MoveNext(); )
                {
                    EscherRecord er = (EscherRecord)it.Current;
                    if (er is EscherDggRecord)
                    {
                        dgg = (EscherDggRecord)er;
                    }
                    else if (er.RecordId == EscherContainerRecord.BSTORE_CONTAINER)
                    {
                        bStore = (EscherContainerRecord)er;
                    }
                }

                if (dgg != null)
                {
                    drawingManager = new DrawingManager2(dgg);
                    if (bStore != null)
                    {
                        foreach (EscherRecord bs in bStore.ChildRecords)
                        {
                            if (bs is EscherBSERecord)
                                escherBSERecords.Add((EscherBSERecord)bs);
                        }
                    }
                }
            }
            return drawingManager;
        }
Beispiel #6
0
 public EscherAggregate(DrawingManager2 drawingManager)
 {
     this.drawingManager = drawingManager;
 }
Beispiel #7
0
        /// <summary>
        /// Finds the DrawingRecord for our sheet, and  attaches it to the DrawingManager (which knows about
        ///  the overall DrawingGroup for our workbook).
        /// If requested, will Create a new DrawRecord if none currently exist
        /// </summary>
        /// <param name="drawingManager">The DrawingManager2 for our workbook</param>
        /// <param name="CreateIfMissing">Should one be Created if missing?</param>
        /// <returns>location of EscherAggregate record. if no EscherAggregate record is found return -1</returns>
        public int AggregateDrawingRecords(DrawingManager2 drawingManager, bool CreateIfMissing)
        {
            int loc = FindFirstRecordLocBySid(DrawingRecord.sid);
            bool noDrawingRecordsFound = (loc == -1);
            if (noDrawingRecordsFound)
            {
                if (!CreateIfMissing)
                {
                    // None found, and not allowed to Add in
                    return -1;
                }

                EscherAggregate aggregate = new EscherAggregate(true);
                loc = FindFirstRecordLocBySid(EscherAggregate.sid);
                if (loc == -1)
                {
                    loc = FindFirstRecordLocBySid(WindowTwoRecord.sid);
                }
                else
                {
                    Records.RemoveAt(loc);
                }
                Records.Insert(loc, aggregate);
                return loc;
            }
            EscherAggregate.CreateAggregate(records, loc);
            return loc;
        }
Beispiel #8
0
        public void TestUnhandledContinue()
        {
            String data =
                    "     EC 00 1C 08 0F 00 02 F0 66 27 00                " +
                            "     00 10 00 08 F0 08 00 00 00 06 00 00 00 13 04 00 " +
                            "     00 0F 00 03 F0 4E 27 00 00 0F 00 04 F0 28 00 00 " +
                            "     00 01 00 09 F0 10 00 00 00 00 00 00 00 00 00 00 " +
                            "     00 00 00 00 00 00 00 00 00 02 00 0A F0 08 00 00 " +
                            "     00 00 04 00 00 05 00 00 00 0F 00 04 F0 CC 07 00 " +
                            "     00 A2 0C 0A F0 08 00 00 00 0F 04 00 00 00 0A 00 " +
                            "     00 93 00 0B F0 4A 00 00 00 7F 00 00 00 04 00 80 " +
                            "     00 C0 D5 9A 02 85 00 02 00 00 00 8B 00 02 00 00 " +
                            "     00 BF 00 1A 00 1F 00 BF 01 01 00 11 00 FF 01 00 " +
                            "     00 08 00 80 C3 14 00 00 00 BF 03 00 00 02 00 54 " +
                            "     00 65 00 78 00 74 00 42 00 6F 00 78 00 20 00 31 " +
                            "     00 00 00 13 00 22 F1 38 07 00 00 A9 C3 32 07 00 " +
                            "     00 50 4B 03 04 14 00 06 00 08 00 00 00 21 00 F0 " +
                            "     F7 8A BB FD 00 00 00 E2 01 00 00 13 00 00 00 5B " +
                            "     43 6F 6E 74 65 6E 74 5F 54 79 70 65 73 5D 2E 78 " +
                            "     6D 6C 94 91 CD 4A C4 30 10 C7 EF 82 EF 10 E6 2A " +
                            "     6D AA 07 11 69 BA 07 AB 47 15 5D 1F 60 48 A6 6D " +
                            "     D8 36 09 99 58 77 DF DE 74 3F 2E E2 0A 1E 67 E6 " +
                            "     FF F1 23 A9 57 DB 69 14 33 45 B6 DE 29 B8 2E 2B " +
                            "     10 E4 B4 37 D6 F5 0A 3E D6 4F C5 1D 08 4E E8 0C " +
                            "     8E DE 91 82 1D 31 AC 9A CB 8B 7A BD 0B C4 22 BB " +
                            "     1D 2B 18 52 0A F7 52 B2 1E 68 42 2E 7D 20 97 2F " +
                            "     9D 8F 13 A6 3C C6 5E 06 D4 1B EC 49 DE 54 D5 AD " +
                            "     D4 DE 25 72 A9 48 4B 06 34 75 4B 1D 7E 8E 49 3C " +
                            "     6E F3 FA 40 12 69 64 10 0F 07 E1 D2 A5 00 43 18 " +
                            "     AD C6 94 49 E5 EC CC 8F 96 E2 D8 50 66 E7 5E C3 " +
                            "     83 0D 7C 95 31 40 FE DA B0 5C CE 17 1C 7D 2F F9 " +
                            "     69 A2 35 24 5E 31 A6 67 9C 32 86 34 91 25 0F 18 " +
                            "     28 6B CA BF 53 16 CC 89 0B DF 75 56 53 D9 46 7E " +
                            "     5F 7C 27 A8 73 E1 C6 7F B9 48 F3 7F B3 DB 6C 7B " +
                            "     A3 F9 94 2E F7 3F D4 7C 03 00 00 FF FF 03 00 50 " +
                            "     4B 03 04 14 00 06 00 08 00 00 00 21 00 31 DD 5F " +
                            "     61 D2 00 00 00 8F 01 00 00 0B 00 00 00 5F 72 65 " +
                            "     6C 73 2F 2E 72 65 6C 73 A4 90 C1 6A C3 30 0C 86 " +
                            "     EF 83 BD 83 D1 BD 71 DA 43 19 A3 4E 6F 85 5E 4B " +
                            "     07 BB 0A 5B 49 4C 63 CB 58 26 6D DF BE A6 30 58 " +
                            "     46 6F 3B EA 17 FA 3E F1 EF F6 B7 30 A9 99 B2 78 " +
                            "     8E 06 D6 4D 0B 8A A2 65 E7 E3 60 E0 EB 7C 58 7D " +
                            "     80 92 82 D1 E1 C4 91 0C DC 49 60 DF BD BF ED 4E " +
                            "     34 61 A9 47 32 FA 24 AA 52 A2 18 18 4B 49 9F 5A " +
                            "     8B 1D 29 A0 34 9C 28 D6 4D CF 39 60 A9 63 1E 74 " +
                            "     42 7B C1 81 F4 A6 6D B7 3A FF 66 40 B7 60 AA A3 " +
                            "     33 90 8F 6E 03 EA 7C 4F D5 FC 87 1D BC CD 2C DC " +
                            "     97 C6 72 D0 DC F7 DE BE A2 6A C7 D7 78 A2 B9 52 " +
                            "     30 0F 54 0C B8 2C CF 30 D3 DC D4 E7 40 BF F6 AE " +
                            "     FF E9 95 11 13 7D 57 FE 42 FC 4C AB F5 C7 AC 17 " +
                            "     35 76 0F 00 00 00 FF FF 03 00 50 4B 03 04 14 00 " +
                            "     06 00 08 00 00 00 21 00 AE B1 05 56 77 02 00 00 " +
                            "     1B 07 00 00 10 00 00 00 64 72 73 2F 73 68 61 70 " +
                            "     65 78 6D 6C 2E 78 6D 6C BC 55 4B 6F DB 30 0C BE " +
                            "     0F D8 7F 10 74 4F FD 58 9D 87 11 BB E8 52 74 97 " +
                            "     61 0D 92 E6 07 A8 B2 9C 18 93 25 43 52 13 A7 BF " +
                            "     7E A4 E4 A4 5D 0F 3B 34 43 2F 0A 43 4A FC C8 8F " +
                            "     0F CF 6F FA 56 92 BD 30 B6 D1 AA A0 C9 55 4C 89 " +
                            "     50 5C 57 8D DA 16 74 F3 78 3F 9A 52 62 1D 53 15 " +
                            "     93 5A 89 82 1E 85 A5 37 E5 D7 2F F3 BE 32 39 53 " +
                            "     7C A7 0D 01 17 CA E6 A0 28 E8 CE B9 2E 8F 22 CB " +
                            "     77 A2 65 F6 4A 77 42 81 B5 D6 A6 65 0E FE 9A 6D " +
                            "     54 19 76 00 E7 AD 8C D2 38 1E 47 B6 33 82 55 76 " +
                            "     27 84 BB 0B 16 5A 7A DF 80 B6 10 52 DE 7A 88 A0 " +
                            "     AA 8D 6E 83 C4 B5 2C 93 79 84 31 A0 E8 1F 80 F0 " +
                            "     50 D7 65 1A CF B2 2C 3E DB 50 E5 CD 46 1F CA 6F " +
                            "     41 8D E2 49 87 F6 64 1A CF 26 D9 D9 E6 9F 78 DF " +
                            "     AF 80 A2 77 84 F7 05 CD D2 2C 8D 81 12 7E 2C 68 " +
                            "     3A BE CE C6 31 8D 82 2F DB 91 96 71 A3 0B 4A 89 " +
                            "     83 EB B2 51 BF 41 0E 46 B5 5F 77 4B 13 64 FE 6B " +
                            "     BF 34 A4 A9 C0 01 25 8A B5 40 EA 23 DC FF AE 7B " +
                            "     92 9C 9C C1 1D 7C 40 5C 0F 6A 28 0B EA 7D 44 6F " +
                            "     1D 59 EF 92 E5 7D 6D DA A1 06 EC 03 15 68 59 A3 " +
                            "     20 4C 96 EB BA 26 00 36 4D 66 49 06 6D 00 19 4E " +
                            "     B2 F4 7A 92 21 38 CB FF CD 40 14 C2 C0 8B 9D B1 " +
                            "     EE 87 D0 17 87 44 D0 51 41 8D E0 CE 87 C7 F6 3F " +
                            "     AD 43 1E 5E 21 10 4E E9 FB 46 CA 4B F3 3F F1 1B " +
                            "     38 C5 BE B2 EE 28 05 02 48 B5 12 40 8C EF F1 0F " +
                            "     F3 0B F5 06 6A 63 9F 88 E5 66 FB B4 90 86 C0 BC " +
                            "     00 CF 30 67 70 3E E1 19 B2 F3 80 88 5C 43 62 9F " +
                            "     8C 3D 40 22 BA A8 6B A0 FE 93 F1 CF A0 3E 7F AD " +
                            "     FE 1F 7E DB 28 6D 06 FE 61 39 09 2C C0 9E C9 82 " +
                            "     BA 3E 8C 17 F0 1D F0 86 51 1B 1A 00 7B 01 C7 B0 " +
                            "     3A 62 48 4F F0 0B 73 79 69 37 C0 C2 75 0F 70 D4 " +
                            "     52 1F 0A CA 65 D3 51 02 9B F4 E5 BD EE 60 58 57 " +
                            "     50 05 BB 90 12 E3 E4 42 43 BC D0 2C 61 EF 42 E8 " +
                            "     21 9F EE F6 D9 C1 14 0C C3 11 42 C4 60 A5 75 6B " +
                            "     EC E2 4B C3 F5 F3 DF 5D EA 05 23 32 FE 00 02 25 " +
                            "     C3 EF 8B 50 A3 CD 1A BE 2F 2F B0 E2 92 D8 F7 3F " +
                            "     CB 5D 89 EB 73 04 EB 1D 65 3C FD 2B A1 AA 25 33 " +
                            "     6C 75 7E 6C 9E 47 AB CD DF 8F 71 35 0C D5 3B 95 " +
                            "     CC 6F 4D 0B 5A FF AD 90 8D 50 EE 8E 39 76 9A F7 " +
                            "     77 5F 19 7F 3B B0 5B FE 01 00 00 FF FF 03 00 50 " +
                            "     4B 03 04 14 00 06 00 08 00 00 00 21 00 44 8B 69 " +
                            "     1E 2C 01 00 00 AB 01 00 00 0F 00 00 00 64 72 73 " +
                            "     2F 64 6F 77 6E 72 65 76 2E 78 6D 6C 5C 50 D1 4E " +
                            "     C2 30 14 7D 37 F1 1F 9A 6B E2 9B 74 0C 36 07 52 " +
                            "     C8 62 42 C4 04 D1 21 89 AF 65 6D D9 E2 DA CE B6 " +
                            "     C0 F0 EB ED 46 0C C6 C7 73 EE 39 E7 DE 73 27 B3 " +
                            "     46 56 E8 C0 8D 2D B5 22 D0 EF 05 80 B8 CA 35 2B " +
                            "     D5 8E C0 E6 7D 7E 97 00 B2 8E 2A 46 2B AD 38 81 " +
                            "     13 B7 30 9B 5E 5F 4D E8 98 E9 A3 CA F8 61 ED 76 " +
                            "     C8 87 28 3B A6 04 0A E7 EA 31 C6 36 2F B8 A4 B6 " +
                            "     A7 6B AE FC 4C 68 23 A9 F3 D0 EC 30 33 F4 E8 C3 " +
                            "     65 85 C3 20 88 B1 A4 A5 F2 1B 0A 5A F3 C7 82 E7 " +
                            "     9F EB BD 24 B0 64 E2 E5 63 58 CE 9F A9 F8 4A 17 " +
                            "     C3 2C 89 0E AF 2C 22 E4 F6 A6 49 1F 00 39 DE B8 " +
                            "     8B B8 DE AB 55 B8 5C 6E DF 36 E9 AF A0 8B 5B 30 " +
                            "     02 21 20 F1 74 DA 9A 92 65 D4 3A 6E 08 F8 7E BE " +
                            "     AD 6F 0A 53 5F A1 A9 52 95 17 DA 20 91 71 5B 7E " +
                            "     FB 7E 67 5E 18 2D 91 D1 47 02 03 40 B9 AE 5A BE " +
                            "     C5 2B 21 2C 77 1E 25 C1 E8 3E EA 46 BF 54 18 8C " +
                            "     A2 28 00 DC C6 3A 7D 36 9F 15 DD 19 7F CC 71 1C " +
                            "     FF F3 F6 C3 41 12 46 AD 17 5F 6E EA C0 E5 C7 D3 " +
                            "     1F 00 00 00 FF FF 03 00 50 4B 01 02 2D 00 14 00 " +
                            "     06 00 08 00 00 00 21 00 F0 F7 8A BB FD 00 00 00 " +
                            "     E2 01 00 00 13 00 00 00 00 00 00 00 00 00 00 00 " +
                            "     00 00 00 00 00 00 5B 43 6F 6E 74 65 6E 74 5F 54 " +
                            "     79 70 65 73 5D 2E 78 6D 6C 50 4B 01 02 2D 00 14 " +
                            "     00 06 00 08 00 00 00 21 00 31 DD 5F 61 D2 00 00 " +
                            "     00 8F 01 00 00 0B 00 00 00 00 00 00 00 00 00 00 " +
                            "     00 00 00 2E 01 00 00 5F 72 65 6C 73 2F 2E 72 65 " +
                            "     6C 73 50 4B 01 02 2D 00 14 00 06 00 08 00 00 00 " +
                            "     21 00 AE B1 05 56 77 02 00 00 1B 07 00 00 10 00 " +
                            "     00 00 00 00 00 00 00 00 00 00 00 00 29 02 00 00 " +
                            "     64 72 73 2F 73 68 61 70 65 78 6D 6C 2E 78 6D 6C " +
                            "     50 4B 01 02 2D 00 14 00 06 00 08 00 00 00 21 00 " +
                            "     44 8B 69 1E 2C 01 00 00 AB 01 00 00 0F 00 00 00 " +
                            "     00 00 00 00 00 00 00 00 00 00 CE 04 00 00 64 72 " +
                            "     73 2F 64 6F 77 6E 72 65 76 2E 78 6D 6C 50 4B 05 " +
                            "     06 00 00 00 00 04 00 04 00 F5 00 00 00 27 06 00 " +
                            "     00 00 00 00 00 10 F0 12 00 00 00 02 00 01 00 60 " +
                            "     01 03 00 F3 00 02 00 D0 00 05 00 5A 00 00 00 11 " +
                            "     F0 00 00 00 00 5D 00 1A 00 15 00 12 00 06 00 0F " +
                            "     00 11 60 00 00 00 00 00 00 00 00 00 00 00 00 00 " +
                            "     00 00 00 EC 00 08 00 00 00 0D F0 00 00 00 00 B6 " +
                            "     01 12 00 12 02 00 00 00 00 00 00 00 00 06 00 10 " +
                            "     00 00 00 00 00 3C 00 07 00 00 74 65 78 74 2D 31 " +
                            "     3C 00 10 00 00 00 16 00 00 00 00 00 06 00 00 00 " +
                            "     00 00 00 00 EC 00 CB 07 0F 00 04 F0 CB 07 00 00 " +
                            "     A2 0C 0A F0 08 00 00 00 10 04 00 00 00 0A 00 00 " +
                            "     93 00 0B F0 4A 00 00 00 7F 00 00 00 04 00 80 00 " +
                            "     00 65 53 02 85 00 02 00 00 00 8B 00 02 00 00 00 " +
                            "     BF 00 1A 00 1F 00 BF 01 01 00 11 00 FF 01 00 00 " +
                            "     08 00 80 C3 14 00 00 00 BF 03 00 00 02 00 54 00 " +
                            "     65 00 78 00 74 00 42 00 6F 00 78 00 20 00 32 00 " +
                            "     00 00 13 00 22 F1 37 07 00 00 A9 C3 31 07 00 00 " +
                            "     50 4B 03 04 14 00 06 00 08 00 00 00 21 00 F0 F7 " +
                            "     8A BB FD 00 00 00 E2 01 00 00 13 00 00 00 5B 43 " +
                            "     6F 6E 74 65 6E 74 5F 54 79 70 65 73 5D 2E 78 6D " +
                            "     6C 94 91 CD 4A C4 30 10 C7 EF 82 EF 10 E6 2A 6D " +
                            "     AA 07 11 69 BA 07 AB 47 15 5D 1F 60 48 A6 6D D8 " +
                            "     36 09 99 58 77 DF DE 74 3F 2E E2 0A 1E 67 E6 FF " +
                            "     F1 23 A9 57 DB 69 14 33 45 B6 DE 29 B8 2E 2B 10 " +
                            "     E4 B4 37 D6 F5 0A 3E D6 4F C5 1D 08 4E E8 0C 8E " +
                            "     DE 91 82 1D 31 AC 9A CB 8B 7A BD 0B C4 22 BB 1D " +
                            "     2B 18 52 0A F7 52 B2 1E 68 42 2E 7D 20 97 2F 9D " +
                            "     8F 13 A6 3C C6 5E 06 D4 1B EC 49 DE 54 D5 AD D4 " +
                            "     DE 25 72 A9 48 4B 06 34 75 4B 1D 7E 8E 49 3C 6E " +
                            "     F3 FA 40 12 69 64 10 0F 07 E1 D2 A5 00 43 18 AD " +
                            "     C6 94 49 E5 EC CC 8F 96 E2 D8 50 66 E7 5E C3 83 " +
                            "     0D 7C 95 31 40 FE DA B0 5C CE 17 1C 7D 2F F9 69 " +
                            "     A2 35 24 5E 31 A6 67 9C 32 86 34 91 25 0F 18 28 " +
                            "     6B CA BF 53 16 CC 89 0B DF 75 56 53 D9 46 7E 5F " +
                            "     7C 27 A8 73 E1 C6 7F B9 48 F3 7F B3 DB 6C 7B A3 " +
                            "     F9 94 2E F7 3F D4 7C 03 00 00 FF FF 03 00 50 4B " +
                            "     03 04 14 00 06 00 08 00 00 00 21 00 31 DD 5F 61 " +
                            "     D2 00 00 00 8F 01 00 00 0B 00 00 00 5F 72 65 6C " +
                            "     73 2F 2E 72 65 6C 73 A4 90 C1 6A C3 30 0C 86 EF " +
                            "     83 BD 83 D1 BD 71 DA 43 19 A3 4E 6F 85 5E 4B 07 " +
                            "     BB 0A 5B 49 4C 63 CB 58 26 6D DF BE A6 30 58 46 " +
                            "     6F 3B EA 17 FA 3E F1 EF F6 B7 30 A9 99 B2 78 8E " +
                            "     06 D6 4D 0B 8A A2 65 E7 E3 60 E0 EB 7C 58 7D 80 " +
                            "     92 82 D1 E1 C4 91 0C DC 49 60 DF BD BF ED 4E 34 " +
                            "     61 A9 47 32 FA 24 AA 52 A2 18 18 4B 49 9F 5A 8B " +
                            "     1D 29 A0 34 9C 28 D6 4D CF 39 60 A9 63 1E 74 42 " +
                            "     7B C1 81 F4 A6 6D B7 3A FF 66 40 B7 60 AA A3 33 " +
                            "     90 8F 6E 03 EA 7C 4F D5 FC 87 1D BC CD 2C DC 97 " +
                            "     C6 72 D0 DC F7 DE BE A2 6A C7 D7 78 A2 B9 52 30 " +
                            "     0F 54 0C B8 2C CF 30 D3 DC D4 E7 40 BF F6 AE FF " +
                            "     E9 95 11 13 7D 57 FE 42 FC 4C AB F5 C7 AC 17 35 " +
                            "     76 0F 00 00 00 FF FF 03 00 50 4B 03 04 14 00 06 " +
                            "     00 08 00 00 00 21 00 99 C9 E2 87 75 02 00 00 1B " +
                            "     07 00 00 10 00 00 00 64 72 73 2F 73 68 61 70 65 " +
                            "     78 6D 6C 2E 78 6D 6C BC 55 CD 6E E2 30 10 BE AF " +
                            "     D4 77 B0 7C A7 F9 E9 82 20 C2 A9 5A AA EE 65 B5 " +
                            "     45 50 1E C0 24 0E 44 EB D8 91 ED 42 E8 D3 EF 8C " +
                            "     9D D0 6E 0F 7B 28 AB 5E 1C 67 C6 33 DF F8 9B 1F " +
                            "     CF 6F BB 46 92 83 30 B6 D6 8A D1 E4 3A A6 44 A8 " +
                            "     42 97 B5 DA 31 BA 79 7E 1C 4D 29 B1 8E AB 92 4B " +
                            "     AD 04 A3 27 61 E9 6D 7E F5 6D DE 95 26 E3 AA D8 " +
                            "     6B 43 C0 85 B2 19 08 18 DD 3B D7 66 51 64 8B BD " +
                            "     68 B8 BD D6 AD 50 A0 AD B4 69 B8 83 5F B3 8B 4A " +
                            "     C3 8F E0 BC 91 51 1A C7 93 C8 B6 46 F0 D2 EE 85 " +
                            "     70 0F 41 43 73 EF 1B D0 16 42 CA 3B 0F 11 44 95 " +
                            "     D1 4D D8 15 5A E6 C9 3C C2 18 70 EB 0D 60 F3 54 " +
                            "     55 79 1A CF C6 E3 F8 AC 43 91 57 1B 7D CC 27 41 " +
                            "     8C DB 41 86 FA D9 38 1D 2C 40 E5 2D BC EB 37 3C " +
                            "     D1 39 52 74 8C C2 C1 34 06 46 8A 13 A3 E9 E4 FB " +
                            "     78 12 D3 28 B8 B2 2D 69 78 61 34 A3 94 38 38 2E " +
                            "     6B F5 1B F6 41 A9 0E EB 76 69 C2 BE F8 75 58 1A " +
                            "     52 97 8C DE 50 A2 78 03 9C 3E C3 F9 7B DD 91 74 " +
                            "     70 06 67 D0 80 B8 0E C4 90 15 94 FB 88 DE 3B B2 " +
                            "     DE 25 CF BA CA 34 7D 0A F8 27 12 D0 F0 5A 41 98 " +
                            "     3C D3 55 45 00 6C 9A CC 92 31 54 01 DC 30 49 6F " +
                            "     A6 C0 0C A2 F3 EC DF 14 44 21 0E 3C D8 1A EB 7E " +
                            "     08 7D 71 4C 04 1D 31 6A 44 E1 7C 7C FC F0 D3 3A " +
                            "     24 E2 0D 02 E1 94 7E AC A5 BC 94 80 81 E0 40 2A " +
                            "     D6 95 75 27 29 10 40 AA 95 00 66 7C 8D 7F 9A 60 " +
                            "     48 38 70 1B FB 8B D8 C2 EC B6 0B 69 08 F4 0B 10 " +
                            "     0D 7D 06 EB 16 D7 70 3B 0F 88 C8 15 5C EC 8B B1 " +
                            "     7B 48 44 17 55 05 D4 7F 31 FE 19 D4 DF 5F AB FF " +
                            "     87 DF D4 4A 9B 9E 7F 18 4E 02 13 70 E0 92 51 D7 " +
                            "     85 FE 02 BE 03 5E DF 6B 7D 01 60 2D 60 1F 96 27 " +
                            "     0C 69 0B 5F 68 CC 4B AB 01 06 AE 7B 82 A5 92 FA " +
                            "     C8 68 21 EB 96 12 98 A4 AF 1F 65 47 C3 5B 46 15 " +
                            "     CC 42 4A 8C 93 0B 0D F1 42 B1 84 B9 0B A1 87 FB " +
                            "     B4 77 2F 0E BA A0 6F 8E 10 22 06 2B AD 5B 63 15 " +
                            "     5F 1A AE EF FF F6 52 2F 18 91 F1 0B 10 28 39 BE " +
                            "     2F 42 8D 36 6B 78 5F 5E 61 D6 24 71 3F 68 5C 8E " +
                            "     F3 73 94 62 A3 3B DF EE DE 4A A8 72 C9 0D 5F 9D " +
                            "     8D CD CB 68 B5 F9 DB 18 47 43 9F BD 21 65 7E 6C " +
                            "     5A 90 FA B7 42 D6 42 B9 07 EE F8 D0 EF 1F 5E 19 " +
                            "     7F 3A B0 9B FF 01 00 00 FF FF 03 00 50 4B 03 04 " +
                            "     14 00 06 00 08 00 00 00 21 00 56 84 64 08 2D 01 " +
                            "     00 00 AB 01 00 00 0F 00 00 00 64 72 73 2F 64 6F " +
                            "     77 6E 72 65 76 2E 78 6D 6C 5C 90 5F 4F C2 30 14 " +
                            "     C5 DF 4D FC 0E CD 35 F1 4D B6 15 C6 3F 29 64 31 " +
                            "     21 62 82 E2 90 C4 D7 B2 B6 6C BA B6 B3 AD 30 F8 " +
                            "     F4 76 20 21 FA 78 CE BD BF D3 7B 3A 9A D4 B2 44 " +
                            "     5B 6E 6C A1 15 81 A8 15 02 E2 2A D3 AC 50 1B 02 " +
                            "     AB B7 E9 5D 1F 90 75 54 31 5A 6A C5 09 EC B9 85 " +
                            "     C9 F8 FA 6A 44 87 4C EF 54 CA B7 4B B7 41 3E 44 " +
                            "     D9 21 25 90 3B 57 0D 83 C0 66 39 97 D4 B6 74 C5 " +
                            "     95 9F 09 6D 24 75 5E 9A 4D C0 0C DD F9 70 59 06 " +
                            "     38 0C BB 81 A4 85 F2 2F E4 B4 E2 0F 39 CF 3E 97 " +
                            "     DF 92 C0 9C 89 E7 F7 4E 31 7D A2 E2 2B 99 75 D2 " +
                            "     7E BC 5D B0 98 90 DB 9B 3A B9 07 E4 78 ED 2E CB " +
                            "     55 FE B1 C0 F3 F9 FA 75 95 9C 17 8E 71 33 46 A0 " +
                            "     0D 48 3C EE D7 A6 60 29 B5 8E 1B 02 BE 9F 6F EB " +
                            "     9B C2 D8 57 A8 CB 44 65 B9 36 48 A4 DC 16 07 DF " +
                            "     EF E4 0B A3 25 32 7A 47 A0 0B 28 D3 65 E3 37 FA " +
                            "     45 08 CB 1D 81 41 8C 63 9F E4 27 67 07 87 83 D8 " +
                            "     5B 41 93 EA F4 89 ED FD B2 F8 0F 1B F5 A2 CE 3F " +
                            "     38 C2 ED 3E 8E 1B 38 B8 DC 74 14 97 3F 1E FF 00 " +
                            "     00 00 FF FF 03 00 50 4B 01 02 2D 00 14 00 06 00 " +
                            "     08 00 00 00 21 00 F0 F7 8A BB FD 00 00 00 E2 01 " +
                            "     00 00 13 00 00 00 00 00 00 00 00 00 00 00 00 00 " +
                            "     00 00 00 00 5B 43 6F 6E 74 65 6E 74 5F 54 79 70 " +
                            "     65 73 5D 2E 78 6D 6C 50 4B 01 02 2D 00 14 00 06 " +
                            "     00 08 00 00 00 21 00 31 DD 5F 61 D2 00 00 00 8F " +
                            "     01 00 00 0B 00 00 00 00 00 00 00 00 00 00 00 00 " +
                            "     00 2E 01 00 00 5F 72 65 6C 73 2F 2E 72 65 6C 73 " +
                            "     50 4B 01 02 2D 00 14 00 06 00 08 00 00 00 21 00 " +
                            "     99 C9 E2 87 75 02 00 00 1B 07 00 00 10 00 00 00 " +
                            "     00 00 00 00 00 00 00 00 00 00 29 02 00 00 64 72 " +
                            "     73 2F 73 68 61 70 65 78 6D 6C 2E 78 6D 6C 50 4B " +
                            "     01 02 2D 00 14 00 06 00 08 00 00 00 21 00 56 84 " +
                            "     64 08 2D 01 00 00 AB 01 00 00 0F 00 00 00 00 00 " +
                            "     00 00 00 00 00 00 00 00 CC 04 00 00 64 72 73 2F " +
                            "     64 6F 77 6E 72 65 76 2E 78 6D 6C 50 4B 05 06 00 " +
                            "     00 00 00 04 00 04 00 F5 00 00 00 26 06 00 00 00 " +
                            "     00 00 00 10 F0 12 00 00 00 02 00 01 00 60 01 06 " +
                            "     00 80 00 02 00 D0 00 07 00 E6 00 00 00 11 F0 00 " +
                            "     00 00 00 5D 00 1A 00 15 00 12 00 06 00 10 00 11 " +
                            "     60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 " +
                            "     00 EC 00 08 00 00 00 0D F0 00 00 00 00 B6 01 12 " +
                            "     00 12 02 00 00 00 00 00 00 00 00 06 00 10 00 00 " +
                            "     00 00 00 3C 00 07 00 00 74 65 78 74 2D 32 3C 00 " +
                            "     10 00 00 00 16 00 00 00 00 00 06 00 00 00 00 00 " +
                            "     00 00 EC 00 CB 07 0F 00 04 F0 CB 07 00 00 A2 0C " +
                            "     0A F0 08 00 00 00 11 04 00 00 00 0A 00 00 93 00 " +
                            "     0B F0 4A 00 00 00 7F 00 00 00 04 00 80 00 00 D1 " +
                            "     53 02 85 00 02 00 00 00 8B 00 02 00 00 00 BF 00 " +
                            "     1A 00 1F 00 BF 01 01 00 11 00 FF 01 00 00 08 00 " +
                            "     80 C3 14 00 00 00 BF 03 00 00 02 00 54 00 65 00 " +
                            "     78 00 74 00 42 00 6F 00 78 00 20 00 33 00 00 00 " +
                            "     13 00 22 F1 37 07 00 00 A9 C3 31 07 00 00 50 4B " +
                            "     03 04 14 00 06 00 08 00 00 00 21 00 F0 F7 8A BB " +
                            "     FD 00 00 00 E2 01 00 00 13 00 00 00 5B 43 6F 6E " +
                            "     74 65 6E 74 5F 54 79 70 65 73 5D 2E 78 6D 6C 94 " +
                            "     91 CD 4A C4 30 10 C7 EF 82 EF 10 E6 2A 6D AA 07 " +
                            "     11 69 BA 07 AB 47 15 5D 1F 60 48 A6 6D D8 36 09 " +
                            "     99 58 77 DF DE 74 3F 2E E2 0A 1E 67 E6 FF F1 23 " +
                            "     A9 57 DB 69 14 33 45 B6 DE 29 B8 2E 2B 10 E4 B4 " +
                            "     37 D6 F5 0A 3E D6 4F C5 1D 08 4E E8 0C 8E DE 91 " +
                            "     82 1D 31 AC 9A CB 8B 7A BD 0B C4 22 BB 1D 2B 18 " +
                            "     52 0A F7 52 B2 1E 68 42 2E 7D 20 97 2F 9D 8F 13 " +
                            "     A6 3C C6 5E 06 D4 1B EC 49 DE 54 D5 AD D4 DE 25 " +
                            "     72 A9 48 4B 06 34 75 4B 1D 7E 8E 49 3C 6E F3 FA " +
                            "     40 12 69 64 10 0F 07 E1 D2 A5 00 43 18 AD C6 94 " +
                            "     49 E5 EC CC 8F 96 E2 D8 50 66 E7 5E C3 83 0D 7C " +
                            "     95 31 40 FE DA B0 5C CE 17 1C 7D 2F F9 69 A2 35 " +
                            "     24 5E 31 A6 67 9C 32 86 34 91 25 0F 18 28 6B CA " +
                            "     BF 53 16 CC 89 0B DF 75 56 53 D9 46 7E 5F 7C 27 " +
                            "     A8 73 E1 C6 7F B9 48 F3 7F B3 DB 6C 7B A3 F9 94 " +
                            "     2E F7 3F D4 7C 03 00 00 FF FF 03 00 50 4B 03 04 " +
                            "     14 00 06 00 08 00 00 00 21 00 31 DD 5F 61 D2 00 " +
                            "     00 00 8F 01 00 00 0B 00 00 00 5F 72 65 6C 73 2F " +
                            "     2E 72 65 6C 73 A4 90 C1 6A C3 30 0C 86 EF 83 BD " +
                            "     83 D1 BD 71 DA 43 19 A3 4E 6F 85 5E 4B 07 BB 0A " +
                            "     5B 49 4C 63 CB 58 26 6D DF BE A6 30 58 46 6F 3B " +
                            "     EA 17 FA 3E F1 EF F6 B7 30 A9 99 B2 78 8E 06 D6 " +
                            "     4D 0B 8A A2 65 E7 E3 60 E0 EB 7C 58 7D 80 92 82 " +
                            "     D1 E1 C4 91 0C DC 49 60 DF BD BF ED 4E 34 61 A9 " +
                            "     47 32 FA 24 AA 52 A2 18 18 4B 49 9F 5A 8B 1D 29 " +
                            "     A0 34 9C 28 D6 4D CF 39 60 A9 63 1E 74 42 7B C1 " +
                            "     81 F4 A6 6D B7 3A FF 66 40 B7 60 AA A3 33 90 8F " +
                            "     6E 03 EA 7C 4F D5 FC 87 1D BC CD 2C DC 97 C6 72 " +
                            "     D0 DC F7 DE BE A2 6A C7 D7 78 A2 B9 52 30 0F 54 " +
                            "     0C B8 2C CF 30 D3 DC D4 E7 40 BF F6 AE FF E9 95 " +
                            "     11 13 7D 57 FE 42 FC 4C AB F5 C7 AC 17 35 76 0F " +
                            "     00 00 00 FF FF 03 00 50 4B 03 04 14 00 06 00 08 " +
                            "     00 00 00 21 00 49 0D 41 2E 77 02 00 00 1A 07 00 " +
                            "     00 10 00 00 00 64 72 73 2F 73 68 61 70 65 78 6D " +
                            "     6C 2E 78 6D 6C BC 55 4D 73 DB 20 10 BD 77 A6 FF " +
                            "     81 E1 EE E8 23 96 1B 6B 8C 32 A9 33 E9 A5 D3 78 " +
                            "     EC F8 07 60 09 D9 9A 22 D0 00 B1 E5 FC FA EE 82 " +
                            "     EC A4 39 F4 10 77 72 41 68 17 F6 3D 1E BB CB EC " +
                            "     B6 6F 25 D9 0B 63 1B AD 18 4D AE 62 4A 84 2A 75 " +
                            "     D5 A8 2D A3 EB A7 87 D1 0D 25 D6 71 55 71 A9 95 " +
                            "     60 F4 28 2C BD 2D BE 7E 99 F5 95 C9 B9 2A 77 DA " +
                            "     10 08 A1 6C 0E 06 46 77 CE 75 79 14 D9 72 27 5A " +
                            "     6E AF 74 27 14 78 6B 6D 5A EE E0 D7 6C A3 CA F0 " +
                            "     03 04 6F 65 94 C6 F1 24 B2 9D 11 BC B2 3B 21 DC " +
                            "     7D F0 D0 C2 C7 06 B4 B9 90 F2 CE 43 04 53 6D 74 " +
                            "     1B 66 A5 96 45 32 8B 90 03 4E FD 06 98 3C D6 75 " +
                            "     91 C6 D3 2C 8B CF 3E 34 79 B7 D1 87 62 1A CC 38 " +
                            "     3D D9 D0 3F CD D2 EC EC F1 1B 7C E4 57 38 D1 3B " +
                            "     52 F6 8C C2 BA 34 06 41 CA 23 A3 E9 64 9C 4D 62 " +
                            "     1A 85 48 B6 23 2D 2F 8D 66 94 12 07 CB 65 A3 7E " +
                            "     C3 3C 38 D5 7E D5 2D 4C 98 97 BF F6 0B 43 9A 8A " +
                            "     D1 31 25 8A B7 20 E9 13 AC FF AE 7B 72 7D 0A 06 " +
                            "     6B 70 03 71 3D 98 E1 52 D0 EE 19 BD 0D 64 7D 48 " +
                            "     9E F7 B5 69 87 1B E0 1F D0 BF E5 8D 02 9A 3C D7 " +
                            "     75 4D 00 EC 26 99 26 19 24 01 9C 30 F9 96 8E E3 " +
                            "     34 43 74 9E FF 5B 82 28 F0 C0 85 9D B1 EE 87 D0 " +
                            "     17 73 22 18 88 51 23 4A E7 F9 F1 FD 4F EB 50 88 " +
                            "     57 08 84 53 FA A1 91 F2 52 01 4E 02 07 51 31 AD " +
                            "     AC 3B 4A 81 00 52 2D 05 28 E3 53 FC C3 02 C3 85 " +
                            "     83 B6 B1 3F 88 2D CD 76 33 97 86 40 B9 80 D0 50 " +
                            "     66 30 6E 70 0C A7 F3 80 88 5C C3 C1 3E 19 7B 80 " +
                            "     44 74 51 D7 20 FD 27 E3 9F 41 FD F9 B5 FA 7F F8 " +
                            "     6D A3 B4 19 F4 87 DE 24 F0 02 F6 5C 32 EA FA 50 " +
                            "     5F A0 77 C0 1B 6A 6D 48 00 CC 05 AC C3 EA 88 94 " +
                            "     36 F0 85 C2 BC 34 1B A0 DF BA 47 18 6A A9 0F 8C " +
                            "     96 B2 E9 28 81 46 FA F2 DE 76 30 BC 63 54 41 2B " +
                            "     A4 C4 38 39 D7 C0 17 92 25 B4 5D A0 1E CE D3 DD " +
                            "     3D 3B A8 82 A1 38 02 45 24 2B AD 5B 61 16 5F 4A " +
                            "     D7 D7 7F 77 69 14 64 64 FC 00 02 4A 8E CF 8B 50 " +
                            "     A3 F5 0A 9E 97 17 E8 35 49 EC F3 9F E7 AE C0 FE " +
                            "     39 BA C6 42 77 BE DC FD 2E A1 AA 05 37 7C 79 DE " +
                            "     6C 9E 47 CB F5 DF 9B B1 35 0C B7 77 BA 32 DF 36 " +
                            "     2D 58 FD 53 21 1B A1 DC 3D 77 FC 54 EF EF 1E 19 " +
                            "     BF 3A A8 5B FC 01 00 00 FF FF 03 00 50 4B 03 04 " +
                            "     14 00 06 00 08 00 00 00 21 00 79 45 76 AD 2B 01 " +
                            "     00 00 AA 01 00 00 0F 00 00 00 64 72 73 2F 64 6F " +
                            "     77 6E 72 65 76 2E 78 6D 6C 5C 90 51 4F C2 30 14 " +
                            "     85 DF 4D FC 0F CD 35 F1 4D 3A 26 D5 81 14 B2 98 " +
                            "     10 31 99 E2 90 C4 D7 B2 B6 6C 71 6D 67 5B 61 F8 " +
                            "     EB 2D 23 84 E8 E3 39 F7 7E E7 F6 74 3C 6D 55 8D " +
                            "     B6 C2 BA CA 68 0A FD 5E 04 48 E8 C2 F0 4A 6F 28 " +
                            "     AC DE 67 37 09 20 E7 99 E6 AC 36 5A 50 D8 0B 07 " +
                            "     D3 C9 E5 C5 98 8D B8 D9 E9 5C 6C 97 7E 83 42 88 " +
                            "     76 23 46 A1 F4 BE 19 61 EC 8A 52 28 E6 7A A6 11 " +
                            "     3A CC A4 B1 8A F9 20 ED 06 73 CB 76 21 5C D5 38 " +
                            "     8E A2 3B AC 58 A5 C3 85 92 35 E2 B1 14 C5 E7 F2 " +
                            "     5B 51 C8 B8 7C F9 18 54 B3 67 26 BF D2 F9 20 4F " +
                            "     C8 76 C1 09 A5 D7 57 6D FA 00 C8 8B D6 9F 97 1B " +
                            "     2B 17 71 96 AD DF 56 E9 69 A1 8B 9B 73 0A 03 40 " +
                            "     F2 69 BF B6 15 CF 99 F3 C2 52 08 FD 42 DB D0 14 " +
                            "     26 A1 42 5B A7 BA 28 8D 45 32 17 AE FA 09 FD 8E " +
                            "     BE B4 46 21 6B 76 14 86 80 0A 53 1F FC 83 7E 95 " +
                            "     D2 09 1F 5C 12 93 6E 70 32 E2 68 48 48 04 F8 10 " +
                            "     EA CD 11 ED 87 5B 1D 1B FF 61 13 72 FF 0F EE C7 " +
                            "     B7 49 B0 02 8C CF 4F EA C4 F9 8B 27 BF 00 00 00 " +
                            "     FF FF 03 00 50 4B 01 02 2D 00 14 00 06 00 08 00 " +
                            "     00 00 21 00 F0 F7 8A BB FD 00 00 00 E2 01 00 00 " +
                            "     13 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 " +
                            "     00 00 5B 43 6F 6E 74 65 6E 74 5F 54 79 70 65 73 " +
                            "     5D 2E 78 6D 6C 50 4B 01 02 2D 00 14 00 06 00 08 " +
                            "     00 00 00 21 00 31 DD 5F 61 D2 00 00 00 8F 01 00 " +
                            "     00 0B 00 00 00 00 00 00 00 00 00 00 00 00 00 2E " +
                            "     01 00 00 5F 72 65 6C 73 2F 2E 72 65 6C 73 50 4B " +
                            "     01 02 2D 00 14 00 06 00 08 00 00 00 21 00 49 0D " +
                            "     41 2E 77 02 00 00 1A 07 00 00 10 00 00 00 00 00 " +
                            "     00 00 00 00 00 00 00 00 29 02 00 00 64 72 73 2F " +
                            "     73 68 61 70 65 78 6D 6C 2E 78 6D 6C 50 4B 01 02 " +
                            "     2D 00 14 00 06 00 08 00 00 00 21 00 79 45 76 AD " +
                            "     2B 01 00 00 AA 01 00 00 0F 00 00 00 00 00 00 00 " +
                            "     00 00 00 00 00 00 CE 04 00 00 64 72 73 2F 64 6F " +
                            "     77 6E 72 65 76 2E 78 6D 6C 50 4B 05 06 00 00 00 " +
                            "     00 04 00 04 00 F5 00 00 00 26 06 00 00 00 00 00 " +
                            "     00 10 F0 12 00 00 00 02 00 01 00 60 01 09 00 0D " +
                            "     00 02 00 D0 00 0A 00 73 00 00 00 11 F0 00 00 00 " +
                            "     00 5D 00 1A 00 15 00 12 00 06 00 11 00 11 60 00 " +
                            "     00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 EC " +
                            "     00 08 00 00 00 0D F0 00 00 00 00 B6 01 12 00 12 " +
                            "     02 00 00 00 00 00 00 00 00 06 00 10 00 00 00 00 " +
                            "     00 3C 00 07 00 00 74 65 78 74 2D 33 3C 00 10 00 " +
                            "     00 00 16 00 00 00 00 00 06 00 00 00 00 00 00 00 " +
                            "     EC 00 CC 07 0F 00 04 F0 CC 07 00 00 A2 0C 0A F0 " +
                            "     08 00 00 00 12 04 00 00 00 0A 00 00 93 00 0B F0 " +
                            "     4A 00 00 00 7F 00 00 00 04 00 80 00 00 36 9A 02 " +
                            "     85 00 02 00 00 00 8B 00 02 00 00 00 BF 00 1A 00 " +
                            "     1F 00 BF 01 01 00 11 00 FF 01 00 00 08 00 80 C3 " +
                            "     14 00 00 00 BF 03 00 00 02 00 54 00 65 00 78 00 " +
                            "     74 00 42 00 6F 00 78 00 20 00 34 00 00 00 13 00 " +
                            "     22 F1 38 07 00 00 A9 C3 32 07 00 00 50 4B 03 04 " +
                            "     14 00 06 00 08 00 00 00 21 00 F0 F7 8A BB FD 00 " +
                            "     00 00 E2 01 00 00 13 00 00 00 5B 43 6F 6E 74 65 " +
                            "     6E 74 5F 54 79 70 65 73 5D 2E 78 6D 6C 94 91 CD " +
                            "     4A C4 30 10 C7 EF 82 EF 10 E6 2A 6D AA 07 11 69 " +
                            "     BA 07 AB 47 15 5D 1F 60 48 A6 6D D8 36 09 99 58 " +
                            "     77 DF DE 74 3F 2E E2 0A 1E 67 E6 FF F1 23 A9 57 " +
                            "     DB 69 14 33 45 B6 DE 29 B8 2E 2B 10 E4 B4 37 D6 " +
                            "     F5 0A 3E D6 4F C5 1D 08 4E E8 0C 8E DE 91 82 1D " +
                            "     31 AC 9A CB 8B 7A BD 0B C4 22 BB 1D 2B 18 52 0A " +
                            "     F7 52 B2 1E 68 42 2E 7D 20 97 2F 9D 8F 13 A6 3C " +
                            "     C6 5E 06 D4 1B EC 49 DE 54 D5 AD D4 DE 25 72 A9 " +
                            "     48 4B 06 34 75 4B 1D 7E 8E 49 3C 6E F3 FA 40 12 " +
                            "     69 64 10 0F 07 E1 D2 A5 00 43 18 AD C6 94 49 E5 " +
                            "     EC CC 8F 96 E2 D8 50 66 E7 5E C3 83 0D 7C 95 31 " +
                            "     40 FE DA B0 5C CE 17 1C 7D 2F F9 69 A2 35 24 5E " +
                            "     31 A6 67 9C 32 86 34 91 25 0F 18 28 6B CA BF 53 " +
                            "     16 CC 89 0B DF 75 56 53 D9 46 7E 5F 7C 27 A8 73 " +
                            "     E1 C6 7F B9 48 F3 7F B3 DB 6C 7B A3 F9 94 2E F7 " +
                            "     3F D4 7C 03 00 00 FF FF 03 00 50 4B 03 04 14 00 " +
                            "     06 00 08 00 00 00 21 00 31 DD 5F 61 D2 00 00 00 " +
                            "     8F 01 00 00 0B 00 00 00 5F 72 65 6C 73 2F 2E 72 " +
                            "     65 6C 73 A4 90 C1 6A C3 30 0C 86 EF 83 BD 83 D1 " +
                            "     BD 71 DA 43 19 A3 4E 6F 85 5E 4B 07 BB 0A 5B 49 " +
                            "     4C 63 CB 58 26 6D DF BE A6 30 58 46 6F 3B EA 17 " +
                            "     FA 3E F1 EF F6 B7 30 A9 99 B2 78 8E 06 D6 4D 0B " +
                            "     8A A2 65 E7 E3 60 E0 EB 7C 58 7D 80 92 82 D1 E1 " +
                            "     C4 91 0C DC 49 60 DF BD BF ED 4E 34 61 A9 47 32 " +
                            "     FA 24 AA 52 A2 18 18 4B 49 9F 5A 8B 1D 29 A0 34 " +
                            "     9C 28 D6 4D CF 39 60 A9 63 1E 74 42 7B C1 81 F4 " +
                            "     A6 6D B7 3A FF 66 40 B7 60 AA A3 33 90 8F 6E 03 " +
                            "     EA 7C 4F D5 FC 87 1D BC CD 2C DC 97 C6 72 D0 DC " +
                            "     F7 DE BE A2 6A C7 D7 78 A2 B9 52 30 0F 54 0C B8 " +
                            "     2C CF 30 D3 DC D4 E7 40 BF F6 AE FF E9 95 11 13 " +
                            "     7D 57 FE 42 FC 4C AB F5 C7 AC 17 35 76 0F 00 00 " +
                            "     00 FF FF 03 00 50 4B 03 04 14 00 06 00 08 00 00 " +
                            "     00 21 00 5B 36 01 DE 77 02 00 00 1D 07 00 00 10 " +
                            "     00 00 00 64 72 73 2F 73 68 61 70 65 78 6D 6C 2E " +
                            "     78 6D 6C BC 55 4D 53 DB 30 10 BD 77 A6 FF 41 A3 " +
                            "     7B B0 9D 26 99 90 C1 66 28 0C BD 74 0A 93 C0 0F " +
                            "     10 B6 9C 78 2A 4B 1E 49 24 0E BF BE 6F 25 27 50 " +
                            "     0E 3D 90 0E 17 59 5E 69 F7 ED BE FD D0 C5 65 DF " +
                            "     2A B6 95 D6 35 46 E7 3C 3B 4B 39 93 BA 34 55 A3 " +
                            "     D7 39 7F 7C B8 1D CD 39 73 5E E8 4A 28 A3 65 CE " +
                            "     F7 D2 F1 CB E2 EB 97 8B BE B2 0B A1 CB 8D B1 0C " +
                            "     26 B4 5B 40 90 F3 8D F7 DD 22 49 5C B9 91 AD 70 " +
                            "     67 A6 93 1A A7 B5 B1 AD F0 F8 B5 EB A4 B2 62 07 " +
                            "     E3 AD 4A C6 69 3A 4B 5C 67 A5 A8 DC 46 4A 7F 13 " +
                            "     4F 78 11 6C 03 ED 5A 2A 75 15 20 A2 A8 B6 A6 8D " +
                            "     BB D2 A8 22 BB 48 C8 07 DA 06 05 6C EE EA BA 18 " +
                            "     A7 E7 D3 69 7A 3C 23 51 38 B6 66 57 64 83 0E ED " +
                            "     0F 42 BA 90 65 93 6F E9 A0 83 B3 A0 13 8C BF 22 " +
                            "     CA DE B3 B2 CF F9 74 3C 1D A7 E0 A4 DC E7 7C 3C " +
                            "     9B 4C 67 29 4F A2 2D D7 B1 56 94 D6 E4 9C 33 8F " +
                            "     EB AA D1 BF B1 8F 87 7A BB EA EE 6D DC 97 BF B6 " +
                            "     F7 96 35 15 8C 71 A6 45 0B 56 1F 70 FF BB E9 D9 " +
                            "     E4 60 0C 77 48 81 F9 1E 62 E4 85 E4 C1 A3 B7 86 " +
                            "     5C 30 29 16 7D 6D DB 21 09 E2 03 29 68 45 A3 E1 " +
                            "     A6 58 98 BA 66 00 9B 67 E7 D9 14 75 40 11 82 CD " +
                            "     79 1A 42 14 8B 7F 53 90 44 3F C8 4E 67 9D FF 21 " +
                            "     CD C9 3E 31 32 94 73 2B 4B 1F FC 13 DB 9F CE 13 " +
                            "     11 AF 10 04 A7 CD 6D A3 D4 A9 04 1C 08 8E A4 52 " +
                            "     65 39 BF 57 92 00 94 5E 4A 30 13 AA FC C3 04 23 " +
                            "     E1 E0 36 0D 81 B8 D2 AE 9F AE 95 65 E8 18 10 8D " +
                            "     4E C3 FA 44 6B 8C 2E 00 12 72 8D C0 3E 19 7B 80 " +
                            "     24 74 59 D7 A0 FE 93 F1 8F A0 21 7E A3 FF 1F 7E " +
                            "     DB 68 63 07 FE 31 9E 24 25 60 2B 54 CE 7D 1F FB " +
                            "     0B 7C 47 BC A1 D7 86 02 A0 5A A0 3E AC F6 E4 D2 " +
                            "     13 BE 68 CC 53 AB 01 23 D7 DF 61 A9 95 D9 E5 BC " +
                            "     54 4D C7 19 66 E9 CB 7B D9 CE 8A 2E E7 1A D3 90 " +
                            "     33 EB D5 B5 81 BF 28 96 38 79 E1 7A 8C A7 BB 7A " +
                            "     F6 E8 82 A1 39 A2 8B E4 AC 72 7E 45 55 7C AA BB " +
                            "     28 4B F4 DC A9 56 C8 88 0D 0B 08 54 82 5E 18 A9 " +
                            "     47 8F 2B BC 30 2F 98 71 D9 61 D0 F8 82 E6 E7 68 " +
                            "     42 8D EE 43 BB 07 2D A9 AB 7B 61 C5 F2 A8 6C 9F " +
                            "     47 CB C7 BF 95 69 34 0C D9 3B A4 2C 8C 4D 07 69 " +
                            "     78 2D 54 23 B5 BF 11 5E 1C FA FD DD 3B 13 6E 47 " +
                            "     76 8B 3F 00 00 00 FF FF 03 00 50 4B 03 04 14 00 " +
                            "     06 00 08 00 00 00 21 00 DB CE 2D F9 2C 01 00 00 " +
                            "     AE 01 00 00 0F 00 00 00 64 72 73 2F 64 6F 77 6E " +
                            "     72 65 76 2E 78 6D 6C 5C 50 5D 4F C2 30 14 7D 37 " +
                            "     F1 3F 34 D7 C4 37 E9 18 D4 00 52 C8 62 42 C4 64 " +
                            "     7E 0C 49 7C 2D 6B CB 16 D7 76 B6 75 0C 7F BD 1D " +
                            "     42 30 3E DD 9C 73 EE 39 ED B9 D3 79 AB 2A D4 08 " +
                            "     EB 4A A3 29 F4 7B 11 20 A1 73 C3 4B BD A5 B0 7E " +
                            "     5B DC 8C 00 39 CF 34 67 95 D1 82 C2 5E 38 98 CF " +
                            "     2E 2F A6 6C C2 CD 4E 67 A2 59 F9 2D 0A 21 DA 4D " +
                            "     18 85 C2 FB 7A 82 B1 CB 0B A1 98 EB 99 5A E8 A0 " +
                            "     49 63 15 F3 01 DA 2D E6 96 ED 42 B8 AA 70 1C 45 " +
                            "     B7 58 B1 52 87 17 0A 56 8B FB 42 E4 1F AB 2F 45 " +
                            "     21 E5 F2 E9 7D 58 2E 1E 99 FC 4C 96 C3 6C 44 9A " +
                            "     17 4E 28 BD BE 6A 93 3B 40 5E B4 FE BC 5C 37 36 " +
                            "     8D D3 74 F3 BA 4E 4E 0B 87 B8 25 A7 40 00 C9 87 " +
                            "     FD C6 96 3C 63 CE 0B 4B 21 F4 0B 6D 43 53 98 85 " +
                            "     0A 6D 95 E8 BC 30 16 C9 4C B8 F2 3B F4 FB E5 A5 " +
                            "     35 0A 59 B3 0B B8 0F 28 37 55 27 74 C4 B3 94 4E " +
                            "     F8 8E 1E 0E A2 90 15 A4 13 15 47 63 42 22 C0 5D " +
                            "     AE 37 47 77 7C 74 87 F9 D7 3D 8E C8 3F 77 3F 1E " +
                            "     8C 62 D2 B9 F1 F9 5B 07 70 3E F3 EC 07 00 00 FF " +
                            "     FF 03 00 50 4B 01 02 2D 00 14 00 06 00 08 00 00 " +
                            "     00 21 00 F0 F7 8A BB FD 00 00 00 E2 01 00 00 13 " +
                            "     00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 " +
                            "     00 5B 43 6F 6E 74 65 6E 74 5F 54 79 70 65 73 5D " +
                            "     2E 78 6D 6C 50 4B 01 02 2D 00 14 00 06 00 08 00 " +
                            "     00 00 21 00 31 DD 5F 61 D2 00 00 00 8F 01 00 00 " +
                            "     0B 00 00 00 00 00 00 00 00 00 00 00 00 00 2E 01 " +
                            "     00 00 5F 72 65 6C 73 2F 2E 72 65 6C 73 50 4B 01 " +
                            "     02 2D 00 14 00 06 00 08 00 00 00 21 00 5B 36 01 " +
                            "     DE 77 02 00 00 1D 07 00 00 10 00 00 00 00 00 00 " +
                            "     00 00 00 00 00 00 00 29 02 00 00 64 72 73 2F 73 " +
                            "     68 61 70 65 78 6D 6C 2E 78 6D 6C 50 4B 01 02 2D " +
                            "     00 14 00 06 00 08 00 00 00 21 00 DB CE 2D F9 2C " +
                            "     01 00 00 AE 01 00 00 0F 00 00 00 00 00 00 00 00 " +
                            "     00 00 00 00 00 CE 04 00 00 64 72 73 2F 64 6F 77 " +
                            "     6E 72 65 76 2E 78 6D 6C 50 4B 05 06 00 00 00 00 " +
                            "     04 00 04 00 F5 00 00 00 27 06 00 00 00 00 00 00 " +
                            "     10 F0 12 00 00 00 02 00 01 00 60 01 0B 00 9A 00 " +
                            "     02 00 D0 00 0C 00 00 01 00 00 11 F0 00 00 00 00 " +
                            "     5D 00 1A 00 15 00 12 00 06 00 12 00 11 60 00 00 " +
                            "     00 00 00 00 00 00 00 00 00 00 00 00 00 00 EC 00 " +
                            "     08 00 00 00 0D F0 00 00 00 00 B6 01 12 00 12 02 " +
                            "     00 00 00 00 00 00 00 00 06 00 10 00 00 00 00 00 " +
                            "     3C 00 07 00 00 74 65 78 74 2D 34 3C 00 10 00 00 " +
                            "     00 16 00 00 00 00 00 06 00 00 00 00 00 00 00 3C " +
                            "     00 C8 07 0F 00 04 F0 C8 07 00 00 A2 0C 0A F0 08 " +
                            "     00 00 00 13 04 00 00 00 0A 00 00 93 00 0B F0 4A " +
                            "     00 00 00 7F 00 00 00 04 00 80 00 80 33 9A 02 85 " +
                            "     00 02 00 00 00 8B 00 02 00 00 00 BF 00 1A 00 1F " +
                            "     00 BF 01 01 00 11 00 FF 01 00 00 08 00 80 C3 14 " +
                            "     00 00 00 BF 03 00 00 02 00 54 00 65 00 78 00 74 " +
                            "     00 42 00 6F 00 78 00 20 00 35 00 00 00 13 00 22 " +
                            "     F1 34 07 00 00 A9 C3 2E 07 00 00 50 4B 03 04 14 " +
                            "     00 06 00 08 00 00 00 21 00 F0 F7 8A BB FD 00 00 " +
                            "     00 E2 01 00 00 13 00 00 00 5B 43 6F 6E 74 65 6E " +
                            "     74 5F 54 79 70 65 73 5D 2E 78 6D 6C 94 91 CD 4A " +
                            "     C4 30 10 C7 EF 82 EF 10 E6 2A 6D AA 07 11 69 BA " +
                            "     07 AB 47 15 5D 1F 60 48 A6 6D D8 36 09 99 58 77 " +
                            "     DF DE 74 3F 2E E2 0A 1E 67 E6 FF F1 23 A9 57 DB " +
                            "     69 14 33 45 B6 DE 29 B8 2E 2B 10 E4 B4 37 D6 F5 " +
                            "     0A 3E D6 4F C5 1D 08 4E E8 0C 8E DE 91 82 1D 31 " +
                            "     AC 9A CB 8B 7A BD 0B C4 22 BB 1D 2B 18 52 0A F7 " +
                            "     52 B2 1E 68 42 2E 7D 20 97 2F 9D 8F 13 A6 3C C6 " +
                            "     5E 06 D4 1B EC 49 DE 54 D5 AD D4 DE 25 72 A9 48 " +
                            "     4B 06 34 75 4B 1D 7E 8E 49 3C 6E F3 FA 40 12 69 " +
                            "     64 10 0F 07 E1 D2 A5 00 43 18 AD C6 94 49 E5 EC " +
                            "     CC 8F 96 E2 D8 50 66 E7 5E C3 83 0D 7C 95 31 40 " +
                            "     FE DA B0 5C CE 17 1C 7D 2F F9 69 A2 35 24 5E 31 " +
                            "     A6 67 9C 32 86 34 91 25 0F 18 28 6B CA BF 53 16 " +
                            "     CC 89 0B DF 75 56 53 D9 46 7E 5F 7C 27 A8 73 E1 " +
                            "     C6 7F B9 48 F3 7F B3 DB 6C 7B A3 F9 94 2E F7 3F " +
                            "     D4 7C 03 00 00 FF FF 03 00 50 4B 03 04 14 00 06 " +
                            "     00 08 00 00 00 21 00 31 DD 5F 61 D2 00 00 00 8F " +
                            "     01 00 00 0B 00 00 00 5F 72 65 6C 73 2F 2E 72 65 " +
                            "     6C 73 A4 90 C1 6A C3 30 0C 86 EF 83 BD 83 D1 BD " +
                            "     71 DA 43 19 A3 4E 6F 85 5E 4B 07 BB 0A 5B 49 4C " +
                            "     63 CB 58 26 6D DF BE A6 30 58 46 6F 3B EA 17 FA " +
                            "     3E F1 EF F6 B7 30 A9 99 B2 78 8E 06 D6 4D 0B 8A " +
                            "     A2 65 E7 E3 60 E0 EB 7C 58 7D 80 92 82 D1 E1 C4 " +
                            "     91 0C DC 49 60 DF BD BF ED 4E 34 61 A9 47 32 FA " +
                            "     24 AA 52 A2 18 18 4B 49 9F 5A 8B 1D 29 A0 34 9C " +
                            "     28 D6 4D CF 39 60 A9 63 1E 74 42 7B C1 81 F4 A6 " +
                            "     6D B7 3A FF 66 40 B7 60 AA A3 33 90 8F 6E 03 EA " +
                            "     7C 4F D5 FC 87 1D BC CD 2C DC 97 C6 72 D0 DC F7 " +
                            "     DE BE A2 6A C7 D7 78 A2 B9 52 30 0F 54 0C B8 2C " +
                            "     CF 30 D3 DC D4 E7 40 BF F6 AE FF E9 95 11 13 7D " +
                            "     57 FE 42 FC 4C AB F5 C7 AC 17 35 76 0F 00 00 00 " +
                            "     FF FF 03 00 50 4B 03 04 14 00 06 00 08 00 00 00 " +
                            "     21 00 C4 6F 3F 83 76 02 00 00 1C 07 00 00 10 00 " +
                            "     00 00 64 72 73 2F 73 68 61 70 65 78 6D 6C 2E 78 " +
                            "     6D 6C BC 55 CD 6E DB 30 0C BE 0F D8 3B 08 BA A7 " +
                            "     B6 83 3A 4D 8D C8 45 97 A2 BB 0C 6B 90 34 0F A0 " +
                            "     C8 72 62 4C 96 0C 49 4D 9C 3E FD 48 C9 49 B7 1E " +
                            "     76 68 86 5E 64 9A 12 F9 51 1F 7F 34 BB EB 5B 45 " +
                            "     F6 D2 BA C6 68 46 B3 AB 94 12 A9 85 A9 1A BD 65 " +
                            "     74 FD FC 38 9A 52 E2 3C D7 15 57 46 4B 46 8F D2 " +
                            "     D1 BB F2 EB 97 59 5F D9 82 6B B1 33 96 80 0B ED " +
                            "     0A 50 30 BA F3 BE 2B 92 C4 89 9D 6C B9 BB 32 9D " +
                            "     D4 B0 5B 1B DB 72 0F BF 76 9B 54 96 1F C0 79 AB " +
                            "     92 71 9A 4E 12 D7 59 C9 2B B7 93 D2 3F C4 1D 5A " +
                            "     06 DF 80 36 97 4A DD 07 88 A8 AA AD 69 A3 24 8C " +
                            "     2A B3 59 82 31 A0 18 0C 40 78 AA EB 72 9C DE E6 " +
                            "     79 7A DE 43 55 D8 B6 E6 50 66 D7 51 8F F2 49 19 " +
                            "     6C A6 F9 4D 7E DE 0A 26 C1 F7 1B A0 EC 3D 11 3D " +
                            "     A3 F9 38 1F A7 40 89 38 32 3A 9E 5C E7 93 94 26 " +
                            "     D1 95 EB 48 CB 85 35 8C 52 E2 E1 B8 6A F4 2F 90 " +
                            "     E3 A6 DE AF BA 85 8D B2 F8 B9 5F 58 D2 54 8C 4E " +
                            "     28 D1 BC 05 52 9F E1 FC 37 D3 93 FC E4 0C CE A0 " +
                            "     01 F1 3D A8 21 2D A8 0F 11 FD E9 C8 05 97 BC E8 " +
                            "     6B DB 0E 39 E0 1F C8 40 CB 1B 0D 61 F2 C2 D4 35 " +
                            "     01 B0 69 76 9B E5 50 06 E1 86 C0 E5 4D 88 8A 17 " +
                            "     FF A6 20 89 71 A0 9F CE 3A FF 5D 9A 8B 63 22 E8 " +
                            "     88 51 2B 85 0F F1 F1 FD 0F E7 91 88 37 08 84 D3 " +
                            "     E6 B1 51 EA 52 02 4E 04 47 52 B1 B0 9C 3F 2A 89 " +
                            "     00 4A 2F 25 30 13 8A FC C3 04 43 C2 81 DB 34 5C " +
                            "     C4 09 BB DD CC 95 25 D0 30 40 34 34 1A AC 1B 5C " +
                            "     E3 ED 02 20 22 D7 70 B1 4F C6 1E 20 11 5D D6 35 " +
                            "     50 FF C9 F8 67 D0 70 7F A3 FF 1F 7E DB 68 63 07 " +
                            "     FE 61 3A 49 4C C0 9E 2B 46 7D 1F FB 0B F8 8E 78 " +
                            "     43 AF 0D 05 80 B5 80 7D 58 1D 31 A4 0D 7C A1 31 " +
                            "     2F AD 06 98 B8 FE 09 96 5A 99 03 A3 42 35 1D 25 " +
                            "     30 4A 5F DF EB 0E 96 77 8C 6A 18 86 94 58 AF E6 " +
                            "     06 E2 85 62 89 83 17 42 8F F7 E9 EE 5F 3C 74 C1 " +
                            "     D0 1C 31 44 0C 56 39 BF C2 2A BE 34 5C 28 4B E8 " +
                            "     B9 4B BD A0 13 1B 16 20 50 71 7C 60 A4 1E AD 57 " +
                            "     F0 C0 BC C2 8C CB D2 50 FF BC F0 25 CE CF 11 0C " +
                            "     64 94 71 0D 56 52 57 0B 6E F9 F2 6C 6C 5F 46 CB " +
                            "     F5 DF C6 38 1A 86 EC 9D 52 16 C6 A6 03 6D 78 2C " +
                            "     54 23 B5 7F E0 9E 9F FA FD DD 33 13 4E 47 76 CB " +
                            "     DF 00 00 00 FF FF 03 00 50 4B 03 04 14 00 06 00 " +
                            "     08 00 00 00 21 00 AF 34 70 A0 29 01 00 00 AD 01 " +
                            "     00 00 0F 00 00 00 64 72 73 2F 64 6F 77 6E 72 65 " +
                            "     76 2E 78 6D 6C 5C 50 5D 4F C2 30 14 7D 37 F1 3F " +
                            "     34 D7 C4 37 D9 98 2B 4C A4 90 C5 84 88 C9 FC 18 " +
                            "     92 F0 5A D6 96 2D AE ED 6C 2B 0C 7F BD 1D A8 44 " +
                            "     1F CF 67 EF E9 78 DA CA 1A 6D B9 B1 95 56 04 FA " +
                            "     BD 10 10 57 85 66 95 DA 10 58 BE CE AE 12 40 D6 " +
                            "     51 C5 68 AD 15 27 B0 E7 16 A6 93 F3 B3 31 1D 31 " +
                            "     BD 53 39 DF 2E DC 06 F9 12 65 47 94 40 E9 5C 33 " +
                            "     0A 02 5B 94 5C 52 DB D3 0D 57 5E 13 DA 48 EA 3C " +
                            "     34 9B 80 19 BA F3 E5 B2 0E A2 30 1C 04 92 56 CA " +
                            "     BF 50 D2 86 DF 95 BC 78 5B 7C 48 02 19 13 8F AB " +
                            "     B8 9A 3D 50 F1 9E CE E3 3C C1 DB 67 86 09 B9 BC " +
                            "     68 D3 5B 40 8E B7 EE 64 6E EA 55 16 65 D9 FA 65 " +
                            "     99 FE 18 0E 75 73 46 60 00 48 DC EF D7 A6 62 39 " +
                            "     B5 8E 1B 02 7E 9F 5F EB 97 C2 C4 4F 68 EB 54 15 " +
                            "     A5 36 48 E4 DC 56 9F 7E DF 91 17 46 4B 64 F4 CE " +
                            "     E3 18 50 A1 EB 4E E8 88 27 21 2C 77 04 A2 04 0F " +
                            "     F1 41 F9 65 C2 1B 8C 43 08 BA 5A A7 BF C3 47 8B " +
                            "     B7 FF 09 F7 C3 78 F8 2F DD 8F AE 93 08 77 E9 E0 " +
                            "     74 D5 01 9C 7E 79 F2 05 00 00 FF FF 03 00 50 4B " +
                            "     01 02 2D 00 14 00 06 00 08 00 00 00 21 00 F0 F7 " +
                            "     8A BB FD 00 00 00 E2 01 00 00 13 00 00 00 00 00 " +
                            "     00 00 00 00 00 00 00 00 00 00 00 00 5B 43 6F 6E " +
                            "     74 65 6E 74 5F 54 79 70 65 73 5D 2E 78 6D 6C 50 " +
                            "     4B 01 02 2D 00 14 00 06 00 08 00 00 00 21 00 31 " +
                            "     DD 5F 61 D2 00 00 00 8F 01 00 00 0B 00 00 00 00 " +
                            "     00 00 00 00 00 00 00 00 00 2E 01 00 00 5F 72 65 " +
                            "     6C 73 2F 2E 72 65 6C 73 50 4B 01 02 2D 00 14 00 " +
                            "     06 00 08 00 00 00 21 00 C4 6F 3F 83 76 02 00 00 " +
                            "     1C 07 00 00 10 00 00 00 00 00 00 00 00 00 00 00 " +
                            "     00 00 29 02 00 00 64 72 73 2F 73 68 61 70 65 78 " +
                            "     6D 6C 2E 78 6D 6C 50 4B 01 02 2D 00 14 00 06 00 " +
                            "     08 00 00 00 21 00 AF 34 70 A0 29 01 00 00 AD 01 " +
                            "     00 00 0F 00 00 00 00 00 00 00 00 00 00 00 00 00 " +
                            "     CD 04 00 00 64 72 73 2F 64 6F 77 6E 72 65 76 2E " +
                            "     78 6D 6C 50 4B 05 06 00 00 00 00 04 00 04 00 F5 " +
                            "     00 00 00 23 06 00 00 00 00 00 00 10 F0 12 00 00 " +
                            "     00 02 00 01 00 60 01 0E 00 26 00 02 00 D0 00 0F " +
                            "     00 8D 00 00 00 11 F0 00 00 00 00 5D 00 1A 00 15 " +
                            "     00 12 00 06 00 13 00 11 60 00 00 00 00 00 00 00 " +
                            "     00 00 00 00 00 00 00 00 00 3C 00 08 00 00 00 0D " +
                            "     F0 00 00 00 00 B6 01 12 00 12 02 00 00 00 00 00 " +
                            "     00 00 00 06 00 10 00 00 00 00 00 3C 00 07 00 00 " +
                            "     74 65 78 74 2D 35 3C 00 10 00 00 00 16 00 00 00 " +
                            "     00 00 06 00 00 00 00 00 00 00  " +
                            "     ";

            byte[] dgBytes = HexRead.ReadFromString(data);
            IList<NPOI.HSSF.Record.Record> dgRecords = RecordFactory.CreateRecords(new MemoryStream(dgBytes));
            Assert.AreEqual(20, dgRecords.Count);

            short[] expectedSids = {
                    DrawingRecord.sid,
                    ObjRecord.sid,
                    DrawingRecord.sid,
                    TextObjectRecord.sid,
                    DrawingRecord.sid,
                    ObjRecord.sid,
                    DrawingRecord.sid,
                    TextObjectRecord.sid,
                    DrawingRecord.sid,
                    ObjRecord.sid,
                    DrawingRecord.sid,
                    TextObjectRecord.sid,
                    DrawingRecord.sid,
                    ObjRecord.sid,
                    DrawingRecord.sid,
                    TextObjectRecord.sid,
                    ContinueRecord.sid,
                    ObjRecord.sid,
                    ContinueRecord.sid,
                    TextObjectRecord.sid
            };
            for (int i = 0; i < expectedSids.Length; i++)
            {
                Assert.AreEqual(expectedSids[i], dgRecords[(i)].Sid, "unexpected record.sid and index[" + i + "]");
            }
            DrawingManager2 drawingManager = new DrawingManager2(new EscherDggRecord());

            // create a dummy sheet consisting of our Test data
            InternalSheet sheet = InternalSheet.CreateSheet();
            List<RecordBase> records = sheet.Records;
            records.Clear();
            records.AddRange(dgRecords);
            records.Add(EOFRecord.instance);


            sheet.AggregateDrawingRecords(drawingManager, false);
            Assert.AreEqual(2, records.Count, "drawing was not fully aggregated");
            Assert.IsTrue(records[(0)] is EscherAggregate, "expected EscherAggregate");
            Assert.IsTrue(records[(1)] is EOFRecord, "expected EOFRecord");
            EscherAggregate agg = (EscherAggregate)records[(0)];

            byte[] dgBytesAfterSave = agg.Serialize();
            Assert.AreEqual(dgBytes.Length, dgBytesAfterSave.Length, "different size of Drawing data before and After save");
            Assert.IsTrue(Arrays.Equals(dgBytes, dgBytesAfterSave), "drawing data before and After save is different");
        }
Beispiel #9
0
        /**
         * Finds the DrawingRecord for our sheet, and
         *  attaches it to the DrawingManager (which knows about
         *  the overall DrawingGroup for our workbook).
         * If requested, will Create a new DrawRecord
         *  if none currently exist
         * @param drawingManager The DrawingManager2 for our workbook
         * @param CreateIfMissing Should one be Created if missing?
         */
        public int AggregateDrawingRecords(DrawingManager2 drawingManager, bool CreateIfMissing)
        {
            int loc = FindFirstRecordLocBySid(DrawingRecord.sid);
            bool noDrawingRecordsFound = (loc == -1);
            if (noDrawingRecordsFound)
            {
                if (!CreateIfMissing)
                {
                    // None found, and not allowed to Add in
                    return -1;
                }

                EscherAggregate aggregate = new EscherAggregate(drawingManager);
                loc = FindFirstRecordLocBySid(EscherAggregate.sid);
                if (loc == -1)
                {
                    loc = FindFirstRecordLocBySid(WindowTwoRecord.sid);
                }
                else
                {
                    Records.RemoveAt(loc);
                }
                Records.Insert(loc, aggregate);
                return loc;
            }
            else
            {
                IList records = Records;
                EscherAggregate r = EscherAggregate.CreateAggregate(records, loc, drawingManager);
                int startloc = loc;
                while (loc + 1 < records.Count
                        && records[loc] is DrawingRecord
                        && records[loc + 1] is ObjRecord)
                {
                    loc += 2;
                }
                int endloc = loc - 1;
                for (int i = 0; i < (endloc - startloc + 1); i++)
                    records.RemoveAt(startloc);
                records.Insert(startloc, r);

                return startloc;
            }
        }
        /**
         * Collapses the drawing records into an aggregate.
         */
        public static EscherAggregate CreateAggregate(IList records, int locFirstDrawingRecord, DrawingManager2 drawingManager)
        {
            // Keep track of any shape records Created so we can match them back to the object id's.
            // Textbox objects are also treated as shape objects.
            IList shapeRecords = new ArrayList();
            EscherRecordFactory recordFactory = new CustomEscherRecordFactory(ref shapeRecords);

            // Calculate the size of the buffer
            EscherAggregate agg = new EscherAggregate(drawingManager);
            int loc = locFirstDrawingRecord;
            int dataSize = 0;
            while (loc + 1 < records.Count
                    && GetSid(records, loc) == DrawingRecord.sid
                    && IsObjectRecord(records, loc + 1))
            {
                dataSize += ((DrawingRecord)records[loc]).Data.Length;
                loc += 2;
            }

            // Create one big buffer
            byte[] buffer = new byte[dataSize];
            int offset = 0;
            loc = locFirstDrawingRecord;
            while (loc + 1 < records.Count
                    && GetSid(records, loc) == DrawingRecord.sid
                    && IsObjectRecord(records, loc + 1))
            {
                DrawingRecord drawingRecord = (DrawingRecord)records[loc];
                Array.Copy(drawingRecord.Data, 0, buffer, offset, drawingRecord.Data.Length);
                offset += drawingRecord.Data.Length;
                loc += 2;
            }

            // Decode the shapes
            //        agg.escherRecords = new ArrayList();
            int pos = 0;
            while (pos < dataSize)
            {
                EscherRecord r = recordFactory.CreateRecord(buffer, pos);
                int bytesRead = r.FillFields(buffer, pos, recordFactory);
                agg.AddEscherRecord(r);
                pos += bytesRead;
            }

            // Associate the object records with the shapes
            loc = locFirstDrawingRecord;
            int shapeIndex = 0;
            agg.shapeToObj = new Hashtable();
            while (loc + 1 < records.Count
                    && GetSid(records, loc) == DrawingRecord.sid
                    && IsObjectRecord(records, loc + 1))
            {
                Record objRecord = (Record)records[loc + 1];
                agg.shapeToObj[shapeRecords[shapeIndex++]]= objRecord;
                loc += 2;
            }

            return agg;

        }
Beispiel #11
0
        /**
         * Finds the primary drawing Group, if one already exists
         */
        public void FindDrawingGroup()
        {
            // Need to Find a DrawingGroupRecord that
            //  Contains a EscherDggRecord
            for (IEnumerator rit = records.GetEnumerator(); rit.MoveNext(); )
            {
                Record r = (Record)rit.Current;

                if (r is DrawingGroupRecord)
                {
                    DrawingGroupRecord dg = (DrawingGroupRecord)r;
                    dg.ProcessChildRecords();

                    EscherContainerRecord cr =
                        dg.GetEscherContainer();
                    if (cr == null)
                    {
                        continue;
                    }

                    EscherDggRecord dgg = null;
                    for (IEnumerator it = cr.ChildRecords.GetEnumerator(); it.MoveNext(); )
                    {
                        Object er = it.Current;
                        if (er is EscherDggRecord)
                        {
                            dgg = (EscherDggRecord)er;
                        }
                    }

                    if (dgg != null)
                    {
                        drawingManager = new DrawingManager2(dgg);
                        return;
                    }
                }
            }

            // Look for the DrawingGroup record
            int dgLoc = FindFirstRecordLocBySid(DrawingGroupRecord.sid);

            // If there is one, does it have a EscherDggRecord?
            if (dgLoc != -1)
            {
                DrawingGroupRecord dg =
                    (DrawingGroupRecord)records[dgLoc];
                EscherDggRecord dgg = null;
                for (IEnumerator it = dg.EscherRecords.GetEnumerator(); it.MoveNext(); )
                {
                    Object er = it.Current;
                    if (er is EscherDggRecord)
                    {
                        dgg = (EscherDggRecord)er;
                    }
                }

                if (dgg != null)
                {
                    drawingManager = new DrawingManager2(dgg);
                }
            }
        }