/// <summary>
        /// Parses agent related data
        /// </summary>
        private void parseAgentData(Stream stream)
        {
            using (var reader = CreateReader(stream))
            {
                // 4 bytes: player count
                int player_count = reader.ReadInt32();

                // 96 bytes: each player
                for (int i = 0; i < player_count; i++)
                {
                    // 8 bytes: agent
                    ulong agent = reader.ReadUInt64();

                    // 4 bytes: profession
                    uint prof = reader.ReadUInt32();

                    // 4 bytes: is_elite
                    uint is_elite = reader.ReadUInt32();

                    // 2 bytes: toughness
                    int toughness = reader.ReadInt16();
                    // skip concentration
                    ParseHelper.safeSkip(stream, 2);
                    // 2 bytes: healing
                    int healing = reader.ReadInt16();
                    ParseHelper.safeSkip(stream, 2);
                    // 2 bytes: condition
                    int condition = reader.ReadInt16();
                    ParseHelper.safeSkip(stream, 2);
                    // 68 bytes: name
                    String name = ParseHelper.getString(stream, 68, false);
                    //Save
                    Agent a          = new Agent(agent, name, prof, is_elite);
                    var   agent_prof = a.getProf(this.log_data.getBuildVersion(), APIController);
                    switch (agent_prof)
                    {
                    case "NPC":
                        // NPC
                        agent_data.addItem(new AgentItem(agent, name, a.getName() + ":" + prof.ToString().PadLeft(5, '0')), agent_prof);
                        break;

                    // Gadget
                    case "GDG":
                        agent_data.addItem(new AgentItem(agent, name, a.getName() + ":" + (prof & 0x0000ffff).ToString().PadLeft(5, '0')), agent_prof);
                        break;

                    default:
                        // Player
                        agent_data.addItem(new AgentItem(agent, name, agent_prof, toughness, healing, condition), agent_prof);
                        break;
                    }
                }
            }
        }
        //sub Parse methods
        /// <summary>
        /// Parses boss related data
        /// </summary>
        private void parseBossData(Stream stream)
        {
            using (var reader = CreateReader(stream))
            {
                // 12 bytes: arc build version
                var build_version = ParseHelper.getString(stream, 12);
                this.log_data = new LogData(build_version);

                // 1 byte: skip
                ParseHelper.safeSkip(stream, 1);

                // 2 bytes: boss instance ID
                ushort id = reader.ReadUInt16();

                // 1 byte: position
                ParseHelper.safeSkip(stream, 1);

                //Save
                // TempData["Debug"] = build_version +" "+ instid.ToString() ;
                this.boss_data = new BossData(id);
            }
        }
        /// <summary>
        /// Parses skill related data
        /// </summary>
        private void parseSkillData(Stream stream)
        {
            var apiController = new GW2APIController();

            using (var reader = CreateReader(stream))
            {
                // 4 bytes: player count
                int skill_count = reader.ReadInt32();
                //TempData["Debug"] += "Skill Count:" + skill_count.ToString();
                // 68 bytes: each skill
                for (int i = 0; i < skill_count; i++)
                {
                    // 4 bytes: skill ID
                    int skill_id = reader.ReadInt32();

                    // 64 bytes: name
                    var name = ParseHelper.getString(stream, 64);
                    if (skill_id != 0 && int.TryParse(name, out int n) && n == skill_id)
                    {
                        //was it a known boon?
                        foreach (Boon b in Boon.getBoonList())
                        {
                            if (skill_id == b.getID())
                            {
                                name = b.getName();
                            }
                        }
                    }
                    //Save

                    var skill = new SkillItem(skill_id, name);

                    skill.SetGW2APISkill(apiController);
                    skill_data.addItem(skill);
                }
            }
        }