<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.exploitee.rs/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Thoughtfraud</id>
	<title>Exploitee.rs - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.exploitee.rs/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Thoughtfraud"/>
	<link rel="alternate" type="text/html" href="https://wiki.exploitee.rs/index.php?title=Special:Contributions/Thoughtfraud"/>
	<updated>2026-06-15T01:44:46Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.45.0-alpha</generator>
	<entry>
		<id>https://wiki.exploitee.rs/index.php?title=Teddy_Ruxpin&amp;diff=3056</id>
		<title>Teddy Ruxpin</title>
		<link rel="alternate" type="text/html" href="https://wiki.exploitee.rs/index.php?title=Teddy_Ruxpin&amp;diff=3056"/>
		<updated>2021-11-06T09:08:58Z</updated>

		<summary type="html">&lt;p&gt;Thoughtfraud: Restore SNX Rom heading&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__FORCETOC__&lt;br /&gt;
{{Disclaimer}}&lt;br /&gt;
[[File:TeddyRuxpin.jpg|left|thumb|140px]]&lt;br /&gt;
[[Category:Toys]]&lt;br /&gt;
&lt;br /&gt;
== Teardown == &lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
&lt;br /&gt;
== BLE Info ==&lt;br /&gt;
&lt;br /&gt;
== SNX Rom ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * Teddy Ruxpin SNXROM BIN format&lt;br /&gt;
 * &lt;br /&gt;
 * Note: Byte-order is little-endian unless stated.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
#define uint32_t unsigned int&lt;br /&gt;
#define uint16_t unsigned short&lt;br /&gt;
#define uint8_t unsigned char&lt;br /&gt;
&lt;br /&gt;
#define char16_t unsigned short&lt;br /&gt;
#define char8_t unsigned char&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * This header appears at the start of the file.&lt;br /&gt;
 */&lt;br /&gt;
struct SNXROMHeader {&lt;br /&gt;
    char16_t SNXROM[6]; // always &amp;quot;SNXROM&amp;quot;&lt;br /&gt;
    uint8_t unknown[28]; // all 0xFF&lt;br /&gt;
    uint32_t _unknown; // always 0x400&lt;br /&gt;
    uint32_t assetTableLength; // Size of the asset table. (Multiply by 4 for bytes)&lt;br /&gt;
    uint8_t __unknown[464]; // all 0xFF&lt;br /&gt;
    /**&lt;br /&gt;
     * assetTablePointers[0] normally points to Metadata. (Idle BIN does not have any metadata though).&lt;br /&gt;
     * &lt;br /&gt;
     * Then in order, follows pointers to:&lt;br /&gt;
     * Left Eye Bitmaps&lt;br /&gt;
     * Right Eye Bitmaps&lt;br /&gt;
     * Audio Headers&lt;br /&gt;
     */ &lt;br /&gt;
    uint32_t assetTablePointers[];&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * General information about this BIN file&lt;br /&gt;
 */ &lt;br /&gt;
struct ROMMetadata {&lt;br /&gt;
    uint16_t unknown; // always 0x0&lt;br /&gt;
    /**&lt;br /&gt;
     * 0 - Intro &amp;quot;Hi. My name is Teddy Ruxpin. Can you and I be friends?&amp;quot;&lt;br /&gt;
     * 1 - All About Bears&lt;br /&gt;
     * 2 - The Airship&lt;br /&gt;
     * 3 - Captured by MudBlups&lt;br /&gt;
     * 4 - Wooly and The Wizard&lt;br /&gt;
     * 5 - The Missing Princess&lt;br /&gt;
     * 6 - Grubby&#039;s Romance&lt;br /&gt;
     * 7 - The Day Teddy Met Grubby&lt;br /&gt;
     * 8 - Teddy Ruxpin&#039;s Birthday&lt;br /&gt;
     * 9 - Teddy Ruxpin&#039;s Christmas&lt;br /&gt;
     * 10 - Teddy Ruxpin Lullabies&lt;br /&gt;
     * 11 - Double Grubby&lt;br /&gt;
     * 12 - The Story of the Faded Fobs&lt;br /&gt;
     * 14 - Teddy Ruxpin Summertime&lt;br /&gt;
     * 15 - Grundo Springtime Singtime&lt;br /&gt;
     */&lt;br /&gt;
    uint16_t storyId;&lt;br /&gt;
    uint16_t numberOfEyeAnimations;&lt;br /&gt;
    uint16_t numberOfEyeBitmaps;&lt;br /&gt;
    uint16_t numberOfVideoSequences;&lt;br /&gt;
    uint16_t numberOfAudioBlocks;&lt;br /&gt;
    /**&lt;br /&gt;
     * ROM file size = (fileSizeUpper) &amp;lt;&amp;lt; 16 + fileSizeLower;&lt;br /&gt;
     * &lt;br /&gt;
     * In Stories 12, 13 &amp;amp; 15, this value is incorrectly copied from Story 11.&lt;br /&gt;
     */ &lt;br /&gt;
    uint16_t fileSizeUpper;&lt;br /&gt;
    uint16_t fileSizeLower;&lt;br /&gt;
    uint8_t _unknown[16]; // all 0xFF    &lt;br /&gt;
    /**&lt;br /&gt;
     * In order, follows:&lt;br /&gt;
     * - EyeAnimationMetadata&lt;br /&gt;
     * - VideoAudioSequence&lt;br /&gt;
     */ &lt;br /&gt;
    MetadataObject metadataObjects[];&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
typedef struct MetadataObject {    &lt;br /&gt;
} MetadataObject;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * An eye animation is defined by using sequencing a number of eye bitmap;&lt;br /&gt;
 * specifying a start and a number of frames.&lt;br /&gt;
 * &lt;br /&gt;
 * eyeId is based on it&#039;s offset in assetTablePointers.&lt;br /&gt;
 */  &lt;br /&gt;
typedef struct EyeAnimationMetadata : MetadataObject {    &lt;br /&gt;
    /**&lt;br /&gt;
     * These identifiers start at 0xB to avoid collision &lt;br /&gt;
     * with other identifiers in the mark table.&lt;br /&gt;
     */ &lt;br /&gt;
    uint16_t animationId;&lt;br /&gt;
    uint16_t startEyeId;&lt;br /&gt;
    uint16_t numberOfEyeFrames;&lt;br /&gt;
    uint8_t _unknown[26]; // all 0xFF    &lt;br /&gt;
} EyeAnimationMetadata;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * An video audio sequence is defined by sequencing a number of audio blocks;&lt;br /&gt;
 * specifying a start and a number of blocks.&lt;br /&gt;
 * &lt;br /&gt;
 * (Most videos usually only have 1 associated audio block).&lt;br /&gt;
 */ &lt;br /&gt;
typedef struct VideoAudioSequence : MetadataObject {&lt;br /&gt;
    uint16_t videoId;&lt;br /&gt;
    uint16_t startAudioId;&lt;br /&gt;
    uint16_t numberOfAudioBlocks;&lt;br /&gt;
    uint8_t _unknown[26]; // all 0xFF&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * A bitmap which represents a single eye.&lt;br /&gt;
 * Pixel encoding is RGB565.&lt;br /&gt;
 * Pixel order starts from top-left.&lt;br /&gt;
 * Each Bitmap is 128x128.&lt;br /&gt;
 */&lt;br /&gt;
struct EyeBitmap {&lt;br /&gt;
    uint16_t pixels[16384];&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
struct AudioHeader {&lt;br /&gt;
    char8_t AU[2]; // always &amp;quot;AU&amp;quot;&lt;br /&gt;
    uint16_t sampleRate; // always 16,000Hz&lt;br /&gt;
    /**&lt;br /&gt;
     * (compressed) bit rate = bitRate * 10&lt;br /&gt;
     */ &lt;br /&gt;
    uint16_t bitRate; // always 3200 (32 kbps)&lt;br /&gt;
    uint16_t channels; // always 1 (mono)    &lt;br /&gt;
    uint32_t totalAudioFrames;&lt;br /&gt;
    /**     &lt;br /&gt;
     * size (in bytes) = sizeOfAudioBinary * 2&lt;br /&gt;
     * &lt;br /&gt;
     * Also at 32 kbps, each block is 80 bytes, &lt;br /&gt;
     * so this is also equal to totalAudioFrames * 80&lt;br /&gt;
     * &lt;br /&gt;
     * Note: Some 0xFFs will normally pad audio binary data afterwards.&lt;br /&gt;
     */ &lt;br /&gt;
    uint32_t sizeOfAudioBinary;&lt;br /&gt;
    uint16_t markFlag; // always 1 (enabled)&lt;br /&gt;
    uint16_t silenceFlag; // always 0 (disabled)&lt;br /&gt;
    uint16_t _unknown; // always 0x0&lt;br /&gt;
    uint16_t __unknown; // always 0xFFFF&lt;br /&gt;
    uint16_t ___unknown; // always 0x0&lt;br /&gt;
    /**&lt;br /&gt;
     * Audio binary data proceeds this header struct.&lt;br /&gt;
     * Use the header size to figure its starting address.&lt;br /&gt;
     */  &lt;br /&gt;
    uint16_t headerSize;&lt;br /&gt;
    MarkTable markTable;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * A table which coordinates eye animations and mouth movement, with audio.&lt;br /&gt;
 */&lt;br /&gt;
typedef struct MarkTable {&lt;br /&gt;
    /**&lt;br /&gt;
     * size (in bytes) = tableLength * 2&lt;br /&gt;
     */  &lt;br /&gt;
    uint16_t tableLength;&lt;br /&gt;
    &lt;br /&gt;
    /**&lt;br /&gt;
     * Entries in the table are sequential.&lt;br /&gt;
     * Each entry has a duration (milliseconds) and an identifier.&lt;br /&gt;
     * The duration represents a period of time that elapses before the next action.&lt;br /&gt;
     * &lt;br /&gt;
     * If the duration is equal or below 32,767 ms, then the entry is as follows:&lt;br /&gt;
     * uint16_t duration;&lt;br /&gt;
     * uint16_t identifier;&lt;br /&gt;
     * &lt;br /&gt;
     * If the duration exceeds 32,767 ms, then the entry is 6 bytes is as follows:&lt;br /&gt;
     * uint16_t durationUpper;&lt;br /&gt;
     * uint16_t durationLower;&lt;br /&gt;
     * uint16_t identifier;&lt;br /&gt;
     * &lt;br /&gt;
     * Where:&lt;br /&gt;
     * - durationUpper must have MSB set (i.e. durationUpper &amp;amp; 0x8000 === durationUpper is true)&lt;br /&gt;
     * - duration = (durationUpper &amp;amp; 0x7FFF) &amp;lt;&amp;lt; 16 + durationLower;&lt;br /&gt;
     * &lt;br /&gt;
     * Identifiers:&lt;br /&gt;
     * - 0x00 mouth closed&lt;br /&gt;
     * - 0x01 mouth half open&lt;br /&gt;
     * - 0x02 mouth fully open&lt;br /&gt;
     * - &amp;gt;= 0x03 matches an animationId&lt;br /&gt;
     * - &amp;gt;= 0x60 (To be confirmed)&lt;br /&gt;
     */  &lt;br /&gt;
    uint16_t tableWords[];&lt;br /&gt;
&lt;br /&gt;
} MarkTable;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Video ==&lt;br /&gt;
&lt;br /&gt;
== Audio ==&lt;/div&gt;</summary>
		<author><name>Thoughtfraud</name></author>
	</entry>
	<entry>
		<id>https://wiki.exploitee.rs/index.php?title=Teddy_Ruxpin&amp;diff=3055</id>
		<title>Teddy Ruxpin</title>
		<link rel="alternate" type="text/html" href="https://wiki.exploitee.rs/index.php?title=Teddy_Ruxpin&amp;diff=3055"/>
		<updated>2021-11-06T09:05:49Z</updated>

		<summary type="html">&lt;p&gt;Thoughtfraud: /* SNX Rom */ Initial start to document ROM structure&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__FORCETOC__&lt;br /&gt;
{{Disclaimer}}&lt;br /&gt;
[[File:TeddyRuxpin.jpg|left|thumb|140px]]&lt;br /&gt;
[[Category:Toys]]&lt;br /&gt;
&lt;br /&gt;
== Teardown == &lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
&lt;br /&gt;
== BLE Info ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * Teddy Ruxpin SXROM BIN format&lt;br /&gt;
 * &lt;br /&gt;
 * Note: Byte-order is little-endian unless stated.&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
#define uint32_t unsigned int&lt;br /&gt;
#define uint16_t unsigned short&lt;br /&gt;
#define uint8_t unsigned char&lt;br /&gt;
&lt;br /&gt;
#define char16_t unsigned short&lt;br /&gt;
#define char8_t unsigned char&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * This header appears at the start of the file.&lt;br /&gt;
 */&lt;br /&gt;
struct SXROMHeader {&lt;br /&gt;
    char16_t SNXROM[6]; // always &amp;quot;SNXROM&amp;quot;&lt;br /&gt;
    uint8_t unknown[28]; // all 0xFF&lt;br /&gt;
    uint32_t _unknown; // always 0x400&lt;br /&gt;
    uint32_t assetTableLength; // Size of the asset table. (Multiply by 4 for bytes)&lt;br /&gt;
    uint8_t __unknown[464]; // all 0xFF&lt;br /&gt;
    /**&lt;br /&gt;
     * assetTablePointers[0] normally points to Metadata. (Idle BIN does not have any metadata though).&lt;br /&gt;
     * &lt;br /&gt;
     * Then in order, follows pointers to:&lt;br /&gt;
     * Left Eye Bitmaps&lt;br /&gt;
     * Right Eye Bitmaps&lt;br /&gt;
     * Audio Headers&lt;br /&gt;
     */ &lt;br /&gt;
    uint32_t assetTablePointers[];&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * General information about this BIN file&lt;br /&gt;
 */ &lt;br /&gt;
struct ROMMetadata {&lt;br /&gt;
    uint16_t unknown; // always 0x0&lt;br /&gt;
    /**&lt;br /&gt;
     * 0 - Intro &amp;quot;Hi. My name is Teddy Ruxpin. Can you and I be friends?&amp;quot;&lt;br /&gt;
     * 1 - All About Bears&lt;br /&gt;
     * 2 - The Airship&lt;br /&gt;
     * 3 - Captured by MudBlups&lt;br /&gt;
     * 4 - Wooly and The Wizard&lt;br /&gt;
     * 5 - The Missing Princess&lt;br /&gt;
     * 6 - Grubby&#039;s Romance&lt;br /&gt;
     * 7 - The Day Teddy Met Grubby&lt;br /&gt;
     * 8 - Teddy Ruxpin&#039;s Birthday&lt;br /&gt;
     * 9 - Teddy Ruxpin&#039;s Christmas&lt;br /&gt;
     * 10 - Teddy Ruxpin Lullabies&lt;br /&gt;
     * 11 - Double Grubby&lt;br /&gt;
     * 12 - The Story of the Faded Fobs&lt;br /&gt;
     * 14 - Teddy Ruxpin Summertime&lt;br /&gt;
     * 15 - Grundo Springtime Singtime&lt;br /&gt;
     */&lt;br /&gt;
    uint16_t storyId;&lt;br /&gt;
    uint16_t numberOfEyeAnimations;&lt;br /&gt;
    uint16_t numberOfEyeBitmaps;&lt;br /&gt;
    uint16_t numberOfVideoSequences;&lt;br /&gt;
    uint16_t numberOfAudioBlocks;&lt;br /&gt;
    /**&lt;br /&gt;
     * ROM file size = (fileSizeUpper) &amp;lt;&amp;lt; 16 + fileSizeLower;&lt;br /&gt;
     * &lt;br /&gt;
     * In Stories 12, 13 &amp;amp; 15, this value is incorrectly copied from Story 11.&lt;br /&gt;
     */ &lt;br /&gt;
    uint16_t fileSizeUpper;&lt;br /&gt;
    uint16_t fileSizeLower;&lt;br /&gt;
    uint8_t _unknown[16]; // all 0xFF    &lt;br /&gt;
    /**&lt;br /&gt;
     * In order, follows:&lt;br /&gt;
     * - EyeAnimationMetadata&lt;br /&gt;
     * - VideoAudioSequence&lt;br /&gt;
     */ &lt;br /&gt;
    MetadataObject metadataObjects[];&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
typedef struct MetadataObject {    &lt;br /&gt;
} MetadataObject;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * An eye animation is defined by using sequencing a number of eye bitmap;&lt;br /&gt;
 * specifying a start and a number of frames.&lt;br /&gt;
 * &lt;br /&gt;
 * eyeId is based on it&#039;s offset in assetTablePointers.&lt;br /&gt;
 */  &lt;br /&gt;
typedef struct EyeAnimationMetadata : MetadataObject {    &lt;br /&gt;
    /**&lt;br /&gt;
     * These identifiers start at 0xB to avoid collision &lt;br /&gt;
     * with other identifiers in the mark table.&lt;br /&gt;
     */ &lt;br /&gt;
    uint16_t animationId;&lt;br /&gt;
    uint16_t startEyeId;&lt;br /&gt;
    uint16_t numberOfEyeFrames;&lt;br /&gt;
    uint8_t _unknown[26]; // all 0xFF    &lt;br /&gt;
} EyeAnimationMetadata;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * An video audio sequence is defined by sequencing a number of audio blocks;&lt;br /&gt;
 * specifying a start and a number of blocks.&lt;br /&gt;
 * &lt;br /&gt;
 * (Most videos usually only have 1 associated audio block).&lt;br /&gt;
 */ &lt;br /&gt;
typedef struct VideoAudioSequence : MetadataObject {&lt;br /&gt;
    uint16_t videoId;&lt;br /&gt;
    uint16_t startAudioId;&lt;br /&gt;
    uint16_t numberOfAudioBlocks;&lt;br /&gt;
    uint8_t _unknown[26]; // all 0xFF&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * A bitmap which represents a single eye.&lt;br /&gt;
 * Pixel encoding is RGB565.&lt;br /&gt;
 * Pixel order starts from top-left.&lt;br /&gt;
 * Each Bitmap is 128x128.&lt;br /&gt;
 */&lt;br /&gt;
struct EyeBitmap {&lt;br /&gt;
    uint16_t pixels[16384];&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
struct AudioHeader {&lt;br /&gt;
    char8_t AU[2]; // always &amp;quot;AU&amp;quot;&lt;br /&gt;
    uint16_t sampleRate; // always 16,000Hz&lt;br /&gt;
    /**&lt;br /&gt;
     * (compressed) bit rate = bitRate * 10&lt;br /&gt;
     */ &lt;br /&gt;
    uint16_t bitRate; // always 3200 (32 kbps)&lt;br /&gt;
    uint16_t channels; // always 1 (mono)    &lt;br /&gt;
    uint32_t totalAudioFrames;&lt;br /&gt;
    /**     &lt;br /&gt;
     * size (in bytes) = sizeOfAudioBinary * 2&lt;br /&gt;
     * &lt;br /&gt;
     * Also at 32 kbps, each block is 80 bytes, &lt;br /&gt;
     * so this is also equal to totalAudioFrames * 80&lt;br /&gt;
     * &lt;br /&gt;
     * Note: Some 0xFFs will normally pad audio binary data afterwards.&lt;br /&gt;
     */ &lt;br /&gt;
    uint32_t sizeOfAudioBinary;&lt;br /&gt;
    uint16_t markFlag; // always 1 (enabled)&lt;br /&gt;
    uint16_t silenceFlag; // always 0 (disabled)&lt;br /&gt;
    uint16_t _unknown; // always 0x0&lt;br /&gt;
    uint16_t __unknown; // always 0xFFFF&lt;br /&gt;
    uint16_t ___unknown; // always 0x0&lt;br /&gt;
    /**&lt;br /&gt;
     * Audio binary data proceeds this header struct.&lt;br /&gt;
     * Use the header size to figure its starting address.&lt;br /&gt;
     */  &lt;br /&gt;
    uint16_t headerSize;&lt;br /&gt;
    MarkTable markTable;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * A table which coordinates eye animations and mouth movement, with audio.&lt;br /&gt;
 */&lt;br /&gt;
typedef struct MarkTable {&lt;br /&gt;
    /**&lt;br /&gt;
     * size (in bytes) = tableLength * 2&lt;br /&gt;
     */  &lt;br /&gt;
    uint16_t tableLength;&lt;br /&gt;
    &lt;br /&gt;
    /**&lt;br /&gt;
     * Entries in the table are sequential.&lt;br /&gt;
     * Each entry has a duration (milliseconds) and an identifier.&lt;br /&gt;
     * The duration represents a period of time that elapses before the next action.&lt;br /&gt;
     * &lt;br /&gt;
     * If the duration is equal or below 32,767 ms, then the entry is as follows:&lt;br /&gt;
     * uint16_t duration;&lt;br /&gt;
     * uint16_t identifier;&lt;br /&gt;
     * &lt;br /&gt;
     * If the duration exceeds 32,767 ms, then the entry is 6 bytes is as follows:&lt;br /&gt;
     * uint16_t durationUpper;&lt;br /&gt;
     * uint16_t durationLower;&lt;br /&gt;
     * uint16_t identifier;&lt;br /&gt;
     * &lt;br /&gt;
     * Where:&lt;br /&gt;
     * - durationUpper must have MSB set (i.e. durationUpper &amp;amp; 0x8000 === durationUpper is true)&lt;br /&gt;
     * - duration = (durationUpper &amp;amp; 0x7FFF) &amp;lt;&amp;lt; 16 + durationLower;&lt;br /&gt;
     * &lt;br /&gt;
     * Identifiers:&lt;br /&gt;
     * - 0x00 mouth closed&lt;br /&gt;
     * - 0x01 mouth half open&lt;br /&gt;
     * - 0x02 mouth fully open&lt;br /&gt;
     * - &amp;gt;= 0x03 matches an animationId&lt;br /&gt;
     * - &amp;gt;= 0x60 (To be confirmed)&lt;br /&gt;
     */  &lt;br /&gt;
    uint16_t tableWords[];&lt;br /&gt;
&lt;br /&gt;
} MarkTable;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Video ==&lt;br /&gt;
&lt;br /&gt;
== Audio ==&lt;/div&gt;</summary>
		<author><name>Thoughtfraud</name></author>
	</entry>
</feed>