VideoHelp Forum
+ Reply to Thread
Results 1 to 20 of 20
Thread
  1. Member
    Join Date
    Jan 2017
    Location
    Italia
    Search Comp PM
    edit: SOLVED

    Hi everyone
    I have what I think is a pretty unusual question, it’s just an idea i’m wandering if realizable, it could be completely nonsense, but i’ll ask anyway.

    You know that Google drive offers free storage space for documents that are written with google documents, so you can theoretically write a let’s say 15 GB text document and still have all your space available right?

    My question is: is it possible to convert any kind of file, a video in my case, into a text document?

    Now, the answer should be yes, because you open you mp4 with notepad++ and the work is done, but it’s here that I got a problem: when you open a, let’s say, PNG with notepad++ you get a bunch of random characters, including the “special ones” like “STX” “SOH” and “NULL”, that respectively has the value of 02h , 01h and 00h.
    In the windows clipboard you can’t copy these values, they will appear in notepad (the classic one) as little squares or spaces.
    For example if i copy the NULL one (00h) in the clipboard, when I paste it, it becomes a space (20h), and this doesn’t allow me to simply open a video or an image with notepad++ and copy the content to a google document.

    So tried some ascii to hex converts, but all give the same result, NULL becomes space.

    Then I tried hex editors, my idea was: open with the editor, export the hex numbers as ASCII (so 00 (hex) → 00 (ascii) = 30 30 (hex)) so I have a txt full of hex numbers that I can copy around because there aren't special characters.
    But then how do I convert the ascii numbers back to “real” hex numbers, and then real hex to ascii (like 21 to “!”)?

    sorry for my poor english, hope this makes sense.
    waiting for your ideas, thanks.
    Last edited by ThePi7on; 9th Feb 2017 at 12:18.
    Quote Quote  
  2. There are several ways to store binary data as text. For example: https://en.m.wikipedia.org/wiki/Uuencoding
    Quote Quote  
  3. Member
    Join Date
    Aug 2010
    Location
    San Francisco, California
    Search PM
    BASE64 is pretty standard these days for sending binary data in safe ASCII chars. UUDeview handles it.
    Quote Quote  
  4. Dinosaur Supervisor KarMa's Avatar
    Join Date
    Jul 2015
    Location
    US
    Search Comp PM
    If Google supports extended characters then I would go with yEnc. Usenet once used Base64 back in the day but switched for yEnc in the 2000s, as it has an overwhelming efficiency advantage. ~75% vs ~98%.

    https://en.wikipedia.org/wiki/Binary-to-text_encoding
    Quote Quote  
  5. I suspect you'll find Google doesn't allow this type of "abuse".
    Quote Quote  
  6. This is so funny, I'm actually doing this exact thing as I type this, it's called a "reversible hex dump", you basically dump the hex representation of a file into a text file and then convert it back into a binary file. With *nix based OSes you can use a utility called "xxd", it's usage is very simple, if you're serious about doing this on any type of significant scale I suggest you learn to use *nix.
    Quote Quote  
  7. Marsia Mariner
    Guest
    If you happen to be "old-fashioned" like me... there exists BinHex as well:

    https://en.wikipedia.org/wiki/BinHex

    For Windows, there is only one freeware /demoware BinHex encoder which supports long filenames — Detest32.

    Anyway, I'm afraid jagabo is right — if even Doom9's forumware was (¿still is?) programmed to detect and to refuse refuse uue, Base64 and BinHex texts as "invalid attachments" or something, then it's logical to imagine that Google Inc. would enforce a much-worse pro-copyrite_industry policy.
    Quote Quote  
  8. Member vhelp's Avatar
    Join Date
    Mar 2001
    Location
    New York
    Search Comp PM
    To be quiet honest, I tried to code this in Pascal as an exercise, and failed. After loading the file into a buffer, its just too time-consuming to convert char bytes -to- hex -to- string (ie, 04 05 02 08 ... ) and then into a file. I tried it on the 417kb filesize "regedit.exe" app and it took 8 seconds to convert to hex-string in a memo UI control. Then, I tried with a 12MB filesize. After several minutes of not completing, I had to Ctrl+alt+del to stop it before I faint. I don't know what use this would have on a video file that is say, a few hundred megabytes, let alone, a few Gigabytes. But here is the routine I used for the conversion part. That was what was longest to process.

    Code:
      memo2.Lines.BeginUpdate;
      repeat
        for i := 1 to 8 do begin
          inc(c);
          h := ord(buf[c]);
          s := s + intTohex( h,2 ) + ' ';
        end;
        memo2.Lines.Add(s); s := '';
      until c = TheFileSize;
      memo.Lines.EndUpdate;
    Here's a 10 row snippet, for reference:

    Code:
    5A 90 00 03 00 00 00 04 
    00 00 00 FF FF 00 00 B8 
    00 00 00 00 00 00 00 40 
    00 00 00 00 00 00 00 00 
    00 00 00 00 00 00 00 00 
    00 00 00 00 00 00 00 00 
    00 00 00 00 00 00 00 00 
    00 00 00 E8 00 00 00 0E 
    1F BA 0E 00 B4 09 CD 21
    And here is a full windows 7 "write.exe" 10k filesize, for reference, which took 1 second to process:

    Code:
      memo2.Lines.BeginUpdate;
      repeat
        for i := 1 to 32 do begin
          inc(c);
          h := ord(buf[c]);
          s := s + intTohex( h,2 ) + ' ';
        end;
        memo2.Lines.Add(s); s := '';
      until c = TheFileSize;
      memo.Lines.EndUpdate;
    Code:
    5A 90 00 03 00 00 00 04 00 00 00 FF FF 00 00 B8 00 00 00 00 00 00 00 40 00 00 00 00 00 00 00 00 
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 E0 00 00 00 0E 
    1F BA 0E 00 B4 09 CD 21 B8 01 4C CD 21 54 68 69 73 20 70 72 6F 67 72 61 6D 20 63 61 6E 6E 6F 74 
    20 62 65 20 72 75 6E 20 69 6E 20 44 4F 53 20 6D 6F 64 65 2E 0D 0D 0A 24 00 00 00 00 00 00 00 3A 
    88 C0 1C 7E E9 AE 4F 7E E9 AE 4F 7E E9 AE 4F 77 91 2A 4F 7F E9 AE 4F 77 91 3B 4F 7F E9 AE 4F 7E 
    E9 AF 4F 5D E9 AE 4F 77 91 3D 4F 79 E9 AE 4F 77 91 2D 4F 6E E9 AE 4F 77 91 27 4F 7F E9 AE 4F 77 
    91 3A 4F 7F E9 AE 4F 77 91 3F 4F 7F E9 AE 4F 52 69 63 68 7E E9 AE 4F 00 00 00 00 00 00 00 00 50 
    45 00 00 64 86 05 00 AC C9 5B 4A 00 00 00 00 00 00 00 00 F0 00 22 00 0B 02 09 00 00 10 00 00 00 
    1A 00 00 00 00 00 00 A4 15 00 00 00 10 00 00 00 00 00 00 01 00 00 00 00 10 00 00 00 02 00 00 06 
    00 01 00 06 00 01 00 06 00 01 00 00 00 00 00 00 60 00 00 00 04 00 00 3F 88 00 00 02 00 40 81 00 
    00 08 00 00 00 00 00 00 20 00 00 00 00 00 00 00 00 10 00 00 00 00 00 00 10 00 00 00 00 00 00 00 
    00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 10 1B 00 00 50 00 00 00 00 40 00 00 A8 0D 00 00 00 
    30 00 00 A8 00 00 00 00 00 00 00 00 00 00 00 00 50 00 00 14 00 00 00 50 11 00 00 1C 00 00 00 00 
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 B0 
    02 00 00 58 00 00 00 00 10 00 00 10 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
    00 00 00 00 00 00 00 2E 74 65 78 74 00 00 00 C4 0E 00 00 00 10 00 00 00 10 00 00 00 04 00 00 00 
    00 00 00 00 00 00 00 00 00 00 00 20 00 00 60 2E 64 61 74 61 00 00 00 F8 06 00 00 00 20 00 00 00 
    02 00 00 00 14 00 00 00 00 00 00 00 00 00 00 00 00 00 00 40 00 00 C0 2E 70 64 61 74 61 00 00 A8 
    00 00 00 00 30 00 00 00 02 00 00 00 16 00 00 00 00 00 00 00 00 00 00 00 00 00 00 40 00 00 40 2E 
    72 73 72 63 00 00 00 A8 0D 00 00 00 40 00 00 00 0E 00 00 00 18 00 00 00 00 00 00 00 00 00 00 00 
    00 00 00 40 00 00 40 2E 72 65 6C 6F 63 00 00 38 00 00 00 00 50 00 00 00 02 00 00 00 26 00 00 00 
    00 00 00 00 00 00 00 00 00 00 00 40 00 00 42 54 E0 5B 4A 28 00 00 00 DF DF 5B 4A 34 00 00 00 BE 
    DF 5B 4A 41 00 01 00 2B E0 5B 4A 4C 00 00 00 00 00 00 00 00 00 00 00 53 48 45 4C 4C 33 32 2E 64 
    6C 6C 00 4B 45 52 4E 45 4C 33 32 2E 64 6C 6C 00 6D 73 76 63 72 74 2E 64 6C 6C 00 4E 54 44 4C 4C 
    2E 44 4C 4C 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 10 
    BC D6 78 00 00 00 00 90 96 D3 78 00 00 00 00 D0 12 D4 78 00 00 00 00 C0 11 D4 78 00 00 00 00 30 
    BB D6 78 00 00 00 00 D0 BA D6 78 00 00 00 00 20 92 DB 78 00 00 00 00 80 FE D3 78 00 00 00 00 B0 
    C1 D6 78 00 00 00 00 B0 04 D4 78 00 00 00 00 E0 03 D4 78 00 00 00 00 B0 EF D3 78 00 00 00 00 70 
    28 D4 78 00 00 00 00 90 04 D4 78 00 00 00 00 90 34 D4 78 00 00 00 00 E0 28 D4 78 00 00 00 00 00 
    00 00 00 00 00 00 00 A8 BE 8D 78 FF 07 00 00 00 00 00 00 00 00 00 00 70 AA 6C 75 FF 07 00 00 88 
    B0 6A 75 FF 07 00 00 7C 12 73 75 FF 07 00 00 80 12 73 75 FF 07 00 00 94 DA 70 75 FF 07 00 00 60 
    C2 6E 75 FF 07 00 00 F0 44 6A 75 FF 07 00 00 A8 10 73 75 FF 07 00 00 F4 99 6A 75 FF 07 00 00 40 
    46 6B 75 FF 07 00 00 34 C2 6E 75 FF 07 00 00 98 0D 6E 75 FF 07 00 00 AC 50 E6 78 00 00 00 00 18 
    2F 6B 75 FF 07 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 38 12 00 00 01 00 00 00 00 
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 CC 14 00 00 01 00 00 00 40 16 00 00 01 00 00 00 00 
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 AC C9 5B 4A 00 00 00 00 02 00 00 00 22 
    00 00 00 98 11 00 00 98 05 00 00 00 00 00 00 60 21 00 00 01 00 00 00 00 22 00 00 01 00 00 00 77 
    00 6F 00 72 00 64 00 70 00 61 00 64 00 2E 00 65 00 78 00 65 00 00 00 52 53 44 53 66 CA D8 4F F4 
    96 A7 45 B9 69 AB 9B BD 76 E4 59 01 00 00 00 77 72 69 74 65 2E 70 64 62 00 00 00 00 00 00 00 00 
    00 00 00 00 00 00 00 40 53 48 81 EC A0 00 00 00 45 33 C9 49 8B D8 33 C9 41 8D 51 01 45 33 C0 FF 
    15 32 FE FF FF 83 64 24 6C 00 48 8D 4C 24 30 FF 15 1A FE FF FF F6 44 24 6C 01 0F B7 44 24 70 B9 
    0A 00 00 00 4C 8D 05 74 FF FF FF 4C 8B CB 0F 45 C8 33 D2 89 4C 24 28 48 83 64 24 20 00 33 C9 FF 
    15 62 FE FF FF 33 C0 48 81 C4 A0 00 00 00 5B C3 CC CC CC CC CC CC CC 48 83 EC 38 8B 05 0A 0F 00 
    00 44 8B 0D FF 0E 00 00 4C 8D 05 D8 0E 00 00 89 05 E6 0E 00 00 48 8D 05 DF 0E 00 00 48 8D 15 CC 
    0E 00 00 48 8D 0D B5 0E 00 00 48 89 44 24 20 FF 15 8A FE FF FF 89 05 BC 0E 00 00 48 83 C4 38 C3 
    CC CC CC CC CC CC CC 48 8B C4 48 89 58 08 48 89 78 10 4C 89 60 18 41 55 48 81 EC B0 00 00 00 33 
    DB 89 5C 24 20 48 8D 48 88 FF 15 60 FD FF FF 90 65 48 8B 04 25 30 00 00 00 48 8B 78 08 44 8B E3 
    33 C0 F0 48 0F B1 3D 1C 14 00 00 74 1A 48 3B C7 75 08 41 BC 01 00 00 00 EB 0D B9 E8 03 00 00 FF 
    15 92 FD FF FF EB D9 8B 05 F2 13 00 00 83 F8 01 75 0A 8D 48 1E E8 65 04 00 00 EB 67 8B 05 DD 13 
    00 00 3B C3 75 53 C7 05 CF 13 00 00 01 00 00 00 4C 8D 2D 28 FE FF FF 48 8D 3D 09 FE FF FF 48 89 
    7C 24 30 8B C3 89 5C 24 24 49 3B FD 73 1D 3B C3 75 19 48 8B 0F 48 3B CB 74 06 FF D1 89 44 24 24 
    48 83 C7 08 48 89 7C 24 30 EB DE 3B C3 74 14 B8 FF 00 00 00 E9 52 01 00 00 C7 05 E0 0D 00 00 01 
    00 00 00 8B 05 76 13 00 00 83 F8 01 75 1D 48 8D 15 AA FD FF FF 48 8D 0D 93 FD FF FF E8 D2 03 00 
    00 C7 05 54 13 00 00 02 00 00 00 44 3B E3 75 0A 48 8B C3 48 87 05 4D 13 00 00 48 39 1D 4E 13 00 
    00 74 1F 48 8D 0D 45 13 00 00 E8 5C 03 00 00 3B C3 74 0F 45 33 C0 41 8D 50 02 33 C9 FF 15 2D 13 
    00 00 48 8B 0D 06 FD FF FF 48 39 19 75 0A B8 FF 00 00 00 E9 D3 00 00 00 48 8B 09 48 89 4C 24 28 
    8B 54 24 20 66 83 39 20 77 73 66 39 19 74 04 3B D3 75 6A 66 39 19 74 11 66 83 39 20 77 0B 48 83 
    C1 02 48 89 4C 24 28 EB EA F6 44 24 7C 01 0F B7 84 24 80 00 00 00 41 B9 0A 00 00 00 44 0F 45 C8 
    4C 8B C1 33 D2 48 8D 0D D3 EB FF FF E8 96 FD FF FF 89 05 08 0D 00 00 39 1D E6 0C 00 00 75 08 8B 
    C8 FF 15 90 FC FF FF 39 1D F6 0C 00 00 75 0C FF 15 8A FC FF FF 8B 05 E4 0C 00 00 EB 4E 66 83 39 
    22 75 0D 8B C3 3B D3 0F 94 C0 8B D0 89 44 24 20 48 83 C1 02 48 89 4C 24 28 E9 66 FF FF FF 89 05 
    BB 0C 00 00 33 DB 39 1D 97 0C 00 00 75 09 8B C8 FF 15 51 FC FF FF CC 39 1D A6 0C 00 00 75 0C FF 
    15 3A FC FF FF 8B 05 94 0C 00 00 4C 8D 9C 24 B0 00 00 00 49 8B 5B 10 49 8B 7B 18 4D 8B 63 20 49 
    8B E3 41 5D C3 CC CC CC CC CC CC 48 83 EC 28 B8 4D 5A 00 00 66 39 05 24 EB FF FF 74 04 33 C0 EB 
    4F 48 63 0D 53 EB FF FF 48 8D 05 10 EB FF FF 48 03 C8 81 39 50 45 00 00 75 E3 0F B7 41 18 3D 0B 
    01 00 00 74 1A 3D 0B 02 00 00 75 D1 33 C0 83 B9 84 00 00 00 0E 76 19 39 81 F8 00 00 00 EB 0E 33 
    C0 83 79 74 0E 76 09 39 81 E8 00 00 00 0F 95 C0 B9 02 00 00 00 89 05 E8 0B 00 00 E8 93 02 00 00 
    8B C8 FF 15 57 FB FF FF 48 8B 0D 58 FB FF FF 8B 05 FE 0B 00 00 49 83 CB FF 4C 89 1D 6F 11 00 00 
    4C 89 1D 70 11 00 00 89 01 48 8B 0D 3F FB FF FF 8B 05 D9 0B 00 00 89 01 E8 EE 01 00 00 83 3D 83 
    0B 00 00 00 75 0D 48 8D 0D DE 01 00 00 FF 15 24 FB FF FF 33 C0 48 83 C4 28 C3 CC CC CC CC CC CC 
    CC CC CC 48 83 EC 28 E8 73 02 00 00 48 83 C4 28 E9 D2 FC FF FF CC CC CC CC CC CC CC CC CC CC CC 
    CC CC CC CC CC 66 66 0F 1F 84 00 00 00 00 00 48 3B 0D 39 0B 00 00 75 12 48 C1 C1 10 66 F7 C1 FF 
    FF 75 03 C2 00 00 48 C1 C9 10 E9 EC 02 00 00 CC CC CC CC CC CC CC CC 48 83 EC 28 48 8B 01 81 38 
    63 73 6D E0 75 2C 83 78 18 04 75 26 8B 40 20 3D 20 05 93 19 74 15 3D 21 05 93 19 74 0E 3D 22 05 
    93 19 74 07 3D 00 40 99 01 75 07 FF 15 66 FA FF FF CC 33 C0 48 83 C4 28 C3 CC CC CC CC CC CC 48 
    83 EC 28 48 8D 0D AD FF FF FF FF 15 B7 F9 FF FF 33 C0 48 83 C4 28 C3 CC CC CC CC CC CC FF 25 94 
    FA FF FF CC CC CC CC CC CC FF 25 80 FA FF FF CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC 48 
    8B C1 B9 4D 5A 00 00 66 39 08 74 03 33 C0 C3 48 63 48 3C 48 03 C8 33 C0 81 39 50 45 00 00 75 0C 
    BA 0B 02 00 00 66 39 51 18 0F 94 C0 F3 C3 CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC 4C 
    63 41 3C 45 33 C9 4C 8B D2 4C 03 C1 41 0F B7 40 14 45 0F B7 58 06 4A 8D 4C 00 18 45 85 DB 74 1E 
    8B 51 0C 4C 3B D2 72 0A 8B 41 08 03 C2 4C 3B D0 72 0F 41 FF C1 48 83 C1 28 45 3B CB 72 E2 33 C0 
    C3 48 8B C1 C3 CC CC CC CC CC CC 48 83 EC 28 4C 8B C1 4C 8D 0D E6 E8 FF FF 49 8B C9 E8 5E FF FF 
    FF 85 C0 74 22 4D 2B C1 49 8B D0 49 8B C9 E8 8C FF FF FF 48 85 C0 74 0F 8B 40 24 C1 E8 1F F7 D0 
    83 E0 01 EB 02 33 C0 48 83 C4 28 C3 CC CC CC CC CC CC CC FF 25 6E F9 FF FF CC CC CC CC CC CC FF 
    25 5A F9 FF FF CC CC CC CC CC CC 33 C0 C3 CC CC CC CC CC CC CC CC CC 48 83 EC 18 33 D2 48 3B CA 
    74 42 48 83 F9 FF 74 3C B8 4D 5A 00 00 66 39 01 75 2A 39 51 3C 7C 25 81 79 3C 00 00 00 10 73 1C 
    48 63 41 3C 48 03 C1 48 89 04 24 81 38 50 45 00 00 48 0F 45 C2 48 8B D0 48 89 04 24 EB 06 33 D2 
    48 89 14 24 48 8B C2 48 83 C4 18 C3 CC CC CC CC CC CC CC 40 53 48 83 EC 20 8B D9 33 C9 FF 15 8C 
    F8 FF FF 48 85 C0 74 28 48 8B C8 E8 87 FF FF FF 48 85 C0 74 1B B9 02 00 00 00 66 39 48 5C 75 04 
    8B C1 EB 0E 66 83 78 5C 03 B8 01 00 00 00 74 02 8B C3 48 83 C4 20 5B C3 CC CC CC CC CC CC CC 48 
    89 5C 24 18 57 48 83 EC 20 48 8B 05 DF 08 00 00 48 83 64 24 30 00 48 BF 32 A2 DF 2D 99 2B 00 00 
    48 3B C7 74 0C 48 F7 D0 48 89 05 C8 08 00 00 EB 76 48 8D 4C 24 30 FF 15 EB F7 FF FF 48 8B 5C 24 
    30 FF 15 E8 F7 FF FF 44 8B D8 49 33 DB FF 15 E4 F7 FF FF 44 8B D8 49 33 DB FF 15 E0 F7 FF FF 48 
    8D 4C 24 38 44 8B D8 49 33 DB FF 15 D7 F7 FF FF 4C 8B 5C 24 38 4C 33 DB 48 B8 FF FF FF FF FF FF 
    00 00 4C 23 D8 48 B8 33 A2 DF 2D 99 2B 00 00 4C 3B DF 4C 0F 44 D8 4C 89 1D 52 08 00 00 49 F7 D3 
    4C 89 1D 50 08 00 00 48 8B 5C 24 40 48 83 C4 20 5F C3 CC CC CC CC CC CC CC CC CC 48 89 4C 24 08 
    48 81 EC 88 00 00 00 48 8D 0D 11 09 00 00 FF 15 0B F7 FF FF 4C 8B 1D FC 09 00 00 4C 89 5C 24 58 
    45 33 C0 48 8D 54 24 60 48 8B 4C 24 58 E8 FD 00 00 00 48 89 44 24 50 48 83 7C 24 50 00 74 41 48 
    C7 44 24 38 00 00 00 00 48 8D 44 24 48 48 89 44 24 30 48 8D 44 24 40 48 89 44 24 28 48 8D 05 BC 
    08 00 00 48 89 44 24 20 4C 8B 4C 24 50 4C 8B 44 24 58 48 8B 54 24 60 33 C9 E8 A5 00 00 00 EB 22 
    48 8B 84 24 88 00 00 00 48 89 05 88 09 00 00 48 8D 84 24 88 00 00 00 48 83 C0 08 48 89 05 15 09 
    00 00 48 8B 05 6E 09 00 00 48 89 05 DF 07 00 00 48 8B 84 24 90 00 00 00 48 89 05 E0 08 00 00 C7 
    05 B6 07 00 00 09 04 00 C0 C7 05 B0 07 00 00 01 00 00 00 48 8B 05 55 07 00 00 48 89 44 24 68 48 
    8B 05 51 07 00 00 48 89 44 24 70 33 C9 FF 15 34 F6 FF FF 48 8D 0D 95 F7 FF FF FF 15 4F F6 FF FF 
    FF 15 51 F6 FF FF BA 09 04 00 C0 48 8B C8 FF 15 4B F6 FF FF 48 81 C4 88 00 00 00 C3 CC CC CC CC 
    CC CC CC FF 25 1E F6 FF FF CC CC CC CC CC CC FF 25 0A F6 FF FF CC CC CC CC CC CC 40 55 48 83 EC 
    20 48 8B EA 48 8B 01 48 8B D1 8B 08 E8 38 FC FF FF 48 83 C4 20 5D C3 CC CC CC CC CC CC 40 55 48 
    83 EC 20 48 8B EA 48 8B 01 33 C9 81 38 05 00 00 C0 0F 94 C1 8B C1 8B C1 48 83 C4 20 5D C3 CC 01 
    04 01 00 04 62 00 00 09 18 09 00 18 C4 1A 00 18 74 19 00 18 34 18 00 18 01 16 00 11 D0 00 00 5E 
    16 00 00 01 00 00 00 B1 12 00 00 7F 14 00 00 1C 1A 00 00 7F 14 00 00 01 04 01 00 04 42 00 00 01 
    06 02 00 06 32 02 50 09 04 01 00 04 42 00 00 5E 16 00 00 01 00 00 00 13 17 00 00 46 17 00 00 3E 
    1A 00 00 46 17 00 00 09 04 01 00 04 22 00 00 5E 16 00 00 01 00 00 00 89 17 00 00 BF 17 00 00 01 
    00 00 00 BF 17 00 00 01 06 02 00 06 32 02 30 01 0A 04 00 0A 34 08 00 0A 32 06 70 01 0C 02 00 0C 
    01 11 00 01 09 03 00 09 01 14 00 02 30 00 00 E8 1B 00 00 FF FF FF FF FF FF FF FF 80 1C 00 00 88 
    10 00 00 60 1B 00 00 FF FF FF FF FF FF FF FF B4 1C 00 00 00 10 00 00 F8 1B 00 00 FF FF FF FF FF 
    FF FF FF 88 1D 00 00 98 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 B0 
    1E 00 00 00 00 00 00 9C 1D 00 00 00 00 00 00 8C 1C 00 00 00 00 00 00 9E 1C 00 00 00 00 00 00 96 
    1E 00 00 00 00 00 00 82 1E 00 00 00 00 00 00 66 1E 00 00 00 00 00 00 52 1E 00 00 00 00 00 00 3E 
    1E 00 00 00 00 00 00 24 1E 00 00 00 00 00 00 0E 1E 00 00 00 00 00 00 F8 1D 00 00 00 00 00 00 E8 
    1D 00 00 00 00 00 00 CE 1D 00 00 00 00 00 00 BA 1D 00 00 00 00 00 00 94 1D 00 00 00 00 00 00 00 
    00 00 00 00 00 00 00 70 1C 00 00 00 00 00 00 00 00 00 00 00 00 00 00 74 1D 00 00 00 00 00 00 62 
    1D 00 00 00 00 00 00 58 1D 00 00 00 00 00 00 4C 1D 00 00 00 00 00 00 38 1D 00 00 00 00 00 00 2A 
    1D 00 00 00 00 00 00 1E 1D 00 00 00 00 00 00 14 1D 00 00 00 00 00 00 0C 1D 00 00 00 00 00 00 02 
    1D 00 00 00 00 00 00 FA 1C 00 00 00 00 00 00 EC 1C 00 00 00 00 00 00 D4 1C 00 00 00 00 00 00 C2 
    1C 00 00 00 00 00 00 00 00 00 00 00 00 00 00 22 01 53 68 65 6C 6C 45 78 65 63 75 74 65 57 00 53 
    48 45 4C 4C 33 32 2E 64 6C 6C 00 6A 02 47 65 74 53 74 61 72 74 75 70 49 6E 66 6F 57 00 DB 02 48 
    65 61 70 53 65 74 49 6E 66 6F 72 6D 61 74 69 6F 6E 00 00 4B 45 52 4E 45 4C 33 32 2E 64 6C 6C 00 
    00 8F 00 5F 5F 77 67 65 74 6D 61 69 6E 61 72 67 73 00 00 53 00 5F 5F 43 5F 73 70 65 63 69 66 69 
    63 5F 68 61 6E 64 6C 65 72 00 00 52 00 5F 58 63 70 74 46 69 6C 74 65 72 00 FF 00 5F 65 78 69 74 
    00 B3 00 5F 63 65 78 69 74 00 00 20 04 65 78 69 74 00 00 71 03 5F 77 63 6D 64 6C 6E 00 6C 01 5F 
    69 6E 69 74 74 65 72 6D 00 A0 00 5F 61 6D 73 67 5F 65 78 69 74 00 00 82 00 5F 5F 73 65 74 75 73 
    65 72 6D 61 74 68 65 72 72 00 00 C4 00 5F 63 6F 6D 6D 6F 64 65 00 00 18 01 5F 66 6D 6F 64 65 00 
    00 80 00 5F 5F 73 65 74 5F 61 70 70 5F 74 79 70 65 00 00 30 00 3F 74 65 72 6D 69 6E 61 74 65 40 
    40 59 41 58 58 5A 00 6D 73 76 63 72 74 2E 64 6C 6C 00 00 C0 04 53 6C 65 65 70 00 B3 04 53 65 74 
    55 6E 68 61 6E 64 6C 65 64 45 78 63 65 70 74 69 6F 6E 46 69 6C 74 65 72 00 1E 02 47 65 74 4D 6F 
    64 75 6C 65 48 61 6E 64 6C 65 57 00 00 A9 03 51 75 65 72 79 50 65 72 66 6F 72 6D 61 6E 63 65 43 
    6F 75 6E 74 65 72 00 9A 02 47 65 74 54 69 63 6B 43 6F 75 6E 74 00 00 CB 01 47 65 74 43 75 72 72 
    65 6E 74 54 68 72 65 61 64 49 64 00 00 C7 01 47 65 74 43 75 72 72 65 6E 74 50 72 6F 63 65 73 73 
    49 64 00 80 02 47 65 74 53 79 73 74 65 6D 54 69 6D 65 41 73 46 69 6C 65 54 69 6D 65 00 CE 04 54 
    65 72 6D 69 6E 61 74 65 50 72 6F 63 65 73 73 00 00 C6 01 47 65 74 43 75 72 72 65 6E 74 50 72 6F 
    63 65 73 73 00 E2 04 55 6E 68 61 6E 64 6C 65 64 45 78 63 65 70 74 69 6F 6E 46 69 6C 74 65 72 00 
    00 26 04 52 74 6C 56 69 72 74 75 61 6C 55 6E 77 69 6E 64 00 00 1F 04 52 74 6C 4C 6F 6F 6B 75 70 
    46 75 6E 63 74 69 6F 6E 45 6E 74 72 79 00 00 18 04 52 74 6C 43 61 70 74 75 72 65 43 6F 6E 74 65 
    78 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
    00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF 
    FF FF FF FF FF FF FF 01 00 00 00 00 00 00 00 32 A2 DF 2D 99 2B 00 00 CD 5D 20 D2 66 D4 FF FF 00 
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 C8 
    11 00 00 31 12 00 00 04 1B 00 00 38 12 00 00 81 12 00 00 60 1A 00 00 88 12 00 00 C6 14 00 00 68 
    1A 00 00 CC 14 00 00 9B 15 00 00 98 1A 00 00 A4 15 00 00 B6 15 00 00 98 1A 00 00 F8 15 00 00 3A 
    16 00 00 98 1A 00 00 40 16 00 00 58 16 00 00 98 1A 00 00 0C 17 00 00 4D 17 00 00 A8 1A 00 00 78 
    17 00 00 CD 17 00 00 C8 1A 00 00 D4 17 00 00 19 18 00 00 E8 1A 00 00 20 18 00 00 D3 18 00 00 F0 
    1A 00 00 DC 18 00 00 FD 19 00 00 FC 1A 00 00 1C 1A 00 00 38 1A 00 00 A0 1A 00 00 3E 1A 00 00 5F 
    1A 00 00 A0 1A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
    00 00 00 00 00 00 00 00 00 00 00 00 00 04 00 03 00 00 00 30 00 00 80 0E 00 00 00 50 00 00 80 10 
    00 00 00 68 00 00 80 18 00 00 00 80 00 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 00 01 
    00 00 00 98 00 00 80 02 00 00 00 B0 00 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 01 
    00 00 00 C8 00 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 01 00 00 00 E0 00 00 80 00 
    00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 01 00 00 00 F8 00 00 80 00 00 00 00 00 00 00 00 00 
    00 00 00 00 00 01 00 09 04 00 00 10 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 09 
    04 00 00 20 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 09 04 00 00 30 01 00 00 00 
    00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 09 04 00 00 40 01 00 00 00 00 00 00 00 00 00 00 00 
    00 00 00 00 00 01 00 09 04 00 00 50 01 00 00 F8 45 00 00 F0 02 00 00 00 00 00 00 00 00 00 00 E8 
    48 00 00 30 01 00 00 00 00 00 00 00 00 00 00 18 4A 00 00 22 00 00 00 00 00 00 00 00 00 00 00 40 
    4A 00 00 68 03 00 00 00 00 00 00 00 00 00 00 60 41 00 00 92 04 00 00 00 00 00 00 00 00 00 00 3C 
    3F 78 6D 6C 20 76 65 72 73 69 6F 6E 3D 22 31 2E 30 22 20 65 6E 63 6F 64 69 6E 67 3D 22 55 54 46 
    2D 38 22 20 73 74 61 6E 64 61 6C 6F 6E 65 3D 22 79 65 73 22 3F 3E 0D 0A 3C 21 2D 2D 20 43 6F 70 
    79 72 69 67 68 74 20 28 63 29 20 4D 69 63 72 6F 73 6F 66 74 20 43 6F 72 70 6F 72 61 74 69 6F 6E 
    20 2D 2D 3E 0D 0A 3C 61 73 73 65 6D 62 6C 79 20 78 6D 6C 6E 73 3D 22 75 72 6E 3A 73 63 68 65 6D 
    61 73 2D 6D 69 63 72 6F 73 6F 66 74 2D 63 6F 6D 3A 61 73 6D 2E 76 31 22 20 6D 61 6E 69 66 65 73 
    74 56 65 72 73 69 6F 6E 3D 22 31 2E 30 22 3E 0D 0A 3C 61 73 73 65 6D 62 6C 79 49 64 65 6E 74 69 
    74 79 0D 0A 20 20 20 20 6E 61 6D 65 3D 22 4D 69 63 72 6F 73 6F 66 74 2E 57 69 6E 64 6F 77 73 2E 
    53 68 65 6C 6C 2E 77 72 69 74 65 22 0D 0A 20 20 20 20 70 72 6F 63 65 73 73 6F 72 41 72 63 68 69 
    74 65 63 74 75 72 65 3D 22 61 6D 64 36 34 22 0D 0A 20 20 20 20 76 65 72 73 69 6F 6E 3D 22 35 2E 
    31 2E 30 2E 30 22 0D 0A 20 20 20 20 74 79 70 65 3D 22 77 69 6E 33 32 22 2F 3E 0D 0A 3C 64 65 73 
    63 72 69 70 74 69 6F 6E 3E 57 69 6E 64 6F 77 73 20 53 68 65 6C 6C 3C 2F 64 65 73 63 72 69 70 74 
    69 6F 6E 3E 0D 0A 3C 64 65 70 65 6E 64 65 6E 63 79 3E 0D 0A 20 20 20 20 3C 64 65 70 65 6E 64 65 
    6E 74 41 73 73 65 6D 62 6C 79 3E 0D 0A 20 20 20 20 20 20 20 20 3C 61 73 73 65 6D 62 6C 79 49 64 
    65 6E 74 69 74 79 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 74 79 70 65 3D 22 77 69 6E 33 32 22 
    0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 6E 61 6D 65 3D 22 4D 69 63 72 6F 73 6F 66 74 2E 57 69 
    6E 64 6F 77 73 2E 43 6F 6D 6D 6F 6E 2D 43 6F 6E 74 72 6F 6C 73 22 0D 0A 20 20 20 20 20 20 20 20 
    20 20 20 20 76 65 72 73 69 6F 6E 3D 22 36 2E 30 2E 30 2E 30 22 0D 0A 20 20 20 20 20 20 20 20 20 
    20 20 20 70 72 6F 63 65 73 73 6F 72 41 72 63 68 69 74 65 63 74 75 72 65 3D 22 2A 22 0D 0A 20 20 
    20 20 20 20 20 20 20 20 20 20 70 75 62 6C 69 63 4B 65 79 54 6F 6B 65 6E 3D 22 36 35 39 35 62 36 
    34 31 34 34 63 63 66 31 64 66 22 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 6C 61 6E 67 75 61 67 
    65 3D 22 2A 22 0D 0A 20 20 20 20 20 20 20 20 2F 3E 0D 0A 20 20 20 20 3C 2F 64 65 70 65 6E 64 65 
    6E 74 41 73 73 65 6D 62 6C 79 3E 0D 0A 3C 2F 64 65 70 65 6E 64 65 6E 63 79 3E 0D 0A 3C 74 72 75 
    73 74 49 6E 66 6F 20 78 6D 6C 6E 73 3D 22 75 72 6E 3A 73 63 68 65 6D 61 73 2D 6D 69 63 72 6F 73 
    6F 66 74 2D 63 6F 6D 3A 61 73 6D 2E 76 33 22 3E 0D 0A 20 20 20 20 3C 73 65 63 75 72 69 74 79 3E 
    0D 0A 20 20 20 20 20 20 20 20 3C 72 65 71 75 65 73 74 65 64 50 72 69 76 69 6C 65 67 65 73 3E 0D 
    0A 20 20 20 20 20 20 20 20 20 20 20 20 3C 72 65 71 75 65 73 74 65 64 45 78 65 63 75 74 69 6F 6E 
    4C 65 76 65 6C 20 6C 65 76 65 6C 3D 22 61 73 49 6E 76 6F 6B 65 72 22 20 75 69 41 63 63 65 73 73 
    3D 22 66 61 6C 73 65 22 2F 3E 0D 0A 20 20 20 20 20 20 20 20 3C 2F 72 65 71 75 65 73 74 65 64 50 
    72 69 76 69 6C 65 67 65 73 3E 0D 0A 20 20 20 20 3C 2F 73 65 63 75 72 69 74 79 3E 0D 0A 3C 2F 74 
    72 75 73 74 49 6E 66 6F 3E 0D 0A 3C 61 70 70 6C 69 63 61 74 69 6F 6E 20 78 6D 6C 6E 73 3D 22 75 
    72 6E 3A 73 63 68 65 6D 61 73 2D 6D 69 63 72 6F 73 6F 66 74 2D 63 6F 6D 3A 61 73 6D 2E 76 33 22 
    3E 0D 0A 20 20 20 20 3C 77 69 6E 64 6F 77 73 53 65 74 74 69 6E 67 73 3E 0D 0A 20 20 20 20 20 20 
    20 20 3C 64 70 69 41 77 61 72 65 20 20 78 6D 6C 6E 73 3D 22 68 74 74 70 3A 2F 2F 73 63 68 65 6D 
    61 73 2E 6D 69 63 72 6F 73 6F 66 74 2E 63 6F 6D 2F 53 4D 49 2F 32 30 30 35 2F 57 69 6E 64 6F 77 
    73 53 65 74 74 69 6E 67 73 22 3E 74 72 75 65 3C 2F 64 70 69 41 77 61 72 65 3E 0D 0A 20 20 20 20 
    3C 2F 77 69 6E 64 6F 77 73 53 65 74 74 69 6E 67 73 3E 0D 0A 3C 2F 61 70 70 6C 69 63 61 74 69 6F 
    6E 3E 0D 0A 3C 2F 61 73 73 65 6D 62 6C 79 3E 0D 0A 00 00 00 00 00 00 28 00 00 00 20 00 00 00 40 
    00 00 00 01 00 04 00 00 00 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
    00 00 00 00 00 80 00 00 80 00 00 00 80 80 00 80 00 00 00 80 00 80 00 80 80 00 00 C0 C0 C0 00 80 
    80 80 00 00 00 FF 00 00 FF 00 00 00 FF FF 00 FF 00 00 00 FF 00 FF 00 FF FF 00 00 FF FF FF 00 00 
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 87 77 77 77 77 77 77 77 77 77 77 07 00 00 00 08 
    FF FF FF FF FF FF FF FF FF FF FF 70 70 00 00 08 77 77 77 77 77 77 77 77 77 77 77 70 70 00 00 08 
    FF FF FF FF FF FF FF FF FF FF FF 70 70 00 00 08 FF FF FF FF FF FF FF FF FF FF FF 70 70 00 00 08 
    77 77 77 77 70 07 77 77 77 77 77 70 70 00 00 08 FF FF FF FF FF 30 0F FF FF FF FF 70 70 00 00 08 
    FF FF FF FF FF F3 F0 08 FF FF FF 70 70 00 00 08 77 77 77 77 77 77 3B F8 00 00 07 70 70 00 00 08 
    FF FF FF FF FF FF F3 FB F7 33 30 70 70 00 00 08 FF FF FF FF FF FF FF 3F BF 73 33 00 70 00 00 08 
    77 77 77 77 77 77 77 73 BB F7 33 34 00 00 00 08 FF FF FF FF FF FF FF FF 3F BB 73 30 00 00 00 08 
    FF FF FF FF FF FF FF FF F3 FB F7 00 00 00 00 08 77 77 77 77 77 77 77 77 77 3F B0 00 00 40 00 08 
    FF FF FF FF FF FF FF FF FF F3 00 00 04 44 00 08 FF FF FF FF FF FF FF FF FF FF 0F 00 4C C4 40 08 
    77 77 77 77 77 77 77 77 77 77 00 F4 C4 CC 40 08 FF FF FF FF FF FF FF FF FF FF F0 0C CC 4C C0 08 
    FF FF FF FF FF FF FF FF FF FF FF 4C BC C4 C0 08 77 77 77 77 77 77 77 77 77 77 77 4C CF CC 40 08 
    FF FF FF FF FF FF FF FF FF FF FF 74 CC FC C0 08 FF FF FF FF FF FF FF FF FF FF FF 70 4C CB C0 08 
    77 77 77 77 77 77 77 77 77 77 77 70 74 CC F0 08 FF FF FF FF FF FF FF FF FF FF FF 70 70 4C C0 08 
    FF FF FF FF FF FF FF FF FF FF FF 70 70 04 C0 08 FF FF FF FF FF FF FF FF FF FF FF 70 70 00 40 08 
    F0 FF 0F F0 FF 0F F0 FF 0F F0 FF 80 70 00 00 08 F0 FF 0F F0 FF 0F F0 FF 0F F0 FF 80 70 00 00 00 
    8F 88 F8 8F 88 F8 8F 88 F8 8F 88 F8 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 E0 
    00 00 3F C0 00 00 1F 80 00 00 0F 80 00 00 0F 80 00 00 0F 80 00 00 0F 80 00 00 0F 80 00 00 0F 80 
    00 00 0F 80 00 00 0F 80 00 00 0F 80 00 00 0F 80 00 00 0F 80 00 00 0F 80 00 00 07 80 00 00 03 80 
    00 00 01 80 00 00 01 80 00 00 01 80 00 00 01 80 00 00 01 80 00 00 01 80 00 00 01 80 00 00 01 80 
    00 00 01 80 00 00 01 80 00 00 09 80 00 00 0D 80 00 00 0F 80 00 00 0F C0 00 00 1F E4 92 49 7F 00 
    00 00 00 00 00 00 00 28 00 00 00 10 00 00 00 20 00 00 00 01 00 04 00 00 00 00 00 80 00 00 00 00 
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 80 00 00 00 80 80 00 80 
    00 00 00 80 00 80 00 80 80 00 00 C0 C0 C0 00 80 80 80 00 00 00 FF 00 00 FF 00 00 00 FF FF 00 FF 
    00 00 00 FF 00 FF 00 FF FF 00 00 FF FF FF 00 00 00 00 00 00 00 00 00 87 77 77 77 77 77 00 00 8F 
    FF FF FF FF F7 00 00 8F FF FF 00 FF F7 00 00 87 77 77 73 00 00 00 00 8F FF FF FF 3B F3 00 00 8F 
    FF FF FF F3 BF 38 00 87 77 77 77 77 3B 30 00 8F FF FF FF FF F3 00 04 8F FF FF FF FF F7 00 C4 87 
    77 77 77 77 77 04 FC 8F FF FF FF FF F7 04 CF 8F FF FF FF FF F7 00 4C 8F 0F 0F 0F 0F 0F 00 04 00 
    F8 F8 F8 F8 F0 00 00 00 00 00 00 00 00 00 00 80 0F 00 00 00 07 00 00 00 07 00 00 00 07 00 00 00 
    07 00 00 00 03 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
    04 00 00 00 06 00 00 80 0F 00 00 D5 5F 00 00 00 00 00 00 00 00 00 00 00 00 01 00 02 00 20 20 10 
    00 01 00 04 00 F0 02 00 00 01 00 10 10 10 00 01 00 04 00 30 01 00 00 02 00 00 00 00 00 00 00 68 
    03 34 00 00 00 56 00 53 00 5F 00 56 00 45 00 52 00 53 00 49 00 4F 00 4E 00 5F 00 49 00 4E 00 46 
    00 4F 00 00 00 00 00 BD 04 EF FE 00 00 01 00 01 00 06 00 01 40 B0 1D 01 00 06 00 01 40 B0 1D 3F 
    00 00 00 00 00 00 00 04 00 04 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 C6 02 00 00 01 
    00 53 00 74 00 72 00 69 00 6E 00 67 00 46 00 69 00 6C 00 65 00 49 00 6E 00 66 00 6F 00 00 00 A2 
    02 00 00 01 00 30 00 34 00 30 00 39 00 30 00 34 00 42 00 30 00 00 00 4C 00 16 00 01 00 43 00 6F 
    00 6D 00 70 00 61 00 6E 00 79 00 4E 00 61 00 6D 00 65 00 00 00 00 00 4D 00 69 00 63 00 72 00 6F 
    00 73 00 6F 00 66 00 74 00 20 00 43 00 6F 00 72 00 70 00 6F 00 72 00 61 00 74 00 69 00 6F 00 6E 
    00 00 00 44 00 0E 00 01 00 46 00 69 00 6C 00 65 00 44 00 65 00 73 00 63 00 72 00 69 00 70 00 74 
    00 69 00 6F 00 6E 00 00 00 00 00 57 00 69 00 6E 00 64 00 6F 00 77 00 73 00 20 00 57 00 72 00 69 
    00 74 00 65 00 00 00 6C 00 26 00 01 00 46 00 69 00 6C 00 65 00 56 00 65 00 72 00 73 00 69 00 6F 
    00 6E 00 00 00 00 00 36 00 2E 00 31 00 2E 00 37 00 36 00 30 00 30 00 2E 00 31 00 36 00 33 00 38 
    00 35 00 20 00 28 00 77 00 69 00 6E 00 37 00 5F 00 72 00 74 00 6D 00 2E 00 30 00 39 00 30 00 37 
    00 31 00 33 00 2D 00 31 00 32 00 35 00 35 00 29 00 00 00 2C 00 06 00 01 00 49 00 6E 00 74 00 65 
    00 72 00 6E 00 61 00 6C 00 4E 00 61 00 6D 00 65 00 00 00 77 00 72 00 69 00 74 00 65 00 00 00 80 
    00 2E 00 01 00 4C 00 65 00 67 00 61 00 6C 00 43 00 6F 00 70 00 79 00 72 00 69 00 67 00 68 00 74 
    00 00 00 A9 00 20 00 4D 00 69 00 63 00 72 00 6F 00 73 00 6F 00 66 00 74 00 20 00 43 00 6F 00 72 
    00 70 00 6F 00 72 00 61 00 74 00 69 00 6F 00 6E 00 2E 00 20 00 41 00 6C 00 6C 00 20 00 72 00 69 
    00 67 00 68 00 74 00 73 00 20 00 72 00 65 00 73 00 65 00 72 00 76 00 65 00 64 00 2E 00 00 00 34 
    00 06 00 01 00 4F 00 72 00 69 00 67 00 69 00 6E 00 61 00 6C 00 46 00 69 00 6C 00 65 00 6E 00 61 
    00 6D 00 65 00 00 00 77 00 72 00 69 00 74 00 65 00 00 00 6A 00 25 00 01 00 50 00 72 00 6F 00 64 
    00 75 00 63 00 74 00 4E 00 61 00 6D 00 65 00 00 00 00 00 4D 00 69 00 63 00 72 00 6F 00 73 00 6F 
    00 66 00 74 00 AE 00 20 00 57 00 69 00 6E 00 64 00 6F 00 77 00 73 00 AE 00 20 00 4F 00 70 00 65 
    00 72 00 61 00 74 00 69 00 6E 00 67 00 20 00 53 00 79 00 73 00 74 00 65 00 6D 00 00 00 00 00 42 
    00 0F 00 01 00 50 00 72 00 6F 00 64 00 75 00 63 00 74 00 56 00 65 00 72 00 73 00 69 00 6F 00 6E 
    00 00 00 36 00 2E 00 31 00 2E 00 37 00 36 00 30 00 30 00 2E 00 31 00 36 00 33 00 38 00 35 00 00 
    00 00 00 44 00 00 00 01 00 56 00 61 00 72 00 46 00 69 00 6C 00 65 00 49 00 6E 00 66 00 6F 00 00 
    00 00 00 24 00 04 00 00 00 54 00 72 00 61 00 6E 00 73 00 6C 00 61 00 74 00 69 00 6F 00 6E 00 00 
    00 00 00 09 04 B0 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
    10 00 00 14 00 00 00 18 A1 30 A1 38 A1 70 A1 78 A1 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    Last edited by vhelp; 7th Feb 2017 at 21:54.
    Quote Quote  
  9. That is why nobody uses Pascal for any real program.
    Quote Quote  
  10. Marsia Mariner
    Guest
    Originally Posted by vhelp View Post
    And here is a full windows 7 "write.exe" 10k filesize, for reference, which took 1 second to process:
    Next time, please choose better names for your applications... write.exe has always meant "Microsoft Write"

    https://en.wikipedia.org/wiki/Microsoft_Write
    Quote Quote  
  11. Member vhelp's Avatar
    Join Date
    Mar 2001
    Location
    New York
    Search Comp PM
    That is why nobody uses Pascal for any real program.
    Well, it seemed simple enough to do so I gave it a shot. I will play around with it some more to see if I can speed it up a bit. I'm sure there are tricks or techniques to use in speeding it up, but I really don't want to cheat that way. I would suspect that given the *same* routine ported to c/c++ it would run about the same speed. If I can't speed this up at least double what I reported, using those same windows 7 files, then, I guess the next level would be to apply clever technique, and to be quite honest, i'm not that clever. But I'll give it a shot.
    Quote Quote  
  12. For most things Pascal is very slow compared to C. Here's basically the same character-by-character conversion in ANSI C (I already had this code because I needed to do it for some reason many years ago):

    Code:
    #include <stdlib.h>
    #include <stdio.h>
    
    /************************************************************************/
    
    int main(int argc, char **argv)
    {
    	FILE *fd;
    	unsigned char c;
    	int counter = 0;
    
    	fd = fopen(argv[1], "rb");
    	if (fd == 0)
    	{
    		fprintf(stderr, "Error opening file (%s)!\n", argv[1]);
    		exit(1);
    	}
    
    	while(1)
    	{
    		if (fread(&c, 1, 1, fd) != 1) // read one byte
    			break; // quit at end of file
    		printf("%02x ", c); // write to console as 2 digit hex and a space
    		counter++; // increment a counter
    		if (!(counter % 16)) // output a newline after every 16'th input bye
    			printf("\n");
    	}
    
    	fflush(fd);
    	fclose(fd);
    	exit(0);
    }
    
    /************************************************************************/
    It takes about 1 second to convert the ~400 KB regedit.exe file.

    Calling fread() to get single characters is pretty slow. And so is fwrite (used implicitly by printf) to write 3 characters at a time. I believe the code could be sped up quite a lot using your own buffering and the open, read, write, etc. functions instead --- reading and writing blocks of data rather than one character at a time. Maybe I'll do it just for fun later today if I have time.
    Last edited by jagabo; 8th Feb 2017 at 10:44.
    Quote Quote  
  13. Member
    Join Date
    Jan 2017
    Location
    Italia
    Search Comp PM
    Thank you all for your answers and your time, I tried with UUDeview (base64, not yEnc because google doesn't support some of the characters ) and it does the job pretty well, the only problem now that I have 5GB and more text documents, I don't know how to open them because notepad++ and chrome crash.
    I guess I could split them with DGSplit, it doesn't harm the files, does it?
    (also, do you know what is the maximum txt size that chrome can handle without finishing its memory?)
    Quote Quote  
  14. OK, here's a faster version in C:

    Code:
    #include <sys\types.h>
    #include <sys\stat.h>
    #include <io.h>
    #include <stdlib.h>
    #include <stdio.h>
    #include <fcntl.h>
    #include <string.h>
    
    #define BUFSIZE 4096
    
    unsigned char inbuf[BUFSIZE];
    unsigned char outbuf[BUFSIZE*4];
    unsigned char hex[16+1] = "0123456789ABCDEF";
    
    /************************************************************************/
    
    int main(int argc, char **argv)
    {
    	int infd, outfd;
    	char outname[1024];
    	int inlen;
    	int outpos;
    
    	infd = _open(argv[1], _O_RDONLY | _O_BINARY);
    	if (infd < 0)
    	{
    		fprintf(stderr, "Error opening input file (%s)!\n", argv[1]);
    		exit(1);
    	}
    	_lseek(infd, 0, SEEK_SET);
    
    	strcpy(outname, argv[1]);
    	strcat(outname, ".txt");
    
    	outfd = _open(outname, _O_CREAT | _O_WRONLY | _O_BINARY | _O_TRUNC, _S_IREAD | _S_IWRITE);
    	if (outfd == -1)
    	{
    		fprintf(stderr, "Error opening output file (%s)!\n", outname);
    		_close(infd);
    		return(1);
    	}
    
    	while(1)
    	{
    		inlen = _read(infd, inbuf, sizeof(inbuf));
    		if (inlen <= 0)
    			break;
    
    		outpos = 0;
    		for (int i=0; i<inlen; i++)
    		{
    			outbuf[outpos++] = hex[(inbuf[i] >> 4) & 0x0f];
    			outbuf[outpos++] = hex[(inbuf[i]     ) & 0x0f];
    			outbuf[outpos++] = ' ';
    			if (((i+1)%16) == 0)
    			{
    				outbuf[outpos++] = 0x0D;
    				outbuf[outpos++] = 0x0A;
    			}
    		}
    		
    		_write(outfd, outbuf, outpos);
    	}
    
    	_close(infd);
    	_close(outfd);
    	exit(0);
    }
    
    /************************************************************************/
    It works on 4K blocks instead of single characters. The 400 KB regedit.exe file converted too quickly to measure. A 500 MB video file took about 10 seconds to convert and gave a 1500+ MB text file. Increasing the block size to 1 MB reduces that conversion time to about 2 seconds. Though, at this point Windows is still writing the output file to the disk for a few seconds after the program has terminated. So the program processes the data faster than the hard drive can write it.
    Last edited by jagabo; 8th Feb 2017 at 12:11.
    Quote Quote  
  15. Member
    Join Date
    Aug 2010
    Location
    San Francisco, California
    Search PM
    Originally Posted by ThePi7on View Post
    I tried with UUDeview (base64, not yEnc because google doesn't support some of the characters ) and it does the job pretty well, the only problem now that I have 5GB and more text documents, I don't know how to open them because notepad++ and chrome crash.
    Use the "Break Every X Lines" feature in UUDeview to create smaller files.
    Quote Quote  
  16. Originally Posted by ThePi7on View Post
    I guess I could split them with DGSplit, it doesn't harm the files, does it?
    There is also http://www.hjsplit.org/
    Does the same thing, just looks prettier.
    Quote Quote  
  17. Member
    Join Date
    Jan 2017
    Location
    Italia
    Search Comp PM
    Originally Posted by jagabo View Post
    OK, here's a faster version in C:



    It works on 4K blocks instead of single characters. The 400 KB regedit.exe file converted too quickly to measure. A 500 MB video file took about 10 seconds to convert and gave a 1500+ MB text file. Increasing the block size to 1 MB reduces that conversion time to about 2 seconds. Though, at this point Windows is still writing the output file to the disk for a few seconds after the program has terminated. So the program processes the data faster than the hard drive can write it.

    Thanks a lot! can you just tell me how to open a file with the program? I'm a newbie in programming, at school we're doing c++ ,but we're still at the basics :/
    Quote Quote  
  18. Member
    Join Date
    Jan 2017
    Location
    Italia
    Search Comp PM
    Originally Posted by JVRaines View Post
    Originally Posted by ThePi7on View Post
    I tried with UUDeview (base64, not yEnc because google doesn't support some of the characters ) and it does the job pretty well, the only problem now that I have 5GB and more text documents, I don't know how to open them because notepad++ and chrome crash.
    Use the "Break Every X Lines" feature in UUDeview to create smaller files.
    Thank you!
    Quote Quote  
  19. Originally Posted by ThePi7on View Post
    Thanks a lot! can you just tell me how to open a file with the program? I'm a newbie in programming, at school we're doing c++ ,but we're still at the basics :/
    It takes the name of the file on the command line. Or you can drag/drop a file onto the EXE. It produces a file with the same name as the source, plus ".txt". For example:

    Code:
    Bin2hex video.mp4
    produces "video.mp4.txt". The file doesn't have to be a video. It can be any file.

    I mean this just a quick demonstration. And to be useful, you'll need the complementary hex2bin which I haven't written. And to be a real tool you'll probably want to add error detection, error correction, etc.
    Quote Quote  
  20. Member
    Join Date
    Jan 2017
    Location
    Italia
    Search Comp PM
    Originally Posted by jagabo View Post
    Originally Posted by ThePi7on View Post
    Thanks a lot! can you just tell me how to open a file with the program? I'm a newbie in programming, at school we're doing c++ ,but we're still at the basics :/
    It takes the name of the file on the command line. Or you can drag/drop a file onto the EXE. It produces a file with the same name as the source, plus ".txt". For example:

    Code:
    Bin2hex video.mp4
    produces "video.mp4.txt". The file doesn't have to be a video. It can be any file.

    I mean this just a quick demonstration. And to be useful, you'll need the complementary hex2bin which I haven't written. And to be a real tool you'll probably want to add error detection, error correction, etc.
    Ok got it, Thank you very much for your time
    Quote Quote  



Similar Threads

Visit our sponsor! Try DVDFab and backup Blu-rays!