 Another file that I memorized is a zip file containing a single file, an agar file. That agar file is stored inside the zip file, it is not compressed, it is just stored embedded. Let me show you. So you have three records here, you have a record for the file content, a directory entry record and a record that is the end of the directory. So every record starts with pk, so that's 54b, 0304. And now here you have several fields that are words or double words. So integers that are words or double words, little engine. So first I have the version with which this was created, and that's version 14. Then I have internal flags, which are 0. Then I have the compression mode, and it is just stored, so again 0. And then I have a timestamp, also 0, and a date, which I also set at 0. And here now I have a 4 byte value, which is the CRC32 code of the file here, so the agar file. And that's 3ccf5168. And now here I have two fields, double word fields, that are the size of the compressed and uncompressed file. So that agar file is 68 characters long, so that's 44x decimal, and again here 44. And now I have the length of the filename, and I will use agar.com as a filename. It's a word, and filename I can have extra data, but here I won't have any, so that's 0, 0. And now here I can type the filename and then the content of the agar file. So let me switch agar.com, and then the string for the agar file. Okay, so that's the first record, and that size of the record is 6b, so that's okay. And now let's also check that agar string here. I calculate the hash, so 3ccf5168, so that's correct. So now I'm going to enter the second record, the one for the directory entry, so 54b, there's 102. And then again I have different fields, double word and word size fields. So first of all we have the version with which it was created, and the minimum version that is used to be able to decompress it. So again, 14, 0. Then again I have those flags that are 0. Then I have the compression method that is 0. Then I have a timestamp that I put at 0, and also the date that I put at 0. And then here again we have that CRC32 code, so 3ccf5168. And now again we have the size of the compressed and uncompressed file, so 44, 0, 0, 0, 0, 0. It's a double word, 44, 0, 0, 0, 0, 0. Then we have the length of the file name and nine characters, so 0, 9, 0, 0. Extra data field, 0. And now here so you can have a comment, and the comment, there won't be any comment, so the length is also 0. And now are a couple of more fields. So you have the disk ID field, because zip files can be spread over different disks, and that's something that dates back from floppy disks. So I just want disk and its ID is 0, so 0, 0. Then we have internal attributes, 0, 1. And then we have external attributes, those are the attributes of the flags, the flag attributes of the file. So that's a double word. And it's little union, 20, and if I'm not mistaken that is the backup attribute, so the archive attribute. And now here what rests me is again the position now, because this is an entry, this is a directory entry, and it needs to point to the record that contains the file itself. So that record is at the beginning, so that's offset 0, like this. And now finally I can type the name of the file, like this. And then to end, but we can check first. Okay, so the length here is 55 bytes, so 37 exadismals, so that's also correct. And now the last record is the end of central directory record, so that's 54b0506. And now again different fields, so there is a field for the disk, the number of disks that we have, and also which disk this is, so these are all 0, because there's only one disk. Then the number of files we have in this archive and in this disk, so that's one for each case. And now we have here the size of the different directory records. And remember there is only one record and that size was 37 exadismals, 37, 0, like this. And then we have the pointer, an offset to the first record that is the directory record. And that was 6b, remember that position, 6b00000. And then finally the zip file itself can also have a comment, but we're not going to put a comment here, so zeros. So and that is that file, so let me check, calculate a hash. And indeed here this is the hash of the zip file that I memorized. So now let me show you the decoding of those records using templates. I'm running the zip template and as you can see here, well sorry, I need to show you the templates. Template result like this, okay. And here you can see the three records. So the file record, the directory entry record and the end of central directory record here are those three records. And here are the different fields. So the signature, the version, the flags, the compression, so it is stored 0. The timestamp is 0. The date is also 0 and that results in an undisplayed date. CRC code, the compressed size, the uncompressed size, size of the file name and extra field length. And then here the file name and then we have our second record. Again signature, the version, what it was made by and the version that you need to extract it, the flags, the compression again 0, timestamp 0, date 0, CRC code, compressed size, uncompressed size. The file name length, extra field length and here the comment that is also 0. The disk number start 0, internal attributes 1, external attributes 32, the offset 0 and here the file name. And finally the end of central directory record with the signature, the disk number and the start disk number both 0. The entries on disk and the entries in this directory both 1. The size 55 or 37, 37xad, the offset 107 or 6bxad and here the length of the comment 0.