The program reads data from two files, itemsList-0x.txt and inventoryList-0x.txt . File extensions on Linux may be arbitrary–i.e., these files could have been named with .dat as the extensions. The first file, itemsList-0x.txt , lists all possible items. Each line represents one item in the form id name . Example 1: Sample itemsList-0x.txt 0 Air 1 HP Potion 2 MP Potion 5 Iron Ore 3 Bow Tie 4 Dirt 6 Diamond Ore 7 Iron Ingot 8 Diamond 9 Diamond Block The second file, inventoryList-0x.txt , lists each individual inventory–or storage chest–followed by a list of items. Example 2: Sample inventoryList-0x.txt # 5 - 1 10 - 2 5 - 3 2 # 6 - 4 3 - 5 27 - 6 44 - 7 55 - 8 1 - 9 4 - 4 3 # 2 - 2 5 - 9 4 - 8 1 - 5 2 - 10 5 Each line preceded by # denotes the start of a new inventory. Each line preceded by - denotes an item. The program creates a new inventory each time a # is encountered. When a - is encountered, a stack of items, ItemStack, is created. The ItemStack is placed in the Inventory based on the following rules: If the Inventory is empty, store the ItemStack, and return true . If the Inventory is not empty, examine the Inventory. If a matching ItemStack is found, merge the two ItemStacks and return true . If no matching ItemStack is found, store the new ItemStack and return true . If the Inventory is full, return false . Through the magic of abstraction, this is not one function, but four (4) functions in total. Yes, it does seem unnecessary at first. However, each function does one thing and only one thing. This is an exercise in understanding the thought process behind abstraction, interfaces, and the S / O in S.O.L.I.D (with some C++ code) in a multi-ADT program. Most of your time will be spent on understanding the abstractions (and interfaces) as opposed to spamming cobblestone blocks… I mean C++ code. 3.2 Output The output consists of three reports written to standard output, one after the other. A report listing items that were stored or discarded. A report listing all valid items. Finally, a detailed report is printed. listing data for each inventory: Maximum Capacity–i.e., total slots. Utilized Capacity–i.e., occupied slots Listing of all items. If the program is run with the provided input files, the following output should be generated… Example 3: Sample Output Processing Log: Stored (10) HP Potion Stored ( 5) MP Potion Stored ( 2) Bow Tie Stored ( 3) Dirt Stored (27) Iron Ore Stored (44) Diamond Ore Stored (55) Iron Ingot Stored ( 1) Diamond Stored ( 4) Diamond Block Stored ( 3) Dirt Stored ( 5) MP Potion Stored ( 4) Diamond Block Discarded ( 1) Diamond Discarded ( 2) Iron Ore Item List: 0 Air 1 HP Potion 2 MP Potion 3 Bow Tie 4 Dirt 5 Iron Ore 6 Diamond Ore 7 Iron Ingot 8 Diamond 9 Diamond Block Storage Summary: -Used 3 of 5 slots (10) HP Potion ( 5) MP Potion ( 2) Bow Tie -Used 6 of 6 slots ( 6) Dirt.