<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://www.explainxkcd.com/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=167.206.204.93</id>
		<title>explain xkcd - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="https://www.explainxkcd.com/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=167.206.204.93"/>
		<link rel="alternate" type="text/html" href="https://www.explainxkcd.com/wiki/index.php/Special:Contributions/167.206.204.93"/>
		<updated>2026-07-10T01:29:44Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>https://www.explainxkcd.com/wiki/index.php?title=566:_Matrix_Revisited&amp;diff=31903</id>
		<title>566: Matrix Revisited</title>
		<link rel="alternate" type="text/html" href="https://www.explainxkcd.com/wiki/index.php?title=566:_Matrix_Revisited&amp;diff=31903"/>
				<updated>2013-03-31T02:52:31Z</updated>
		
		<summary type="html">&lt;p&gt;167.206.204.93: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{comic&lt;br /&gt;
| number    = 566&lt;br /&gt;
| date      = April 8, 2009&lt;br /&gt;
| title     = Matrix Revisited&lt;br /&gt;
| image     = matrix_revisited.png&lt;br /&gt;
| titletext = I actually remember being entertained by both the sequels while in the theater.  They just don't hold up nearly as well in later comparison.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Explanation==&lt;br /&gt;
In the movie ''The Matrix'', all of humanity lives in a computer simulation. Many years ago, robots took over the real world (not the simulation), and placed humans into the simulation while their body heat generated power for the robots. A few characters (Morpheus, male with glasses; Neo, male without glasses; and Trinity; female) have escaped from the Matrix, and are on a mission to free the human race from the robots. In this comic, a number of famous scenes from ''The Matrix'' have been parodied:&lt;br /&gt;
&lt;br /&gt;
1. Morpheus wants to explain the Matrix to Neo, but says it can't be explained (you must see it for yourself to understand). In the comic, Trinity tells Morpheus that he is wrong, and the Matrix is in fact easy to explain.&lt;br /&gt;
&lt;br /&gt;
2. Morpheus shows Neo two pills, one red and one blue, and tells Neo that he can either take the blue pill and wake up, never to hear about the Matrix again, or he can take the red pill and leave the Matrix, and &amp;quot;see how deep the rabbit hole goes&amp;quot; (a reference to &amp;quot;Alice in Wonderland&amp;quot;). In the movie, Neo takes the red pill, and is then briefed on what will happen to him by Morpheus. In the comic, he mixes the two pills (snorting them like cocaine) and winds up in a non-existent dimension.&lt;br /&gt;
&lt;br /&gt;
3. Neo and Trinity must save Morpheus, so they obtain many guns and load them into trenchcoats. Neo is stopped at a security checkpoint in a building in the Matrix. A security guard tells him to remove any metallic items, such as keys, and place them in a bin, then walk through the scanner. In the movie, he open his trenchcoat, revealing his myriad of weapons. In the comic, Neo opens his trenchcoat, and it is implied that he has no other clothing underneath, to which the guard replies, &amp;quot;eww.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
4. There are two sequels to ''The Matrix'', but they are widely regarded as inferior to the original, with some fans pretending they don't exist.&lt;br /&gt;
&lt;br /&gt;
==Transcript==&lt;br /&gt;
Narrator: Today was the ten-year anniversary of the release of &amp;quot;The Matrix&amp;quot;.  I sat down to watch it again.&lt;br /&gt;
&lt;br /&gt;
Woman: Holy Fuck, ten years ago?&lt;br /&gt;
&lt;br /&gt;
{Replay of various scenes from The Matrix..}&lt;br /&gt;
&lt;br /&gt;
[Scene 1]&lt;br /&gt;
&lt;br /&gt;
Morpheus: Unfortunately, no one can explain what the matrix is.  You have to see it for yourself.&lt;br /&gt;
&lt;br /&gt;
Trinity (correcting Morpheus): Sure you can.  It's a computer simulation in which you live, thinking it's reality.&lt;br /&gt;
&lt;br /&gt;
Neo: Oh.&lt;br /&gt;
&lt;br /&gt;
Trinity (to Morpheus, who is glaring at her): ... What?  Look, maybe you just suck at explaining.&lt;br /&gt;
&lt;br /&gt;
[Scene 2]&lt;br /&gt;
&lt;br /&gt;
Morpheus (to Neo): ...Or you take the red pill, and I show you how deep the rabbit hole goes.&lt;br /&gt;
&lt;br /&gt;
[Neo takes BOTH pills from Morpheus...]&lt;br /&gt;
&lt;br /&gt;
[Neo crushes both the red and blue pills into purple powder on a table top...]&lt;br /&gt;
&lt;br /&gt;
[Neo snorts the purple powder...]&lt;br /&gt;
&lt;br /&gt;
[Morpheus and Neo are shown upside down in a frame with inverted colors, i.e., black background with white lines]&lt;br /&gt;
&lt;br /&gt;
Morpheus: NOW look what you've done.&lt;br /&gt;
&lt;br /&gt;
Neo: Where are we?&lt;br /&gt;
&lt;br /&gt;
Morpheus: I have no idea.&lt;br /&gt;
&lt;br /&gt;
[Scene 3]&lt;br /&gt;
&lt;br /&gt;
[Neo, wearing the long  black trench coat, at a metal detector, is accosted by the security guard.]&lt;br /&gt;
&lt;br /&gt;
Guard: Please remove any keys, metallic items, weapons--&lt;br /&gt;
&lt;br /&gt;
[Neo opens his trench coat, his back to the reader, towards the guard, who is facing the reader.  The reader can't see what Neo has under his coat.]&lt;br /&gt;
&lt;br /&gt;
[Same scene as above, but side view: Neo, on the left, is opening his coat toward the guard, who is on the right.  Nobody speaks.]&lt;br /&gt;
&lt;br /&gt;
[Side view again.]&lt;br /&gt;
&lt;br /&gt;
Guard: Eww.&lt;br /&gt;
&lt;br /&gt;
{End of scene replays}&lt;br /&gt;
&lt;br /&gt;
[View of room, where three characters have obviously just finished watching The Matrix. Man1 is sitting on the floor nearest to the TV.  Woman is sitting on the floor, farther from the TV.  Man2 is sitting on a chair, farthest from the TV.]&lt;br /&gt;
&lt;br /&gt;
Man1: I forgot how good that movie was.&lt;br /&gt;
&lt;br /&gt;
Man2: Wanna put on the other two?&lt;br /&gt;
&lt;br /&gt;
[Man1 has turned to face Woman.  They exchange looks without speaking.]&lt;br /&gt;
&lt;br /&gt;
[View of room, which is now empty, as is the chair.]&lt;br /&gt;
&lt;br /&gt;
Sounds from off panel:  Crash&lt;br /&gt;
&lt;br /&gt;
Wham &lt;br /&gt;
&lt;br /&gt;
Someone saying &amp;quot;Ow! Ow!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[Man1 and Woman are back in the room, but the chair is still empty.  Man2 is nowhere to be seen.]&lt;br /&gt;
&lt;br /&gt;
Man1: I forgot how good that movie was.&lt;br /&gt;
&lt;br /&gt;
Woman: Too bad they never made any sequels.&lt;br /&gt;
&lt;br /&gt;
Man1: True.&lt;br /&gt;
&lt;br /&gt;
{{comic discussion}} &lt;br /&gt;
&lt;br /&gt;
[[Category:Comics featuring Cueball]]&lt;br /&gt;
[[Category:Comics featuring Megan]]&lt;br /&gt;
[[Category:Comics with color]]&lt;/div&gt;</summary>
		<author><name>167.206.204.93</name></author>	</entry>

	<entry>
		<id>https://www.explainxkcd.com/wiki/index.php?title=566:_Matrix_Revisited&amp;diff=31902</id>
		<title>566: Matrix Revisited</title>
		<link rel="alternate" type="text/html" href="https://www.explainxkcd.com/wiki/index.php?title=566:_Matrix_Revisited&amp;diff=31902"/>
				<updated>2013-03-31T02:51:28Z</updated>
		
		<summary type="html">&lt;p&gt;167.206.204.93: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{comic&lt;br /&gt;
| number    = 566&lt;br /&gt;
| date      = April 8, 2009&lt;br /&gt;
| title     = Matrix Revisited&lt;br /&gt;
| image     = matrix_revisited.png&lt;br /&gt;
| titletext = I actually remember being entertained by both the sequels while in the theater.  They just don't hold up nearly as well in later comparison.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Explanation==&lt;br /&gt;
In the movie ''The Matrix'', all of humanity lives in a computer simulation. Many years ago, robots took over the real world (not the simulation), and placed humans into the simulation while their body heat generated power for the robots. A few characters (Morpheus, male with glasses; Neo, male without glasses; and Trinity; female) have escaped from the Matrix, and are on a mission to free the human race from the robots. In this comic, a number of famous scenes from ''The Matrix'' have been parodied:&lt;br /&gt;
&lt;br /&gt;
1. Morpheus wants to explain the Matrix to Neo, but says it can't be explained (you must see it for yourself to understand). In the comic, Trinity tells Morpheus that he is wrong, and the Matrix is in fact easy to explain.&lt;br /&gt;
&lt;br /&gt;
2. Morpheus shows Neo two pills, one red and one blue, and tells Neo that he can either take the blue pill and wake up, never to hear about the Matrix again, or he can take the red pill and leave the Matrix, and &amp;quot;see how deep the rabbit hole goes&amp;quot; (a reference to &amp;quot;Alice in Wonderland&amp;quot;). In the movie, Neo takes the red pill, and is then briefed on what will happen to him by Morpheus. In the comic, he mixes the two pills (snorting them like cocaine) and winds up in a non-existent dimension.&lt;br /&gt;
&lt;br /&gt;
3. Neo and Trinity must save Morpheus, so they obtain many guns and load them into trenchcoats. Neo are stopped at a security checkpoint in a building in the Matrix. A security guard tells him to remove any metallic items, such as keys, and place them in a bin, then walk through the scanner. In the movie, he open their trenchcoats, revealing his myriad of weapons. In the comic, Neo opens his trenchcoat, and it is implied that he has no other clothing underneath, to which the guard replies, &amp;quot;eww.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
4. There are two sequels to ''The Matrix'', but they are widely regarded as inferior to the original, with some fans pretending they don't exist.&lt;br /&gt;
&lt;br /&gt;
==Transcript==&lt;br /&gt;
Narrator: Today was the ten-year anniversary of the release of &amp;quot;The Matrix&amp;quot;.  I sat down to watch it again.&lt;br /&gt;
&lt;br /&gt;
Woman: Holy Fuck, ten years ago?&lt;br /&gt;
&lt;br /&gt;
{Replay of various scenes from The Matrix..}&lt;br /&gt;
&lt;br /&gt;
[Scene 1]&lt;br /&gt;
&lt;br /&gt;
Morpheus: Unfortunately, no one can explain what the matrix is.  You have to see it for yourself.&lt;br /&gt;
&lt;br /&gt;
Trinity (correcting Morpheus): Sure you can.  It's a computer simulation in which you live, thinking it's reality.&lt;br /&gt;
&lt;br /&gt;
Neo: Oh.&lt;br /&gt;
&lt;br /&gt;
Trinity (to Morpheus, who is glaring at her): ... What?  Look, maybe you just suck at explaining.&lt;br /&gt;
&lt;br /&gt;
[Scene 2]&lt;br /&gt;
&lt;br /&gt;
Morpheus (to Neo): ...Or you take the red pill, and I show you how deep the rabbit hole goes.&lt;br /&gt;
&lt;br /&gt;
[Neo takes BOTH pills from Morpheus...]&lt;br /&gt;
&lt;br /&gt;
[Neo crushes both the red and blue pills into purple powder on a table top...]&lt;br /&gt;
&lt;br /&gt;
[Neo snorts the purple powder...]&lt;br /&gt;
&lt;br /&gt;
[Morpheus and Neo are shown upside down in a frame with inverted colors, i.e., black background with white lines]&lt;br /&gt;
&lt;br /&gt;
Morpheus: NOW look what you've done.&lt;br /&gt;
&lt;br /&gt;
Neo: Where are we?&lt;br /&gt;
&lt;br /&gt;
Morpheus: I have no idea.&lt;br /&gt;
&lt;br /&gt;
[Scene 3]&lt;br /&gt;
&lt;br /&gt;
[Neo, wearing the long  black trench coat, at a metal detector, is accosted by the security guard.]&lt;br /&gt;
&lt;br /&gt;
Guard: Please remove any keys, metallic items, weapons--&lt;br /&gt;
&lt;br /&gt;
[Neo opens his trench coat, his back to the reader, towards the guard, who is facing the reader.  The reader can't see what Neo has under his coat.]&lt;br /&gt;
&lt;br /&gt;
[Same scene as above, but side view: Neo, on the left, is opening his coat toward the guard, who is on the right.  Nobody speaks.]&lt;br /&gt;
&lt;br /&gt;
[Side view again.]&lt;br /&gt;
&lt;br /&gt;
Guard: Eww.&lt;br /&gt;
&lt;br /&gt;
{End of scene replays}&lt;br /&gt;
&lt;br /&gt;
[View of room, where three characters have obviously just finished watching The Matrix. Man1 is sitting on the floor nearest to the TV.  Woman is sitting on the floor, farther from the TV.  Man2 is sitting on a chair, farthest from the TV.]&lt;br /&gt;
&lt;br /&gt;
Man1: I forgot how good that movie was.&lt;br /&gt;
&lt;br /&gt;
Man2: Wanna put on the other two?&lt;br /&gt;
&lt;br /&gt;
[Man1 has turned to face Woman.  They exchange looks without speaking.]&lt;br /&gt;
&lt;br /&gt;
[View of room, which is now empty, as is the chair.]&lt;br /&gt;
&lt;br /&gt;
Sounds from off panel:  Crash&lt;br /&gt;
&lt;br /&gt;
Wham &lt;br /&gt;
&lt;br /&gt;
Someone saying &amp;quot;Ow! Ow!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[Man1 and Woman are back in the room, but the chair is still empty.  Man2 is nowhere to be seen.]&lt;br /&gt;
&lt;br /&gt;
Man1: I forgot how good that movie was.&lt;br /&gt;
&lt;br /&gt;
Woman: Too bad they never made any sequels.&lt;br /&gt;
&lt;br /&gt;
Man1: True.&lt;br /&gt;
&lt;br /&gt;
{{comic discussion}} &lt;br /&gt;
&lt;br /&gt;
[[Category:Comics featuring Cueball]]&lt;br /&gt;
[[Category:Comics featuring Megan]]&lt;br /&gt;
[[Category:Comics with color]]&lt;/div&gt;</summary>
		<author><name>167.206.204.93</name></author>	</entry>

	<entry>
		<id>https://www.explainxkcd.com/wiki/index.php?title=1190:_Time&amp;diff=31897</id>
		<title>1190: Time</title>
		<link rel="alternate" type="text/html" href="https://www.explainxkcd.com/wiki/index.php?title=1190:_Time&amp;diff=31897"/>
				<updated>2013-03-31T00:10:23Z</updated>
		
		<summary type="html">&lt;p&gt;167.206.204.93: Changed XKCD to the preferred xkcd&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{comic&lt;br /&gt;
| number    = 1190&lt;br /&gt;
| date      = March 25, 2013&lt;br /&gt;
| title     = Time&lt;br /&gt;
| image     = time-animated.gif&lt;br /&gt;
| titletext = Wait for it.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Explanation==&lt;br /&gt;
{{incomplete}}&lt;br /&gt;
This comic is a (still ongoing) series of pictures, that ''was'' updating every 30 minutes, but is now updating on the hour. The updating is done server-side, with the server redirecting the image link (time.png) to a different image every hour. It is impossible to load future images (except for one image that was revealed during a glitch), so readers have to wait for the story to unfold in real time. On the xkcd site itself, one cannot see the past either, only the current image. Past images are available from xkcd if you have the direct link for each image. Multiple fan sites, including this one, have stored past images as well as the links to the originals.&lt;br /&gt;
&lt;br /&gt;
As of this writing, it is still updated after more than 96 hours - even after two new, different comics were posted on the front page.&lt;br /&gt;
&lt;br /&gt;
[[Cueball]] and [[Megan]] are presumably by the seaside - Cueball dips his foot in the water at 07:30, and further on (Megan starts at 11:30) they start making a sandcastle. Cueball leaves with a &amp;quot;Later!&amp;quot; at 25:30 [02/01:30] and returns without a word at 37:00 [02/13:00], continuing in the effort to build the grand sandcastle. Megan leaves without a word at 43:30 [02/19:30].&lt;br /&gt;
&lt;br /&gt;
At 51:00 [03/02:00] Cueball accidentally demolishes the original &amp;quot;turret&amp;quot; Megan and he completed at 17:00 while descending from the top of the castle. In the next frame he realizes what he broke and in the following frame he's in dismay about it. Cueball then repairs the damage.&lt;br /&gt;
&lt;br /&gt;
Cueball leaves at 61:30 [03/13:30], repairing is done. Since then the scene has started to &amp;quot;zoom out&amp;quot;, the first time there has been a change in the &amp;quot;background&amp;quot;. It is starting to reveal another sand castle to the left. At 72:30 [04/00:30], Megan is revealed by this &amp;quot;zoom out,&amp;quot; working on the larger castle to the left.&lt;br /&gt;
&lt;br /&gt;
At 84:30 [04/12:30] Megan asks &amp;quot;Wanna Swim&amp;quot; and Cueball says &amp;quot;Yeah&amp;quot;. This is the second frame which has dialogue in it.&lt;br /&gt;
&lt;br /&gt;
At 86:00 [04/14:00] a slight wave appears and between 89:00 [04/17:00] and 90:30 [04/18:30], the sea level rises very very slightly.&lt;br /&gt;
&lt;br /&gt;
At 87:00 [04/15:30] they return from the swim, Megan is coughing and Cueball asks if she's okay. Megan answers that she's fine, she just got some (presumed) water in her mouth. This is the third frame with dialog.&lt;br /&gt;
&lt;br /&gt;
At 105:30 [05/09:30] an unidentified object appears in the sky.&lt;br /&gt;
&lt;br /&gt;
At 106:00 [05/10:00] the object in the sky gets closer and Cueball notices it.&lt;br /&gt;
&lt;br /&gt;
At 106:30 [05/10:30] the object (a rock?) crashes against one of the castle's parapets.&lt;br /&gt;
&lt;br /&gt;
At 107:30 [05/11:30] Megan partially re-enters the scene from stage right.&lt;br /&gt;
&lt;br /&gt;
At 108:00 [05/12:00] Megan has fully re-entered the scene, she is pulling a miniature trebuchet into the scene with her.&lt;br /&gt;
&lt;br /&gt;
At 108:30 [05/12:30] It is now seen that Megan is pulling a {{w|trebuchet}} (a type of {{w|catapult}}).&lt;br /&gt;
&lt;br /&gt;
At 109:00 [05/13:00] Megan launches an object towards the sandcastle.&lt;br /&gt;
&lt;br /&gt;
At 110:00 [05/14:00] The object launched by Megan hits the sandcastle, Cueball looks upset.&lt;br /&gt;
&lt;br /&gt;
At 111:30 [05/15:30] Cueball joins Megan at the trebuchet and launches one himself.  They alternate launching projectiles.&lt;br /&gt;
&lt;br /&gt;
At 114:30 [05/18:30] Cueball launches an object (rock?) almost straight up in the air ...&lt;br /&gt;
&lt;br /&gt;
At 115:30 [05/19:30] ...they run as it comes back down&lt;br /&gt;
&lt;br /&gt;
A faster, navigable version of the comic is available at [http://xkcd.aubronwood.com xkcd.aubronwood.com], a scrollable mouse wheel version is at [http://geekwagon.net/projects/xkcd1190/ geekwagon.net/projects/xkcd1190/], or an animated gif at [http://primis.org/time/output.gif primis.org]. &lt;br /&gt;
&lt;br /&gt;
There is also a wiki dedicated to this particular comic and the related forum thread, at [http://xkcd-time.wikia.com/ xkcd-time.wikia.com/].&lt;br /&gt;
&lt;br /&gt;
==Frame by Frame Breakdown==&lt;br /&gt;
Below is the list of all the frames of the comic, in the order that they were revealed. The given times denote the time since the comic was initially released on midnight, March 25, 2013, Eastern Daylight Time.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable plainlinks table-padding&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|+ Day 1, Monday, March 25, 2013&lt;br /&gt;
|-&lt;br /&gt;
!Image&lt;br /&gt;
!Time&lt;br /&gt;
!Original image hash&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time.png|00:00]]||01/00:00||time.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time2.png|00:30]]||01/00:30||8eb156cce408df8bb83528382d6a2aa2ce6c74f3c573fd12b058cd1c56420672.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time3.png|01:00]]||01/01:00||1e349a579b5f9b5ed487ddf7e88244b70330941ddedac9c6abf6ed2e3f589b97.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time4.png|01:30]]||01/01:30||e25be2dd49fe9f33c3543cdf640b67e0f2146cc576db5da007a135a278e524ee.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time5.png|02:00]]||01/02:00||5614c47bc2f28b730a360f796cc2993ba04e1f09db0aa3f325e476338777a9c4.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time6.png|02:30]]||01/02:30||69715ed9abc8deac4fa1edfd49a7fde6970b1c8621a381b1fca2c0854b29c0dd.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time7.png|03:00]]||01/03:00||752687b61523144c61736cd89f8c153dc41e19128f72d78d44947ff800f057fa.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time8.png|03:30]]||01/03:30||6e162ade96f5a05b3223df0bcc6fd2ca3c76447a8d6095cee7ff56b2816c959c.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time9.png|04:00]]||01/04:00||cdcc6b46b32c53f8596cd0106958b42c4260b9cbc022e6d94054147aa6554960.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time10.png|04:30]]||01/04:30||49b69c39cdd429cdf367e215a878f536dc566862ae00b91814adfbd264753d89.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time11.png|05:00]]||01/05:00||9a047f93c3da13dea6f46816cb32a7e45d4a8318205cdd9233102f42efe3ada9.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time12.png|05:30]]||01/05:30||109fc96e2c07e50da5c4d0ec77b0722241aa32c494791e7627c52e8f9f773329.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time13.png|06:00]]||01/06:00||fb0cabb8215b77a9d2fbdb44511eccdf9b921125bff5060dc511c9a49e97aa81.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time14.png|06:30]]||01/06:30||426033682a26a0012a6f8e0c47287af91b7991a852d81c77402c937ffbd650c6.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time15.png|07:00]]||01/07:00||007fae5ead14f798ec94f3a3ff6eea56c551d13068a2900e5d50d658ccb2be10.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time16.png|07:30]]||01/07:30||90a46673c29fabb6a1eca1d3d0c5f52103c8e48b246e328dc2aed93b32e48ecb.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time17.png|08:00]]||01/08:00||53732f97cd437d7148faeecaaacbe492ec03ae42f0747933ed3068248f74a25f.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time18.png|08:30]]||01/08:30||a901246fd70dcd0054429bf55ced123ecead832300d73dedd78857d91eaff2df.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time19.png|09:00]]||01/09:00||4b1dd11cb21b5631ee8c36f157076fd6185c62a90a580b41357901fcbb7f2190.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time20.png|09:30]]||01/09:30||407f7e8766a75cc25389b7852cd9be4f3f29994eeb5c35f0f7d5656e186d4331.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time21.png|10:00]]||01/10:00||832a7f13ca0fadc46e93475bb617d78211e32c81c3af0e289a51f8f149707759.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time22.png|10:30]]||01/10:30||847265673986f085460bf1a95b96f7171bcd9a4f1f0a598b2188307d03bcfaa3.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time23.png|11:00]]||01/11:00||d10e0b58110b9182b3dac096bb9f95b299bf7245df8af147428e9070bbbddb1d.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time24.png|11:30]]||01/11:30||4e786f10bc85e1a188f557dad89b4938a3f6baae50200d15924ca238d1e6273c.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time25.png|12:00]]||01/12:00||a3aa116efca3c01d8a64c0c7e79158dc8a62241aba767064e3a6c724cc5ade93.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time26.png|12:30]]||01/12:30||fce427e9442e1b4bea98fa5ddae9d32d7c1cb0219de663196ee160a0e04cd4f8.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time27.png|13:00]]||01/13:00||470d6f2b03fd4b08d4a3f40c1a969ce84ce7b87fefd441a561908f2f5700dc88.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time28.png|13:30]]||01/13:30||c2e1cc28a59b7184d3c3306a655d048669963412c0cf19f164afdc283ffdaf94.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time29.png|14:00]]||01/14:00||b2c52fd7587a8b429a27c0b94aaaec7dda657baa71f8651458440912d6de9049.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time30.png|14:30]]||01/14:30||4ec08b20b0be913f7f0f9faf77b30f4bf2d683d224cc9b87479fd8706ad0aa75.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time31.png|15:00]]||01/15:00||fc4a27fd780fbba0e88ffc6c4552093f082acbdfeeedbcd38319cb5793a07e32.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time32.png|15:30]]||01/15:30||d8a70a1ca8aa3a3f9933169fead2d6f0784863f4563f83345bfafcb42a9dcafa.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time33.png|16:00]]||01/16:00||7725087f3a098133ddd849f7e6ab7660a916acef3315e80244bd849ec491ccb5.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time34.png|16:30]]||01/16:30||bfe8bc08b7cf436df87ed9c4c49a8bfb4be2f09b6e28aa1a54ceedc41cb1ff5a.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time35.png|17:00]]||01/17:00||5295b1eeffffdac0385c84511f7d6258136bd390b7215027bc18f845b189095c.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time36.png|17:30]]||01/17:30||f00822bdd210187c867b3408180ba93f715ca23a178758d12a0e4bddcbee0679.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time37.png|18:00]]||01/18:00||40c463ee4cd0797979ec9ced3fe4705f4f71050d8ade084cc6ce82ba414784c1.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time38.png|18:30]]||01/18:30||f46c6571393bee1ee649a7daae41f6328e63482506aef1e22607d22c47dd7027.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time39.png|19:00]]||01/19:00||88e3a0c8bba935c669606d9134314f811a0961985f968dd5d329e4695acc67c8.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time40.png|19:30]]||01/19:30||c18731de1f786d812d41800e7c86a6b05b537c1e86519776fbaed6a90db7d432.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time41.png|20:00]]||01/20:00||1d51d7be045fe97dc2359c27dd9f9eba8e9f2dc18cc5bea5796ea1e7ebcccf66.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time42.png|20:30]]||01/20:30||121d97f2b78cd18e2f6de40882f13b8759b865581d12edf665e66566edb2e333.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time43.png|21:00]]||01/21:00||13bed763cccb9909272f00e1a1fe92e8360c58a6dfcd322054491bb2d53bd084.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time44.png|21:30]]||01/21:30||6187b994ac8a43b71203733c7d28d384f47480b115524e41a30bfaf3ae77a405.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time45.png|22:00]]||01/22:00||b842e5ecde53fb92406dd1de1d8a07571e67a265a458e57e79c77c2e932f989e.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time46.png|22:30]]||01/22:30||6482bafdc122a24f837eb45ac530c7f7f3f54adfb3f309061520c394f895b184.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time47.png|23:00]]||01/23:00||2545500fe415f155cde884403f48520d64cae3ae7bc2aaf0cdd66a1b3a5ac1e9.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time48.png|23:30]]||01/23:30||1da3859627430022485c53ad90e88e8771b2bec2d60e910b59ef332325bba29f.png&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable plainlinks table-padding&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Image&lt;br /&gt;
!Time&lt;br /&gt;
!Original image hash&lt;br /&gt;
|+ Day 2, Tuesday, March 26, 2013&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time49.png|24:00]]||02/00:00||7db653f7045aa6781ec3c7db54279b56f39ec3ef24807cf02bf58a62492579df.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time50.png|24:30]]||02/00:30||14fc092adc9f3aeeb7b066fb54ead77b56cfb58eed5f4b736ff94f0207959169.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time51.png|25:00]]||02/01:00||50adf5715b4cb9a2a23f87ff0df5f618560fb1fa771afc6d5d38295c6effb40d.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time52.png|25:30]]||02/01:30||a790d74849afdba2bc7f1781ea6fca9fb62b57d46912b14c40d777843d493f1f.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time53.png|26:00]]||02/02:00||427f9bc8bd184356928562515d420ad9e96a1189043c812c4ba8e1bbb6080ffa.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time54.png|26:30]]||02/02:30||6e13d39f86a04ff2770cafdccff6fd953ed0222a69cb322a68ec595b877db391.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time55.png|27:00]]||02/03:00||305b4d99ba0014a0704b7454939205888f404ffb860d1acadc0d79b84cca88d5.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time56.png|27:30]]||02/03:30||f44b9ada26d0fcb9223e51030d4cd8e0384bfa616e850f04f863077c86e06461.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time57.png|28:00]]||02/04:00||201b34b87eafe69f97b131ddc6169bb688749596c19712df5f410ce9bee20f14.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time58.png|28:30]]||02/04:30||69085b480cb82911b19fe8f114909756989eed89b0d227db0f59c1843de7ba24.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time59.png|29:00]]||02/05:00||55f56bff8868cb2dd75035a69140df58bf1ed2b21bb7739fcb28dd12960d0bb8.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time60.png|29:30]]||02/05:30||f5412e1dbb9bcc3f82bb373156266de1a3f841a6720f650a73980b563850f2d7.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time61.png|30:00]]||02/06:00||9363661d4da84ab7cfe2901830663d255696196e54d4c1207874cb6b561adae9.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time62.png|30:30]]||02/06:30||6893da69231d1d44413073c635f1162c12d95068a22a8ac16c39c941b3e47bce.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time63.png|31:00]]||02/07:00||ff12649ab08e48655885fa89536cc034155a9bd4ac9af77775a31565ee232461.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time64.png|31:30]]||02/07:30||297347fd8b2fd37f4df96388ce5f9ead1a89571887b721c087132ba1007cbb7d.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time65.png|32:00]]||02/08:00||5fdcd88b53fc5e7bcb67ca78d3e426f0d4d55bd322a93570ce3485cf6fe95852.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time66.png|32:30]]||02/08:30||a97951338dba988c7362713b946b90b9375fe947500a4a76ba1da7205491b55f.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time67.png|33:00]]||02/09:00||261a4c70a112b18d15211cad535fcd3c6c3f16f58a50e99b6ff30dfbf79bd24d.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time68.png|33:30]]||02/09:30||4cd7d0ed6cb0bd40f6c0f65ed0dfa3a81a6f73c3aff72a5c66351ec8c35027d9.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time69.png|34:00]]||02/10:00||7633b3ae4aac3ddbaa17ed86994a28a20d0d27f3b15047fd932380844287dbbb.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time70.png|34:30]]||02/10:30||125364a4d8c1544bf5234a3ea76bb9f09cb3ee397b60931f7b17f272a82712f2.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time71.png|35:00]]||02/11:00||9334f1c89a263b82b14e9a91b97a5fba59f1147569eb47aeab435e88d0d0b199.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time72.png|35:30]]||02/11:30||805819c16bb562698b72871b8e494d4ef2905fb32dca4b12910d744efe31f9f6.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time73.png|36:00]]||02/12:00||600bbcb1f0dbeb19d343ded7c7c8c6e63cecefd29849e1da68684ed53c384bb3.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time74.png|36:30]]||02/12:30||fdbd747655fc15d13f161e3e9f8d33d7a482d36395293b26f00a598069857d9c.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time75.png|37:00]]||02/13:00||b73990c62d82380282dfdee6dd612d6a1afaa570e1be1d5300bc7da04ced684a.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time76.png|37:30]]||02/13:30||b69578076ee90a852d5d672bd5863eb890f466f835fad1a340ea48b4c10221cc.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time77.png|38:00]]||02/14:00||090f22722547c275aa66a413ef76f824c0e9aabfb7053407cb64ecfb68e44807.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time78.png|38:30]]||02/14:30||0fcc1a8ab0c7b8626da1d9cc214ca8aa21860d439743027b7585a8cd433c2c95.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time79.png|39:00]]||02/15:00||92acbd596029cedb5396ebaa8c6438ee68b30a3076a5968c00194873ea2ad76b.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time80.png|39:30]]||02/15:30||e87184da8a81517fb389a74ce34de3b2f6e4b3c2b55d6de9cc505023d89566e9.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time81.png|40:00]]||02/16:00||b356030ec86a14ae7224ee50d4af063d18cbd48e6a3395a1b6bd0c9e04f6ce70.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time82.png|40:30]]||02/16:30||de86486235c332c24539586f6118e44e3a5ef0655637c42a8ce8aeeeddd7418a.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time83.png|41:00]]||02/17:00||d4674f445c468c3c90c3f8866b05a682fc296190c95ccce771a42eee53543649.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time84.png|41:30]]||02/17:30||d5d760b5528c5276d42e7864ed4189e9f03b68cb2addbb0992e6cfee7af1b6c1.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time85.png|42:00]]||02/18:00||9b440f0dd9a67f61cc38262f1dd93dd8a77c60c23fb09670961748779d88680c.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time86.png|42:30]]||02/18:30||560372e93e497f223f00fb9196494fbf2bc8e06fe01fd12548600d475ef058f6.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time87.png|43:00]]||02/19:00||775f6a4e70b978e69787d57de0cc4df349fe439cc34cb560f11ecf87d2065c1e.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time88.png|43:30]]||02/19:30||caa0f012b4706ebcaaad92356896d91610629e7a064ee179dc1810d72e981a2b.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time89.png|44:00]]||02/20:00||ebb0517f6246f36900e34c511379cabdbdb46a632de0b794e614a66981bbfa2b.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time90.png|44:30]]||02/20:30||fec3db94a8ad6abe44048ad458570346f5f350d7cbf2c6050eff8d62106a019a.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time91.png|45:00]]||02/21:00||75e88091d88984485b51ec90272162112ed280a92a29970f60bc7fcfd6214570.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time92.png|45:30]]||02/21:30||293f68d990c4aeb9a9d3b90b74749c1ef605d743cf8a226d254c589c22b839fc.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time93.png|46:00]]||02/22:00||f7dbd7d72c8fb8f487433ebb33c7e365e17da48dc79a1c3457232e72f475f0a1.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time94.png|46:30]]||02/22:30||bf8927f9779cdcdeb7fe7697b1110596663c12ab1e2e4fe5aff4e54ffa484217.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time95.png|47:00]]||02/23:00||de3d109294d00f7ebb54514a8b3f9b0297c06419c9e297c45e5770f1406ab7ae.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time96.png|47:30]]||02/23:30||e594b36574fe7bd54609058b25e3be58ca355bb85cd01d4b9016c1c7a100ab30.png&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable plainlinks table-padding&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Image&lt;br /&gt;
!Time&lt;br /&gt;
!Original image hash&lt;br /&gt;
|+ Day 3, Wednesday, March 27, 2013&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time97.png|48:00]]||03/00:00||3eac1b3e675661ba327350b49f05d45d40d232b20bf74eb44bbb1c0d6860c9d2.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time98.png|48:30]]||03/00:30||a228595caf108b46e53f4fe276ebac8fa1545928b650742b0812298d5dfde441.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time99.png|49:00]]||03/01:00||b8fcc150729d40bf3f3e07c30091a48691cda3ea9b8b0108d06d62bfc1e49b24.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time100.png|49:30]]||03/01:30||fd441796100d891d67e0fc2cb6489534d7ec7f245415a753bb1097dc9f680e76.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time101.png|50:00]]||03/02:00||1e81542c8e2449e1914b12771105ff4e4ec406bdebd8484febcf273f05dce171.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time102.png|50:30]]||03/02:30||e74239a37b32a8b073a4cf0a837fc074ff70471116f5ce1ac9b5cdf529cd93bf.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time103.png|51:00]]||03/03:00||9c8b0e5c90dd5b110ad625410c2e84cc4c676065dff14540e326f04e0685d958.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time104.png|51:30]]||03/03:30||c07bccb54068e923c0207b512a5b320acfb09e78955cc5ebc02cb3905e6a993f.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time105.png|52:00]]||03/04:00||31680693a02591e2915444e89daf81d953bf3e31ccbeabe42bec249c0eb65fac.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time106.png|52:30]]||03/04:30||81efa7c4509ac7a329407d9da25d12ec0a3baec50e06588586961575e2d65c2c.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time107.png|53:00]]||03/05:00||5450bd39ee84a394467fabcaf92f1a5711c2a4eca24c8bd8a8cec829496e3dd7.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time108.png|53:30]]||03/05:30||c2ea85f1ab92f2f80e9c4655c47f5c7effc0a7da01c8a88493864845855b3be8.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time109.png|54:00]]||03/06:00||a6adae53099480f255efedbc9016fa8d7a35b7585df857eb862c899ea61e8e48.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time110.png|54:30]]||03/06:30||ec55b55b7975789bb4027014f70c83e4d9531af3b4002011c89ebe21da650757.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time111.png|55:00]]||03/07:00||7bef63e1f585b0f3533aa3bd74f5a6acb5165a3cd2dd733bb55684ef637824bd.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time112.png|55:30]]||03/07:30||36ae35d270bffc4d2f361136bcdd0f77339e70d6d2e671d552cbc019e2d65991.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time113.png|56:00]]||03/08:00||dee195fbda954e00f088392b150c75cfbe33126d76f9fb910c0ffb51d5630d94.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time114.png|56:30]]||03/08:30||be5c157cb9d932684f0f8076d0695a428eab022c734bbe448ea42ac2955e4402.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time115.png|57:00]]||03/09:00||d40f6d35639642db88ea44f3983cc1bba646f71f7221357df6b2b8161c5e67cf.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time116.png|57:30]]||03/09:30||936c86c4ecc817ada8b6e601df8a1e65850882ca80edf78dd98a37e7ffb18893.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time117.png|58:00]]||03/10:00||3c3566958f0430bb674416ecbd57bf611da92cfefc2e50e44a49cc00f9299036.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time118.png|58:30]]||03/10:30||244b0f188398cefff270856d4c0ee9af0c2db8134fa70943add99edb27b7cdd9.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time119.png|59:00]]||03/11:00||e27f5926edcf05b2e2b41910c389b74344235785e012da24df115c7ad3e7f002.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time120.png|59:30]]||03/11:30||124dad543960a6f296094cf15c9ec360facb64fbd1a6bc8505bac3e850ce6ad5.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time121.png|60:00]]||03/12:00||08f2865464505d371e3af50cf8d0f0e69fdb199ff0fabf52da6c45a67e9c49d5.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time122.png|60:30]]||03/12:30||3b977e96932637237697e2a7feef9d59f3b1bd03e49df1a0c8c7e73643df65db.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time123.png|61:00]]||03/13:00||df86194e09adf979ff256993be5d6c0391161a4cdf7eaedb0f030c7e706a74f5.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time124.png|61:30]]||03/13:30||6489605b6f6755c712c8aaaefe668066e36eccaffa0cc9a6f5b3859e43a4ec99.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time125.png|62:00]]||03/14:00||c918850ed18afe2c3f3acbeef9c799aba5b10a8efeb45a2f026565383f0a72bc.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time126.png|62:30]]||03/14:30||48283abb3b3bea7632a09ebf4494cb3023f5fbe1c564d4f27ba162ccc92dd2f3.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time127.png|63:00]]||03/15:00||a2f77a4b339f71bc78bfeafb550318de6a31cfd5cccc4be8ef9cc1ab7cbc4c7b.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time128.png|63:30]]||03/15:30||f8d6d86e39ba397db5f00ee5459508ca2b2cb06a531134ea295a8c7a8c540c2c.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time129.png|64:00]]||03/16:00||96a5aee8f9cafb0382b95c05de69fa1e255eb3d734db4ffe643fa03445b275d2.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time130.png|64:30]]||03/16:30||f86996436f7fdc5d2889cf2ed6695522ccd8bacaba17be9654ba9b5675e596bf.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time131.png|65:00]]||03/17:00||16012cbe4d2465a1d5b33188821cfc60d4b27663d50709933d2633fa1c66fb26.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time132.png|65:30]]||03/17:30||f376229646427451223a2595083b0e7eb8f2af63e17b6b9243e379fb10bbbdfa.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time133.png|66:00]]||03/18:00||b9617babd84de8b63250587724ee364668cf5e4ba62561b91b1cd17d32c92a00.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time134.png|66:30]]||03/18:30||2ad7854603527373dd550f3e065fed7964d3734f06aa366c89b24ae6b96039b2.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time135.png|67:00]]||03/19:00||5be48ef973e98abad7379439d178c501235d8c39597615dcd89eb189ff6d7969.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time136.png|67:30]]||03/19:30||df31189e5b219e9003a31b64d37b3670697e8cabf34a6a4a680b95e0792bcd7d.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time137.png|68:00]]||03/20:00||7de21d7786688b2ada78fd8ce6a367f43b70f5cc1146a03c9b01921586e54d64.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time138.png|68:30]]||03/20:30||d1926493facc13410b142000f4c46e1cf96d3863b2d120a9a5d155a8e84528fc.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time139.png|69:00]]||03/21:00||457a12ac738a7f88c0f6f35837882514fdf06ed25c4f549627508aa50de1d34d.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time140.png|69:30]]||03/21:30||72898115d43cea1451aad2d204597ae9ba53d3820efe22b7ede0532497641d2f.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time141.png|70:00]]||03/22:00||a545e388ebf0177d92bc5104e9a7eec231c1b499cba3b55baa3c8316a8005068.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time142.png|70:30]]||03/22:30||723d460e7c0a3bd93c8d158be8127865bc7fa9456d4df331cc93fda73e0f8889.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time143.png|71:00]]||03/23:00||4c92727698b704ee1d02fbd37c94c220d16be4ad3ff6fc03a3fb77ea6d96434f.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time144.png|71:30]]||03/23:30||6ff7e6fd1af6ec66eab68c8bad6a2d2205a38ba742e2887d568f569fa5289963.png&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable plainlinks table-padding&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Image&lt;br /&gt;
!Time&lt;br /&gt;
!Original image hash&lt;br /&gt;
|+ Day 4, Thursday, March 28, 2013&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time145.png|72:00]]||04/00:00||05457c91f50c216f6071ae194b4d1822770e1792b0c73eb0fba3cbbdeb616ec2.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time146.png|72:30]]||04/00:30||86f07ecad6c1873963da80b9bd0a1568dac1bec84bf5a675bdafdee076de20f8.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time147.png|73:00]]||04/01:00||71a02d54537aa7c26b5136628e9a2cf1bd7584a152b76f72d648c6da5dcaa792.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time148.png|73:30]]||04/01:30||353741527bcc681667b7d26fce0e5855e03e6acbceb5c627e5606d6a67cbc7c3.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time149.png|74:00]]||04/02:00||4cfb1c2824a5e51e161f3ec1c5d2199b0058b60872ef3f26df928bbcd140a7b9.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time150.png|74:30]]||04/02:30||aff5b3e6c82a9711fb69fa639392bd0eb4987bc016ef6e8f742badca1c3b67d3.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time151.png|75:00]]||04/03:00||6b9a4c7c19d902ad81633e1d7b9df4041a2f744ce365e34648f756cf3401b019.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time152.png|75:30]]||04/03:30||0dc7bdfef2b3b9594fbd4ec80b8fb3d835d4ff4002f6d5fe61227fdd7384f9b4.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time153.png|76:00]]||04/04:00||88217a315d96eb39535f8b1564f3827d0b84fb0f031ced232136a773f27189de.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time154.png|76:30]]||04/04:30||dcbe928012a06ae5118d4cd3850a4f1bcc0a7e4e86b2c04751fe79370cbb35bc.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time155.png|77:00]]||04/05:00||1c9e30c1ea206fd46ef2bdfb192cf89e83b48b8d9718cdf5accec49afe6058cd.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time156.png|77:30]]||04/05:30||1e0e30840f50bf42f9c3970703d9274afabb4fe8ac3998b623a1111a7aed9320.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time157.png|78:00]]||04/06:00||d318e77ea28ef148af0f0b7ee275810e5d30f287be1faa493e7eb2163083a4ac.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time158.png|78:30]]||04/06:30||7a9ad04ca9ab488bc7673dfafbd69d384300d2265339020ce2a86befe814b14c.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time159.png|79:00]]||04/07:00||ff7305f8c90cbc9e37825f15b1f199076a270d1fc8365082c0bebd3fcafbceee.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time160.png|79:30]]||04/07:30||8b2d052e799618ffd31c769e528b7dfd3046011cb3973cafcc4610e1dbc0f90c.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time161.png|80:00]]||04/08:00||fdd2953ddeef587809f67b1ee0d7f26241c4007b842a5cff42f52fbf47847e77.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time162.png|80:30]]||04/08:30||778828ccd64092f3fd5bd355c56ac200cbf1bbb7d194073b47dd31440f541987.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time163.png|81:00]]||04/09:00||a11ef76a620cef2817167f7942294610d47bda6e1eef001a83a2408e41d8383c.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time164.png|81:30]]||04/09:30||23114b4d82663a01a3644bc45280f4f85686557f6f96429f72fb56a30fd5af32.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time165.png|82:00]]||04/10:00||40f1d3ba22b0180fd01403f8bc2f285fc9fbb6cec44ce354dfa5a3a79cf8dd6e.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time166.png|82:30]]||04/10:30||111d01029afc7b55c1bb7c85aa96ca9cc5cade53b4a5ab4770723051771f010c.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time167.png|83:00]]||04/11:00||38c86d07370946b20d4cfdffa3bccebc3c482eccedd6e0dbd749f986bd88ad06.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time168.png|83:30]]||04/11:30||fec33645ab92d72764140c657f7d095228e914df7be54b6fdf794c498ed878bb.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time169.png|84:00]]||04/12:00||932c13f387a0d346dde14e3ddd7d598db79e420fdc3ca93c109715377018b86a.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time170.png|84:30]]||04/12:30||0a17cbccb6644aeba7896c8ed20857941e2a0fdd6e21d58cdf6ea1074de81a2d.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time171.png|85:00]]||04/13:00||74684c8be1c329cff776759ab29a3e614834d107ca99626805ce318268e74471.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time172.png|85:30]]||04/13:30||9996f99ec0e08c63b8f50c9900c73ba37417fdeef2a17888748cc0c078370b82.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time173.png|86:00]]||04/14:00||61be4c0049c0e179be0430bc42a65e429ab5c2ebfd3266eb7715d471cef4c5ac.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time174.png|86:30]]||04/14:30||dc04c4f093f993d3dcadd13b2f68953c2326c4f1e06d5bfe3bcdb5351fdacf85.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time175.png|87:00]]||04/15:00||0c13b40fb2d866d6d00a267bbb71f844731d97ed9982f97f1ddc0eaa1a054cb5.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time176.png|87:30]]||04/15:30||7d8d0f7cd3295fef29ee92973b1f4fe9f71caf396599376e01e5a2f203d517d6.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time177.png|88:00]]||04/16:00||8f30c75832821619584d49c74a41ace49b28502bd8cad34920060065dabe4760.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time178.png|88:30]]||04/16:30||3dc97e7c04106693b7857ee9c826b8f967248906ad2542cae843149f3d9de11d.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time179.png|89:00]]||04/17:00||15364ef2ba8609090bdd77af61eb97c2c81e2f4297d344c196b2373b5704158f.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time180.png|89:30]]||04/17:30||c1ede6b96909180ccccd3069bc6c705b9f5192b3efce2cefab1ead3d6f9e6210.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time181.png|90:00]]||04/18:00||0734c09a321730ddd8b56e7e4a0c77b4c66f01854d71af2d082396b4e679bb97.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time182.png|90:30]]||04/18:30||902212c46f09f94e94dbe6e01dfda56368c3cb44c6dc37492b6c3a7d691779ac.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time183.png|91:00]]||04/19:00||74e77717fac78d11fd43085d5d276e4effb653d3f57867f398218fc28c259797.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time184.png|91:30]]||04/19:30||7c052dff32f89bce9a1b8561f1ff88e3f32adf44be3324e0e1e15529d8bfbd5f.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time185.png|92:00]]||04/20:00||d5c4fbc90763b88f1bc39a3483b1f4ff54c0d1401638291e323f2d05665e0254.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time186.png|92:30]]||04/20:30||dd80419285db208bb20b5e5f38b4f18514324e450f9441ea75694551d00ba4c8.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time187.png|93:00]]||04/21:00||96fc73424d680b37f414c9a9c1668a9cb46219c908822b198e1c2d2a46f9e304.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time188.png|93:30]]||04/21:30||e8826d5232471207d9acdda7e861e1b11df7250c138077934d972dbec7e6c713.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time189.png|94:00]]||04/22:00||0583ddbcae4d6554c7ff30db0b41215bd5a987729fc5df3c9478d6945080cf01.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time190.png|94:30]]||04/22:30||d388c7488c115f2aa9b83716d710ad8deefc204788b5b78d12cb3b1e4c13feb0.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time191.png|95:00]]||04/23:00||0a0871fcf81b2d5cf0b38423da70479160bbf76b58e7147bbd92af18b7f2fa02.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time192.png|95:30]]||04/23:30||7a0fb337ec7cfded3864660876fceb71e4ee33271a3fee35a27e2490522f88e1.png&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable plainlinks table-padding&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Image&lt;br /&gt;
!Time&lt;br /&gt;
!Original image hash&lt;br /&gt;
|+ Day 5, Friday, March 29, 2013&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time193.png|96:00]]||05/00:00||380bf765ef848dfa3d0fbce63e33a3beb27ff65c23fd2e9ed9a13960b50e27a6.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time194.png|96:30]]||05/00:30||94324cf6f6c3d6e26e5b322457399ce2b470d385448a93c5836c36a04b5e247d.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time195.png|97:00]]||05/01:00||cf48609ad9cbf5c76fb4dc1b600ebb6000b4c4ac1ca3006c066b36ac6cacd71f.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time196.png|97:30]]||05/01:30||914d38e3bb0d12761722225c519f8e3805f8d9e6983d45c999e1a5b6e9c6fe52.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time197.png|98:00]]||05/02:00||b23b129add263c963346926f87ca9e98fde173cca229b523a4b107179b6c2bfd.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time198.png|98:30]]||05/02:30||d6c3d3f532840c7f7a91bd1a8600d1fd91ec42d8a0c38fdb8e51981f92cb25b6.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time199.png|99:00]]||05/03:00||48c3a3a67873d7b898a6b62262b2b8346da8aea034d2828da49423eaa95ef0c6.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time200.png|99:30]]||05/03:30||b26fd8db9cf5cd02e28b9a9980982a420210c1ce79a5de52a4152d17314a6e75.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time201.png|100:00]]||05/04:00||98309ac10ca3cd7a4103c0af50a1e97d43ac1af8bd3a23d0df60aa2151f14e7e.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time202.png|100:30]]||05/04:30||a836b413645372f23817958930ce833c001a8f4fa068c714f0817da2c9f40851.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time203.png|101:00]]||05/05:00||9f428192b6c9902ae3593bbffa58309151398b7ec831969a26691d250e3ac1fd.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time204.png|101:30]]||05/05:30||fd79a31e913bae398b4f951bd6227c8ff87755877cc854dbb958c986e79f2dc6.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time205.png|102:00]]||05/06:00||23361f7bf8451f9b2d7eafb7a52537abcdbc229e129eaded6b9b1cd24e20cb20.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time206.png|102:30]]||05/06:30||f0a2b35dc2984aa057dca0d308f97f0f4940c6ad54da5f408e34a69ca31b1264.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time207.png|103:00]]||05/07:00||5d047eb381df13212da45c5951b825bfbbd9ec353e74c3c1c12c08560ef00b78.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time208.png|103:30]]||05/07:30||331b29d9377b3488c3b7ab84daf73c449001cb8fed9087a93f8c9c6ed8a07d6f.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time209.png|104:00]]||05/08:00||5829bc10939b5f3186863c9876b825b6f17f65b2c9ccc5ad53f49ee3ff7d6ade.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time210.png|104:30]]||05/08:30||b141c54c85cab825432a74aef6c880687ef74149bccf3a90ab17a9192a620fe3.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time211.png|105:00]]||05/09:00||37eba4d7ce0239d5d8b8aac659f464569debe088399ec70f6ac54036a82640a5.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time212.png|105:30]]||05/09:30||b5d68c92f3be6db7d88ebe95e8ded8e430cf74226170d1c83f0665366723318c.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time213.png|106:00]]||05/10:00||2791df0b398e73e2ef6f076347efa4e096d1dfebb9ed85e8907328b869b47ae2.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time214.png|106:30]]||05/10:30||5c438637048d073f8df904f470857e98f60fdb3bc0a52288981673298ece1aa1.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time215.png|107:00]]||05/11:00||05db632ef7b5854c6b5f78fc86241dab86e367d30a548cb8e11b82927755fd68.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time216.png|107:30]]||05/11:30||123a0b4c0bed576929a92c14121f94c1f05df51e02db4760f3cb337c55285f33.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time217.png|108:00]]||05/12:00||e59dc42db84d46c337e9905ffed21be7375467f13d91271e6562e23aac234460.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time218.png|108:30]]||05/12:30||ed879c1b8163ba7b3fab78d50f7babc2c2d43797e8c8abd0f32c1d9aa5711235.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time219.png|109:00]]||05/13:00||4cf2cb81ec6fefd45435e02bdbe8a8ff4efde70afa810ee1b9c86e112f3ebb50.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time220.png|109:30]]||05/13:30||63a64bacaa5e6b292d2263446d08a04ca3a0f8588051581f95e168d30e8aff43.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time221.png|110:00]]||05/14:00||d150930e1e77708757cce440d3b4a9aa2bcb7991ad58d74ccc6a9f6b8c498928.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time222.png|110:30]]||05/14:30||c64849828274fff4696ca09c2948af41458d65675b42407520537ff1ebbedf62.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time223.png|111:00]]||05/15:00||08d3815ac95c2d88160c5df82e634a6b3f4b568a7e84b7c979a5f6c8816c620d.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time224.png|111:30]]||05/15:30||c3996c2b354208f58f03d3f723c166aee834e8eae2604fbb52e718afe326186f.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time225.png|112:00]]||05/16:00||cf78d3227b705b1dbb66608be417ca68065b3cc10140d05104045422b44d0699.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time226.png|112:30]]||05/16:30||20c76ad813b54775c5c2b49747c077dedb1702b1381a3eacd29f25184237bfc1.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time227.png|113:00]]||05/17:00||190e10a1f345945678fe3131ce3213dc08cac58258325b4c1bd294c937b1ccb3.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time228.png|113:30]]||05/17:30||948876e26ebc53c0dc86521250abde10db4423f2409e2b7ae232e967696530f7.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time229.png|114:00]]||05/18:00||ac0e579380fcc22504418deea5cd2e52c2b474cc667691188a4a1b1c9eb209f2.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time230.png|114:30]]||05/18:30||0aa1f65aafd8bc1392e917d188dbd5905d00bf3ec76502d30dbe90c55712471f.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time231.png|115:00]]||05/19:00||8beeb30463e7b617e56403c7d7cf8b907e9e9425b230c3d548111efc661e3704.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time232.png|115:30]]||05/19:30||c134195b6463d4fb917c1f8f8baf0b1f48648ec6456ad5793115d7525d6e347e.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time233.png|116:00]]||05/20:00||d4aee9e183645e1f04a6fc2e28c2320b2d8c14c7594df0b24527ad1db60e25a2.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time234.png|116:30]]||05/20:30||d93de79988687abbad1f824ea997592f15adc771efe9cb9650396787dede7181.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time235.png|117:00]]||05/21:00||2294962087712b159a1fce469bef14059bf929fb47dceab0333c5a2008fbfaf1.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time236.png|117:30]]||05/21:30||36d19a55ae80eecd1988c3ac2907c8cba353849273f5d7ec008cae32a0d882a0.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time237.png|118:00]]||05/22:00||3161cfc64d70842bd02e28cc01e0c4513a63cc0f6706ada41076ffe9ad4303e8.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time238.png|118:30]]||05/22:30||a34b654398eccccafdfe1272ef1b8920f73268ea4a610230d620127461939d2a.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time239.png|119:00]]||05/23:00||5adc81ebbf379b988de27a88b3db593956a143acd32849b35c54031b75ba7c63.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time240.png|119:30]]||05/23:30||8a734902b6524108baca8054ea964c052d5c468807ddbb3a1b9d6a49dd5ad99d.png&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable plainlinks table-padding&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Image&lt;br /&gt;
!Time&lt;br /&gt;
!Original image hash&lt;br /&gt;
|+ Day 6, Saturday, March 30, 2013 (start updating hourly)&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time241.png|120:00]]||06/00:00||b58d5b9e73aeb09d1cb7749a11d460d55b0e1a97b608a2b6d4ef35ab166a35a4.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time242.png|121:00]]||06/01:00||a34d91201f0d6f798ac2206f97e4f0776ff223fceb00a7c51d6f9b8daa14f366.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time243.png|122:00]]||06/02:00||0464b40b22150831d584f8dd3c84b735182d4951ee79100d5c7759d0dd5d60fa.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time244.png|123:00]]||06/03:00||9c0b8df47c7a04141cd887240f8cc201ea23d2ff48f94a63be335cdc2a271a5d.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time245.png|124:00]]||06/04:00||6d8e898386c71bbf9319202bfff67a2b73f121d13df4b1211260711002df4bbd.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time246.png|125:00]]||06/05:00||76407b7bc376b7f1d611653f105e888f027bc1e8308cacb262ed097ad278d776.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time247.png|126:00]]||06/06:00||7a2a2e622c8ef2c155c7301b4e78c41119cdd3b70d118cf0a0248cf13bcc3c85.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time248.png|127:00]]||06/07:00||3605664e5839078774d6ab111a22d230e03e9363f833dba75de056a0304a6f2e.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time249.png|128:00]]||06/08:00||793ff1d7b827da12512c7fd078cfd107832e77fa5c66b7536a05297d6a51111b.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time250.png|129:00]]||06/09:00||9407d63cdc4af881a34e827242dbdba3328680841dfcdda750a4fe0829f864a3.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time251.png|130:00]]||06/10:00||89b946c4d79b7b9edf1d643bd753068112c4c1d7212c88d1b55684a245d00f8c.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time252.png|131:00]]||06/11:00||472a664d6080e40cda872258f89ec8db899d6edf3fe457873b1729d011c32117.png&lt;br /&gt;
d1b3b1b6e23995a093377c5ddc044dd98a42a3ae1327c8b6620d51d2a7003c1d.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time253.png|132:00]]||06/12:00||506e4482b9dfda6906be12a0f08db916374545d56b4dcc23e220c63d777febd5.png&lt;br /&gt;
b4438d37a73bec8234efdec9b2c6baaf1b39723f34e442c1db65a9860f3eda66.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time254.png|133:00]]||06/13:00||1d9ce7199935b1b629d6b8744e62c7700a3780357b2dc74bb70471db616ddadb.png&lt;br /&gt;
c6976fbb244af4fc2286ffe3ac2cf78d408c1f610ecd71e18b4a677a048f084d.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time255.png|134:00]]||06/14:00||a0912d58db16574d7defdfeda6f4dbb820986d0e6fb38e793e62f8da5b151d98.png&lt;br /&gt;
f8b1ca928e8027868ff903f12f9a3e7396314a8cd13a5c7e8a724c6f718b324e.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time256P.png|135:00]] to&amp;lt;br /&amp;gt;[[Media:time256.png|135:00]]||06/15:00||9ca751515dfcf0f124e0d4c3b6b55efa1e80eff73116d9a8784f2594991ebdfe.png&lt;br /&gt;
changing to&amp;lt;br /&amp;gt;&lt;br /&gt;
89fbcd5accd704c98f0e79b4adee58c7490cca4e53a508ceb050a78ceffd2611.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time257P.png|136:00]] to&amp;lt;br /&amp;gt;[[Media:time257.png|136:00]]||06/16:00||a6c1afdfc9ef6d0479d839e2929771feed170588a10902fde15f8471c61a86d1.png&lt;br /&gt;
changing to&amp;lt;br /&amp;gt;&lt;br /&gt;
715b2c1e6aee87798ff01c8d6d6f8194dc18f06e7db1c7decf774cb45c8ff776.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time258P.png|137:00]] to&amp;lt;br /&amp;gt;[[Media:time258.png|137:00]]||06/17:00||530efe35c4725e88ada29e4f75d1f815917cb1b02db69d2f13d0b3853c44860d.png&lt;br /&gt;
changing to&amp;lt;br /&amp;gt;&lt;br /&gt;
6cb836b5c06e3d46335ab0f757ee62fdc76331f49f101c382c8f48bf479365b1.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time259.png|138:00]]||06/18:00||003169b5a922ecd7a4bc2136743f00771f7575b8fc2be045ddeb25d740724aa7.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time260.png|139:00]]||06/19:00||de41bcd6992f88f14097ebd169b9b555331f95fdbbc19757cb2193d45f0b9fb4.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time261.png|140:00]]||06/20:00||d024f6400efa5ed9ed3393ff65fa15eecf4395cad3b66109eb1b126781741acd.png&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time262.png|141:00]]||06/21:00&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time263.png|142:00]]||06/22:00&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time264.png|143:00]]||06/23:00&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable plainlinks table-padding&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Image&lt;br /&gt;
!Time&lt;br /&gt;
!Original image hash&lt;br /&gt;
|+ Day 7, Sunday, March 31, 2013&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time265.png|144:00]]||07/00:00&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time267.png|145:00]]||07/01:00&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time268.png|146:00]]||07/02:00&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time269.png|147:00]]||07/03:00&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time270.png|148:00]]||07/04:00&lt;br /&gt;
|-&lt;br /&gt;
|[[Media:time271.png|149:00]]||07/05:00&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Transcript==&lt;br /&gt;
:+00:00 [Megan and Cueball sitting on a sandy beach near a body of water]&lt;br /&gt;
:+12:00 [Megan and Cueball start to build a sandcastle.]&lt;br /&gt;
:+25:30&lt;br /&gt;
::Cueball : Later&lt;br /&gt;
::Megan : Bye&lt;br /&gt;
:[Cueball leaves, Megan continues to build the sandcastle]&lt;br /&gt;
:+37:00 [Cueball returns and both continue to build]&lt;br /&gt;
:+43:30 [Megan leaves, Cueball continues to build]&lt;br /&gt;
:+51:00 [Cueball accidentally slips and destroys part of the castle]&lt;br /&gt;
:+61:30 [Cueball completes the sandcastle and leaves]&lt;br /&gt;
:+73:00 [Cartoon zooms out, showing more construction has been taking place off-screen to the left]&lt;br /&gt;
:+81:00 [Megan plants flags on original sandcastle]&lt;br /&gt;
:+83:00 [Megan sits down at the beach]&lt;br /&gt;
:+83:30 [Cueball finished sandcastle on the left and moves to Megan at the beach]&lt;br /&gt;
:+84:30&lt;br /&gt;
::Megan : Wanna swim?&lt;br /&gt;
::Cueball : Yeah.&lt;br /&gt;
::[They both enter the water and exit the picture]&lt;br /&gt;
:+86:00 [Castle at far left begins to crumble]&lt;br /&gt;
:+87:00 [Megan back on the beach, Cueball off screen]&lt;br /&gt;
::Megan : Pffthh&lt;br /&gt;
::Megan : *cough*&lt;br /&gt;
::Cueball : You OK?&lt;br /&gt;
::Megan : Just got some in my mouth.&lt;br /&gt;
:+91:00 [Cueball takes down two flags and makes the two sandcastles into one large sandcastle]&lt;br /&gt;
:+106:30 [A rock, fired by Megan with a small trebuchet, smashes part of the castle Cueball just finished] &lt;br /&gt;
{{comic discussion}}&lt;br /&gt;
[[Category:Comics featuring Cueball]]&lt;br /&gt;
[[Category:Comics featuring Megan]]&lt;br /&gt;
[[Category:Dynamic comics]]&lt;/div&gt;</summary>
		<author><name>167.206.204.93</name></author>	</entry>

	<entry>
		<id>https://www.explainxkcd.com/wiki/index.php?title=Talk:1190:_Time&amp;diff=31358</id>
		<title>Talk:1190: Time</title>
		<link rel="alternate" type="text/html" href="https://www.explainxkcd.com/wiki/index.php?title=Talk:1190:_Time&amp;diff=31358"/>
				<updated>2013-03-27T23:10:44Z</updated>
		
		<summary type="html">&lt;p&gt;167.206.204.93: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Pretty sure we're just getting trolled with this one [[Special:Contributions/99.108.190.136|99.108.190.136]] 04:48, 25 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
Can't tell if this is emo xkcd or trolling xkcd. [[User:Alpha|Alpha]] ([[User talk:Alpha|talk]]) 04:53, 25 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Something seems a little fishy because the image url is different than normal. [[User:Bugefun|Bugefun]] ([[User talk:Bugefun|talk]]) 04:55, 25 March 2013 (UTC)&lt;br /&gt;
:Maybe the comic slowly changes throughout the day. [[User:Alpha|Alpha]] ([[User talk:Alpha|talk]]) 04:56, 25 March 2013 (UTC)&lt;br /&gt;
::Oh god, it does. [[User:Alpha|Alpha]] ([[User talk:Alpha|talk]]) 04:57, 25 March 2013 (UTC)&lt;br /&gt;
:::When uploading different versions of the image, use the naming convention time[iterationNumber].png. We'll compile all the images into one and display them as per [[Traffic Lights]]. '''[[User:Davidy22|&amp;lt;u&amp;gt;{{Color|purple|David}}&amp;lt;font color=green size=3px&amp;gt;y&amp;lt;/font&amp;gt;&amp;lt;/u&amp;gt;&amp;lt;font color=indigo size=4px&amp;gt;²²&amp;lt;/font&amp;gt;]]'''[[User talk:Davidy22|&amp;lt;tt&amp;gt;[talk]&amp;lt;/tt&amp;gt;]] 05:05, 25 March 2013 (UTC)&lt;br /&gt;
::::Alright, so the comic appears to be switching between two states here: between [[media:time2.png|this]] and [[media:time3.png|this]]. If nothing new happens, I'll get to clipping the comics together. '''[[User:Davidy22|&amp;lt;u&amp;gt;{{Color|purple|David}}&amp;lt;font color=green size=3px&amp;gt;y&amp;lt;/font&amp;gt;&amp;lt;/u&amp;gt;&amp;lt;font color=indigo size=4px&amp;gt;²²&amp;lt;/font&amp;gt;]]'''[[User talk:Davidy22|&amp;lt;tt&amp;gt;[talk]&amp;lt;/tt&amp;gt;]] 05:28, 25 March 2013 (UTC)&lt;br /&gt;
:::::Whoop, nope, [[media:time4.png|this]] just came up. Is there more to come? '''[[User:Davidy22|&amp;lt;u&amp;gt;{{Color|purple|David}}&amp;lt;font color=green size=3px&amp;gt;y&amp;lt;/font&amp;gt;&amp;lt;/u&amp;gt;&amp;lt;font color=indigo size=4px&amp;gt;²²&amp;lt;/font&amp;gt;]]'''[[User talk:Davidy22|&amp;lt;tt&amp;gt;[talk]&amp;lt;/tt&amp;gt;]] 05:34, 25 March 2013 (UTC)&lt;br /&gt;
::::::Alright, so a new one is posted every half-hour. Whoopee. '''[[User:Davidy22|&amp;lt;u&amp;gt;{{Color|purple|David}}&amp;lt;font color=green size=3px&amp;gt;y&amp;lt;/font&amp;gt;&amp;lt;/u&amp;gt;&amp;lt;font color=indigo size=4px&amp;gt;²²&amp;lt;/font&amp;gt;]]'''[[User talk:Davidy22|&amp;lt;tt&amp;gt;[talk]&amp;lt;/tt&amp;gt;]] 06:06, 25 March 2013 (UTC)&lt;br /&gt;
:::::::And there's a new one! Megan leaning back and looking up...&lt;br /&gt;
::::::::Well, the image changed, who has the time to make a script to catch the new images and compile them into a gif? https://dl.dropbox.com/u/932170/time.png [[User:Statharas.903|Statharas.903]] ([[User talk:Statharas.903|talk]]) 07:14, 25 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
[[Special:Contributions/72.21.198.66|72.21.198.66]] 05:11, 25 March 2013 (UTC)It could be a reference to the old proverb &amp;quot; time and tide wait for none&amp;quot; Cueball and the girl could be waiting for the tide in the beach! (Just a guess)[[Special:Contributions/72.21.198.66|72.21.198.66]] 05:11, 25 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
The picture does chance with time. The URL includes a changing timestamp that I can't decipher. Compare these two URLS (which have slightly different images:&lt;br /&gt;
http://imgs.xkcd.com/comics/time/8eb156cce408df8bb83528382d6a2aa2ce6c74f3c573fd12b058cd1c56420672.png&lt;br /&gt;
http://imgs.xkcd.com/comics/time/1e349a579b5f9b5ed487ddf7e88244b70330941ddedac9c6abf6ed2e3f589b97.png&lt;br /&gt;
&lt;br /&gt;
Perhaps there is a way to hack the URL to view future images. [[Special:Contributions/199.30.248.121|199.30.248.121]] 05:29, 25 March 2013 (UTC)&lt;br /&gt;
: I would also like to add that knowing randall, these are not the only images. For all we know, the image will still be changing in 5 years while a tree grows in front of them. My point is: Are the URLs hackable, or did he encrypt them? [[Special:Contributions/199.30.248.121|199.30.248.121]] 05:33, 25 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
Likely there is a way to hack the URLs; they look like some sort of hash, probably a hashed timestamp. Of course, he could easily have added some salt to the hash, making it significantly *harder* to hack. But they're strings of a specific length, so it should be pretty easy to bruteforce it, fetch all the images, and then (maybe) reverse-engineer the sequence. *That* all depends on how many of them there are. [[Special:Contributions/76.90.249.178|76.90.249.178]] 05:44, 25 March 2013 (UTC)&lt;br /&gt;
:Good god, do you see how many digits are *in* that hash? The sun'll have burned out by the time we've tested every possible combination of digits. '''[[User:Davidy22|&amp;lt;u&amp;gt;{{Color|purple|David}}&amp;lt;font color=green size=3px&amp;gt;y&amp;lt;/font&amp;gt;&amp;lt;/u&amp;gt;&amp;lt;font color=indigo size=4px&amp;gt;²²&amp;lt;/font&amp;gt;]]'''[[User talk:Davidy22|&amp;lt;tt&amp;gt;[talk]&amp;lt;/tt&amp;gt;]] 05:47, 25 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
It seems that the image is updated every 1/2 hour. [[Special:Contributions/152.23.97.150|152.23.97.150]] 06:17, 25 March 2013 (UTC)&lt;br /&gt;
: Given that the images switch back and forth between other images already seen, and that the comic should be viewable in the future, it seems unlikely that it's any thing like a simple sha256 of part of the timestamp.  I think it's more likely a function of half-hours and minutes (assuming we continue to get a new possible image every half-hour). [[Special:Contributions/99.153.248.206|99.153.248.206]] 06:59, 25 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
::: The images do cycle, yes. But for some reason I have never seen the img where Megan is looking behind her. Also wouldn't it be difficult to show a sequential story (like the rising tide) if the previous images keep cycling ?&lt;br /&gt;
&lt;br /&gt;
Hash appears to be SHA-256. I tried some obvious hashes (&amp;quot;1&amp;quot;, &amp;quot;11901&amp;quot;, &amp;quot;1190_1&amp;quot;, &amp;quot;1190.1&amp;quot;) to no avail. Maybe this is HMAC-SHA256? Also, I would suggest trying Unix timestamps. [[Special:Contributions/131.156.236.149|131.156.236.149]] 06:19, 25 March 2013 (UTC)&lt;br /&gt;
: I've been trying to make educated guesses as to what's being hashed here: http://www.xorbin.com/tools/sha256-hash-calculator ... he could also be using hash(hash2(value)) which would be virtually impossible to crack. [[Special:Contributions/99.153.248.206|99.153.248.206]] 06:59, 25 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
It's entirely possible that the &amp;quot;hash&amp;quot; is actually randomly generated. Just a thought. [[Special:Contributions/129.21.119.153|129.21.119.153]] 07:03, 25 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
Regarding sha256. Its most likely some hash of a timestamp, but if he doesnt wants us to crack it, he would have prefixes a password.. sha256('secretcode17:30'). Im just saying, if he doesnt wants us to crack it, we most likely cant.&lt;br /&gt;
I've tested all unixtimestamps from 1300000000 to 1364390334. Also &amp;quot;00:00&amp;quot; to &amp;quot;23:59&amp;quot;, with and without the colon and a load of other formats. {{unsigned|77.243.128.133}}&lt;br /&gt;
&lt;br /&gt;
Alright, this is probably not going to work, but I'm trying to exploit Randall's awesomeness here. Maybe he decided to take the time-stamps from the user? I don't know if that's even possible... That would then allow people in different time zones to obtain different images simultaneously. (What's the corollary of Godwin's law for a bunch of math-and-science nerds and relativity? Is there one?) Clicking the img src url on the comic's html page, give me this: http://imgs.xkcd.com/comics/time/752687b61523144c61736cd89f8c153dc41e19128f72d78d44947ff800f057fa.png : Never mind.. apparently others see the same image too.&lt;br /&gt;
&lt;br /&gt;
Could he be doing this live? Monitoring the discussion on the net? Collaborative, crowdsourced comic-ing? Reminds me of those you-decide-what-the-character-does-next-and-flip-to-appropriate-page parallel plot novels.&lt;br /&gt;
&lt;br /&gt;
[[Special:Contributions/220.224.246.97|220.224.246.97]] 07:14, 25 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
Let's just compare the two pictures and see how the bottom right changes, which I believe is water and they are indeed waiting for the tide. [[User:Statharas.903|Statharas.903]] ([[User talk:Statharas.903|talk]]) 07:19, 25 March 2013 (UTC)&lt;br /&gt;
:I'm adding urls to pictures bellow, edit freely.&lt;br /&gt;
::They change every 5 minutes, will try to keep track.&lt;br /&gt;
&lt;br /&gt;
http://www.explainxkcd.com/wiki/images/f/f8/time.png &lt;br /&gt;
http://imgs.xkcd.com/comics/time/1e349a579b5f9b5ed487ddf7e88244b70330941ddedac9c6abf6ed2e3f589b97.png&lt;br /&gt;
http://imgs.xkcd.com/comics/time/752687b61523144c61736cd89f8c153dc41e19128f72d78d44947ff800f057fa.png&lt;br /&gt;
http://dl.dropbox.com/u/932170/timeasdf.png &lt;br /&gt;
http://dl.dropbox.com/u/932170/time6.png&lt;br /&gt;
&lt;br /&gt;
:I have uploaded all the different images onto the wiki, in the order that they were revealed. To avoid needless duplication of effort, I'll put them up in the explanation page. '''[[User:Davidy22|&amp;lt;u&amp;gt;{{Color|purple|David}}&amp;lt;font color=green size=3px&amp;gt;y&amp;lt;/font&amp;gt;&amp;lt;/u&amp;gt;&amp;lt;font color=indigo size=4px&amp;gt;²²&amp;lt;/font&amp;gt;]]'''[[User talk:Davidy22|&amp;lt;tt&amp;gt;[talk]&amp;lt;/tt&amp;gt;]] 07:44, 25 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
It just went back to the second image... [[Special:Contributions/220.224.246.97|220.224.246.97]] 07:59, 25 March 2013 (UTC)&lt;br /&gt;
: And now changed to something new.  http://imgs.xkcd.com/comics/time/cdcc6b46b32c53f8596cd0106958b42c4260b9cbc022e6d94054147aa6554960.png&lt;br /&gt;
:: The images do look alike, but they're all different. Thanks David. [[User:Statharas.903|Statharas.903]] ([[User talk:Statharas.903|talk]]) 08:04, 25 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
::: No..I checked the random string. They're exactly the same. In fact, now it's gone back to the second image. Again. [[Special:Contributions/220.224.246.97|220.224.246.97]] 08:07, 25 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
Just found this JavaScript code embedded in the comic HTML source (Update: Reformatted to prevent eye-bleeding): &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;(function (e) {&lt;br /&gt;
    &amp;quot;use strict&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
    function t() {&lt;br /&gt;
        this.data = {}&lt;br /&gt;
    }&lt;br /&gt;
    function n() {&lt;br /&gt;
        this.listeners = new t&lt;br /&gt;
    }&lt;br /&gt;
    function r(e) {&lt;br /&gt;
        setTimeout(function () {&lt;br /&gt;
            throw e&lt;br /&gt;
        }, 0)&lt;br /&gt;
    }&lt;br /&gt;
    function i(e) {&lt;br /&gt;
        this.type = e&lt;br /&gt;
    }&lt;br /&gt;
    function s(e, t) {&lt;br /&gt;
        i.call(this, e), this.data = t.data, this.lastEventId = t.lastEventId&lt;br /&gt;
    }&lt;br /&gt;
    function g(e, t) {&lt;br /&gt;
        var n = Number(e);&lt;br /&gt;
        return (n &amp;lt; 1 ? 1 : n &amp;gt; 18e6 ? 18e6 : n) || t&lt;br /&gt;
    }&lt;br /&gt;
    function y(e, t, n) {&lt;br /&gt;
        try {&lt;br /&gt;
            typeof e[t] == &amp;quot;function&amp;quot; &amp;amp;&amp;amp; e[t](n)&lt;br /&gt;
        } catch (i) {&lt;br /&gt;
            r(i)&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    function b(t, r) {&lt;br /&gt;
        function B() {&lt;br /&gt;
            L = d, N !== null &amp;amp;&amp;amp; (N.abort(), N = null), C !== 0 &amp;amp;&amp;amp; (clearTimeout(C), C = 0), S.readyState = d&lt;br /&gt;
        }&lt;br /&gt;
        function j(e) {&lt;br /&gt;
            var t = L === p || L === h ? N.responseText || &amp;quot;&amp;quot; : &amp;quot;&amp;quot;,&lt;br /&gt;
                n = null;&lt;br /&gt;
            if (L === h) {&lt;br /&gt;
                var r = f ? t !== &amp;quot;&amp;quot; ? N.getResponseHeader(&amp;quot;Content-Type&amp;quot;) : &amp;quot;&amp;quot; : N.contentType;&lt;br /&gt;
                if (r &amp;amp;&amp;amp; v.test(r)) {&lt;br /&gt;
                    L = p, T = !0, x = u, S.readyState = p, n = new i(&amp;quot;open&amp;quot;), S.dispatchEvent(n), y(S, &amp;quot;onopen&amp;quot;, n);&lt;br /&gt;
                    if (L === d) return&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            if (L === p) {&lt;br /&gt;
                t.length &amp;gt; k &amp;amp;&amp;amp; (H = !0, T = !0);&lt;br /&gt;
                var o = 0,&lt;br /&gt;
                    a = t.indexOf(&amp;quot;\r&amp;quot;, k),&lt;br /&gt;
                    l = t.indexOf(&amp;quot;\n&amp;quot;, k);&lt;br /&gt;
                while (a !== -1 || l !== -1) {&lt;br /&gt;
                    a === -1 || l !== -1 &amp;amp;&amp;amp; l &amp;lt; a ? (o = l, l = t.indexOf(&amp;quot;\n&amp;quot;, o + 1)) : (o = a, a = t.indexOf(&amp;quot;\r&amp;quot;, o + 1));&lt;br /&gt;
                    var m = t.slice(k, o),&lt;br /&gt;
                        B = D;&lt;br /&gt;
                    D = t.slice(o, o + 1) === &amp;quot;\r&amp;quot;, k = o + 1;&lt;br /&gt;
                    if (!B || m.length !== 0 || D) {&lt;br /&gt;
                        _.push(m);&lt;br /&gt;
                        var j = _.join(&amp;quot;&amp;quot;);&lt;br /&gt;
                        _.length = 0;&lt;br /&gt;
                        if (j !== &amp;quot;&amp;quot;) {&lt;br /&gt;
                            var I = &amp;quot;&amp;quot;,&lt;br /&gt;
                                q = j.indexOf(&amp;quot;:&amp;quot;, 0);&lt;br /&gt;
                            q !== -1 &amp;amp;&amp;amp; (I = j.slice(q + (j.slice(q + 1, q + 2) === &amp;quot; &amp;quot; ? 2 : 1)), j = j.slice(0, q)), j === &amp;quot;data&amp;quot; ? A.push(I) : j === &amp;quot;id&amp;quot; ? O = I : j === &amp;quot;event&amp;quot; ? M = I : j === &amp;quot;retry&amp;quot; ? (u = g(I, u), x = u, b &amp;lt; u &amp;amp;&amp;amp; (b = u)) : j === &amp;quot;retryLimit&amp;quot; ? b = g(I, b) : j === &amp;quot;heartbeatTimeout&amp;quot; &amp;amp;&amp;amp; (w = g(I, w), C !== 0 &amp;amp;&amp;amp; (clearTimeout(C), C = setTimeout(R, w)))&lt;br /&gt;
                        } else {&lt;br /&gt;
                            if (A.length !== 0) {&lt;br /&gt;
                                E = O;&lt;br /&gt;
                                var U = M || &amp;quot;message&amp;quot;;&lt;br /&gt;
                                n = new s(U, {&lt;br /&gt;
                                    data: A.join(&amp;quot;\n&amp;quot;),&lt;br /&gt;
                                    lastEventId: O&lt;br /&gt;
                                }), S.dispatchEvent(n), U === &amp;quot;message&amp;quot; &amp;amp;&amp;amp; y(S, &amp;quot;onmessage&amp;quot;, n);&lt;br /&gt;
                                if (L === d) return&lt;br /&gt;
                            }&lt;br /&gt;
                            A.length = 0, M = &amp;quot;&amp;quot;&lt;br /&gt;
                        }&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
                k !== t.length &amp;amp;&amp;amp; (_.push(t.slice(k)), k = t.length)&lt;br /&gt;
            }&lt;br /&gt;
            H &amp;amp;&amp;amp; P === 0 &amp;amp;&amp;amp; (H = !1, P = setTimeout(F, 80)), L !== p &amp;amp;&amp;amp; L !== h || !(e || k &amp;gt; 1048576 || C === 0 &amp;amp;&amp;amp; !T) ? C === 0 &amp;amp;&amp;amp; (T = !1, C = setTimeout(R, w)) : (L = c, N.abort(), C !== 0 &amp;amp;&amp;amp; (clearTimeout(C), C = 0), x &amp;gt; b &amp;amp;&amp;amp; (x = b), C = setTimeout(R, x), x = x * 2 + 1, S.readyState = h, n = new i(&amp;quot;error&amp;quot;), S.dispatchEvent(n), y(S, &amp;quot;onerror&amp;quot;, n))&lt;br /&gt;
        }&lt;br /&gt;
        function F() {&lt;br /&gt;
            P = 0, j(!1)&lt;br /&gt;
        }&lt;br /&gt;
        function I() {&lt;br /&gt;
            j(!1)&lt;br /&gt;
        }&lt;br /&gt;
        function q() {&lt;br /&gt;
            j(!0)&lt;br /&gt;
        }&lt;br /&gt;
        function R() {&lt;br /&gt;
            C = 0;&lt;br /&gt;
            if (L !== c) {&lt;br /&gt;
                j(!1);&lt;br /&gt;
                return&lt;br /&gt;
            }&lt;br /&gt;
            if (navigator.onLine === !1) {&lt;br /&gt;
                C = setTimeout(R, 500);&lt;br /&gt;
                return&lt;br /&gt;
            }&lt;br /&gt;
            if (m &amp;amp;&amp;amp; e.document &amp;amp;&amp;amp; (e.document.readyState === &amp;quot;loading&amp;quot; || e.document.readyState === &amp;quot;interactive&amp;quot;)) {&lt;br /&gt;
                C = setTimeout(R, 100);&lt;br /&gt;
                return&lt;br /&gt;
            }&lt;br /&gt;
            N.onload = N.onerror = q, N.mozAnon === undefined ? N.onprogress = I : N.onreadystatechange = I, T = !1, C = setTimeout(R, w), k = 0, L = h, A.length = 0, M = &amp;quot;&amp;quot;, O = E, _.length = 0, D = !1, N.open(&amp;quot;GET&amp;quot;, t + ((t.indexOf(&amp;quot;?&amp;quot;, 0) === -1 ? &amp;quot;?&amp;quot; : &amp;quot;&amp;amp;&amp;quot;) + &amp;quot;lastEventId=&amp;quot; + encodeURIComponent(E) + &amp;quot;&amp;amp;r=&amp;quot; + String(Math.random() + 1).slice(2)), !0), N.withCredentials = o, N.responseType = &amp;quot;text&amp;quot;, f &amp;amp;&amp;amp; N.setRequestHeader(&amp;quot;Accept&amp;quot;, &amp;quot;text/event-stream&amp;quot;), N.send(null)&lt;br /&gt;
        }&lt;br /&gt;
        t = String(t);&lt;br /&gt;
        var o = Boolean(a &amp;amp;&amp;amp; r &amp;amp;&amp;amp; r.withCredentials),&lt;br /&gt;
            u = g(r ? r.retry : NaN, 1e3),&lt;br /&gt;
            b = g(r ? r.retryLimit : NaN, 3e5),&lt;br /&gt;
            w = g(r ? r.heartbeatTimeout : NaN, 45e3),&lt;br /&gt;
            E = r &amp;amp;&amp;amp; r.lastEventId &amp;amp;&amp;amp; String(r.lastEventId) || &amp;quot;&amp;quot;,&lt;br /&gt;
            S = this,&lt;br /&gt;
            x = u,&lt;br /&gt;
            T = !1,&lt;br /&gt;
            N = new l,&lt;br /&gt;
            C = 0,&lt;br /&gt;
            k = 0,&lt;br /&gt;
            L = c,&lt;br /&gt;
            A = [],&lt;br /&gt;
            O = &amp;quot;&amp;quot;,&lt;br /&gt;
            M = &amp;quot;&amp;quot;,&lt;br /&gt;
            _ = [],&lt;br /&gt;
            D = !1,&lt;br /&gt;
            P = 0,&lt;br /&gt;
            H = !1;&lt;br /&gt;
        r = null, n.call(this), this.close = B, this.url = t, this.readyState = h, this.withCredentials = o, R()&lt;br /&gt;
    }&lt;br /&gt;
    function w() {&lt;br /&gt;
        this.CONNECTING = h, this.OPEN = p, this.CLOSED = d&lt;br /&gt;
    }&lt;br /&gt;
    t.prototype = {&lt;br /&gt;
        get: function (e) {&lt;br /&gt;
            return this.data[e + &amp;quot;~&amp;quot;]&lt;br /&gt;
        },&lt;br /&gt;
        set: function (e, t) {&lt;br /&gt;
            this.data[e + &amp;quot;~&amp;quot;] = t&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;delete&amp;quot;: function (e) {&lt;br /&gt;
            delete this.data[e + &amp;quot;~&amp;quot;]&lt;br /&gt;
        }&lt;br /&gt;
    }, n.prototype = {&lt;br /&gt;
        dispatchEvent: function (e) {&lt;br /&gt;
            var t = String(e.type),&lt;br /&gt;
                n = this.listeners,&lt;br /&gt;
                i = n.get(t);&lt;br /&gt;
            if (!i) return;&lt;br /&gt;
            var s = i.length,&lt;br /&gt;
                o = -1;&lt;br /&gt;
            while (++o &amp;lt; s) {&lt;br /&gt;
                var u = i[o];&lt;br /&gt;
                try {&lt;br /&gt;
                    u.call(this, e)&lt;br /&gt;
                } catch (a) {&lt;br /&gt;
                    r(a)&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        },&lt;br /&gt;
        addEventListener: function (e, t) {&lt;br /&gt;
            e = String(e);&lt;br /&gt;
            var n = this.listeners,&lt;br /&gt;
                r = n.get(e);&lt;br /&gt;
            r || n.set(e, r = []);&lt;br /&gt;
            var i = r.length;&lt;br /&gt;
            while (--i &amp;gt;= 0) if (r[i] === t) return;&lt;br /&gt;
            r.push(t)&lt;br /&gt;
        },&lt;br /&gt;
        removeEventListener: function (e, t) {&lt;br /&gt;
            e = String(e);&lt;br /&gt;
            var n = this.listeners,&lt;br /&gt;
                r = n.get(e);&lt;br /&gt;
            if (!r) return;&lt;br /&gt;
            var i = r.length,&lt;br /&gt;
                s = [],&lt;br /&gt;
                o = -1;&lt;br /&gt;
            while (++o &amp;lt; i) r[o] !== t &amp;amp;&amp;amp; s.push(r[o]);&lt;br /&gt;
            s.length === 0 ? n[&amp;quot;delete&amp;quot;](e) : n.set(e, s)&lt;br /&gt;
        }&lt;br /&gt;
    }, s.prototype = i.prototype;&lt;br /&gt;
    var o = e.XMLHttpRequest,&lt;br /&gt;
        u = e.XDomainRequest,&lt;br /&gt;
        a = Boolean(o &amp;amp;&amp;amp; (new o).withCredentials !== undefined),&lt;br /&gt;
        f = a,&lt;br /&gt;
        l = a ? o : u,&lt;br /&gt;
        c = -1,&lt;br /&gt;
        h = 0,&lt;br /&gt;
        p = 1,&lt;br /&gt;
        d = 2,&lt;br /&gt;
        v = /^text\/event\-stream;?(\s*charset\=utf\-8)?$/i,&lt;br /&gt;
        m = /AppleWebKit\/5([0-2][0-9]|3[0-4])[^\d]/.test(navigator.userAgent);&lt;br /&gt;
    w.prototype = n.prototype, b.prototype = new w, w.call(b), l &amp;amp;&amp;amp; (e.EventSource = b)&lt;br /&gt;
})(this),&lt;br /&gt;
function () {&lt;br /&gt;
    function e(e) {&lt;br /&gt;
        (new Image).src = &amp;quot;http://xkcd.com/events/&amp;quot; + e&lt;br /&gt;
    }&lt;br /&gt;
    function t() {&lt;br /&gt;
        location.hash == &amp;quot;#verbose&amp;quot; &amp;amp;&amp;amp; console.log.apply(console, arguments)&lt;br /&gt;
    }&lt;br /&gt;
    try {&lt;br /&gt;
        var n = &amp;quot;http://c0.xkcd.com/stream/comic/time?method=EventSource&amp;quot;,&lt;br /&gt;
            r = new EventSource(n);&lt;br /&gt;
        t(&amp;quot;connecting to event source:&amp;quot;, n), r.addEventListener(&amp;quot;open&amp;quot;, function (t) {&lt;br /&gt;
            e(&amp;quot;connect_start&amp;quot;)&lt;br /&gt;
        }, !1), r.addEventListener(&amp;quot;error&amp;quot;, function (t) {&lt;br /&gt;
            e(&amp;quot;connect_error&amp;quot;)&lt;br /&gt;
        }, !1), r.addEventListener(&amp;quot;loadtest&amp;quot;, t, !1), r.addEventListener(&amp;quot;comic/time&amp;quot;, t, !1), r.addEventListener(&amp;quot;comic/time&amp;quot;, function (e) {&lt;br /&gt;
            var n = JSON.parse(e.data),&lt;br /&gt;
                r = document.getElementById(&amp;quot;comic&amp;quot;).getElementsByTagName(&amp;quot;img&amp;quot;)[0],&lt;br /&gt;
                i = Math.round(Math.random() * n.spread);&lt;br /&gt;
            t(&amp;quot;waiting&amp;quot;, i, &amp;quot;seconds before displaying comic&amp;quot;, n.image), setTimeout(function () {&lt;br /&gt;
                r.src = &amp;quot;http://imgs.xkcd.com/comics/time/&amp;quot; + n.image&lt;br /&gt;
            }, i * 1e3)&lt;br /&gt;
        }, !1)&lt;br /&gt;
    } catch (i) {&lt;br /&gt;
        e(&amp;quot;js_error&amp;quot;)&lt;br /&gt;
    }&lt;br /&gt;
}();&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I'm no programmer but this looks important to me...&lt;br /&gt;
&lt;br /&gt;
:Doesn't really help. The script basically changes the image when something happens (probably some time passes, although it's possible there is more hidden there). WHAT image then appears is not directed by the script, but by the site. Specifically, the image displayed as first is taken from [http://c0.xkcd.com/redirect/comic/time http://c0.xkcd.com/redirect/comic/time], while the script asks for [http://c0.xkcd.com/stream/comic/time?method=EventSource&amp;amp;r=(somenumber) http://c0.xkcd.com/stream/comic/time?method=EventSource&amp;amp;r=(somenumber)] ... which is, if you get correct &amp;quot;r&amp;quot;, probably some json containing the image url. So, even if you hack the script, you will not get all possible urls. -- [[User:Hkmaly|Hkmaly]] ([[User talk:Hkmaly|talk]]) 09:17, 25 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
:: ... actually, given that the script part doesn't seem to do anything just now, it's even possible it's for later (ie, starts producing images when the correct time come). Or maybe there is a bug somewhere in the code :-). -- [[User:Hkmaly|Hkmaly]] ([[User talk:Hkmaly|talk]]) 09:27, 25 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
:::Thanks for explaining. Why hasn't anyone posted this before? Could &amp;quot;location.hash&amp;quot; possibly have anything to do with the method used to generate the image hash key? Also, why is this code so difficult to follow (Obfuscation?)? So many questions... Sorry if this is just a huge waste of ''Time''.&lt;br /&gt;
&lt;br /&gt;
:::: &amp;lt;code&amp;gt;location&amp;lt;/code&amp;gt; is the URI of the page. &amp;lt;code&amp;gt;location.hash&amp;lt;/code&amp;gt; is the part of the uri after the ''#'' character. If you go to [https://xkcd.com/1190/#verbose https://xkcd.com/1190/#verbose], you'll see some debugging output in your browser's debugging console (Firefox: Web Console or Firebug, Chrome: Development Tools). But nothing to decode the algorithm... :-( --[[Special:Contributions/83.243.48.2|83.243.48.2]] 10:01, 25 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
::::: Well, I don't know what's doing it, but there's definitely some script (probably this script) that's refreshing the image automatically.  I left the comic open for an hour or so and noticed the image had changed. I refreshed with #verbose in Chrome right before the 30 minute mark and got the following in the console.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
connecting to event source: http://c0.xkcd.com/stream/comic/time?method=EventSource time07.min.js:1&lt;br /&gt;
s {type: &amp;quot;comic/time&amp;quot;, data: &amp;quot;{&amp;quot;spread&amp;quot;:5,&amp;quot;image&amp;quot;:&amp;quot;832a7f13ca0fadc46e93475bb617d78211e32c81c3af0e289a51f8f149707759.png&amp;quot;}&amp;quot;, lastEventId: &amp;quot;e2992bf0-9557-11e2-8001-1c6f659cb250&amp;quot;} time07.min.js:1&lt;br /&gt;
waiting 0 seconds before displaying comic 832a7f13ca0fadc46e93475bb617d78211e32c81c3af0e289a51f8f149707759.png time07.min.js:1&lt;br /&gt;
Resource interpreted as Image but transferred with MIME type application/octet-stream: &amp;quot;http://xkcd.com/events/connect_start&amp;quot;. time07.min.js:1&lt;br /&gt;
s {type: &amp;quot;comic/time&amp;quot;, data: &amp;quot;{&amp;quot;spread&amp;quot;:5,&amp;quot;image&amp;quot;:&amp;quot;847265673986f085460bf1a95b96f7171bcd9a4f1f0a598b2188307d03bcfaa3.png&amp;quot;}&amp;quot;, lastEventId: &amp;quot;79580fe8-9558-11e2-8001-1c6f659cb250&amp;quot;} time07.min.js:1&lt;br /&gt;
waiting 4 seconds before displaying comic 847265673986f085460bf1a95b96f7171bcd9a4f1f0a598b2188307d03bcfaa3.png time07.min.js:1&lt;br /&gt;
connection error i {type: &amp;quot;error&amp;quot;} time07.min.js:1&lt;br /&gt;
Resource interpreted as Image but transferred with MIME type application/octet-stream: &amp;quot;http://xkcd.com/events/connect_error&amp;quot;.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::::: The script seems to poll the server every minute or two. It's different from before, where the image server itself redirected to the correct image. The auto refresh was probably always intended, but not quite ready when the comic went live. It may have turned out to be necessary too, so the image server doesn't have to do all the work. [[Special:Contributions/129.21.119.153|129.21.119.153]] 14:45, 25 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Before obfuscation... ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(function (global) {&lt;br /&gt;
    &amp;quot;use strict&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
    function Map() {&lt;br /&gt;
        this.data = {}&lt;br /&gt;
    }&lt;br /&gt;
    function EventTarget() {&lt;br /&gt;
        this.listeners = new Map&lt;br /&gt;
    }&lt;br /&gt;
    function throwError(e) {&lt;br /&gt;
        setTimeout(function () {&lt;br /&gt;
            throw e&lt;br /&gt;
        }, 0)&lt;br /&gt;
    }&lt;br /&gt;
    function Event(type) {&lt;br /&gt;
        this.type = type&lt;br /&gt;
    }&lt;br /&gt;
    function MessageEvent(type, options) {&lt;br /&gt;
        Event.call(this, type), this.data = options.data, this.lastEventId = options.lastEventId&lt;br /&gt;
    }&lt;br /&gt;
    function getDuration(value, def) {&lt;br /&gt;
        var n = Number(value);&lt;br /&gt;
        return (n &amp;lt; 1 ? 1 : n &amp;gt; 18e6 ? 18e6 : n) || def&lt;br /&gt;
    }&lt;br /&gt;
    function fire(that, property, event) {&lt;br /&gt;
        try {&lt;br /&gt;
            typeof that[property] == &amp;quot;function&amp;quot; &amp;amp;&amp;amp; that[property](event)&lt;br /&gt;
        } catch (e) {&lt;br /&gt;
            throwError(e)&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    function EventSource(url, options) {&lt;br /&gt;
        function close() {&lt;br /&gt;
            currentState = CLOSED, xhr !== null &amp;amp;&amp;amp; (xhr.abort(), xhr = null), timeout !== 0 &amp;amp;&amp;amp; (clearTimeout(timeout), timeout = 0), that.readyState = CLOSED&lt;br /&gt;
        }&lt;br /&gt;
        function onProgress(isLoadEnd) {&lt;br /&gt;
            var responseText = currentState === OPEN || currentState === CONNECTING ? xhr.responseText || &amp;quot;&amp;quot; : &amp;quot;&amp;quot;,&lt;br /&gt;
                event = null;&lt;br /&gt;
            if (currentState === CONNECTING) {&lt;br /&gt;
                var contentType = isXHR ? responseText !== &amp;quot;&amp;quot; ? xhr.getResponseHeader(&amp;quot;Content-Type&amp;quot;) : &amp;quot;&amp;quot; : xhr.contentType;&lt;br /&gt;
                if (contentType &amp;amp;&amp;amp; contentTypeRegExp.test(contentType)) {&lt;br /&gt;
                    currentState = OPEN, wasActivity = !0, retry = initialRetry, that.readyState = OPEN, event = new Event(&amp;quot;open&amp;quot;), that.dispatchEvent(event), fire(that, &amp;quot;onopen&amp;quot;, event);&lt;br /&gt;
                    if (currentState === CLOSED) return&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            if (currentState === OPEN) {&lt;br /&gt;
                responseText.length &amp;gt; charOffset &amp;amp;&amp;amp; (wasAct = !0, wasActivity = !0);&lt;br /&gt;
                var i = 0,&lt;br /&gt;
                    i1 = responseText.indexOf(&amp;quot;\r&amp;quot;, charOffset),&lt;br /&gt;
                    i2 = responseText.indexOf(&amp;quot;\n&amp;quot;, charOffset);&lt;br /&gt;
                while (i1 !== -1 || i2 !== -1) {&lt;br /&gt;
                    i1 === -1 || i2 !== -1 &amp;amp;&amp;amp; i2 &amp;lt; i1 ? (i = i2, i2 = responseText.indexOf(&amp;quot;\n&amp;quot;, i + 1)) : (i = i1, i1 = responseText.indexOf(&amp;quot;\r&amp;quot;, i + 1));&lt;br /&gt;
                    var line = responseText.slice(charOffset, i),&lt;br /&gt;
                        oldWasCR = wasCR;&lt;br /&gt;
                    wasCR = responseText.slice(i, i + 1) === &amp;quot;\r&amp;quot;, charOffset = i + 1;&lt;br /&gt;
                    if (!oldWasCR || line.length !== 0 || wasCR) {&lt;br /&gt;
                        responseBuffer.push(line);&lt;br /&gt;
                        var field = responseBuffer.join(&amp;quot;&amp;quot;);&lt;br /&gt;
                        responseBuffer.length = 0;&lt;br /&gt;
                        if (field !== &amp;quot;&amp;quot;) {&lt;br /&gt;
                            var value = &amp;quot;&amp;quot;,&lt;br /&gt;
                                j = field.indexOf(&amp;quot;:&amp;quot;, 0);&lt;br /&gt;
                            j !== -1 &amp;amp;&amp;amp; (value = field.slice(j + (field.slice(j + 1, j + 2) === &amp;quot; &amp;quot; ? 2 : 1)), field = field.slice(0, j)), field === &amp;quot;data&amp;quot; ? dataBuffer.push(value) : field === &amp;quot;id&amp;quot; ? lastEventIdBuffer = value : field === &amp;quot;event&amp;quot; ? eventTypeBuffer = value : field === &amp;quot;retry&amp;quot; ? (initialRetry = getDuration(value, initialRetry), retry = initialRetry, retryLimit &amp;lt; initialRetry &amp;amp;&amp;amp; (retryLimit = initialRetry)) : field === &amp;quot;retryLimit&amp;quot; ? retryLimit = getDuration(value, retryLimit) : field === &amp;quot;heartbeatTimeout&amp;quot; &amp;amp;&amp;amp; (heartbeatTimeout = getDuration(value, heartbeatTimeout), timeout !== 0 &amp;amp;&amp;amp; (clearTimeout(timeout), timeout = setTimeout(onTimeout, heartbeatTimeout)))&lt;br /&gt;
                        } else {&lt;br /&gt;
                            if (dataBuffer.length !== 0) {&lt;br /&gt;
                                lastEventId = lastEventIdBuffer;&lt;br /&gt;
                                var type = eventTypeBuffer || &amp;quot;message&amp;quot;;&lt;br /&gt;
                                event = new MessageEvent(type, {&lt;br /&gt;
                                    data: dataBuffer.join(&amp;quot;\n&amp;quot;),&lt;br /&gt;
                                    lastEventId: lastEventIdBuffer&lt;br /&gt;
                                }), that.dispatchEvent(event), type === &amp;quot;message&amp;quot; &amp;amp;&amp;amp; fire(that, &amp;quot;onmessage&amp;quot;, event);&lt;br /&gt;
                                if (currentState === CLOSED) return&lt;br /&gt;
                            }&lt;br /&gt;
                            dataBuffer.length = 0, eventTypeBuffer = &amp;quot;&amp;quot;&lt;br /&gt;
                        }&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
                charOffset !== responseText.length &amp;amp;&amp;amp; (responseBuffer.push(responseText.slice(charOffset)), charOffset = responseText.length)&lt;br /&gt;
            }&lt;br /&gt;
            wasAct &amp;amp;&amp;amp; progressTimeout === 0 &amp;amp;&amp;amp; (wasAct = !1, progressTimeout = setTimeout(p, 80)), currentState !== OPEN &amp;amp;&amp;amp; currentState !== CONNECTING || !(isLoadEnd || charOffset &amp;gt; 1048576 || timeout === 0 &amp;amp;&amp;amp; !wasActivity) ? timeout === 0 &amp;amp;&amp;amp; (wasActivity = !1, timeout = setTimeout(onTimeout, heartbeatTimeout)) : (currentState = WAITING, xhr.abort(), timeout !== 0 &amp;amp;&amp;amp; (clearTimeout(timeout), timeout = 0), retry &amp;gt; retryLimit &amp;amp;&amp;amp; (retry = retryLimit), timeout = setTimeout(onTimeout, retry), retry = retry * 2 + 1, that.readyState = CONNECTING, event = new Event(&amp;quot;error&amp;quot;), that.dispatchEvent(event), fire(that, &amp;quot;onerror&amp;quot;, event))&lt;br /&gt;
        }&lt;br /&gt;
        function p() {&lt;br /&gt;
            progressTimeout = 0, onProgress(!1)&lt;br /&gt;
        }&lt;br /&gt;
        function onProgress2() {&lt;br /&gt;
            onProgress(!1)&lt;br /&gt;
        }&lt;br /&gt;
        function onLoadEnd() {&lt;br /&gt;
            onProgress(!0)&lt;br /&gt;
        }&lt;br /&gt;
        function onTimeout() {&lt;br /&gt;
            timeout = 0;&lt;br /&gt;
            if (currentState !== WAITING) {&lt;br /&gt;
                onProgress(!1);&lt;br /&gt;
                return&lt;br /&gt;
            }&lt;br /&gt;
            if (navigator.onLine === !1) {&lt;br /&gt;
                timeout = setTimeout(onTimeout, 500);&lt;br /&gt;
                return&lt;br /&gt;
            }&lt;br /&gt;
            if (webkitBefore535 &amp;amp;&amp;amp; global.document &amp;amp;&amp;amp; (global.document.readyState === &amp;quot;loading&amp;quot; || global.document.readyState === &amp;quot;interactive&amp;quot;)) {&lt;br /&gt;
                timeout = setTimeout(onTimeout, 100);&lt;br /&gt;
                return&lt;br /&gt;
            }&lt;br /&gt;
            xhr.onload = xhr.onerror = onLoadEnd, xhr.mozAnon === undefined ? xhr.onprogress = onProgress2 : xhr.onreadystatechange = onProgress2, wasActivity = !1, timeout = setTimeout(onTimeout, heartbeatTimeout), charOffset = 0, currentState = CONNECTING, dataBuffer.length = 0, eventTypeBuffer = &amp;quot;&amp;quot;, lastEventIdBuffer = lastEventId, responseBuffer.length = 0, wasCR = !1, xhr.open(&amp;quot;GET&amp;quot;, url + ((url.indexOf(&amp;quot;?&amp;quot;, 0) === -1 ? &amp;quot;?&amp;quot; : &amp;quot;&amp;amp;&amp;quot;) + &amp;quot;lastEventId=&amp;quot; + encodeURIComponent(lastEventId) + &amp;quot;&amp;amp;r=&amp;quot; + String(Math.random() + 1).slice(2)), !0), xhr.withCredentials = withCredentials, xhr.responseType = &amp;quot;text&amp;quot;, isXHR &amp;amp;&amp;amp; xhr.setRequestHeader(&amp;quot;Accept&amp;quot;, &amp;quot;text/event-stream&amp;quot;), xhr.send(null)&lt;br /&gt;
        }&lt;br /&gt;
        url = String(url);&lt;br /&gt;
        var withCredentials = Boolean(xhr2 &amp;amp;&amp;amp; options &amp;amp;&amp;amp; options.withCredentials),&lt;br /&gt;
            initialRetry = getDuration(options ? options.retry : NaN, 1e3),&lt;br /&gt;
            retryLimit = getDuration(options ? options.retryLimit : NaN, 3e5),&lt;br /&gt;
            heartbeatTimeout = getDuration(options ? options.heartbeatTimeout : NaN, 45e3),&lt;br /&gt;
            lastEventId = options &amp;amp;&amp;amp; options.lastEventId &amp;amp;&amp;amp; String(options.lastEventId) || &amp;quot;&amp;quot;,&lt;br /&gt;
            that = this,&lt;br /&gt;
            retry = initialRetry,&lt;br /&gt;
            wasActivity = !1,&lt;br /&gt;
            xhr = new Transport,&lt;br /&gt;
            timeout = 0,&lt;br /&gt;
            charOffset = 0,&lt;br /&gt;
            currentState = WAITING,&lt;br /&gt;
            dataBuffer = [],&lt;br /&gt;
            lastEventIdBuffer = &amp;quot;&amp;quot;,&lt;br /&gt;
            eventTypeBuffer = &amp;quot;&amp;quot;,&lt;br /&gt;
            responseBuffer = [],&lt;br /&gt;
            wasCR = !1,&lt;br /&gt;
            progressTimeout = 0,&lt;br /&gt;
            wasAct = !1;&lt;br /&gt;
        options = null, EventTarget.call(this), this.close = close, this.url = url, this.readyState = CONNECTING, this.withCredentials = withCredentials, onTimeout()&lt;br /&gt;
    }&lt;br /&gt;
    function F() {&lt;br /&gt;
        this.CONNECTING = CONNECTING, this.OPEN = OPEN, this.CLOSED = CLOSED&lt;br /&gt;
    }&lt;br /&gt;
    Map.prototype = {&lt;br /&gt;
        get: function (key) {&lt;br /&gt;
            return this.data[key + &amp;quot;~&amp;quot;]&lt;br /&gt;
        },&lt;br /&gt;
        set: function (key, value) {&lt;br /&gt;
            this.data[key + &amp;quot;~&amp;quot;] = value&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;delete&amp;quot;: function (key) {&lt;br /&gt;
            delete this.data[key + &amp;quot;~&amp;quot;]&lt;br /&gt;
        }&lt;br /&gt;
    }, EventTarget.prototype = {&lt;br /&gt;
        dispatchEvent: function (event) {&lt;br /&gt;
            var type = String(event.type),&lt;br /&gt;
                listeners = this.listeners,&lt;br /&gt;
                typeListeners = listeners.get(type);&lt;br /&gt;
            if (!typeListeners) return;&lt;br /&gt;
            var length = typeListeners.length,&lt;br /&gt;
                i = -1;&lt;br /&gt;
            while (++i &amp;lt; length) {&lt;br /&gt;
                var listener = typeListeners[i];&lt;br /&gt;
                try {&lt;br /&gt;
                    listener.call(this, event)&lt;br /&gt;
                } catch (e) {&lt;br /&gt;
                    throwError(e)&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        },&lt;br /&gt;
        addEventListener: function (type, callback) {&lt;br /&gt;
            type = String(type);&lt;br /&gt;
            var listeners = this.listeners,&lt;br /&gt;
                typeListeners = listeners.get(type);&lt;br /&gt;
            typeListeners || listeners.set(type, typeListeners = []);&lt;br /&gt;
            var i = typeListeners.length;&lt;br /&gt;
            while (--i &amp;gt;= 0) if (typeListeners[i] === callback) return;&lt;br /&gt;
            typeListeners.push(callback)&lt;br /&gt;
        },&lt;br /&gt;
        removeEventListener: function (type, callback) {&lt;br /&gt;
            type = String(type);&lt;br /&gt;
            var listeners = this.listeners,&lt;br /&gt;
                typeListeners = listeners.get(type);&lt;br /&gt;
            if (!typeListeners) return;&lt;br /&gt;
            var length = typeListeners.length,&lt;br /&gt;
                filtered = [],&lt;br /&gt;
                i = -1;&lt;br /&gt;
            while (++i &amp;lt; length) typeListeners[i] !== callback &amp;amp;&amp;amp; filtered.push(typeListeners[i]);&lt;br /&gt;
            filtered.length === 0 ? listeners[&amp;quot;delete&amp;quot;](type) : listeners.set(type, filtered)&lt;br /&gt;
        }&lt;br /&gt;
    }, MessageEvent.prototype = Event.prototype;&lt;br /&gt;
    var XHR = global.XMLHttpRequest,&lt;br /&gt;
        XDR = global.XDomainRequest,&lt;br /&gt;
        xhr2 = Boolean(XHR &amp;amp;&amp;amp; (new XHR).withCredentials !== undefined),&lt;br /&gt;
        isXHR = xhr2,&lt;br /&gt;
        Transport = xhr2 ? XHR : XDR,&lt;br /&gt;
        WAITING = -1,&lt;br /&gt;
        CONNECTING = 0,&lt;br /&gt;
        OPEN = 1,&lt;br /&gt;
        CLOSED = 2,&lt;br /&gt;
        contentTypeRegExp = /^text\/event\-stream;?(\s*charset\=utf\-8)?$/i,&lt;br /&gt;
        webkitBefore535 = /AppleWebKit\/5([0-2][0-9]|3[0-4])[^\d]/.test(navigator.userAgent);&lt;br /&gt;
    F.prototype = EventTarget.prototype, EventSource.prototype = new F, F.call(EventSource), Transport &amp;amp;&amp;amp; (global.EventSource = EventSource)&lt;br /&gt;
 })(this),&lt;br /&gt;
function () {&lt;br /&gt;
    function record(name) {&lt;br /&gt;
        (new Image).src = &amp;quot;http://xkcd.com/events/&amp;quot; + name&lt;br /&gt;
    }&lt;br /&gt;
    function log() {&lt;br /&gt;
        location.hash == &amp;quot;#verbose&amp;quot; &amp;amp;&amp;amp; console.log.apply(console, arguments)&lt;br /&gt;
    }&lt;br /&gt;
    try {&lt;br /&gt;
        var esURL = &amp;quot;http://c0.xkcd.com/stream/comic/time?method=EventSource&amp;quot;,&lt;br /&gt;
            source = new EventSource(esURL);&lt;br /&gt;
        log(&amp;quot;connecting to event source:&amp;quot;, esURL), source.addEventListener(&amp;quot;open&amp;quot;, function (ev) {&lt;br /&gt;
            record(&amp;quot;connect_start&amp;quot;)&lt;br /&gt;
        }, !1), source.addEventListener(&amp;quot;error&amp;quot;, function (ev) {&lt;br /&gt;
            record(&amp;quot;connect_error&amp;quot;)&lt;br /&gt;
        }, !1), source.addEventListener(&amp;quot;loadtest&amp;quot;, log, !1), source.addEventListener(&amp;quot;comic/time&amp;quot;, log, !1), source.addEventListener(&amp;quot;comic/time&amp;quot;, function (ev) {&lt;br /&gt;
            var data = JSON.parse(ev.data),&lt;br /&gt;
                img = document.getElementById(&amp;quot;comic&amp;quot;).getElementsByTagName(&amp;quot;img&amp;quot;)[0],&lt;br /&gt;
                delay = Math.round(Math.random() * data.spread);&lt;br /&gt;
            log(&amp;quot;waiting&amp;quot;, delay, &amp;quot;seconds before displaying comic&amp;quot;, data.image), setTimeout(function () {&lt;br /&gt;
                img.src = &amp;quot;http://imgs.xkcd.com/comics/time/&amp;quot; + data.image&lt;br /&gt;
            }, delay * 1e3)&lt;br /&gt;
        }, !1)&lt;br /&gt;
    } catch (e) {&lt;br /&gt;
        record(&amp;quot;js_error&amp;quot;)&lt;br /&gt;
    }&lt;br /&gt;
}();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Special:Contributions/79.180.173.88|79.180.173.88]] 09:48, 25 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
http://imgs.xkcd.com/comics/time/426033682a26a0012a6f8e0c47287af91b7991a852d81c77402c937ffbd650c6.png&lt;br /&gt;
&lt;br /&gt;
http://www.explainxkcd.com/wiki/images/1/1e/f46c6571393bee1ee649a7daae41f6328e63482506aef1e22607d22c47dd7027.png --[[User:Johnsmith|Johnsmith]] ([[User talk:Johnsmith|talk]]) 22:51, 25 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
http://www.explainxkcd.com/wiki/images/b/b0/88e3a0c8bba935c669606d9134314f811a0961985f968dd5d329e4695acc67c8.png --[[User:Johnsmith|Johnsmith]] ([[User talk:Johnsmith|talk]]) 23:10, 25 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Is it just me or or did Randall manage to make all of us perform a Denial of Service on xkcd.com, and explainxkcd.com ? xkcd.com seems much slower, and I keep getting &amp;quot;500 Internal server error&amp;quot; when accessing this site (explainxkcd.com). I guess that's the effect of having everybody hit F5 every few minutes :) [[Special:Contributions/193.239.192.194|193.239.192.194]] 11:57, 25 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
Earlier today, the server handled all the image redirections. The script you see above went through several mutations (currently at #8), with each mutation it seems that Randall is adding more servers and trying to split the load between them. This is basically how a bot-net works - we all run code written by some evil genius, and he's changing the code as time passes to serve some hidden purpose.&lt;br /&gt;
[[Special:Contributions/79.180.173.88|79.180.173.88]] 15:44, 25 March 2013 (UTC)&lt;br /&gt;
    If he is using us as a botnet, then maybe the next comic will be something alluding to that.&lt;br /&gt;
    Probably like this: http://xkcd.com/350/&lt;br /&gt;
&lt;br /&gt;
When I saw this comic last night and that there was no explanation up, I thought to myself &amp;quot;How zen.&amp;quot;  I figured that Randall was going through a calm streak before throwing us the utterly ridiculous April 1st comic.  Did it come early, or does he have something even bigger planned for us? [[Special:Contributions/76.106.251.87|76.106.251.87]] 07:05, 26 March 2013 (UTC)&lt;br /&gt;
:Sorry, did you miss the bit where this comic updates every 30 minutes and all the server error messages being caused by the massive traffic to both the wiki and the main xkcd website? '''[[User:Davidy22|&amp;lt;u&amp;gt;{{Color|purple|David}}&amp;lt;font color=green size=3px&amp;gt;y&amp;lt;/font&amp;gt;&amp;lt;/u&amp;gt;&amp;lt;font color=indigo size=4px&amp;gt;²²&amp;lt;/font&amp;gt;]]'''[[User talk:Davidy22|&amp;lt;tt&amp;gt;[talk]&amp;lt;/tt&amp;gt;]] 07:08, 26 March 2013 (UTC)&lt;br /&gt;
::Well, when I said &amp;quot;last night&amp;quot; and &amp;quot;no explanation&amp;quot;, I implied that I wasn't aware of that at the time, which is why I thought what I did.  Of course, it is now &amp;quot;now&amp;quot; and there &amp;lt;i&amp;gt;is&amp;lt;/i&amp;gt; an explanation, so that should answer your question.  Also, since it's not April 1st, and Randall has consistently released something major on that day, the jury is still out, leaving my question quite open (though I was really only asking for opinions). [[Special:Contributions/76.106.251.87|76.106.251.87]] 07:20, 26 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
wanted to add an image to the list above, but didn't know at what timestamp to add it, got 69085b480cb82911b19fe8f114909756989eed89b0d227db0f59c1843de7ba24.png at 2013-03-26 09:47 CET (UTC+0100)&lt;br /&gt;
 /Puggan&lt;br /&gt;
:The hours denote the time since the initial release of the comic. The page is still a work in progress, we're going to bring that all into one image file soon. '''[[User:Davidy22|&amp;lt;u&amp;gt;{{Color|purple|David}}&amp;lt;font color=green size=3px&amp;gt;y&amp;lt;/font&amp;gt;&amp;lt;/u&amp;gt;&amp;lt;font color=indigo size=4px&amp;gt;²²&amp;lt;/font&amp;gt;]]'''[[User talk:Davidy22|&amp;lt;tt&amp;gt;[talk]&amp;lt;/tt&amp;gt;]] 09:13, 26 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
This site should seriously consider cloudflare, it's perfect at times like this and takes minutes to set up.  I run all my sites through it and it saves a lot of page huts and bandwidth.&lt;br /&gt;
[[Special:Contributions/123.3.136.228|123.3.136.228]]Evan Pyle&lt;br /&gt;
:Or at least make the main page a static page that refreshes every so often.  I'm guessing that most of the traffic is going to the front page with not as much traffic to the actual comic page [[User:Odysseus654|Odysseus654]] ([[User talk:Odysseus654|talk]]) 15:43, 26 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
Some of the images on the wiki (looks like time38.png through time48.png) are slightly different than what is on the main site.  The lines are slightly thicker, as though someone did them based on screen captures.&lt;br /&gt;
[[User:Royce|Royce]] ([[User talk:Royce|talk]]) 14:37, 26 March 2013 (UTC)&lt;br /&gt;
:Well, at least we have the hashes so they can be re-retrieved, so nothing is really lost, right?  Should we add links to the original? [[User:Odysseus654|Odysseus654]] ([[User talk:Odysseus654|talk]]) 15:43, 26 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
:I uploaded two of the &amp;quot;thicker&amp;quot; images and one of the &amp;quot;regular&amp;quot; ones, and I did the same thing for all of them: right-click-&amp;gt;save-as. Given that the &amp;quot;thick&amp;quot; ones are all clustered together, I think the files on the xkcd site changed. [[User:Druid816|Druid816]] ([[User talk:Druid816|talk]]) 18:21, 26 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
Story so far: [http://static.odysseus.anderson.name/1190.gif linky] [[User:Odysseus654|Odysseus654]] ([[User talk:Odysseus654|talk]]) 19:30, 26 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
I guess we shall find out in ~10 minutes if Randall is trolling us. [[Special:Contributions/129.138.30.95|129.138.30.95]] 04:20, 27 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
... so that's it?&lt;br /&gt;
&lt;br /&gt;
Did I just miss something or we've all been epically trolled for 48 hours? [[Special:Contributions/189.59.175.92|189.59.175.92]] 04:22, 27 March 2013 (UTC)&lt;br /&gt;
:Motherofgod, no, he's *still* going!''' [[User:Davidy22|&amp;lt;u&amp;gt;{{Color|purple|David}}&amp;lt;font color=green size=3px&amp;gt;y&amp;lt;/font&amp;gt;&amp;lt;/u&amp;gt;&amp;lt;font color=indigo size=4px&amp;gt;²²&amp;lt;/font&amp;gt;]]'''[[User talk:Davidy22|&amp;lt;tt&amp;gt;[talk]&amp;lt;/tt&amp;gt;]] 05:20, 27 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
What makes you think he's done? [[Special:Contributions/129.138.30.95|129.138.30.95]] 04:25, 27 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
I'm still waiting for the water level to drop precipitously... and then for red spiders to run over everything [[User:Odysseus654|Odysseus654]] ([[User talk:Odysseus654|talk]]) 04:28, 27 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
Well, strip 1191 is up so I assumed it was over. I guess it's not. Until April's Fools maybe? [[Special:Contributions/189.59.175.92|189.59.175.92]] 04:32, 27 March 2013 (UTC)&lt;br /&gt;
: It is not over -- the image is still updating, at least it did for me [[User:Spongebog|Spongebog]] ([[User talk:Spongebog|talk]])&lt;br /&gt;
:: Yes, it's not over. Last frame shows just a minimal movement of Cueball's head, but no doubt it's still ongoing. [[Special:Contributions/189.59.175.92|189.59.175.92]] 04:49, 27 March 2013 (UTC)&lt;br /&gt;
::: Given the fact the strips for the last 2 weeks have been comparatively simple, I expect Randall has been planning this for at least that long. {{unsigned|101.98.156.239}}&lt;br /&gt;
&lt;br /&gt;
Considering the common theme with &amp;quot;today's&amp;quot; strip, anyone wanna guess that he's sending us a hex-encoded file over a really slow modem link, slated to complete April 1? Anyone wanna run &amp;quot;magic&amp;quot; over the hashes and see if they come up with a compression codec or something? [[User:Odysseus654|Odysseus654]] ([[User talk:Odysseus654|talk]]) 04:45, 27 March 2013 (UTC)&lt;br /&gt;
:I liked this idea and crunched the hex data for 00:00 to 51:00 into a binary file (http://filebin.ca/bcGyfUvdgBi). Can't see anything resembling a file header, but that doesn't really say much. If this is compressed header-less data there wouldn't likely be any easily discernible patterns. Haven't really tried running the data through anything, zlib was one that came to mind but haven't tried it.&lt;br /&gt;
&lt;br /&gt;
[[Special:Contributions/194.114.62.72|194.114.62.72]] I'm pretty shure it's not the seaside, but a lake - the water level is not changing at all.&lt;br /&gt;
&lt;br /&gt;
Its probably going to loop back on itself, eventually, and repeat this way forever. [[Special:Contributions/113.160.224.209|113.160.224.209]] 07:12, 27 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
For those wondering about the Javascript behind this: I posted my analysis of the Javascript [http://www.echochamber.me/viewtopic.php?f=7&amp;amp;t=101043&amp;amp;start=760#p3303579 on the xkcd forums], and further de-obfuscated and annotated the code over on [https://gist.github.com/cincodenada/5246094 GitHub].  Here's a quick summary though: it holds open a connection to xkcd's servers and listens for instructions and follows them. Those instructions are either &amp;quot;load a new image&amp;quot; or &amp;quot;reload the page&amp;quot;. So, you don't have to mash F5, it will automatically update the image when they're available. We have no way to control how fast the images come or when they do, and it's quite possible for them to update forever. --[[User:Fiveofoh|Fiveofoh]] ([[User talk:Fiveofoh|talk]]) 06:41, 27 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
This is a series of animation frames. I suspect they will only ever be shown once (based on the fact you can only get the current image, not previous or future images -- this is in keeping with the title, &amp;quot;Time&amp;quot;, which passes and which you can't ever get back]. The filenames are UUIDs too long to guess, so somebody needs to start collecting the filenames here so that a proper flipbook can be assembled. Here's the latest URL: [http://imgs.xkcd.com/comics/time/81efa7c4509ac7a329407d9da25d12ec0a3baec50e06588586961575e2d65c2c.png http://imgs.xkcd.com/comics/time/81efa7c4509ac7a329407d9da25d12ec0a3baec50e06588586961575e2d65c2c.png]  Go here to collect URLs: [http://c0.xkcd.com/stream/comic/time?method=EventSource http://c0.xkcd.com/stream/comic/time?method=EventSource]&lt;br /&gt;
:We've kinda already been doing that. They're the big long filenames next to each timestamp. '''[[User:Davidy22|&amp;lt;u&amp;gt;{{Color|purple|David}}&amp;lt;font color=green size=3px&amp;gt;y&amp;lt;/font&amp;gt;&amp;lt;/u&amp;gt;&amp;lt;font color=indigo size=4px&amp;gt;²²&amp;lt;/font&amp;gt;]]'''[[User talk:Davidy22|&amp;lt;tt&amp;gt;[talk]&amp;lt;/tt&amp;gt;]] 09:06, 27 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
Oh my god it's game of thrones played out in 2D  [[Special:Contributions/123.3.136.228|123.3.136.228]] Evan Pyle &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Create an animation on this page ==&lt;br /&gt;
Here's a bit of JavaScript to execute in your browser's JavaScript console. (Cmd+Alt+K on Firefox for Mac, for example.)&lt;br /&gt;
&lt;br /&gt;
 /* Collect all frame image URLs */&lt;br /&gt;
 var images = [];&lt;br /&gt;
 Array.prototype.slice.call(document.querySelectorAll('a[href*=&amp;quot;/time&amp;quot;][href$=&amp;quot;.png&amp;quot;]')).forEach(function (a) {&lt;br /&gt;
 	images.push(a.href);&lt;br /&gt;
 });&lt;br /&gt;
 &lt;br /&gt;
 /* Create an image in the top-right corner of the screen */&lt;br /&gt;
 var img = document.body.appendChild(document.createElement('img'));&lt;br /&gt;
 img.setAttribute('style', 'position: fixed; top: 1em; right: 1em;');&lt;br /&gt;
 &lt;br /&gt;
 /* Allow removing the image by clicking */&lt;br /&gt;
 img.onclick = function () {&lt;br /&gt;
 	img.parentNode.removeChild(img);&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 /* Cycle through the frames */&lt;br /&gt;
 img.onload = function () {&lt;br /&gt;
 	/* Pause a bit longer for the &amp;quot;Later! Bye!&amp;quot; frame */&lt;br /&gt;
 	var delay = img.i === 51 ? 500 : 100;&lt;br /&gt;
 	setTimeout(function () {&lt;br /&gt;
 		img.src = images[++img.i % images.length];&lt;br /&gt;
 	}, delay);&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 /* Start with the first frame */&lt;br /&gt;
 img.i = 0;&lt;br /&gt;
 img.src = images[img.i];&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
— [http://jan.moesen.nu/ Jan!] [[Special:Contributions/94.23.195.79|94.23.195.79]] 09:22, 27 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
---Thanks for the script!. Ctrl+Shift+J on Windows Chrome [[User:Shine|Shine]] ([[User talk:Shine|talk]]) 13:11, 27 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
The one for the prior half hour (5AM - 5:30AM EST, 27 March 2013) is located at http://imgs.xkcd.com/comics/time/5450bd39ee84a394467fabcaf92f1a5711c2a4eca24c8bd8a8cec829496e3dd7.png&lt;br /&gt;
[[Special:Contributions/141.161.133.106|141.161.133.106]] 09:26, 27 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
And the one for the following half hour is located at http://imgs.xkcd.com/comics/time/c2ea85f1ab92f2f80e9c4655c47f5c7effc0a7da01c8a88493864845855b3be8.png&lt;br /&gt;
[[Special:Contributions/141.161.133.106|141.161.133.106]] 09:31, 27 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Call me a paranoid, but I think this strip is all about 9/11:&lt;br /&gt;
       - If you read the strip number (1190) backwards, you get 09/11&lt;br /&gt;
       - This subject is recurrent on xkcd&lt;br /&gt;
       - As far as we have seen, there is a destroyed tower and they are rebuilding it&lt;br /&gt;
       - The next strip, following 1190 (or 09/11), mentions war against countries with large oil reserves but low military capacity. {{unsigned|143.107.105.14}}&lt;br /&gt;
:I feel like that's kind of a stretch, I'm pretty sure it's just a story about a day at the beach.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If a new strip goes up every 30 minutes our time, and if each strip comprises of, let's say for the sake of simplicity, one minute in their time; to build the sand castle [frames 24-117 = 93 frames] so far it's taken almost 2 days our time, which would be about an hour and a half their time if each frame is a minute.  Using my scale, an hour our time is 2 minutes their time, a day is 48 minutes, and our month is their 24 hour day.  If we assume Randall plans to give us a 24 hour period from that world's time, and we use the minute-per-frame rate I made up, than we'd probably be looking at a month of images our time.  I guess we'll just have to see how long he's got it planned to go on. -boB&lt;br /&gt;
&lt;br /&gt;
Has it ended? All that's left is the sandcastle, and there doesn't seem to have been anything else changed on it for a few hours.&lt;br /&gt;
&lt;br /&gt;
It's zooming out! When look at the gifs showing the frames in succession, the last 3 show the castle getting slightly smaller each time!&lt;br /&gt;
: It's true! The most recent also shows the edge of another castle, leading me to believe it's part of some kind of sand castle contest, probably including some of xkcd's other recurring characters!&lt;br /&gt;
::Weird, now it's not showing that, Randall must have put something up too soon.&lt;br /&gt;
A controllable version of the same comic is available at http://xkcd.aubronwood.com/ - slow/fast movement, pause, control back and forth. It also has the image # on the top left. Auto updating. [[Special:Contributions/59.182.173.88|59.182.173.88]] 20:56, 27 March 2013 (UTC)&lt;/div&gt;</summary>
		<author><name>167.206.204.93</name></author>	</entry>

	<entry>
		<id>https://www.explainxkcd.com/wiki/index.php?title=Talk:1190:_Time&amp;diff=31356</id>
		<title>Talk:1190: Time</title>
		<link rel="alternate" type="text/html" href="https://www.explainxkcd.com/wiki/index.php?title=Talk:1190:_Time&amp;diff=31356"/>
				<updated>2013-03-27T23:07:38Z</updated>
		
		<summary type="html">&lt;p&gt;167.206.204.93: More commenting&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Pretty sure we're just getting trolled with this one [[Special:Contributions/99.108.190.136|99.108.190.136]] 04:48, 25 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
Can't tell if this is emo xkcd or trolling xkcd. [[User:Alpha|Alpha]] ([[User talk:Alpha|talk]]) 04:53, 25 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Something seems a little fishy because the image url is different than normal. [[User:Bugefun|Bugefun]] ([[User talk:Bugefun|talk]]) 04:55, 25 March 2013 (UTC)&lt;br /&gt;
:Maybe the comic slowly changes throughout the day. [[User:Alpha|Alpha]] ([[User talk:Alpha|talk]]) 04:56, 25 March 2013 (UTC)&lt;br /&gt;
::Oh god, it does. [[User:Alpha|Alpha]] ([[User talk:Alpha|talk]]) 04:57, 25 March 2013 (UTC)&lt;br /&gt;
:::When uploading different versions of the image, use the naming convention time[iterationNumber].png. We'll compile all the images into one and display them as per [[Traffic Lights]]. '''[[User:Davidy22|&amp;lt;u&amp;gt;{{Color|purple|David}}&amp;lt;font color=green size=3px&amp;gt;y&amp;lt;/font&amp;gt;&amp;lt;/u&amp;gt;&amp;lt;font color=indigo size=4px&amp;gt;²²&amp;lt;/font&amp;gt;]]'''[[User talk:Davidy22|&amp;lt;tt&amp;gt;[talk]&amp;lt;/tt&amp;gt;]] 05:05, 25 March 2013 (UTC)&lt;br /&gt;
::::Alright, so the comic appears to be switching between two states here: between [[media:time2.png|this]] and [[media:time3.png|this]]. If nothing new happens, I'll get to clipping the comics together. '''[[User:Davidy22|&amp;lt;u&amp;gt;{{Color|purple|David}}&amp;lt;font color=green size=3px&amp;gt;y&amp;lt;/font&amp;gt;&amp;lt;/u&amp;gt;&amp;lt;font color=indigo size=4px&amp;gt;²²&amp;lt;/font&amp;gt;]]'''[[User talk:Davidy22|&amp;lt;tt&amp;gt;[talk]&amp;lt;/tt&amp;gt;]] 05:28, 25 March 2013 (UTC)&lt;br /&gt;
:::::Whoop, nope, [[media:time4.png|this]] just came up. Is there more to come? '''[[User:Davidy22|&amp;lt;u&amp;gt;{{Color|purple|David}}&amp;lt;font color=green size=3px&amp;gt;y&amp;lt;/font&amp;gt;&amp;lt;/u&amp;gt;&amp;lt;font color=indigo size=4px&amp;gt;²²&amp;lt;/font&amp;gt;]]'''[[User talk:Davidy22|&amp;lt;tt&amp;gt;[talk]&amp;lt;/tt&amp;gt;]] 05:34, 25 March 2013 (UTC)&lt;br /&gt;
::::::Alright, so a new one is posted every half-hour. Whoopee. '''[[User:Davidy22|&amp;lt;u&amp;gt;{{Color|purple|David}}&amp;lt;font color=green size=3px&amp;gt;y&amp;lt;/font&amp;gt;&amp;lt;/u&amp;gt;&amp;lt;font color=indigo size=4px&amp;gt;²²&amp;lt;/font&amp;gt;]]'''[[User talk:Davidy22|&amp;lt;tt&amp;gt;[talk]&amp;lt;/tt&amp;gt;]] 06:06, 25 March 2013 (UTC)&lt;br /&gt;
:::::::And there's a new one! Megan leaning back and looking up...&lt;br /&gt;
::::::::Well, the image changed, who has the time to make a script to catch the new images and compile them into a gif? https://dl.dropbox.com/u/932170/time.png [[User:Statharas.903|Statharas.903]] ([[User talk:Statharas.903|talk]]) 07:14, 25 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
[[Special:Contributions/72.21.198.66|72.21.198.66]] 05:11, 25 March 2013 (UTC)It could be a reference to the old proverb &amp;quot; time and tide wait for none&amp;quot; Cueball and the girl could be waiting for the tide in the beach! (Just a guess)[[Special:Contributions/72.21.198.66|72.21.198.66]] 05:11, 25 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
The picture does chance with time. The URL includes a changing timestamp that I can't decipher. Compare these two URLS (which have slightly different images:&lt;br /&gt;
http://imgs.xkcd.com/comics/time/8eb156cce408df8bb83528382d6a2aa2ce6c74f3c573fd12b058cd1c56420672.png&lt;br /&gt;
http://imgs.xkcd.com/comics/time/1e349a579b5f9b5ed487ddf7e88244b70330941ddedac9c6abf6ed2e3f589b97.png&lt;br /&gt;
&lt;br /&gt;
Perhaps there is a way to hack the URL to view future images. [[Special:Contributions/199.30.248.121|199.30.248.121]] 05:29, 25 March 2013 (UTC)&lt;br /&gt;
: I would also like to add that knowing randall, these are not the only images. For all we know, the image will still be changing in 5 years while a tree grows in front of them. My point is: Are the URLs hackable, or did he encrypt them? [[Special:Contributions/199.30.248.121|199.30.248.121]] 05:33, 25 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
Likely there is a way to hack the URLs; they look like some sort of hash, probably a hashed timestamp. Of course, he could easily have added some salt to the hash, making it significantly *harder* to hack. But they're strings of a specific length, so it should be pretty easy to bruteforce it, fetch all the images, and then (maybe) reverse-engineer the sequence. *That* all depends on how many of them there are. [[Special:Contributions/76.90.249.178|76.90.249.178]] 05:44, 25 March 2013 (UTC)&lt;br /&gt;
:Good god, do you see how many digits are *in* that hash? The sun'll have burned out by the time we've tested every possible combination of digits. '''[[User:Davidy22|&amp;lt;u&amp;gt;{{Color|purple|David}}&amp;lt;font color=green size=3px&amp;gt;y&amp;lt;/font&amp;gt;&amp;lt;/u&amp;gt;&amp;lt;font color=indigo size=4px&amp;gt;²²&amp;lt;/font&amp;gt;]]'''[[User talk:Davidy22|&amp;lt;tt&amp;gt;[talk]&amp;lt;/tt&amp;gt;]] 05:47, 25 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
It seems that the image is updated every 1/2 hour. [[Special:Contributions/152.23.97.150|152.23.97.150]] 06:17, 25 March 2013 (UTC)&lt;br /&gt;
: Given that the images switch back and forth between other images already seen, and that the comic should be viewable in the future, it seems unlikely that it's any thing like a simple sha256 of part of the timestamp.  I think it's more likely a function of half-hours and minutes (assuming we continue to get a new possible image every half-hour). [[Special:Contributions/99.153.248.206|99.153.248.206]] 06:59, 25 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
::: The images do cycle, yes. But for some reason I have never seen the img where Megan is looking behind her. Also wouldn't it be difficult to show a sequential story (like the rising tide) if the previous images keep cycling ?&lt;br /&gt;
&lt;br /&gt;
Hash appears to be SHA-256. I tried some obvious hashes (&amp;quot;1&amp;quot;, &amp;quot;11901&amp;quot;, &amp;quot;1190_1&amp;quot;, &amp;quot;1190.1&amp;quot;) to no avail. Maybe this is HMAC-SHA256? Also, I would suggest trying Unix timestamps. [[Special:Contributions/131.156.236.149|131.156.236.149]] 06:19, 25 March 2013 (UTC)&lt;br /&gt;
: I've been trying to make educated guesses as to what's being hashed here: http://www.xorbin.com/tools/sha256-hash-calculator ... he could also be using hash(hash2(value)) which would be virtually impossible to crack. [[Special:Contributions/99.153.248.206|99.153.248.206]] 06:59, 25 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
It's entirely possible that the &amp;quot;hash&amp;quot; is actually randomly generated. Just a thought. [[Special:Contributions/129.21.119.153|129.21.119.153]] 07:03, 25 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
Regarding sha256. Its most likely some hash of a timestamp, but if he doesnt wants us to crack it, he would have prefixes a password.. sha256('secretcode17:30'). Im just saying, if he doesnt wants us to crack it, we most likely cant.&lt;br /&gt;
I've tested all unixtimestamps from 1300000000 to 1364390334. Also &amp;quot;00:00&amp;quot; to &amp;quot;23:59&amp;quot;, with and without the colon and a load of other formats. {{unsigned|77.243.128.133}}&lt;br /&gt;
&lt;br /&gt;
Alright, this is probably not going to work, but I'm trying to exploit Randall's awesomeness here. Maybe he decided to take the time-stamps from the user? I don't know if that's even possible... That would then allow people in different time zones to obtain different images simultaneously. (What's the corollary of Godwin's law for a bunch of math-and-science nerds and relativity? Is there one?) Clicking the img src url on the comic's html page, give me this: http://imgs.xkcd.com/comics/time/752687b61523144c61736cd89f8c153dc41e19128f72d78d44947ff800f057fa.png : Never mind.. apparently others see the same image too.&lt;br /&gt;
&lt;br /&gt;
Could he be doing this live? Monitoring the discussion on the net? Collaborative, crowdsourced comic-ing? Reminds me of those you-decide-what-the-character-does-next-and-flip-to-appropriate-page parallel plot novels.&lt;br /&gt;
&lt;br /&gt;
[[Special:Contributions/220.224.246.97|220.224.246.97]] 07:14, 25 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
Let's just compare the two pictures and see how the bottom right changes, which I believe is water and they are indeed waiting for the tide. [[User:Statharas.903|Statharas.903]] ([[User talk:Statharas.903|talk]]) 07:19, 25 March 2013 (UTC)&lt;br /&gt;
:I'm adding urls to pictures bellow, edit freely.&lt;br /&gt;
::They change every 5 minutes, will try to keep track.&lt;br /&gt;
&lt;br /&gt;
http://www.explainxkcd.com/wiki/images/f/f8/time.png &lt;br /&gt;
http://imgs.xkcd.com/comics/time/1e349a579b5f9b5ed487ddf7e88244b70330941ddedac9c6abf6ed2e3f589b97.png&lt;br /&gt;
http://imgs.xkcd.com/comics/time/752687b61523144c61736cd89f8c153dc41e19128f72d78d44947ff800f057fa.png&lt;br /&gt;
http://dl.dropbox.com/u/932170/timeasdf.png &lt;br /&gt;
http://dl.dropbox.com/u/932170/time6.png&lt;br /&gt;
&lt;br /&gt;
:I have uploaded all the different images onto the wiki, in the order that they were revealed. To avoid needless duplication of effort, I'll put them up in the explanation page. '''[[User:Davidy22|&amp;lt;u&amp;gt;{{Color|purple|David}}&amp;lt;font color=green size=3px&amp;gt;y&amp;lt;/font&amp;gt;&amp;lt;/u&amp;gt;&amp;lt;font color=indigo size=4px&amp;gt;²²&amp;lt;/font&amp;gt;]]'''[[User talk:Davidy22|&amp;lt;tt&amp;gt;[talk]&amp;lt;/tt&amp;gt;]] 07:44, 25 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
It just went back to the second image... [[Special:Contributions/220.224.246.97|220.224.246.97]] 07:59, 25 March 2013 (UTC)&lt;br /&gt;
: And now changed to something new.  http://imgs.xkcd.com/comics/time/cdcc6b46b32c53f8596cd0106958b42c4260b9cbc022e6d94054147aa6554960.png&lt;br /&gt;
:: The images do look alike, but they're all different. Thanks David. [[User:Statharas.903|Statharas.903]] ([[User talk:Statharas.903|talk]]) 08:04, 25 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
::: No..I checked the random string. They're exactly the same. In fact, now it's gone back to the second image. Again. [[Special:Contributions/220.224.246.97|220.224.246.97]] 08:07, 25 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
Just found this JavaScript code embedded in the comic HTML source (Update: Reformatted to prevent eye-bleeding): &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;(function (e) {&lt;br /&gt;
    &amp;quot;use strict&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
    function t() {&lt;br /&gt;
        this.data = {}&lt;br /&gt;
    }&lt;br /&gt;
    function n() {&lt;br /&gt;
        this.listeners = new t&lt;br /&gt;
    }&lt;br /&gt;
    function r(e) {&lt;br /&gt;
        setTimeout(function () {&lt;br /&gt;
            throw e&lt;br /&gt;
        }, 0)&lt;br /&gt;
    }&lt;br /&gt;
    function i(e) {&lt;br /&gt;
        this.type = e&lt;br /&gt;
    }&lt;br /&gt;
    function s(e, t) {&lt;br /&gt;
        i.call(this, e), this.data = t.data, this.lastEventId = t.lastEventId&lt;br /&gt;
    }&lt;br /&gt;
    function g(e, t) {&lt;br /&gt;
        var n = Number(e);&lt;br /&gt;
        return (n &amp;lt; 1 ? 1 : n &amp;gt; 18e6 ? 18e6 : n) || t&lt;br /&gt;
    }&lt;br /&gt;
    function y(e, t, n) {&lt;br /&gt;
        try {&lt;br /&gt;
            typeof e[t] == &amp;quot;function&amp;quot; &amp;amp;&amp;amp; e[t](n)&lt;br /&gt;
        } catch (i) {&lt;br /&gt;
            r(i)&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    function b(t, r) {&lt;br /&gt;
        function B() {&lt;br /&gt;
            L = d, N !== null &amp;amp;&amp;amp; (N.abort(), N = null), C !== 0 &amp;amp;&amp;amp; (clearTimeout(C), C = 0), S.readyState = d&lt;br /&gt;
        }&lt;br /&gt;
        function j(e) {&lt;br /&gt;
            var t = L === p || L === h ? N.responseText || &amp;quot;&amp;quot; : &amp;quot;&amp;quot;,&lt;br /&gt;
                n = null;&lt;br /&gt;
            if (L === h) {&lt;br /&gt;
                var r = f ? t !== &amp;quot;&amp;quot; ? N.getResponseHeader(&amp;quot;Content-Type&amp;quot;) : &amp;quot;&amp;quot; : N.contentType;&lt;br /&gt;
                if (r &amp;amp;&amp;amp; v.test(r)) {&lt;br /&gt;
                    L = p, T = !0, x = u, S.readyState = p, n = new i(&amp;quot;open&amp;quot;), S.dispatchEvent(n), y(S, &amp;quot;onopen&amp;quot;, n);&lt;br /&gt;
                    if (L === d) return&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            if (L === p) {&lt;br /&gt;
                t.length &amp;gt; k &amp;amp;&amp;amp; (H = !0, T = !0);&lt;br /&gt;
                var o = 0,&lt;br /&gt;
                    a = t.indexOf(&amp;quot;\r&amp;quot;, k),&lt;br /&gt;
                    l = t.indexOf(&amp;quot;\n&amp;quot;, k);&lt;br /&gt;
                while (a !== -1 || l !== -1) {&lt;br /&gt;
                    a === -1 || l !== -1 &amp;amp;&amp;amp; l &amp;lt; a ? (o = l, l = t.indexOf(&amp;quot;\n&amp;quot;, o + 1)) : (o = a, a = t.indexOf(&amp;quot;\r&amp;quot;, o + 1));&lt;br /&gt;
                    var m = t.slice(k, o),&lt;br /&gt;
                        B = D;&lt;br /&gt;
                    D = t.slice(o, o + 1) === &amp;quot;\r&amp;quot;, k = o + 1;&lt;br /&gt;
                    if (!B || m.length !== 0 || D) {&lt;br /&gt;
                        _.push(m);&lt;br /&gt;
                        var j = _.join(&amp;quot;&amp;quot;);&lt;br /&gt;
                        _.length = 0;&lt;br /&gt;
                        if (j !== &amp;quot;&amp;quot;) {&lt;br /&gt;
                            var I = &amp;quot;&amp;quot;,&lt;br /&gt;
                                q = j.indexOf(&amp;quot;:&amp;quot;, 0);&lt;br /&gt;
                            q !== -1 &amp;amp;&amp;amp; (I = j.slice(q + (j.slice(q + 1, q + 2) === &amp;quot; &amp;quot; ? 2 : 1)), j = j.slice(0, q)), j === &amp;quot;data&amp;quot; ? A.push(I) : j === &amp;quot;id&amp;quot; ? O = I : j === &amp;quot;event&amp;quot; ? M = I : j === &amp;quot;retry&amp;quot; ? (u = g(I, u), x = u, b &amp;lt; u &amp;amp;&amp;amp; (b = u)) : j === &amp;quot;retryLimit&amp;quot; ? b = g(I, b) : j === &amp;quot;heartbeatTimeout&amp;quot; &amp;amp;&amp;amp; (w = g(I, w), C !== 0 &amp;amp;&amp;amp; (clearTimeout(C), C = setTimeout(R, w)))&lt;br /&gt;
                        } else {&lt;br /&gt;
                            if (A.length !== 0) {&lt;br /&gt;
                                E = O;&lt;br /&gt;
                                var U = M || &amp;quot;message&amp;quot;;&lt;br /&gt;
                                n = new s(U, {&lt;br /&gt;
                                    data: A.join(&amp;quot;\n&amp;quot;),&lt;br /&gt;
                                    lastEventId: O&lt;br /&gt;
                                }), S.dispatchEvent(n), U === &amp;quot;message&amp;quot; &amp;amp;&amp;amp; y(S, &amp;quot;onmessage&amp;quot;, n);&lt;br /&gt;
                                if (L === d) return&lt;br /&gt;
                            }&lt;br /&gt;
                            A.length = 0, M = &amp;quot;&amp;quot;&lt;br /&gt;
                        }&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
                k !== t.length &amp;amp;&amp;amp; (_.push(t.slice(k)), k = t.length)&lt;br /&gt;
            }&lt;br /&gt;
            H &amp;amp;&amp;amp; P === 0 &amp;amp;&amp;amp; (H = !1, P = setTimeout(F, 80)), L !== p &amp;amp;&amp;amp; L !== h || !(e || k &amp;gt; 1048576 || C === 0 &amp;amp;&amp;amp; !T) ? C === 0 &amp;amp;&amp;amp; (T = !1, C = setTimeout(R, w)) : (L = c, N.abort(), C !== 0 &amp;amp;&amp;amp; (clearTimeout(C), C = 0), x &amp;gt; b &amp;amp;&amp;amp; (x = b), C = setTimeout(R, x), x = x * 2 + 1, S.readyState = h, n = new i(&amp;quot;error&amp;quot;), S.dispatchEvent(n), y(S, &amp;quot;onerror&amp;quot;, n))&lt;br /&gt;
        }&lt;br /&gt;
        function F() {&lt;br /&gt;
            P = 0, j(!1)&lt;br /&gt;
        }&lt;br /&gt;
        function I() {&lt;br /&gt;
            j(!1)&lt;br /&gt;
        }&lt;br /&gt;
        function q() {&lt;br /&gt;
            j(!0)&lt;br /&gt;
        }&lt;br /&gt;
        function R() {&lt;br /&gt;
            C = 0;&lt;br /&gt;
            if (L !== c) {&lt;br /&gt;
                j(!1);&lt;br /&gt;
                return&lt;br /&gt;
            }&lt;br /&gt;
            if (navigator.onLine === !1) {&lt;br /&gt;
                C = setTimeout(R, 500);&lt;br /&gt;
                return&lt;br /&gt;
            }&lt;br /&gt;
            if (m &amp;amp;&amp;amp; e.document &amp;amp;&amp;amp; (e.document.readyState === &amp;quot;loading&amp;quot; || e.document.readyState === &amp;quot;interactive&amp;quot;)) {&lt;br /&gt;
                C = setTimeout(R, 100);&lt;br /&gt;
                return&lt;br /&gt;
            }&lt;br /&gt;
            N.onload = N.onerror = q, N.mozAnon === undefined ? N.onprogress = I : N.onreadystatechange = I, T = !1, C = setTimeout(R, w), k = 0, L = h, A.length = 0, M = &amp;quot;&amp;quot;, O = E, _.length = 0, D = !1, N.open(&amp;quot;GET&amp;quot;, t + ((t.indexOf(&amp;quot;?&amp;quot;, 0) === -1 ? &amp;quot;?&amp;quot; : &amp;quot;&amp;amp;&amp;quot;) + &amp;quot;lastEventId=&amp;quot; + encodeURIComponent(E) + &amp;quot;&amp;amp;r=&amp;quot; + String(Math.random() + 1).slice(2)), !0), N.withCredentials = o, N.responseType = &amp;quot;text&amp;quot;, f &amp;amp;&amp;amp; N.setRequestHeader(&amp;quot;Accept&amp;quot;, &amp;quot;text/event-stream&amp;quot;), N.send(null)&lt;br /&gt;
        }&lt;br /&gt;
        t = String(t);&lt;br /&gt;
        var o = Boolean(a &amp;amp;&amp;amp; r &amp;amp;&amp;amp; r.withCredentials),&lt;br /&gt;
            u = g(r ? r.retry : NaN, 1e3),&lt;br /&gt;
            b = g(r ? r.retryLimit : NaN, 3e5),&lt;br /&gt;
            w = g(r ? r.heartbeatTimeout : NaN, 45e3),&lt;br /&gt;
            E = r &amp;amp;&amp;amp; r.lastEventId &amp;amp;&amp;amp; String(r.lastEventId) || &amp;quot;&amp;quot;,&lt;br /&gt;
            S = this,&lt;br /&gt;
            x = u,&lt;br /&gt;
            T = !1,&lt;br /&gt;
            N = new l,&lt;br /&gt;
            C = 0,&lt;br /&gt;
            k = 0,&lt;br /&gt;
            L = c,&lt;br /&gt;
            A = [],&lt;br /&gt;
            O = &amp;quot;&amp;quot;,&lt;br /&gt;
            M = &amp;quot;&amp;quot;,&lt;br /&gt;
            _ = [],&lt;br /&gt;
            D = !1,&lt;br /&gt;
            P = 0,&lt;br /&gt;
            H = !1;&lt;br /&gt;
        r = null, n.call(this), this.close = B, this.url = t, this.readyState = h, this.withCredentials = o, R()&lt;br /&gt;
    }&lt;br /&gt;
    function w() {&lt;br /&gt;
        this.CONNECTING = h, this.OPEN = p, this.CLOSED = d&lt;br /&gt;
    }&lt;br /&gt;
    t.prototype = {&lt;br /&gt;
        get: function (e) {&lt;br /&gt;
            return this.data[e + &amp;quot;~&amp;quot;]&lt;br /&gt;
        },&lt;br /&gt;
        set: function (e, t) {&lt;br /&gt;
            this.data[e + &amp;quot;~&amp;quot;] = t&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;delete&amp;quot;: function (e) {&lt;br /&gt;
            delete this.data[e + &amp;quot;~&amp;quot;]&lt;br /&gt;
        }&lt;br /&gt;
    }, n.prototype = {&lt;br /&gt;
        dispatchEvent: function (e) {&lt;br /&gt;
            var t = String(e.type),&lt;br /&gt;
                n = this.listeners,&lt;br /&gt;
                i = n.get(t);&lt;br /&gt;
            if (!i) return;&lt;br /&gt;
            var s = i.length,&lt;br /&gt;
                o = -1;&lt;br /&gt;
            while (++o &amp;lt; s) {&lt;br /&gt;
                var u = i[o];&lt;br /&gt;
                try {&lt;br /&gt;
                    u.call(this, e)&lt;br /&gt;
                } catch (a) {&lt;br /&gt;
                    r(a)&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        },&lt;br /&gt;
        addEventListener: function (e, t) {&lt;br /&gt;
            e = String(e);&lt;br /&gt;
            var n = this.listeners,&lt;br /&gt;
                r = n.get(e);&lt;br /&gt;
            r || n.set(e, r = []);&lt;br /&gt;
            var i = r.length;&lt;br /&gt;
            while (--i &amp;gt;= 0) if (r[i] === t) return;&lt;br /&gt;
            r.push(t)&lt;br /&gt;
        },&lt;br /&gt;
        removeEventListener: function (e, t) {&lt;br /&gt;
            e = String(e);&lt;br /&gt;
            var n = this.listeners,&lt;br /&gt;
                r = n.get(e);&lt;br /&gt;
            if (!r) return;&lt;br /&gt;
            var i = r.length,&lt;br /&gt;
                s = [],&lt;br /&gt;
                o = -1;&lt;br /&gt;
            while (++o &amp;lt; i) r[o] !== t &amp;amp;&amp;amp; s.push(r[o]);&lt;br /&gt;
            s.length === 0 ? n[&amp;quot;delete&amp;quot;](e) : n.set(e, s)&lt;br /&gt;
        }&lt;br /&gt;
    }, s.prototype = i.prototype;&lt;br /&gt;
    var o = e.XMLHttpRequest,&lt;br /&gt;
        u = e.XDomainRequest,&lt;br /&gt;
        a = Boolean(o &amp;amp;&amp;amp; (new o).withCredentials !== undefined),&lt;br /&gt;
        f = a,&lt;br /&gt;
        l = a ? o : u,&lt;br /&gt;
        c = -1,&lt;br /&gt;
        h = 0,&lt;br /&gt;
        p = 1,&lt;br /&gt;
        d = 2,&lt;br /&gt;
        v = /^text\/event\-stream;?(\s*charset\=utf\-8)?$/i,&lt;br /&gt;
        m = /AppleWebKit\/5([0-2][0-9]|3[0-4])[^\d]/.test(navigator.userAgent);&lt;br /&gt;
    w.prototype = n.prototype, b.prototype = new w, w.call(b), l &amp;amp;&amp;amp; (e.EventSource = b)&lt;br /&gt;
})(this),&lt;br /&gt;
function () {&lt;br /&gt;
    function e(e) {&lt;br /&gt;
        (new Image).src = &amp;quot;http://xkcd.com/events/&amp;quot; + e&lt;br /&gt;
    }&lt;br /&gt;
    function t() {&lt;br /&gt;
        location.hash == &amp;quot;#verbose&amp;quot; &amp;amp;&amp;amp; console.log.apply(console, arguments)&lt;br /&gt;
    }&lt;br /&gt;
    try {&lt;br /&gt;
        var n = &amp;quot;http://c0.xkcd.com/stream/comic/time?method=EventSource&amp;quot;,&lt;br /&gt;
            r = new EventSource(n);&lt;br /&gt;
        t(&amp;quot;connecting to event source:&amp;quot;, n), r.addEventListener(&amp;quot;open&amp;quot;, function (t) {&lt;br /&gt;
            e(&amp;quot;connect_start&amp;quot;)&lt;br /&gt;
        }, !1), r.addEventListener(&amp;quot;error&amp;quot;, function (t) {&lt;br /&gt;
            e(&amp;quot;connect_error&amp;quot;)&lt;br /&gt;
        }, !1), r.addEventListener(&amp;quot;loadtest&amp;quot;, t, !1), r.addEventListener(&amp;quot;comic/time&amp;quot;, t, !1), r.addEventListener(&amp;quot;comic/time&amp;quot;, function (e) {&lt;br /&gt;
            var n = JSON.parse(e.data),&lt;br /&gt;
                r = document.getElementById(&amp;quot;comic&amp;quot;).getElementsByTagName(&amp;quot;img&amp;quot;)[0],&lt;br /&gt;
                i = Math.round(Math.random() * n.spread);&lt;br /&gt;
            t(&amp;quot;waiting&amp;quot;, i, &amp;quot;seconds before displaying comic&amp;quot;, n.image), setTimeout(function () {&lt;br /&gt;
                r.src = &amp;quot;http://imgs.xkcd.com/comics/time/&amp;quot; + n.image&lt;br /&gt;
            }, i * 1e3)&lt;br /&gt;
        }, !1)&lt;br /&gt;
    } catch (i) {&lt;br /&gt;
        e(&amp;quot;js_error&amp;quot;)&lt;br /&gt;
    }&lt;br /&gt;
}();&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I'm no programmer but this looks important to me...&lt;br /&gt;
&lt;br /&gt;
:Doesn't really help. The script basically changes the image when something happens (probably some time passes, although it's possible there is more hidden there). WHAT image then appears is not directed by the script, but by the site. Specifically, the image displayed as first is taken from [http://c0.xkcd.com/redirect/comic/time http://c0.xkcd.com/redirect/comic/time], while the script asks for [http://c0.xkcd.com/stream/comic/time?method=EventSource&amp;amp;r=(somenumber) http://c0.xkcd.com/stream/comic/time?method=EventSource&amp;amp;r=(somenumber)] ... which is, if you get correct &amp;quot;r&amp;quot;, probably some json containing the image url. So, even if you hack the script, you will not get all possible urls. -- [[User:Hkmaly|Hkmaly]] ([[User talk:Hkmaly|talk]]) 09:17, 25 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
:: ... actually, given that the script part doesn't seem to do anything just now, it's even possible it's for later (ie, starts producing images when the correct time come). Or maybe there is a bug somewhere in the code :-). -- [[User:Hkmaly|Hkmaly]] ([[User talk:Hkmaly|talk]]) 09:27, 25 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
:::Thanks for explaining. Why hasn't anyone posted this before? Could &amp;quot;location.hash&amp;quot; possibly have anything to do with the method used to generate the image hash key? Also, why is this code so difficult to follow (Obfuscation?)? So many questions... Sorry if this is just a huge waste of ''Time''.&lt;br /&gt;
&lt;br /&gt;
:::: &amp;lt;code&amp;gt;location&amp;lt;/code&amp;gt; is the URI of the page. &amp;lt;code&amp;gt;location.hash&amp;lt;/code&amp;gt; is the part of the uri after the ''#'' character. If you go to [https://xkcd.com/1190/#verbose https://xkcd.com/1190/#verbose], you'll see some debugging output in your browser's debugging console (Firefox: Web Console or Firebug, Chrome: Development Tools). But nothing to decode the algorithm... :-( --[[Special:Contributions/83.243.48.2|83.243.48.2]] 10:01, 25 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
::::: Well, I don't know what's doing it, but there's definitely some script (probably this script) that's refreshing the image automatically.  I left the comic open for an hour or so and noticed the image had changed. I refreshed with #verbose in Chrome right before the 30 minute mark and got the following in the console.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
connecting to event source: http://c0.xkcd.com/stream/comic/time?method=EventSource time07.min.js:1&lt;br /&gt;
s {type: &amp;quot;comic/time&amp;quot;, data: &amp;quot;{&amp;quot;spread&amp;quot;:5,&amp;quot;image&amp;quot;:&amp;quot;832a7f13ca0fadc46e93475bb617d78211e32c81c3af0e289a51f8f149707759.png&amp;quot;}&amp;quot;, lastEventId: &amp;quot;e2992bf0-9557-11e2-8001-1c6f659cb250&amp;quot;} time07.min.js:1&lt;br /&gt;
waiting 0 seconds before displaying comic 832a7f13ca0fadc46e93475bb617d78211e32c81c3af0e289a51f8f149707759.png time07.min.js:1&lt;br /&gt;
Resource interpreted as Image but transferred with MIME type application/octet-stream: &amp;quot;http://xkcd.com/events/connect_start&amp;quot;. time07.min.js:1&lt;br /&gt;
s {type: &amp;quot;comic/time&amp;quot;, data: &amp;quot;{&amp;quot;spread&amp;quot;:5,&amp;quot;image&amp;quot;:&amp;quot;847265673986f085460bf1a95b96f7171bcd9a4f1f0a598b2188307d03bcfaa3.png&amp;quot;}&amp;quot;, lastEventId: &amp;quot;79580fe8-9558-11e2-8001-1c6f659cb250&amp;quot;} time07.min.js:1&lt;br /&gt;
waiting 4 seconds before displaying comic 847265673986f085460bf1a95b96f7171bcd9a4f1f0a598b2188307d03bcfaa3.png time07.min.js:1&lt;br /&gt;
connection error i {type: &amp;quot;error&amp;quot;} time07.min.js:1&lt;br /&gt;
Resource interpreted as Image but transferred with MIME type application/octet-stream: &amp;quot;http://xkcd.com/events/connect_error&amp;quot;.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::::: The script seems to poll the server every minute or two. It's different from before, where the image server itself redirected to the correct image. The auto refresh was probably always intended, but not quite ready when the comic went live. It may have turned out to be necessary too, so the image server doesn't have to do all the work. [[Special:Contributions/129.21.119.153|129.21.119.153]] 14:45, 25 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Before obfuscation... ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(function (global) {&lt;br /&gt;
    &amp;quot;use strict&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
    function Map() {&lt;br /&gt;
        this.data = {}&lt;br /&gt;
    }&lt;br /&gt;
    function EventTarget() {&lt;br /&gt;
        this.listeners = new Map&lt;br /&gt;
    }&lt;br /&gt;
    function throwError(e) {&lt;br /&gt;
        setTimeout(function () {&lt;br /&gt;
            throw e&lt;br /&gt;
        }, 0)&lt;br /&gt;
    }&lt;br /&gt;
    function Event(type) {&lt;br /&gt;
        this.type = type&lt;br /&gt;
    }&lt;br /&gt;
    function MessageEvent(type, options) {&lt;br /&gt;
        Event.call(this, type), this.data = options.data, this.lastEventId = options.lastEventId&lt;br /&gt;
    }&lt;br /&gt;
    function getDuration(value, def) {&lt;br /&gt;
        var n = Number(value);&lt;br /&gt;
        return (n &amp;lt; 1 ? 1 : n &amp;gt; 18e6 ? 18e6 : n) || def&lt;br /&gt;
    }&lt;br /&gt;
    function fire(that, property, event) {&lt;br /&gt;
        try {&lt;br /&gt;
            typeof that[property] == &amp;quot;function&amp;quot; &amp;amp;&amp;amp; that[property](event)&lt;br /&gt;
        } catch (e) {&lt;br /&gt;
            throwError(e)&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    function EventSource(url, options) {&lt;br /&gt;
        function close() {&lt;br /&gt;
            currentState = CLOSED, xhr !== null &amp;amp;&amp;amp; (xhr.abort(), xhr = null), timeout !== 0 &amp;amp;&amp;amp; (clearTimeout(timeout), timeout = 0), that.readyState = CLOSED&lt;br /&gt;
        }&lt;br /&gt;
        function onProgress(isLoadEnd) {&lt;br /&gt;
            var responseText = currentState === OPEN || currentState === CONNECTING ? xhr.responseText || &amp;quot;&amp;quot; : &amp;quot;&amp;quot;,&lt;br /&gt;
                event = null;&lt;br /&gt;
            if (currentState === CONNECTING) {&lt;br /&gt;
                var contentType = isXHR ? responseText !== &amp;quot;&amp;quot; ? xhr.getResponseHeader(&amp;quot;Content-Type&amp;quot;) : &amp;quot;&amp;quot; : xhr.contentType;&lt;br /&gt;
                if (contentType &amp;amp;&amp;amp; contentTypeRegExp.test(contentType)) {&lt;br /&gt;
                    currentState = OPEN, wasActivity = !0, retry = initialRetry, that.readyState = OPEN, event = new Event(&amp;quot;open&amp;quot;), that.dispatchEvent(event), fire(that, &amp;quot;onopen&amp;quot;, event);&lt;br /&gt;
                    if (currentState === CLOSED) return&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            if (currentState === OPEN) {&lt;br /&gt;
                responseText.length &amp;gt; charOffset &amp;amp;&amp;amp; (wasAct = !0, wasActivity = !0);&lt;br /&gt;
                var i = 0,&lt;br /&gt;
                    i1 = responseText.indexOf(&amp;quot;\r&amp;quot;, charOffset),&lt;br /&gt;
                    i2 = responseText.indexOf(&amp;quot;\n&amp;quot;, charOffset);&lt;br /&gt;
                while (i1 !== -1 || i2 !== -1) {&lt;br /&gt;
                    i1 === -1 || i2 !== -1 &amp;amp;&amp;amp; i2 &amp;lt; i1 ? (i = i2, i2 = responseText.indexOf(&amp;quot;\n&amp;quot;, i + 1)) : (i = i1, i1 = responseText.indexOf(&amp;quot;\r&amp;quot;, i + 1));&lt;br /&gt;
                    var line = responseText.slice(charOffset, i),&lt;br /&gt;
                        oldWasCR = wasCR;&lt;br /&gt;
                    wasCR = responseText.slice(i, i + 1) === &amp;quot;\r&amp;quot;, charOffset = i + 1;&lt;br /&gt;
                    if (!oldWasCR || line.length !== 0 || wasCR) {&lt;br /&gt;
                        responseBuffer.push(line);&lt;br /&gt;
                        var field = responseBuffer.join(&amp;quot;&amp;quot;);&lt;br /&gt;
                        responseBuffer.length = 0;&lt;br /&gt;
                        if (field !== &amp;quot;&amp;quot;) {&lt;br /&gt;
                            var value = &amp;quot;&amp;quot;,&lt;br /&gt;
                                j = field.indexOf(&amp;quot;:&amp;quot;, 0);&lt;br /&gt;
                            j !== -1 &amp;amp;&amp;amp; (value = field.slice(j + (field.slice(j + 1, j + 2) === &amp;quot; &amp;quot; ? 2 : 1)), field = field.slice(0, j)), field === &amp;quot;data&amp;quot; ? dataBuffer.push(value) : field === &amp;quot;id&amp;quot; ? lastEventIdBuffer = value : field === &amp;quot;event&amp;quot; ? eventTypeBuffer = value : field === &amp;quot;retry&amp;quot; ? (initialRetry = getDuration(value, initialRetry), retry = initialRetry, retryLimit &amp;lt; initialRetry &amp;amp;&amp;amp; (retryLimit = initialRetry)) : field === &amp;quot;retryLimit&amp;quot; ? retryLimit = getDuration(value, retryLimit) : field === &amp;quot;heartbeatTimeout&amp;quot; &amp;amp;&amp;amp; (heartbeatTimeout = getDuration(value, heartbeatTimeout), timeout !== 0 &amp;amp;&amp;amp; (clearTimeout(timeout), timeout = setTimeout(onTimeout, heartbeatTimeout)))&lt;br /&gt;
                        } else {&lt;br /&gt;
                            if (dataBuffer.length !== 0) {&lt;br /&gt;
                                lastEventId = lastEventIdBuffer;&lt;br /&gt;
                                var type = eventTypeBuffer || &amp;quot;message&amp;quot;;&lt;br /&gt;
                                event = new MessageEvent(type, {&lt;br /&gt;
                                    data: dataBuffer.join(&amp;quot;\n&amp;quot;),&lt;br /&gt;
                                    lastEventId: lastEventIdBuffer&lt;br /&gt;
                                }), that.dispatchEvent(event), type === &amp;quot;message&amp;quot; &amp;amp;&amp;amp; fire(that, &amp;quot;onmessage&amp;quot;, event);&lt;br /&gt;
                                if (currentState === CLOSED) return&lt;br /&gt;
                            }&lt;br /&gt;
                            dataBuffer.length = 0, eventTypeBuffer = &amp;quot;&amp;quot;&lt;br /&gt;
                        }&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
                charOffset !== responseText.length &amp;amp;&amp;amp; (responseBuffer.push(responseText.slice(charOffset)), charOffset = responseText.length)&lt;br /&gt;
            }&lt;br /&gt;
            wasAct &amp;amp;&amp;amp; progressTimeout === 0 &amp;amp;&amp;amp; (wasAct = !1, progressTimeout = setTimeout(p, 80)), currentState !== OPEN &amp;amp;&amp;amp; currentState !== CONNECTING || !(isLoadEnd || charOffset &amp;gt; 1048576 || timeout === 0 &amp;amp;&amp;amp; !wasActivity) ? timeout === 0 &amp;amp;&amp;amp; (wasActivity = !1, timeout = setTimeout(onTimeout, heartbeatTimeout)) : (currentState = WAITING, xhr.abort(), timeout !== 0 &amp;amp;&amp;amp; (clearTimeout(timeout), timeout = 0), retry &amp;gt; retryLimit &amp;amp;&amp;amp; (retry = retryLimit), timeout = setTimeout(onTimeout, retry), retry = retry * 2 + 1, that.readyState = CONNECTING, event = new Event(&amp;quot;error&amp;quot;), that.dispatchEvent(event), fire(that, &amp;quot;onerror&amp;quot;, event))&lt;br /&gt;
        }&lt;br /&gt;
        function p() {&lt;br /&gt;
            progressTimeout = 0, onProgress(!1)&lt;br /&gt;
        }&lt;br /&gt;
        function onProgress2() {&lt;br /&gt;
            onProgress(!1)&lt;br /&gt;
        }&lt;br /&gt;
        function onLoadEnd() {&lt;br /&gt;
            onProgress(!0)&lt;br /&gt;
        }&lt;br /&gt;
        function onTimeout() {&lt;br /&gt;
            timeout = 0;&lt;br /&gt;
            if (currentState !== WAITING) {&lt;br /&gt;
                onProgress(!1);&lt;br /&gt;
                return&lt;br /&gt;
            }&lt;br /&gt;
            if (navigator.onLine === !1) {&lt;br /&gt;
                timeout = setTimeout(onTimeout, 500);&lt;br /&gt;
                return&lt;br /&gt;
            }&lt;br /&gt;
            if (webkitBefore535 &amp;amp;&amp;amp; global.document &amp;amp;&amp;amp; (global.document.readyState === &amp;quot;loading&amp;quot; || global.document.readyState === &amp;quot;interactive&amp;quot;)) {&lt;br /&gt;
                timeout = setTimeout(onTimeout, 100);&lt;br /&gt;
                return&lt;br /&gt;
            }&lt;br /&gt;
            xhr.onload = xhr.onerror = onLoadEnd, xhr.mozAnon === undefined ? xhr.onprogress = onProgress2 : xhr.onreadystatechange = onProgress2, wasActivity = !1, timeout = setTimeout(onTimeout, heartbeatTimeout), charOffset = 0, currentState = CONNECTING, dataBuffer.length = 0, eventTypeBuffer = &amp;quot;&amp;quot;, lastEventIdBuffer = lastEventId, responseBuffer.length = 0, wasCR = !1, xhr.open(&amp;quot;GET&amp;quot;, url + ((url.indexOf(&amp;quot;?&amp;quot;, 0) === -1 ? &amp;quot;?&amp;quot; : &amp;quot;&amp;amp;&amp;quot;) + &amp;quot;lastEventId=&amp;quot; + encodeURIComponent(lastEventId) + &amp;quot;&amp;amp;r=&amp;quot; + String(Math.random() + 1).slice(2)), !0), xhr.withCredentials = withCredentials, xhr.responseType = &amp;quot;text&amp;quot;, isXHR &amp;amp;&amp;amp; xhr.setRequestHeader(&amp;quot;Accept&amp;quot;, &amp;quot;text/event-stream&amp;quot;), xhr.send(null)&lt;br /&gt;
        }&lt;br /&gt;
        url = String(url);&lt;br /&gt;
        var withCredentials = Boolean(xhr2 &amp;amp;&amp;amp; options &amp;amp;&amp;amp; options.withCredentials),&lt;br /&gt;
            initialRetry = getDuration(options ? options.retry : NaN, 1e3),&lt;br /&gt;
            retryLimit = getDuration(options ? options.retryLimit : NaN, 3e5),&lt;br /&gt;
            heartbeatTimeout = getDuration(options ? options.heartbeatTimeout : NaN, 45e3),&lt;br /&gt;
            lastEventId = options &amp;amp;&amp;amp; options.lastEventId &amp;amp;&amp;amp; String(options.lastEventId) || &amp;quot;&amp;quot;,&lt;br /&gt;
            that = this,&lt;br /&gt;
            retry = initialRetry,&lt;br /&gt;
            wasActivity = !1,&lt;br /&gt;
            xhr = new Transport,&lt;br /&gt;
            timeout = 0,&lt;br /&gt;
            charOffset = 0,&lt;br /&gt;
            currentState = WAITING,&lt;br /&gt;
            dataBuffer = [],&lt;br /&gt;
            lastEventIdBuffer = &amp;quot;&amp;quot;,&lt;br /&gt;
            eventTypeBuffer = &amp;quot;&amp;quot;,&lt;br /&gt;
            responseBuffer = [],&lt;br /&gt;
            wasCR = !1,&lt;br /&gt;
            progressTimeout = 0,&lt;br /&gt;
            wasAct = !1;&lt;br /&gt;
        options = null, EventTarget.call(this), this.close = close, this.url = url, this.readyState = CONNECTING, this.withCredentials = withCredentials, onTimeout()&lt;br /&gt;
    }&lt;br /&gt;
    function F() {&lt;br /&gt;
        this.CONNECTING = CONNECTING, this.OPEN = OPEN, this.CLOSED = CLOSED&lt;br /&gt;
    }&lt;br /&gt;
    Map.prototype = {&lt;br /&gt;
        get: function (key) {&lt;br /&gt;
            return this.data[key + &amp;quot;~&amp;quot;]&lt;br /&gt;
        },&lt;br /&gt;
        set: function (key, value) {&lt;br /&gt;
            this.data[key + &amp;quot;~&amp;quot;] = value&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;delete&amp;quot;: function (key) {&lt;br /&gt;
            delete this.data[key + &amp;quot;~&amp;quot;]&lt;br /&gt;
        }&lt;br /&gt;
    }, EventTarget.prototype = {&lt;br /&gt;
        dispatchEvent: function (event) {&lt;br /&gt;
            var type = String(event.type),&lt;br /&gt;
                listeners = this.listeners,&lt;br /&gt;
                typeListeners = listeners.get(type);&lt;br /&gt;
            if (!typeListeners) return;&lt;br /&gt;
            var length = typeListeners.length,&lt;br /&gt;
                i = -1;&lt;br /&gt;
            while (++i &amp;lt; length) {&lt;br /&gt;
                var listener = typeListeners[i];&lt;br /&gt;
                try {&lt;br /&gt;
                    listener.call(this, event)&lt;br /&gt;
                } catch (e) {&lt;br /&gt;
                    throwError(e)&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        },&lt;br /&gt;
        addEventListener: function (type, callback) {&lt;br /&gt;
            type = String(type);&lt;br /&gt;
            var listeners = this.listeners,&lt;br /&gt;
                typeListeners = listeners.get(type);&lt;br /&gt;
            typeListeners || listeners.set(type, typeListeners = []);&lt;br /&gt;
            var i = typeListeners.length;&lt;br /&gt;
            while (--i &amp;gt;= 0) if (typeListeners[i] === callback) return;&lt;br /&gt;
            typeListeners.push(callback)&lt;br /&gt;
        },&lt;br /&gt;
        removeEventListener: function (type, callback) {&lt;br /&gt;
            type = String(type);&lt;br /&gt;
            var listeners = this.listeners,&lt;br /&gt;
                typeListeners = listeners.get(type);&lt;br /&gt;
            if (!typeListeners) return;&lt;br /&gt;
            var length = typeListeners.length,&lt;br /&gt;
                filtered = [],&lt;br /&gt;
                i = -1;&lt;br /&gt;
            while (++i &amp;lt; length) typeListeners[i] !== callback &amp;amp;&amp;amp; filtered.push(typeListeners[i]);&lt;br /&gt;
            filtered.length === 0 ? listeners[&amp;quot;delete&amp;quot;](type) : listeners.set(type, filtered)&lt;br /&gt;
        }&lt;br /&gt;
    }, MessageEvent.prototype = Event.prototype;&lt;br /&gt;
    var XHR = global.XMLHttpRequest,&lt;br /&gt;
        XDR = global.XDomainRequest,&lt;br /&gt;
        xhr2 = Boolean(XHR &amp;amp;&amp;amp; (new XHR).withCredentials !== undefined),&lt;br /&gt;
        isXHR = xhr2,&lt;br /&gt;
        Transport = xhr2 ? XHR : XDR,&lt;br /&gt;
        WAITING = -1,&lt;br /&gt;
        CONNECTING = 0,&lt;br /&gt;
        OPEN = 1,&lt;br /&gt;
        CLOSED = 2,&lt;br /&gt;
        contentTypeRegExp = /^text\/event\-stream;?(\s*charset\=utf\-8)?$/i,&lt;br /&gt;
        webkitBefore535 = /AppleWebKit\/5([0-2][0-9]|3[0-4])[^\d]/.test(navigator.userAgent);&lt;br /&gt;
    F.prototype = EventTarget.prototype, EventSource.prototype = new F, F.call(EventSource), Transport &amp;amp;&amp;amp; (global.EventSource = EventSource)&lt;br /&gt;
 })(this),&lt;br /&gt;
function () {&lt;br /&gt;
    function record(name) {&lt;br /&gt;
        (new Image).src = &amp;quot;http://xkcd.com/events/&amp;quot; + name&lt;br /&gt;
    }&lt;br /&gt;
    function log() {&lt;br /&gt;
        location.hash == &amp;quot;#verbose&amp;quot; &amp;amp;&amp;amp; console.log.apply(console, arguments)&lt;br /&gt;
    }&lt;br /&gt;
    try {&lt;br /&gt;
        var esURL = &amp;quot;http://c0.xkcd.com/stream/comic/time?method=EventSource&amp;quot;,&lt;br /&gt;
            source = new EventSource(esURL);&lt;br /&gt;
        log(&amp;quot;connecting to event source:&amp;quot;, esURL), source.addEventListener(&amp;quot;open&amp;quot;, function (ev) {&lt;br /&gt;
            record(&amp;quot;connect_start&amp;quot;)&lt;br /&gt;
        }, !1), source.addEventListener(&amp;quot;error&amp;quot;, function (ev) {&lt;br /&gt;
            record(&amp;quot;connect_error&amp;quot;)&lt;br /&gt;
        }, !1), source.addEventListener(&amp;quot;loadtest&amp;quot;, log, !1), source.addEventListener(&amp;quot;comic/time&amp;quot;, log, !1), source.addEventListener(&amp;quot;comic/time&amp;quot;, function (ev) {&lt;br /&gt;
            var data = JSON.parse(ev.data),&lt;br /&gt;
                img = document.getElementById(&amp;quot;comic&amp;quot;).getElementsByTagName(&amp;quot;img&amp;quot;)[0],&lt;br /&gt;
                delay = Math.round(Math.random() * data.spread);&lt;br /&gt;
            log(&amp;quot;waiting&amp;quot;, delay, &amp;quot;seconds before displaying comic&amp;quot;, data.image), setTimeout(function () {&lt;br /&gt;
                img.src = &amp;quot;http://imgs.xkcd.com/comics/time/&amp;quot; + data.image&lt;br /&gt;
            }, delay * 1e3)&lt;br /&gt;
        }, !1)&lt;br /&gt;
    } catch (e) {&lt;br /&gt;
        record(&amp;quot;js_error&amp;quot;)&lt;br /&gt;
    }&lt;br /&gt;
}();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Special:Contributions/79.180.173.88|79.180.173.88]] 09:48, 25 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
http://imgs.xkcd.com/comics/time/426033682a26a0012a6f8e0c47287af91b7991a852d81c77402c937ffbd650c6.png&lt;br /&gt;
&lt;br /&gt;
http://www.explainxkcd.com/wiki/images/1/1e/f46c6571393bee1ee649a7daae41f6328e63482506aef1e22607d22c47dd7027.png --[[User:Johnsmith|Johnsmith]] ([[User talk:Johnsmith|talk]]) 22:51, 25 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
http://www.explainxkcd.com/wiki/images/b/b0/88e3a0c8bba935c669606d9134314f811a0961985f968dd5d329e4695acc67c8.png --[[User:Johnsmith|Johnsmith]] ([[User talk:Johnsmith|talk]]) 23:10, 25 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Is it just me or or did Randall manage to make all of us perform a Denial of Service on xkcd.com, and explainxkcd.com ? xkcd.com seems much slower, and I keep getting &amp;quot;500 Internal server error&amp;quot; when accessing this site (explainxkcd.com). I guess that's the effect of having everybody hit F5 every few minutes :) [[Special:Contributions/193.239.192.194|193.239.192.194]] 11:57, 25 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
Earlier today, the server handled all the image redirections. The script you see above went through several mutations (currently at #8), with each mutation it seems that Randall is adding more servers and trying to split the load between them. This is basically how a bot-net works - we all run code written by some evil genius, and he's changing the code as time passes to serve some hidden purpose.&lt;br /&gt;
[[Special:Contributions/79.180.173.88|79.180.173.88]] 15:44, 25 March 2013 (UTC)&lt;br /&gt;
    If he is using us as a botnet, then maybe the next comic will be something alluding to that.&lt;br /&gt;
    Probably like this: http://xkcd.com/350/&lt;br /&gt;
&lt;br /&gt;
When I saw this comic last night and that there was no explanation up, I thought to myself &amp;quot;How zen.&amp;quot;  I figured that Randall was going through a calm streak before throwing us the utterly ridiculous April 1st comic.  Did it come early, or does he have something even bigger planned for us? [[Special:Contributions/76.106.251.87|76.106.251.87]] 07:05, 26 March 2013 (UTC)&lt;br /&gt;
:Sorry, did you miss the bit where this comic updates every 30 minutes and all the server error messages being caused by the massive traffic to both the wiki and the main xkcd website? '''[[User:Davidy22|&amp;lt;u&amp;gt;{{Color|purple|David}}&amp;lt;font color=green size=3px&amp;gt;y&amp;lt;/font&amp;gt;&amp;lt;/u&amp;gt;&amp;lt;font color=indigo size=4px&amp;gt;²²&amp;lt;/font&amp;gt;]]'''[[User talk:Davidy22|&amp;lt;tt&amp;gt;[talk]&amp;lt;/tt&amp;gt;]] 07:08, 26 March 2013 (UTC)&lt;br /&gt;
::Well, when I said &amp;quot;last night&amp;quot; and &amp;quot;no explanation&amp;quot;, I implied that I wasn't aware of that at the time, which is why I thought what I did.  Of course, it is now &amp;quot;now&amp;quot; and there &amp;lt;i&amp;gt;is&amp;lt;/i&amp;gt; an explanation, so that should answer your question.  Also, since it's not April 1st, and Randall has consistently released something major on that day, the jury is still out, leaving my question quite open (though I was really only asking for opinions). [[Special:Contributions/76.106.251.87|76.106.251.87]] 07:20, 26 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
wanted to add an image to the list above, but didn't know at what timestamp to add it, got 69085b480cb82911b19fe8f114909756989eed89b0d227db0f59c1843de7ba24.png at 2013-03-26 09:47 CET (UTC+0100)&lt;br /&gt;
 /Puggan&lt;br /&gt;
:The hours denote the time since the initial release of the comic. The page is still a work in progress, we're going to bring that all into one image file soon. '''[[User:Davidy22|&amp;lt;u&amp;gt;{{Color|purple|David}}&amp;lt;font color=green size=3px&amp;gt;y&amp;lt;/font&amp;gt;&amp;lt;/u&amp;gt;&amp;lt;font color=indigo size=4px&amp;gt;²²&amp;lt;/font&amp;gt;]]'''[[User talk:Davidy22|&amp;lt;tt&amp;gt;[talk]&amp;lt;/tt&amp;gt;]] 09:13, 26 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
This site should seriously consider cloudflare, it's perfect at times like this and takes minutes to set up.  I run all my sites through it and it saves a lot of page huts and bandwidth.&lt;br /&gt;
[[Special:Contributions/123.3.136.228|123.3.136.228]]Evan Pyle&lt;br /&gt;
:Or at least make the main page a static page that refreshes every so often.  I'm guessing that most of the traffic is going to the front page with not as much traffic to the actual comic page [[User:Odysseus654|Odysseus654]] ([[User talk:Odysseus654|talk]]) 15:43, 26 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
Some of the images on the wiki (looks like time38.png through time48.png) are slightly different than what is on the main site.  The lines are slightly thicker, as though someone did them based on screen captures.&lt;br /&gt;
[[User:Royce|Royce]] ([[User talk:Royce|talk]]) 14:37, 26 March 2013 (UTC)&lt;br /&gt;
:Well, at least we have the hashes so they can be re-retrieved, so nothing is really lost, right?  Should we add links to the original? [[User:Odysseus654|Odysseus654]] ([[User talk:Odysseus654|talk]]) 15:43, 26 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
:I uploaded two of the &amp;quot;thicker&amp;quot; images and one of the &amp;quot;regular&amp;quot; ones, and I did the same thing for all of them: right-click-&amp;gt;save-as. Given that the &amp;quot;thick&amp;quot; ones are all clustered together, I think the files on the xkcd site changed. [[User:Druid816|Druid816]] ([[User talk:Druid816|talk]]) 18:21, 26 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
Story so far: [http://static.odysseus.anderson.name/1190.gif linky] [[User:Odysseus654|Odysseus654]] ([[User talk:Odysseus654|talk]]) 19:30, 26 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
I guess we shall find out in ~10 minutes if Randall is trolling us. [[Special:Contributions/129.138.30.95|129.138.30.95]] 04:20, 27 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
... so that's it?&lt;br /&gt;
&lt;br /&gt;
Did I just miss something or we've all been epically trolled for 48 hours? [[Special:Contributions/189.59.175.92|189.59.175.92]] 04:22, 27 March 2013 (UTC)&lt;br /&gt;
:Motherofgod, no, he's *still* going!''' [[User:Davidy22|&amp;lt;u&amp;gt;{{Color|purple|David}}&amp;lt;font color=green size=3px&amp;gt;y&amp;lt;/font&amp;gt;&amp;lt;/u&amp;gt;&amp;lt;font color=indigo size=4px&amp;gt;²²&amp;lt;/font&amp;gt;]]'''[[User talk:Davidy22|&amp;lt;tt&amp;gt;[talk]&amp;lt;/tt&amp;gt;]] 05:20, 27 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
What makes you think he's done? [[Special:Contributions/129.138.30.95|129.138.30.95]] 04:25, 27 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
I'm still waiting for the water level to drop precipitously... and then for red spiders to run over everything [[User:Odysseus654|Odysseus654]] ([[User talk:Odysseus654|talk]]) 04:28, 27 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
Well, strip 1191 is up so I assumed it was over. I guess it's not. Until April's Fools maybe? [[Special:Contributions/189.59.175.92|189.59.175.92]] 04:32, 27 March 2013 (UTC)&lt;br /&gt;
: It is not over -- the image is still updating, at least it did for me [[User:Spongebog|Spongebog]] ([[User talk:Spongebog|talk]])&lt;br /&gt;
:: Yes, it's not over. Last frame shows just a minimal movement of Cueball's head, but no doubt it's still ongoing. [[Special:Contributions/189.59.175.92|189.59.175.92]] 04:49, 27 March 2013 (UTC)&lt;br /&gt;
::: Given the fact the strips for the last 2 weeks have been comparatively simple, I expect Randall has been planning this for at least that long. {{unsigned|101.98.156.239}}&lt;br /&gt;
&lt;br /&gt;
Considering the common theme with &amp;quot;today's&amp;quot; strip, anyone wanna guess that he's sending us a hex-encoded file over a really slow modem link, slated to complete April 1? Anyone wanna run &amp;quot;magic&amp;quot; over the hashes and see if they come up with a compression codec or something? [[User:Odysseus654|Odysseus654]] ([[User talk:Odysseus654|talk]]) 04:45, 27 March 2013 (UTC)&lt;br /&gt;
:I liked this idea and crunched the hex data for 00:00 to 51:00 into a binary file (http://filebin.ca/bcGyfUvdgBi). Can't see anything resembling a file header, but that doesn't really say much. If this is compressed header-less data there wouldn't likely be any easily discernible patterns. Haven't really tried running the data through anything, zlib was one that came to mind but haven't tried it.&lt;br /&gt;
&lt;br /&gt;
[[Special:Contributions/194.114.62.72|194.114.62.72]] I'm pretty shure it's not the seaside, but a lake - the water level is not changing at all.&lt;br /&gt;
&lt;br /&gt;
Its probably going to loop back on itself, eventually, and repeat this way forever. [[Special:Contributions/113.160.224.209|113.160.224.209]] 07:12, 27 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
For those wondering about the Javascript behind this: I posted my analysis of the Javascript [http://www.echochamber.me/viewtopic.php?f=7&amp;amp;t=101043&amp;amp;start=760#p3303579 on the xkcd forums], and further de-obfuscated and annotated the code over on [https://gist.github.com/cincodenada/5246094 GitHub].  Here's a quick summary though: it holds open a connection to xkcd's servers and listens for instructions and follows them. Those instructions are either &amp;quot;load a new image&amp;quot; or &amp;quot;reload the page&amp;quot;. So, you don't have to mash F5, it will automatically update the image when they're available. We have no way to control how fast the images come or when they do, and it's quite possible for them to update forever. --[[User:Fiveofoh|Fiveofoh]] ([[User talk:Fiveofoh|talk]]) 06:41, 27 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
This is a series of animation frames. I suspect they will only ever be shown once (based on the fact you can only get the current image, not previous or future images -- this is in keeping with the title, &amp;quot;Time&amp;quot;, which passes and which you can't ever get back]. The filenames are UUIDs too long to guess, so somebody needs to start collecting the filenames here so that a proper flipbook can be assembled. Here's the latest URL: [http://imgs.xkcd.com/comics/time/81efa7c4509ac7a329407d9da25d12ec0a3baec50e06588586961575e2d65c2c.png http://imgs.xkcd.com/comics/time/81efa7c4509ac7a329407d9da25d12ec0a3baec50e06588586961575e2d65c2c.png]  Go here to collect URLs: [http://c0.xkcd.com/stream/comic/time?method=EventSource http://c0.xkcd.com/stream/comic/time?method=EventSource]&lt;br /&gt;
:We've kinda already been doing that. They're the big long filenames next to each timestamp. '''[[User:Davidy22|&amp;lt;u&amp;gt;{{Color|purple|David}}&amp;lt;font color=green size=3px&amp;gt;y&amp;lt;/font&amp;gt;&amp;lt;/u&amp;gt;&amp;lt;font color=indigo size=4px&amp;gt;²²&amp;lt;/font&amp;gt;]]'''[[User talk:Davidy22|&amp;lt;tt&amp;gt;[talk]&amp;lt;/tt&amp;gt;]] 09:06, 27 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
Oh my god it's game of thrones played out in 2D  [[Special:Contributions/123.3.136.228|123.3.136.228]] Evan Pyle &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Create an animation on this page ==&lt;br /&gt;
Here's a bit of JavaScript to execute in your browser's JavaScript console. (Cmd+Alt+K on Firefox for Mac, for example.)&lt;br /&gt;
&lt;br /&gt;
 /* Collect all frame image URLs */&lt;br /&gt;
 var images = [];&lt;br /&gt;
 Array.prototype.slice.call(document.querySelectorAll('a[href*=&amp;quot;/time&amp;quot;][href$=&amp;quot;.png&amp;quot;]')).forEach(function (a) {&lt;br /&gt;
 	images.push(a.href);&lt;br /&gt;
 });&lt;br /&gt;
 &lt;br /&gt;
 /* Create an image in the top-right corner of the screen */&lt;br /&gt;
 var img = document.body.appendChild(document.createElement('img'));&lt;br /&gt;
 img.setAttribute('style', 'position: fixed; top: 1em; right: 1em;');&lt;br /&gt;
 &lt;br /&gt;
 /* Allow removing the image by clicking */&lt;br /&gt;
 img.onclick = function () {&lt;br /&gt;
 	img.parentNode.removeChild(img);&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 /* Cycle through the frames */&lt;br /&gt;
 img.onload = function () {&lt;br /&gt;
 	/* Pause a bit longer for the &amp;quot;Later! Bye!&amp;quot; frame */&lt;br /&gt;
 	var delay = img.i === 51 ? 500 : 100;&lt;br /&gt;
 	setTimeout(function () {&lt;br /&gt;
 		img.src = images[++img.i % images.length];&lt;br /&gt;
 	}, delay);&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 /* Start with the first frame */&lt;br /&gt;
 img.i = 0;&lt;br /&gt;
 img.src = images[img.i];&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
— [http://jan.moesen.nu/ Jan!] [[Special:Contributions/94.23.195.79|94.23.195.79]] 09:22, 27 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
---Thanks for the script!. Ctrl+Shift+J on Windows Chrome [[User:Shine|Shine]] ([[User talk:Shine|talk]]) 13:11, 27 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
The one for the prior half hour (5AM - 5:30AM EST, 27 March 2013) is located at http://imgs.xkcd.com/comics/time/5450bd39ee84a394467fabcaf92f1a5711c2a4eca24c8bd8a8cec829496e3dd7.png&lt;br /&gt;
[[Special:Contributions/141.161.133.106|141.161.133.106]] 09:26, 27 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
And the one for the following half hour is located at http://imgs.xkcd.com/comics/time/c2ea85f1ab92f2f80e9c4655c47f5c7effc0a7da01c8a88493864845855b3be8.png&lt;br /&gt;
[[Special:Contributions/141.161.133.106|141.161.133.106]] 09:31, 27 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Call me a paranoid, but I think this strip is all about 9/11:&lt;br /&gt;
       - If you read the strip number (1190) backwards, you get 09/11&lt;br /&gt;
       - This subject is recurrent on xkcd&lt;br /&gt;
       - As far as we have seen, there is a destroyed tower and they are rebuilding it&lt;br /&gt;
       - The next strip, following 1190 (or 09/11), mentions war against countries with large oil reserves but low military capacity. {{unsigned|143.107.105.14}}&lt;br /&gt;
:I feel like that's kind of a stretch, I'm pretty sure it's just a story about a day at the beach.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If a new strip goes up every 30 minutes our time, and if each strip comprises of, let's say for the sake of simplicity, one minute in their time; to build the sand castle [frames 24-117 = 93 frames] so far it's taken almost 2 days our time, which would be about an hour and a half their time if each frame is a minute.  Using my scale, an hour our time is 2 minutes their time, a day is 48 minutes, and our month is their 24 hour day.  If we assume Randall plans to give us a 24 hour period from that world's time, and we use the minute-per-frame rate I made up, than we'd probably be looking at a month of images our time.  I guess we'll just have to see how long he's got it planned to go on. -boB&lt;br /&gt;
&lt;br /&gt;
Has it ended? All that's left is the sandcastle, and there doesn't seem to have been anything else changed on it for a few hours.&lt;br /&gt;
&lt;br /&gt;
It's zooming out! When look at the gifs showing the frames in succession, the last 3 show the castle getting slightly smaller each time!&lt;br /&gt;
: It's true! The most recent also shows the edge of another castle, leading me to believe it's part of some kind of sand castle contest, probably including some of xkcd's other recurring characters!&lt;br /&gt;
&lt;br /&gt;
A controllable version of the same comic is available at http://xkcd.aubronwood.com/ - slow/fast movement, pause, control back and forth. It also has the image # on the top left. Auto updating. [[Special:Contributions/59.182.173.88|59.182.173.88]] 20:56, 27 March 2013 (UTC)&lt;/div&gt;</summary>
		<author><name>167.206.204.93</name></author>	</entry>

	<entry>
		<id>https://www.explainxkcd.com/wiki/index.php?title=Talk:1190:_Time&amp;diff=31340</id>
		<title>Talk:1190: Time</title>
		<link rel="alternate" type="text/html" href="https://www.explainxkcd.com/wiki/index.php?title=Talk:1190:_Time&amp;diff=31340"/>
				<updated>2013-03-27T20:22:47Z</updated>
		
		<summary type="html">&lt;p&gt;167.206.204.93: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Pretty sure we're just getting trolled with this one [[Special:Contributions/99.108.190.136|99.108.190.136]] 04:48, 25 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
Can't tell if this is emo xkcd or trolling xkcd. [[User:Alpha|Alpha]] ([[User talk:Alpha|talk]]) 04:53, 25 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Something seems a little fishy because the image url is different than normal. [[User:Bugefun|Bugefun]] ([[User talk:Bugefun|talk]]) 04:55, 25 March 2013 (UTC)&lt;br /&gt;
:Maybe the comic slowly changes throughout the day. [[User:Alpha|Alpha]] ([[User talk:Alpha|talk]]) 04:56, 25 March 2013 (UTC)&lt;br /&gt;
::Oh god, it does. [[User:Alpha|Alpha]] ([[User talk:Alpha|talk]]) 04:57, 25 March 2013 (UTC)&lt;br /&gt;
:::When uploading different versions of the image, use the naming convention time[iterationNumber].png. We'll compile all the images into one and display them as per [[Traffic Lights]]. '''[[User:Davidy22|&amp;lt;u&amp;gt;{{Color|purple|David}}&amp;lt;font color=green size=3px&amp;gt;y&amp;lt;/font&amp;gt;&amp;lt;/u&amp;gt;&amp;lt;font color=indigo size=4px&amp;gt;²²&amp;lt;/font&amp;gt;]]'''[[User talk:Davidy22|&amp;lt;tt&amp;gt;[talk]&amp;lt;/tt&amp;gt;]] 05:05, 25 March 2013 (UTC)&lt;br /&gt;
::::Alright, so the comic appears to be switching between two states here: between [[media:time2.png|this]] and [[media:time3.png|this]]. If nothing new happens, I'll get to clipping the comics together. '''[[User:Davidy22|&amp;lt;u&amp;gt;{{Color|purple|David}}&amp;lt;font color=green size=3px&amp;gt;y&amp;lt;/font&amp;gt;&amp;lt;/u&amp;gt;&amp;lt;font color=indigo size=4px&amp;gt;²²&amp;lt;/font&amp;gt;]]'''[[User talk:Davidy22|&amp;lt;tt&amp;gt;[talk]&amp;lt;/tt&amp;gt;]] 05:28, 25 March 2013 (UTC)&lt;br /&gt;
:::::Whoop, nope, [[media:time4.png|this]] just came up. Is there more to come? '''[[User:Davidy22|&amp;lt;u&amp;gt;{{Color|purple|David}}&amp;lt;font color=green size=3px&amp;gt;y&amp;lt;/font&amp;gt;&amp;lt;/u&amp;gt;&amp;lt;font color=indigo size=4px&amp;gt;²²&amp;lt;/font&amp;gt;]]'''[[User talk:Davidy22|&amp;lt;tt&amp;gt;[talk]&amp;lt;/tt&amp;gt;]] 05:34, 25 March 2013 (UTC)&lt;br /&gt;
::::::Alright, so a new one is posted every half-hour. Whoopee. '''[[User:Davidy22|&amp;lt;u&amp;gt;{{Color|purple|David}}&amp;lt;font color=green size=3px&amp;gt;y&amp;lt;/font&amp;gt;&amp;lt;/u&amp;gt;&amp;lt;font color=indigo size=4px&amp;gt;²²&amp;lt;/font&amp;gt;]]'''[[User talk:Davidy22|&amp;lt;tt&amp;gt;[talk]&amp;lt;/tt&amp;gt;]] 06:06, 25 March 2013 (UTC)&lt;br /&gt;
:::::::And there's a new one! Megan leaning back and looking up...&lt;br /&gt;
::::::::Well, the image changed, who has the time to make a script to catch the new images and compile them into a gif? https://dl.dropbox.com/u/932170/time.png [[User:Statharas.903|Statharas.903]] ([[User talk:Statharas.903|talk]]) 07:14, 25 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
[[Special:Contributions/72.21.198.66|72.21.198.66]] 05:11, 25 March 2013 (UTC)It could be a reference to the old proverb &amp;quot; time and tide wait for none&amp;quot; Cueball and the girl could be waiting for the tide in the beach! (Just a guess)[[Special:Contributions/72.21.198.66|72.21.198.66]] 05:11, 25 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
The picture does chance with time. The URL includes a changing timestamp that I can't decipher. Compare these two URLS (which have slightly different images:&lt;br /&gt;
http://imgs.xkcd.com/comics/time/8eb156cce408df8bb83528382d6a2aa2ce6c74f3c573fd12b058cd1c56420672.png&lt;br /&gt;
http://imgs.xkcd.com/comics/time/1e349a579b5f9b5ed487ddf7e88244b70330941ddedac9c6abf6ed2e3f589b97.png&lt;br /&gt;
&lt;br /&gt;
Perhaps there is a way to hack the URL to view future images. [[Special:Contributions/199.30.248.121|199.30.248.121]] 05:29, 25 March 2013 (UTC)&lt;br /&gt;
: I would also like to add that knowing randall, these are not the only images. For all we know, the image will still be changing in 5 years while a tree grows in front of them. My point is: Are the URLs hackable, or did he encrypt them? [[Special:Contributions/199.30.248.121|199.30.248.121]] 05:33, 25 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
Likely there is a way to hack the URLs; they look like some sort of hash, probably a hashed timestamp. Of course, he could easily have added some salt to the hash, making it significantly *harder* to hack. But they're strings of a specific length, so it should be pretty easy to bruteforce it, fetch all the images, and then (maybe) reverse-engineer the sequence. *That* all depends on how many of them there are. [[Special:Contributions/76.90.249.178|76.90.249.178]] 05:44, 25 March 2013 (UTC)&lt;br /&gt;
:Good god, do you see how many digits are *in* that hash? The sun'll have burned out by the time we've tested every possible combination of digits. '''[[User:Davidy22|&amp;lt;u&amp;gt;{{Color|purple|David}}&amp;lt;font color=green size=3px&amp;gt;y&amp;lt;/font&amp;gt;&amp;lt;/u&amp;gt;&amp;lt;font color=indigo size=4px&amp;gt;²²&amp;lt;/font&amp;gt;]]'''[[User talk:Davidy22|&amp;lt;tt&amp;gt;[talk]&amp;lt;/tt&amp;gt;]] 05:47, 25 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
It seems that the image is updated every 1/2 hour. [[Special:Contributions/152.23.97.150|152.23.97.150]] 06:17, 25 March 2013 (UTC)&lt;br /&gt;
: Given that the images switch back and forth between other images already seen, and that the comic should be viewable in the future, it seems unlikely that it's any thing like a simple sha256 of part of the timestamp.  I think it's more likely a function of half-hours and minutes (assuming we continue to get a new possible image every half-hour). [[Special:Contributions/99.153.248.206|99.153.248.206]] 06:59, 25 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
::: The images do cycle, yes. But for some reason I have never seen the img where Megan is looking behind her. Also wouldn't it be difficult to show a sequential story (like the rising tide) if the previous images keep cycling ?&lt;br /&gt;
&lt;br /&gt;
Hash appears to be SHA-256. I tried some obvious hashes (&amp;quot;1&amp;quot;, &amp;quot;11901&amp;quot;, &amp;quot;1190_1&amp;quot;, &amp;quot;1190.1&amp;quot;) to no avail. Maybe this is HMAC-SHA256? Also, I would suggest trying Unix timestamps. [[Special:Contributions/131.156.236.149|131.156.236.149]] 06:19, 25 March 2013 (UTC)&lt;br /&gt;
: I've been trying to make educated guesses as to what's being hashed here: http://www.xorbin.com/tools/sha256-hash-calculator ... he could also be using hash(hash2(value)) which would be virtually impossible to crack. [[Special:Contributions/99.153.248.206|99.153.248.206]] 06:59, 25 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
It's entirely possible that the &amp;quot;hash&amp;quot; is actually randomly generated. Just a thought. [[Special:Contributions/129.21.119.153|129.21.119.153]] 07:03, 25 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
Regarding sha256. Its most likely some hash of a timestamp, but if he doesnt wants us to crack it, he would have prefixes a password.. sha256('secretcode17:30'). Im just saying, if he doesnt wants us to crack it, we most likely cant.&lt;br /&gt;
I've tested all unixtimestamps from 1300000000 to 1364390334. Also &amp;quot;00:00&amp;quot; to &amp;quot;23:59&amp;quot;, with and without the colon and a load of other formats. {{unsigned|77.243.128.133}}&lt;br /&gt;
&lt;br /&gt;
Alright, this is probably not going to work, but I'm trying to exploit Randall's awesomeness here. Maybe he decided to take the time-stamps from the user? I don't know if that's even possible... That would then allow people in different time zones to obtain different images simultaneously. (What's the corollary of Godwin's law for a bunch of math-and-science nerds and relativity? Is there one?) Clicking the img src url on the comic's html page, give me this: http://imgs.xkcd.com/comics/time/752687b61523144c61736cd89f8c153dc41e19128f72d78d44947ff800f057fa.png : Never mind.. apparently others see the same image too.&lt;br /&gt;
&lt;br /&gt;
Could he be doing this live? Monitoring the discussion on the net? Collaborative, crowdsourced comic-ing? Reminds me of those you-decide-what-the-character-does-next-and-flip-to-appropriate-page parallel plot novels.&lt;br /&gt;
&lt;br /&gt;
[[Special:Contributions/220.224.246.97|220.224.246.97]] 07:14, 25 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
Let's just compare the two pictures and see how the bottom right changes, which I believe is water and they are indeed waiting for the tide. [[User:Statharas.903|Statharas.903]] ([[User talk:Statharas.903|talk]]) 07:19, 25 March 2013 (UTC)&lt;br /&gt;
:I'm adding urls to pictures bellow, edit freely.&lt;br /&gt;
::They change every 5 minutes, will try to keep track.&lt;br /&gt;
&lt;br /&gt;
http://www.explainxkcd.com/wiki/images/f/f8/time.png &lt;br /&gt;
http://imgs.xkcd.com/comics/time/1e349a579b5f9b5ed487ddf7e88244b70330941ddedac9c6abf6ed2e3f589b97.png&lt;br /&gt;
http://imgs.xkcd.com/comics/time/752687b61523144c61736cd89f8c153dc41e19128f72d78d44947ff800f057fa.png&lt;br /&gt;
http://dl.dropbox.com/u/932170/timeasdf.png &lt;br /&gt;
http://dl.dropbox.com/u/932170/time6.png&lt;br /&gt;
&lt;br /&gt;
:I have uploaded all the different images onto the wiki, in the order that they were revealed. To avoid needless duplication of effort, I'll put them up in the explanation page. '''[[User:Davidy22|&amp;lt;u&amp;gt;{{Color|purple|David}}&amp;lt;font color=green size=3px&amp;gt;y&amp;lt;/font&amp;gt;&amp;lt;/u&amp;gt;&amp;lt;font color=indigo size=4px&amp;gt;²²&amp;lt;/font&amp;gt;]]'''[[User talk:Davidy22|&amp;lt;tt&amp;gt;[talk]&amp;lt;/tt&amp;gt;]] 07:44, 25 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
It just went back to the second image... [[Special:Contributions/220.224.246.97|220.224.246.97]] 07:59, 25 March 2013 (UTC)&lt;br /&gt;
: And now changed to something new.  http://imgs.xkcd.com/comics/time/cdcc6b46b32c53f8596cd0106958b42c4260b9cbc022e6d94054147aa6554960.png&lt;br /&gt;
:: The images do look alike, but they're all different. Thanks David. [[User:Statharas.903|Statharas.903]] ([[User talk:Statharas.903|talk]]) 08:04, 25 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
::: No..I checked the random string. They're exactly the same. In fact, now it's gone back to the second image. Again. [[Special:Contributions/220.224.246.97|220.224.246.97]] 08:07, 25 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
Just found this JavaScript code embedded in the comic HTML source (Update: Reformatted to prevent eye-bleeding): &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;(function (e) {&lt;br /&gt;
    &amp;quot;use strict&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
    function t() {&lt;br /&gt;
        this.data = {}&lt;br /&gt;
    }&lt;br /&gt;
    function n() {&lt;br /&gt;
        this.listeners = new t&lt;br /&gt;
    }&lt;br /&gt;
    function r(e) {&lt;br /&gt;
        setTimeout(function () {&lt;br /&gt;
            throw e&lt;br /&gt;
        }, 0)&lt;br /&gt;
    }&lt;br /&gt;
    function i(e) {&lt;br /&gt;
        this.type = e&lt;br /&gt;
    }&lt;br /&gt;
    function s(e, t) {&lt;br /&gt;
        i.call(this, e), this.data = t.data, this.lastEventId = t.lastEventId&lt;br /&gt;
    }&lt;br /&gt;
    function g(e, t) {&lt;br /&gt;
        var n = Number(e);&lt;br /&gt;
        return (n &amp;lt; 1 ? 1 : n &amp;gt; 18e6 ? 18e6 : n) || t&lt;br /&gt;
    }&lt;br /&gt;
    function y(e, t, n) {&lt;br /&gt;
        try {&lt;br /&gt;
            typeof e[t] == &amp;quot;function&amp;quot; &amp;amp;&amp;amp; e[t](n)&lt;br /&gt;
        } catch (i) {&lt;br /&gt;
            r(i)&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    function b(t, r) {&lt;br /&gt;
        function B() {&lt;br /&gt;
            L = d, N !== null &amp;amp;&amp;amp; (N.abort(), N = null), C !== 0 &amp;amp;&amp;amp; (clearTimeout(C), C = 0), S.readyState = d&lt;br /&gt;
        }&lt;br /&gt;
        function j(e) {&lt;br /&gt;
            var t = L === p || L === h ? N.responseText || &amp;quot;&amp;quot; : &amp;quot;&amp;quot;,&lt;br /&gt;
                n = null;&lt;br /&gt;
            if (L === h) {&lt;br /&gt;
                var r = f ? t !== &amp;quot;&amp;quot; ? N.getResponseHeader(&amp;quot;Content-Type&amp;quot;) : &amp;quot;&amp;quot; : N.contentType;&lt;br /&gt;
                if (r &amp;amp;&amp;amp; v.test(r)) {&lt;br /&gt;
                    L = p, T = !0, x = u, S.readyState = p, n = new i(&amp;quot;open&amp;quot;), S.dispatchEvent(n), y(S, &amp;quot;onopen&amp;quot;, n);&lt;br /&gt;
                    if (L === d) return&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            if (L === p) {&lt;br /&gt;
                t.length &amp;gt; k &amp;amp;&amp;amp; (H = !0, T = !0);&lt;br /&gt;
                var o = 0,&lt;br /&gt;
                    a = t.indexOf(&amp;quot;\r&amp;quot;, k),&lt;br /&gt;
                    l = t.indexOf(&amp;quot;\n&amp;quot;, k);&lt;br /&gt;
                while (a !== -1 || l !== -1) {&lt;br /&gt;
                    a === -1 || l !== -1 &amp;amp;&amp;amp; l &amp;lt; a ? (o = l, l = t.indexOf(&amp;quot;\n&amp;quot;, o + 1)) : (o = a, a = t.indexOf(&amp;quot;\r&amp;quot;, o + 1));&lt;br /&gt;
                    var m = t.slice(k, o),&lt;br /&gt;
                        B = D;&lt;br /&gt;
                    D = t.slice(o, o + 1) === &amp;quot;\r&amp;quot;, k = o + 1;&lt;br /&gt;
                    if (!B || m.length !== 0 || D) {&lt;br /&gt;
                        _.push(m);&lt;br /&gt;
                        var j = _.join(&amp;quot;&amp;quot;);&lt;br /&gt;
                        _.length = 0;&lt;br /&gt;
                        if (j !== &amp;quot;&amp;quot;) {&lt;br /&gt;
                            var I = &amp;quot;&amp;quot;,&lt;br /&gt;
                                q = j.indexOf(&amp;quot;:&amp;quot;, 0);&lt;br /&gt;
                            q !== -1 &amp;amp;&amp;amp; (I = j.slice(q + (j.slice(q + 1, q + 2) === &amp;quot; &amp;quot; ? 2 : 1)), j = j.slice(0, q)), j === &amp;quot;data&amp;quot; ? A.push(I) : j === &amp;quot;id&amp;quot; ? O = I : j === &amp;quot;event&amp;quot; ? M = I : j === &amp;quot;retry&amp;quot; ? (u = g(I, u), x = u, b &amp;lt; u &amp;amp;&amp;amp; (b = u)) : j === &amp;quot;retryLimit&amp;quot; ? b = g(I, b) : j === &amp;quot;heartbeatTimeout&amp;quot; &amp;amp;&amp;amp; (w = g(I, w), C !== 0 &amp;amp;&amp;amp; (clearTimeout(C), C = setTimeout(R, w)))&lt;br /&gt;
                        } else {&lt;br /&gt;
                            if (A.length !== 0) {&lt;br /&gt;
                                E = O;&lt;br /&gt;
                                var U = M || &amp;quot;message&amp;quot;;&lt;br /&gt;
                                n = new s(U, {&lt;br /&gt;
                                    data: A.join(&amp;quot;\n&amp;quot;),&lt;br /&gt;
                                    lastEventId: O&lt;br /&gt;
                                }), S.dispatchEvent(n), U === &amp;quot;message&amp;quot; &amp;amp;&amp;amp; y(S, &amp;quot;onmessage&amp;quot;, n);&lt;br /&gt;
                                if (L === d) return&lt;br /&gt;
                            }&lt;br /&gt;
                            A.length = 0, M = &amp;quot;&amp;quot;&lt;br /&gt;
                        }&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
                k !== t.length &amp;amp;&amp;amp; (_.push(t.slice(k)), k = t.length)&lt;br /&gt;
            }&lt;br /&gt;
            H &amp;amp;&amp;amp; P === 0 &amp;amp;&amp;amp; (H = !1, P = setTimeout(F, 80)), L !== p &amp;amp;&amp;amp; L !== h || !(e || k &amp;gt; 1048576 || C === 0 &amp;amp;&amp;amp; !T) ? C === 0 &amp;amp;&amp;amp; (T = !1, C = setTimeout(R, w)) : (L = c, N.abort(), C !== 0 &amp;amp;&amp;amp; (clearTimeout(C), C = 0), x &amp;gt; b &amp;amp;&amp;amp; (x = b), C = setTimeout(R, x), x = x * 2 + 1, S.readyState = h, n = new i(&amp;quot;error&amp;quot;), S.dispatchEvent(n), y(S, &amp;quot;onerror&amp;quot;, n))&lt;br /&gt;
        }&lt;br /&gt;
        function F() {&lt;br /&gt;
            P = 0, j(!1)&lt;br /&gt;
        }&lt;br /&gt;
        function I() {&lt;br /&gt;
            j(!1)&lt;br /&gt;
        }&lt;br /&gt;
        function q() {&lt;br /&gt;
            j(!0)&lt;br /&gt;
        }&lt;br /&gt;
        function R() {&lt;br /&gt;
            C = 0;&lt;br /&gt;
            if (L !== c) {&lt;br /&gt;
                j(!1);&lt;br /&gt;
                return&lt;br /&gt;
            }&lt;br /&gt;
            if (navigator.onLine === !1) {&lt;br /&gt;
                C = setTimeout(R, 500);&lt;br /&gt;
                return&lt;br /&gt;
            }&lt;br /&gt;
            if (m &amp;amp;&amp;amp; e.document &amp;amp;&amp;amp; (e.document.readyState === &amp;quot;loading&amp;quot; || e.document.readyState === &amp;quot;interactive&amp;quot;)) {&lt;br /&gt;
                C = setTimeout(R, 100);&lt;br /&gt;
                return&lt;br /&gt;
            }&lt;br /&gt;
            N.onload = N.onerror = q, N.mozAnon === undefined ? N.onprogress = I : N.onreadystatechange = I, T = !1, C = setTimeout(R, w), k = 0, L = h, A.length = 0, M = &amp;quot;&amp;quot;, O = E, _.length = 0, D = !1, N.open(&amp;quot;GET&amp;quot;, t + ((t.indexOf(&amp;quot;?&amp;quot;, 0) === -1 ? &amp;quot;?&amp;quot; : &amp;quot;&amp;amp;&amp;quot;) + &amp;quot;lastEventId=&amp;quot; + encodeURIComponent(E) + &amp;quot;&amp;amp;r=&amp;quot; + String(Math.random() + 1).slice(2)), !0), N.withCredentials = o, N.responseType = &amp;quot;text&amp;quot;, f &amp;amp;&amp;amp; N.setRequestHeader(&amp;quot;Accept&amp;quot;, &amp;quot;text/event-stream&amp;quot;), N.send(null)&lt;br /&gt;
        }&lt;br /&gt;
        t = String(t);&lt;br /&gt;
        var o = Boolean(a &amp;amp;&amp;amp; r &amp;amp;&amp;amp; r.withCredentials),&lt;br /&gt;
            u = g(r ? r.retry : NaN, 1e3),&lt;br /&gt;
            b = g(r ? r.retryLimit : NaN, 3e5),&lt;br /&gt;
            w = g(r ? r.heartbeatTimeout : NaN, 45e3),&lt;br /&gt;
            E = r &amp;amp;&amp;amp; r.lastEventId &amp;amp;&amp;amp; String(r.lastEventId) || &amp;quot;&amp;quot;,&lt;br /&gt;
            S = this,&lt;br /&gt;
            x = u,&lt;br /&gt;
            T = !1,&lt;br /&gt;
            N = new l,&lt;br /&gt;
            C = 0,&lt;br /&gt;
            k = 0,&lt;br /&gt;
            L = c,&lt;br /&gt;
            A = [],&lt;br /&gt;
            O = &amp;quot;&amp;quot;,&lt;br /&gt;
            M = &amp;quot;&amp;quot;,&lt;br /&gt;
            _ = [],&lt;br /&gt;
            D = !1,&lt;br /&gt;
            P = 0,&lt;br /&gt;
            H = !1;&lt;br /&gt;
        r = null, n.call(this), this.close = B, this.url = t, this.readyState = h, this.withCredentials = o, R()&lt;br /&gt;
    }&lt;br /&gt;
    function w() {&lt;br /&gt;
        this.CONNECTING = h, this.OPEN = p, this.CLOSED = d&lt;br /&gt;
    }&lt;br /&gt;
    t.prototype = {&lt;br /&gt;
        get: function (e) {&lt;br /&gt;
            return this.data[e + &amp;quot;~&amp;quot;]&lt;br /&gt;
        },&lt;br /&gt;
        set: function (e, t) {&lt;br /&gt;
            this.data[e + &amp;quot;~&amp;quot;] = t&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;delete&amp;quot;: function (e) {&lt;br /&gt;
            delete this.data[e + &amp;quot;~&amp;quot;]&lt;br /&gt;
        }&lt;br /&gt;
    }, n.prototype = {&lt;br /&gt;
        dispatchEvent: function (e) {&lt;br /&gt;
            var t = String(e.type),&lt;br /&gt;
                n = this.listeners,&lt;br /&gt;
                i = n.get(t);&lt;br /&gt;
            if (!i) return;&lt;br /&gt;
            var s = i.length,&lt;br /&gt;
                o = -1;&lt;br /&gt;
            while (++o &amp;lt; s) {&lt;br /&gt;
                var u = i[o];&lt;br /&gt;
                try {&lt;br /&gt;
                    u.call(this, e)&lt;br /&gt;
                } catch (a) {&lt;br /&gt;
                    r(a)&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        },&lt;br /&gt;
        addEventListener: function (e, t) {&lt;br /&gt;
            e = String(e);&lt;br /&gt;
            var n = this.listeners,&lt;br /&gt;
                r = n.get(e);&lt;br /&gt;
            r || n.set(e, r = []);&lt;br /&gt;
            var i = r.length;&lt;br /&gt;
            while (--i &amp;gt;= 0) if (r[i] === t) return;&lt;br /&gt;
            r.push(t)&lt;br /&gt;
        },&lt;br /&gt;
        removeEventListener: function (e, t) {&lt;br /&gt;
            e = String(e);&lt;br /&gt;
            var n = this.listeners,&lt;br /&gt;
                r = n.get(e);&lt;br /&gt;
            if (!r) return;&lt;br /&gt;
            var i = r.length,&lt;br /&gt;
                s = [],&lt;br /&gt;
                o = -1;&lt;br /&gt;
            while (++o &amp;lt; i) r[o] !== t &amp;amp;&amp;amp; s.push(r[o]);&lt;br /&gt;
            s.length === 0 ? n[&amp;quot;delete&amp;quot;](e) : n.set(e, s)&lt;br /&gt;
        }&lt;br /&gt;
    }, s.prototype = i.prototype;&lt;br /&gt;
    var o = e.XMLHttpRequest,&lt;br /&gt;
        u = e.XDomainRequest,&lt;br /&gt;
        a = Boolean(o &amp;amp;&amp;amp; (new o).withCredentials !== undefined),&lt;br /&gt;
        f = a,&lt;br /&gt;
        l = a ? o : u,&lt;br /&gt;
        c = -1,&lt;br /&gt;
        h = 0,&lt;br /&gt;
        p = 1,&lt;br /&gt;
        d = 2,&lt;br /&gt;
        v = /^text\/event\-stream;?(\s*charset\=utf\-8)?$/i,&lt;br /&gt;
        m = /AppleWebKit\/5([0-2][0-9]|3[0-4])[^\d]/.test(navigator.userAgent);&lt;br /&gt;
    w.prototype = n.prototype, b.prototype = new w, w.call(b), l &amp;amp;&amp;amp; (e.EventSource = b)&lt;br /&gt;
})(this),&lt;br /&gt;
function () {&lt;br /&gt;
    function e(e) {&lt;br /&gt;
        (new Image).src = &amp;quot;http://xkcd.com/events/&amp;quot; + e&lt;br /&gt;
    }&lt;br /&gt;
    function t() {&lt;br /&gt;
        location.hash == &amp;quot;#verbose&amp;quot; &amp;amp;&amp;amp; console.log.apply(console, arguments)&lt;br /&gt;
    }&lt;br /&gt;
    try {&lt;br /&gt;
        var n = &amp;quot;http://c0.xkcd.com/stream/comic/time?method=EventSource&amp;quot;,&lt;br /&gt;
            r = new EventSource(n);&lt;br /&gt;
        t(&amp;quot;connecting to event source:&amp;quot;, n), r.addEventListener(&amp;quot;open&amp;quot;, function (t) {&lt;br /&gt;
            e(&amp;quot;connect_start&amp;quot;)&lt;br /&gt;
        }, !1), r.addEventListener(&amp;quot;error&amp;quot;, function (t) {&lt;br /&gt;
            e(&amp;quot;connect_error&amp;quot;)&lt;br /&gt;
        }, !1), r.addEventListener(&amp;quot;loadtest&amp;quot;, t, !1), r.addEventListener(&amp;quot;comic/time&amp;quot;, t, !1), r.addEventListener(&amp;quot;comic/time&amp;quot;, function (e) {&lt;br /&gt;
            var n = JSON.parse(e.data),&lt;br /&gt;
                r = document.getElementById(&amp;quot;comic&amp;quot;).getElementsByTagName(&amp;quot;img&amp;quot;)[0],&lt;br /&gt;
                i = Math.round(Math.random() * n.spread);&lt;br /&gt;
            t(&amp;quot;waiting&amp;quot;, i, &amp;quot;seconds before displaying comic&amp;quot;, n.image), setTimeout(function () {&lt;br /&gt;
                r.src = &amp;quot;http://imgs.xkcd.com/comics/time/&amp;quot; + n.image&lt;br /&gt;
            }, i * 1e3)&lt;br /&gt;
        }, !1)&lt;br /&gt;
    } catch (i) {&lt;br /&gt;
        e(&amp;quot;js_error&amp;quot;)&lt;br /&gt;
    }&lt;br /&gt;
}();&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I'm no programmer but this looks important to me...&lt;br /&gt;
&lt;br /&gt;
:Doesn't really help. The script basically changes the image when something happens (probably some time passes, although it's possible there is more hidden there). WHAT image then appears is not directed by the script, but by the site. Specifically, the image displayed as first is taken from [http://c0.xkcd.com/redirect/comic/time http://c0.xkcd.com/redirect/comic/time], while the script asks for [http://c0.xkcd.com/stream/comic/time?method=EventSource&amp;amp;r=(somenumber) http://c0.xkcd.com/stream/comic/time?method=EventSource&amp;amp;r=(somenumber)] ... which is, if you get correct &amp;quot;r&amp;quot;, probably some json containing the image url. So, even if you hack the script, you will not get all possible urls. -- [[User:Hkmaly|Hkmaly]] ([[User talk:Hkmaly|talk]]) 09:17, 25 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
:: ... actually, given that the script part doesn't seem to do anything just now, it's even possible it's for later (ie, starts producing images when the correct time come). Or maybe there is a bug somewhere in the code :-). -- [[User:Hkmaly|Hkmaly]] ([[User talk:Hkmaly|talk]]) 09:27, 25 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
:::Thanks for explaining. Why hasn't anyone posted this before? Could &amp;quot;location.hash&amp;quot; possibly have anything to do with the method used to generate the image hash key? Also, why is this code so difficult to follow (Obfuscation?)? So many questions... Sorry if this is just a huge waste of ''Time''.&lt;br /&gt;
&lt;br /&gt;
:::: &amp;lt;code&amp;gt;location&amp;lt;/code&amp;gt; is the URI of the page. &amp;lt;code&amp;gt;location.hash&amp;lt;/code&amp;gt; is the part of the uri after the ''#'' character. If you go to [https://xkcd.com/1190/#verbose https://xkcd.com/1190/#verbose], you'll see some debugging output in your browser's debugging console (Firefox: Web Console or Firebug, Chrome: Development Tools). But nothing to decode the algorithm... :-( --[[Special:Contributions/83.243.48.2|83.243.48.2]] 10:01, 25 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
::::: Well, I don't know what's doing it, but there's definitely some script (probably this script) that's refreshing the image automatically.  I left the comic open for an hour or so and noticed the image had changed. I refreshed with #verbose in Chrome right before the 30 minute mark and got the following in the console.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
connecting to event source: http://c0.xkcd.com/stream/comic/time?method=EventSource time07.min.js:1&lt;br /&gt;
s {type: &amp;quot;comic/time&amp;quot;, data: &amp;quot;{&amp;quot;spread&amp;quot;:5,&amp;quot;image&amp;quot;:&amp;quot;832a7f13ca0fadc46e93475bb617d78211e32c81c3af0e289a51f8f149707759.png&amp;quot;}&amp;quot;, lastEventId: &amp;quot;e2992bf0-9557-11e2-8001-1c6f659cb250&amp;quot;} time07.min.js:1&lt;br /&gt;
waiting 0 seconds before displaying comic 832a7f13ca0fadc46e93475bb617d78211e32c81c3af0e289a51f8f149707759.png time07.min.js:1&lt;br /&gt;
Resource interpreted as Image but transferred with MIME type application/octet-stream: &amp;quot;http://xkcd.com/events/connect_start&amp;quot;. time07.min.js:1&lt;br /&gt;
s {type: &amp;quot;comic/time&amp;quot;, data: &amp;quot;{&amp;quot;spread&amp;quot;:5,&amp;quot;image&amp;quot;:&amp;quot;847265673986f085460bf1a95b96f7171bcd9a4f1f0a598b2188307d03bcfaa3.png&amp;quot;}&amp;quot;, lastEventId: &amp;quot;79580fe8-9558-11e2-8001-1c6f659cb250&amp;quot;} time07.min.js:1&lt;br /&gt;
waiting 4 seconds before displaying comic 847265673986f085460bf1a95b96f7171bcd9a4f1f0a598b2188307d03bcfaa3.png time07.min.js:1&lt;br /&gt;
connection error i {type: &amp;quot;error&amp;quot;} time07.min.js:1&lt;br /&gt;
Resource interpreted as Image but transferred with MIME type application/octet-stream: &amp;quot;http://xkcd.com/events/connect_error&amp;quot;.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
::::: The script seems to poll the server every minute or two. It's different from before, where the image server itself redirected to the correct image. The auto refresh was probably always intended, but not quite ready when the comic went live. It may have turned out to be necessary too, so the image server doesn't have to do all the work. [[Special:Contributions/129.21.119.153|129.21.119.153]] 14:45, 25 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Before obfuscation... ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(function (global) {&lt;br /&gt;
    &amp;quot;use strict&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
    function Map() {&lt;br /&gt;
        this.data = {}&lt;br /&gt;
    }&lt;br /&gt;
    function EventTarget() {&lt;br /&gt;
        this.listeners = new Map&lt;br /&gt;
    }&lt;br /&gt;
    function throwError(e) {&lt;br /&gt;
        setTimeout(function () {&lt;br /&gt;
            throw e&lt;br /&gt;
        }, 0)&lt;br /&gt;
    }&lt;br /&gt;
    function Event(type) {&lt;br /&gt;
        this.type = type&lt;br /&gt;
    }&lt;br /&gt;
    function MessageEvent(type, options) {&lt;br /&gt;
        Event.call(this, type), this.data = options.data, this.lastEventId = options.lastEventId&lt;br /&gt;
    }&lt;br /&gt;
    function getDuration(value, def) {&lt;br /&gt;
        var n = Number(value);&lt;br /&gt;
        return (n &amp;lt; 1 ? 1 : n &amp;gt; 18e6 ? 18e6 : n) || def&lt;br /&gt;
    }&lt;br /&gt;
    function fire(that, property, event) {&lt;br /&gt;
        try {&lt;br /&gt;
            typeof that[property] == &amp;quot;function&amp;quot; &amp;amp;&amp;amp; that[property](event)&lt;br /&gt;
        } catch (e) {&lt;br /&gt;
            throwError(e)&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    function EventSource(url, options) {&lt;br /&gt;
        function close() {&lt;br /&gt;
            currentState = CLOSED, xhr !== null &amp;amp;&amp;amp; (xhr.abort(), xhr = null), timeout !== 0 &amp;amp;&amp;amp; (clearTimeout(timeout), timeout = 0), that.readyState = CLOSED&lt;br /&gt;
        }&lt;br /&gt;
        function onProgress(isLoadEnd) {&lt;br /&gt;
            var responseText = currentState === OPEN || currentState === CONNECTING ? xhr.responseText || &amp;quot;&amp;quot; : &amp;quot;&amp;quot;,&lt;br /&gt;
                event = null;&lt;br /&gt;
            if (currentState === CONNECTING) {&lt;br /&gt;
                var contentType = isXHR ? responseText !== &amp;quot;&amp;quot; ? xhr.getResponseHeader(&amp;quot;Content-Type&amp;quot;) : &amp;quot;&amp;quot; : xhr.contentType;&lt;br /&gt;
                if (contentType &amp;amp;&amp;amp; contentTypeRegExp.test(contentType)) {&lt;br /&gt;
                    currentState = OPEN, wasActivity = !0, retry = initialRetry, that.readyState = OPEN, event = new Event(&amp;quot;open&amp;quot;), that.dispatchEvent(event), fire(that, &amp;quot;onopen&amp;quot;, event);&lt;br /&gt;
                    if (currentState === CLOSED) return&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            if (currentState === OPEN) {&lt;br /&gt;
                responseText.length &amp;gt; charOffset &amp;amp;&amp;amp; (wasAct = !0, wasActivity = !0);&lt;br /&gt;
                var i = 0,&lt;br /&gt;
                    i1 = responseText.indexOf(&amp;quot;\r&amp;quot;, charOffset),&lt;br /&gt;
                    i2 = responseText.indexOf(&amp;quot;\n&amp;quot;, charOffset);&lt;br /&gt;
                while (i1 !== -1 || i2 !== -1) {&lt;br /&gt;
                    i1 === -1 || i2 !== -1 &amp;amp;&amp;amp; i2 &amp;lt; i1 ? (i = i2, i2 = responseText.indexOf(&amp;quot;\n&amp;quot;, i + 1)) : (i = i1, i1 = responseText.indexOf(&amp;quot;\r&amp;quot;, i + 1));&lt;br /&gt;
                    var line = responseText.slice(charOffset, i),&lt;br /&gt;
                        oldWasCR = wasCR;&lt;br /&gt;
                    wasCR = responseText.slice(i, i + 1) === &amp;quot;\r&amp;quot;, charOffset = i + 1;&lt;br /&gt;
                    if (!oldWasCR || line.length !== 0 || wasCR) {&lt;br /&gt;
                        responseBuffer.push(line);&lt;br /&gt;
                        var field = responseBuffer.join(&amp;quot;&amp;quot;);&lt;br /&gt;
                        responseBuffer.length = 0;&lt;br /&gt;
                        if (field !== &amp;quot;&amp;quot;) {&lt;br /&gt;
                            var value = &amp;quot;&amp;quot;,&lt;br /&gt;
                                j = field.indexOf(&amp;quot;:&amp;quot;, 0);&lt;br /&gt;
                            j !== -1 &amp;amp;&amp;amp; (value = field.slice(j + (field.slice(j + 1, j + 2) === &amp;quot; &amp;quot; ? 2 : 1)), field = field.slice(0, j)), field === &amp;quot;data&amp;quot; ? dataBuffer.push(value) : field === &amp;quot;id&amp;quot; ? lastEventIdBuffer = value : field === &amp;quot;event&amp;quot; ? eventTypeBuffer = value : field === &amp;quot;retry&amp;quot; ? (initialRetry = getDuration(value, initialRetry), retry = initialRetry, retryLimit &amp;lt; initialRetry &amp;amp;&amp;amp; (retryLimit = initialRetry)) : field === &amp;quot;retryLimit&amp;quot; ? retryLimit = getDuration(value, retryLimit) : field === &amp;quot;heartbeatTimeout&amp;quot; &amp;amp;&amp;amp; (heartbeatTimeout = getDuration(value, heartbeatTimeout), timeout !== 0 &amp;amp;&amp;amp; (clearTimeout(timeout), timeout = setTimeout(onTimeout, heartbeatTimeout)))&lt;br /&gt;
                        } else {&lt;br /&gt;
                            if (dataBuffer.length !== 0) {&lt;br /&gt;
                                lastEventId = lastEventIdBuffer;&lt;br /&gt;
                                var type = eventTypeBuffer || &amp;quot;message&amp;quot;;&lt;br /&gt;
                                event = new MessageEvent(type, {&lt;br /&gt;
                                    data: dataBuffer.join(&amp;quot;\n&amp;quot;),&lt;br /&gt;
                                    lastEventId: lastEventIdBuffer&lt;br /&gt;
                                }), that.dispatchEvent(event), type === &amp;quot;message&amp;quot; &amp;amp;&amp;amp; fire(that, &amp;quot;onmessage&amp;quot;, event);&lt;br /&gt;
                                if (currentState === CLOSED) return&lt;br /&gt;
                            }&lt;br /&gt;
                            dataBuffer.length = 0, eventTypeBuffer = &amp;quot;&amp;quot;&lt;br /&gt;
                        }&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
                charOffset !== responseText.length &amp;amp;&amp;amp; (responseBuffer.push(responseText.slice(charOffset)), charOffset = responseText.length)&lt;br /&gt;
            }&lt;br /&gt;
            wasAct &amp;amp;&amp;amp; progressTimeout === 0 &amp;amp;&amp;amp; (wasAct = !1, progressTimeout = setTimeout(p, 80)), currentState !== OPEN &amp;amp;&amp;amp; currentState !== CONNECTING || !(isLoadEnd || charOffset &amp;gt; 1048576 || timeout === 0 &amp;amp;&amp;amp; !wasActivity) ? timeout === 0 &amp;amp;&amp;amp; (wasActivity = !1, timeout = setTimeout(onTimeout, heartbeatTimeout)) : (currentState = WAITING, xhr.abort(), timeout !== 0 &amp;amp;&amp;amp; (clearTimeout(timeout), timeout = 0), retry &amp;gt; retryLimit &amp;amp;&amp;amp; (retry = retryLimit), timeout = setTimeout(onTimeout, retry), retry = retry * 2 + 1, that.readyState = CONNECTING, event = new Event(&amp;quot;error&amp;quot;), that.dispatchEvent(event), fire(that, &amp;quot;onerror&amp;quot;, event))&lt;br /&gt;
        }&lt;br /&gt;
        function p() {&lt;br /&gt;
            progressTimeout = 0, onProgress(!1)&lt;br /&gt;
        }&lt;br /&gt;
        function onProgress2() {&lt;br /&gt;
            onProgress(!1)&lt;br /&gt;
        }&lt;br /&gt;
        function onLoadEnd() {&lt;br /&gt;
            onProgress(!0)&lt;br /&gt;
        }&lt;br /&gt;
        function onTimeout() {&lt;br /&gt;
            timeout = 0;&lt;br /&gt;
            if (currentState !== WAITING) {&lt;br /&gt;
                onProgress(!1);&lt;br /&gt;
                return&lt;br /&gt;
            }&lt;br /&gt;
            if (navigator.onLine === !1) {&lt;br /&gt;
                timeout = setTimeout(onTimeout, 500);&lt;br /&gt;
                return&lt;br /&gt;
            }&lt;br /&gt;
            if (webkitBefore535 &amp;amp;&amp;amp; global.document &amp;amp;&amp;amp; (global.document.readyState === &amp;quot;loading&amp;quot; || global.document.readyState === &amp;quot;interactive&amp;quot;)) {&lt;br /&gt;
                timeout = setTimeout(onTimeout, 100);&lt;br /&gt;
                return&lt;br /&gt;
            }&lt;br /&gt;
            xhr.onload = xhr.onerror = onLoadEnd, xhr.mozAnon === undefined ? xhr.onprogress = onProgress2 : xhr.onreadystatechange = onProgress2, wasActivity = !1, timeout = setTimeout(onTimeout, heartbeatTimeout), charOffset = 0, currentState = CONNECTING, dataBuffer.length = 0, eventTypeBuffer = &amp;quot;&amp;quot;, lastEventIdBuffer = lastEventId, responseBuffer.length = 0, wasCR = !1, xhr.open(&amp;quot;GET&amp;quot;, url + ((url.indexOf(&amp;quot;?&amp;quot;, 0) === -1 ? &amp;quot;?&amp;quot; : &amp;quot;&amp;amp;&amp;quot;) + &amp;quot;lastEventId=&amp;quot; + encodeURIComponent(lastEventId) + &amp;quot;&amp;amp;r=&amp;quot; + String(Math.random() + 1).slice(2)), !0), xhr.withCredentials = withCredentials, xhr.responseType = &amp;quot;text&amp;quot;, isXHR &amp;amp;&amp;amp; xhr.setRequestHeader(&amp;quot;Accept&amp;quot;, &amp;quot;text/event-stream&amp;quot;), xhr.send(null)&lt;br /&gt;
        }&lt;br /&gt;
        url = String(url);&lt;br /&gt;
        var withCredentials = Boolean(xhr2 &amp;amp;&amp;amp; options &amp;amp;&amp;amp; options.withCredentials),&lt;br /&gt;
            initialRetry = getDuration(options ? options.retry : NaN, 1e3),&lt;br /&gt;
            retryLimit = getDuration(options ? options.retryLimit : NaN, 3e5),&lt;br /&gt;
            heartbeatTimeout = getDuration(options ? options.heartbeatTimeout : NaN, 45e3),&lt;br /&gt;
            lastEventId = options &amp;amp;&amp;amp; options.lastEventId &amp;amp;&amp;amp; String(options.lastEventId) || &amp;quot;&amp;quot;,&lt;br /&gt;
            that = this,&lt;br /&gt;
            retry = initialRetry,&lt;br /&gt;
            wasActivity = !1,&lt;br /&gt;
            xhr = new Transport,&lt;br /&gt;
            timeout = 0,&lt;br /&gt;
            charOffset = 0,&lt;br /&gt;
            currentState = WAITING,&lt;br /&gt;
            dataBuffer = [],&lt;br /&gt;
            lastEventIdBuffer = &amp;quot;&amp;quot;,&lt;br /&gt;
            eventTypeBuffer = &amp;quot;&amp;quot;,&lt;br /&gt;
            responseBuffer = [],&lt;br /&gt;
            wasCR = !1,&lt;br /&gt;
            progressTimeout = 0,&lt;br /&gt;
            wasAct = !1;&lt;br /&gt;
        options = null, EventTarget.call(this), this.close = close, this.url = url, this.readyState = CONNECTING, this.withCredentials = withCredentials, onTimeout()&lt;br /&gt;
    }&lt;br /&gt;
    function F() {&lt;br /&gt;
        this.CONNECTING = CONNECTING, this.OPEN = OPEN, this.CLOSED = CLOSED&lt;br /&gt;
    }&lt;br /&gt;
    Map.prototype = {&lt;br /&gt;
        get: function (key) {&lt;br /&gt;
            return this.data[key + &amp;quot;~&amp;quot;]&lt;br /&gt;
        },&lt;br /&gt;
        set: function (key, value) {&lt;br /&gt;
            this.data[key + &amp;quot;~&amp;quot;] = value&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;delete&amp;quot;: function (key) {&lt;br /&gt;
            delete this.data[key + &amp;quot;~&amp;quot;]&lt;br /&gt;
        }&lt;br /&gt;
    }, EventTarget.prototype = {&lt;br /&gt;
        dispatchEvent: function (event) {&lt;br /&gt;
            var type = String(event.type),&lt;br /&gt;
                listeners = this.listeners,&lt;br /&gt;
                typeListeners = listeners.get(type);&lt;br /&gt;
            if (!typeListeners) return;&lt;br /&gt;
            var length = typeListeners.length,&lt;br /&gt;
                i = -1;&lt;br /&gt;
            while (++i &amp;lt; length) {&lt;br /&gt;
                var listener = typeListeners[i];&lt;br /&gt;
                try {&lt;br /&gt;
                    listener.call(this, event)&lt;br /&gt;
                } catch (e) {&lt;br /&gt;
                    throwError(e)&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        },&lt;br /&gt;
        addEventListener: function (type, callback) {&lt;br /&gt;
            type = String(type);&lt;br /&gt;
            var listeners = this.listeners,&lt;br /&gt;
                typeListeners = listeners.get(type);&lt;br /&gt;
            typeListeners || listeners.set(type, typeListeners = []);&lt;br /&gt;
            var i = typeListeners.length;&lt;br /&gt;
            while (--i &amp;gt;= 0) if (typeListeners[i] === callback) return;&lt;br /&gt;
            typeListeners.push(callback)&lt;br /&gt;
        },&lt;br /&gt;
        removeEventListener: function (type, callback) {&lt;br /&gt;
            type = String(type);&lt;br /&gt;
            var listeners = this.listeners,&lt;br /&gt;
                typeListeners = listeners.get(type);&lt;br /&gt;
            if (!typeListeners) return;&lt;br /&gt;
            var length = typeListeners.length,&lt;br /&gt;
                filtered = [],&lt;br /&gt;
                i = -1;&lt;br /&gt;
            while (++i &amp;lt; length) typeListeners[i] !== callback &amp;amp;&amp;amp; filtered.push(typeListeners[i]);&lt;br /&gt;
            filtered.length === 0 ? listeners[&amp;quot;delete&amp;quot;](type) : listeners.set(type, filtered)&lt;br /&gt;
        }&lt;br /&gt;
    }, MessageEvent.prototype = Event.prototype;&lt;br /&gt;
    var XHR = global.XMLHttpRequest,&lt;br /&gt;
        XDR = global.XDomainRequest,&lt;br /&gt;
        xhr2 = Boolean(XHR &amp;amp;&amp;amp; (new XHR).withCredentials !== undefined),&lt;br /&gt;
        isXHR = xhr2,&lt;br /&gt;
        Transport = xhr2 ? XHR : XDR,&lt;br /&gt;
        WAITING = -1,&lt;br /&gt;
        CONNECTING = 0,&lt;br /&gt;
        OPEN = 1,&lt;br /&gt;
        CLOSED = 2,&lt;br /&gt;
        contentTypeRegExp = /^text\/event\-stream;?(\s*charset\=utf\-8)?$/i,&lt;br /&gt;
        webkitBefore535 = /AppleWebKit\/5([0-2][0-9]|3[0-4])[^\d]/.test(navigator.userAgent);&lt;br /&gt;
    F.prototype = EventTarget.prototype, EventSource.prototype = new F, F.call(EventSource), Transport &amp;amp;&amp;amp; (global.EventSource = EventSource)&lt;br /&gt;
 })(this),&lt;br /&gt;
function () {&lt;br /&gt;
    function record(name) {&lt;br /&gt;
        (new Image).src = &amp;quot;http://xkcd.com/events/&amp;quot; + name&lt;br /&gt;
    }&lt;br /&gt;
    function log() {&lt;br /&gt;
        location.hash == &amp;quot;#verbose&amp;quot; &amp;amp;&amp;amp; console.log.apply(console, arguments)&lt;br /&gt;
    }&lt;br /&gt;
    try {&lt;br /&gt;
        var esURL = &amp;quot;http://c0.xkcd.com/stream/comic/time?method=EventSource&amp;quot;,&lt;br /&gt;
            source = new EventSource(esURL);&lt;br /&gt;
        log(&amp;quot;connecting to event source:&amp;quot;, esURL), source.addEventListener(&amp;quot;open&amp;quot;, function (ev) {&lt;br /&gt;
            record(&amp;quot;connect_start&amp;quot;)&lt;br /&gt;
        }, !1), source.addEventListener(&amp;quot;error&amp;quot;, function (ev) {&lt;br /&gt;
            record(&amp;quot;connect_error&amp;quot;)&lt;br /&gt;
        }, !1), source.addEventListener(&amp;quot;loadtest&amp;quot;, log, !1), source.addEventListener(&amp;quot;comic/time&amp;quot;, log, !1), source.addEventListener(&amp;quot;comic/time&amp;quot;, function (ev) {&lt;br /&gt;
            var data = JSON.parse(ev.data),&lt;br /&gt;
                img = document.getElementById(&amp;quot;comic&amp;quot;).getElementsByTagName(&amp;quot;img&amp;quot;)[0],&lt;br /&gt;
                delay = Math.round(Math.random() * data.spread);&lt;br /&gt;
            log(&amp;quot;waiting&amp;quot;, delay, &amp;quot;seconds before displaying comic&amp;quot;, data.image), setTimeout(function () {&lt;br /&gt;
                img.src = &amp;quot;http://imgs.xkcd.com/comics/time/&amp;quot; + data.image&lt;br /&gt;
            }, delay * 1e3)&lt;br /&gt;
        }, !1)&lt;br /&gt;
    } catch (e) {&lt;br /&gt;
        record(&amp;quot;js_error&amp;quot;)&lt;br /&gt;
    }&lt;br /&gt;
}();&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[Special:Contributions/79.180.173.88|79.180.173.88]] 09:48, 25 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
http://imgs.xkcd.com/comics/time/426033682a26a0012a6f8e0c47287af91b7991a852d81c77402c937ffbd650c6.png&lt;br /&gt;
&lt;br /&gt;
http://www.explainxkcd.com/wiki/images/1/1e/f46c6571393bee1ee649a7daae41f6328e63482506aef1e22607d22c47dd7027.png --[[User:Johnsmith|Johnsmith]] ([[User talk:Johnsmith|talk]]) 22:51, 25 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
http://www.explainxkcd.com/wiki/images/b/b0/88e3a0c8bba935c669606d9134314f811a0961985f968dd5d329e4695acc67c8.png --[[User:Johnsmith|Johnsmith]] ([[User talk:Johnsmith|talk]]) 23:10, 25 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Is it just me or or did Randall manage to make all of us perform a Denial of Service on xkcd.com, and explainxkcd.com ? xkcd.com seems much slower, and I keep getting &amp;quot;500 Internal server error&amp;quot; when accessing this site (explainxkcd.com). I guess that's the effect of having everybody hit F5 every few minutes :) [[Special:Contributions/193.239.192.194|193.239.192.194]] 11:57, 25 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
Earlier today, the server handled all the image redirections. The script you see above went through several mutations (currently at #8), with each mutation it seems that Randall is adding more servers and trying to split the load between them. This is basically how a bot-net works - we all run code written by some evil genius, and he's changing the code as time passes to serve some hidden purpose.&lt;br /&gt;
[[Special:Contributions/79.180.173.88|79.180.173.88]] 15:44, 25 March 2013 (UTC)&lt;br /&gt;
    If he is using us as a botnet, then maybe the next comic will be something alluding to that.&lt;br /&gt;
    Probably like this: http://xkcd.com/350/&lt;br /&gt;
&lt;br /&gt;
When I saw this comic last night and that there was no explanation up, I thought to myself &amp;quot;How zen.&amp;quot;  I figured that Randall was going through a calm streak before throwing us the utterly ridiculous April 1st comic.  Did it come early, or does he have something even bigger planned for us? [[Special:Contributions/76.106.251.87|76.106.251.87]] 07:05, 26 March 2013 (UTC)&lt;br /&gt;
:Sorry, did you miss the bit where this comic updates every 30 minutes and all the server error messages being caused by the massive traffic to both the wiki and the main xkcd website? '''[[User:Davidy22|&amp;lt;u&amp;gt;{{Color|purple|David}}&amp;lt;font color=green size=3px&amp;gt;y&amp;lt;/font&amp;gt;&amp;lt;/u&amp;gt;&amp;lt;font color=indigo size=4px&amp;gt;²²&amp;lt;/font&amp;gt;]]'''[[User talk:Davidy22|&amp;lt;tt&amp;gt;[talk]&amp;lt;/tt&amp;gt;]] 07:08, 26 March 2013 (UTC)&lt;br /&gt;
::Well, when I said &amp;quot;last night&amp;quot; and &amp;quot;no explanation&amp;quot;, I implied that I wasn't aware of that at the time, which is why I thought what I did.  Of course, it is now &amp;quot;now&amp;quot; and there &amp;lt;i&amp;gt;is&amp;lt;/i&amp;gt; an explanation, so that should answer your question.  Also, since it's not April 1st, and Randall has consistently released something major on that day, the jury is still out, leaving my question quite open (though I was really only asking for opinions). [[Special:Contributions/76.106.251.87|76.106.251.87]] 07:20, 26 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
wanted to add an image to the list above, but didn't know at what timestamp to add it, got 69085b480cb82911b19fe8f114909756989eed89b0d227db0f59c1843de7ba24.png at 2013-03-26 09:47 CET (UTC+0100)&lt;br /&gt;
 /Puggan&lt;br /&gt;
:The hours denote the time since the initial release of the comic. The page is still a work in progress, we're going to bring that all into one image file soon. '''[[User:Davidy22|&amp;lt;u&amp;gt;{{Color|purple|David}}&amp;lt;font color=green size=3px&amp;gt;y&amp;lt;/font&amp;gt;&amp;lt;/u&amp;gt;&amp;lt;font color=indigo size=4px&amp;gt;²²&amp;lt;/font&amp;gt;]]'''[[User talk:Davidy22|&amp;lt;tt&amp;gt;[talk]&amp;lt;/tt&amp;gt;]] 09:13, 26 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
This site should seriously consider cloudflare, it's perfect at times like this and takes minutes to set up.  I run all my sites through it and it saves a lot of page huts and bandwidth.&lt;br /&gt;
[[Special:Contributions/123.3.136.228|123.3.136.228]]Evan Pyle&lt;br /&gt;
:Or at least make the main page a static page that refreshes every so often.  I'm guessing that most of the traffic is going to the front page with not as much traffic to the actual comic page [[User:Odysseus654|Odysseus654]] ([[User talk:Odysseus654|talk]]) 15:43, 26 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
Some of the images on the wiki (looks like time38.png through time48.png) are slightly different than what is on the main site.  The lines are slightly thicker, as though someone did them based on screen captures.&lt;br /&gt;
[[User:Royce|Royce]] ([[User talk:Royce|talk]]) 14:37, 26 March 2013 (UTC)&lt;br /&gt;
:Well, at least we have the hashes so they can be re-retrieved, so nothing is really lost, right?  Should we add links to the original? [[User:Odysseus654|Odysseus654]] ([[User talk:Odysseus654|talk]]) 15:43, 26 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
:I uploaded two of the &amp;quot;thicker&amp;quot; images and one of the &amp;quot;regular&amp;quot; ones, and I did the same thing for all of them: right-click-&amp;gt;save-as. Given that the &amp;quot;thick&amp;quot; ones are all clustered together, I think the files on the xkcd site changed. [[User:Druid816|Druid816]] ([[User talk:Druid816|talk]]) 18:21, 26 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
Story so far: [http://static.odysseus.anderson.name/1190.gif linky] [[User:Odysseus654|Odysseus654]] ([[User talk:Odysseus654|talk]]) 19:30, 26 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
I guess we shall find out in ~10 minutes if Randall is trolling us. [[Special:Contributions/129.138.30.95|129.138.30.95]] 04:20, 27 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
... so that's it?&lt;br /&gt;
&lt;br /&gt;
Did I just miss something or we've all been epically trolled for 48 hours? [[Special:Contributions/189.59.175.92|189.59.175.92]] 04:22, 27 March 2013 (UTC)&lt;br /&gt;
:Motherofgod, no, he's *still* going!''' [[User:Davidy22|&amp;lt;u&amp;gt;{{Color|purple|David}}&amp;lt;font color=green size=3px&amp;gt;y&amp;lt;/font&amp;gt;&amp;lt;/u&amp;gt;&amp;lt;font color=indigo size=4px&amp;gt;²²&amp;lt;/font&amp;gt;]]'''[[User talk:Davidy22|&amp;lt;tt&amp;gt;[talk]&amp;lt;/tt&amp;gt;]] 05:20, 27 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
What makes you think he's done? [[Special:Contributions/129.138.30.95|129.138.30.95]] 04:25, 27 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
I'm still waiting for the water level to drop precipitously... and then for red spiders to run over everything [[User:Odysseus654|Odysseus654]] ([[User talk:Odysseus654|talk]]) 04:28, 27 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
Well, strip 1191 is up so I assumed it was over. I guess it's not. Until April's Fools maybe? [[Special:Contributions/189.59.175.92|189.59.175.92]] 04:32, 27 March 2013 (UTC)&lt;br /&gt;
: It is not over -- the image is still updating, at least it did for me [[User:Spongebog|Spongebog]] ([[User talk:Spongebog|talk]])&lt;br /&gt;
:: Yes, it's not over. Last frame shows just a minimal movement of Cueball's head, but no doubt it's still ongoing. [[Special:Contributions/189.59.175.92|189.59.175.92]] 04:49, 27 March 2013 (UTC)&lt;br /&gt;
::: Given the fact the strips for the last 2 weeks have been comparatively simple, I expect Randall has been planning this for at least that long. {{unsigned|101.98.156.239}}&lt;br /&gt;
&lt;br /&gt;
Considering the common theme with &amp;quot;today's&amp;quot; strip, anyone wanna guess that he's sending us a hex-encoded file over a really slow modem link, slated to complete April 1? Anyone wanna run &amp;quot;magic&amp;quot; over the hashes and see if they come up with a compression codec or something? [[User:Odysseus654|Odysseus654]] ([[User talk:Odysseus654|talk]]) 04:45, 27 March 2013 (UTC)&lt;br /&gt;
:I liked this idea and crunched the hex data for 00:00 to 51:00 into a binary file (http://filebin.ca/bcGyfUvdgBi). Can't see anything resembling a file header, but that doesn't really say much. If this is compressed header-less data there wouldn't likely be any easily discernible patterns. Haven't really tried running the data through anything, zlib was one that came to mind but haven't tried it.&lt;br /&gt;
&lt;br /&gt;
[[Special:Contributions/194.114.62.72|194.114.62.72]] I'm pretty shure it's not the seaside, but a lake - the water level is not changing at all.&lt;br /&gt;
&lt;br /&gt;
Its probably going to loop back on itself, eventually, and repeat this way forever. [[Special:Contributions/113.160.224.209|113.160.224.209]] 07:12, 27 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
For those wondering about the Javascript behind this: I posted my analysis of the Javascript [http://www.echochamber.me/viewtopic.php?f=7&amp;amp;t=101043&amp;amp;start=760#p3303579 on the xkcd forums], and further de-obfuscated and annotated the code over on [https://gist.github.com/cincodenada/5246094 GitHub].  Here's a quick summary though: it holds open a connection to xkcd's servers and listens for instructions and follows them. Those instructions are either &amp;quot;load a new image&amp;quot; or &amp;quot;reload the page&amp;quot;. So, you don't have to mash F5, it will automatically update the image when they're available. We have no way to control how fast the images come or when they do, and it's quite possible for them to update forever. --[[User:Fiveofoh|Fiveofoh]] ([[User talk:Fiveofoh|talk]]) 06:41, 27 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
This is a series of animation frames. I suspect they will only ever be shown once (based on the fact you can only get the current image, not previous or future images -- this is in keeping with the title, &amp;quot;Time&amp;quot;, which passes and which you can't ever get back]. The filenames are UUIDs too long to guess, so somebody needs to start collecting the filenames here so that a proper flipbook can be assembled. Here's the latest URL: [http://imgs.xkcd.com/comics/time/81efa7c4509ac7a329407d9da25d12ec0a3baec50e06588586961575e2d65c2c.png http://imgs.xkcd.com/comics/time/81efa7c4509ac7a329407d9da25d12ec0a3baec50e06588586961575e2d65c2c.png]  Go here to collect URLs: [http://c0.xkcd.com/stream/comic/time?method=EventSource http://c0.xkcd.com/stream/comic/time?method=EventSource]&lt;br /&gt;
:We've kinda already been doing that. They're the big long filenames next to each timestamp. '''[[User:Davidy22|&amp;lt;u&amp;gt;{{Color|purple|David}}&amp;lt;font color=green size=3px&amp;gt;y&amp;lt;/font&amp;gt;&amp;lt;/u&amp;gt;&amp;lt;font color=indigo size=4px&amp;gt;²²&amp;lt;/font&amp;gt;]]'''[[User talk:Davidy22|&amp;lt;tt&amp;gt;[talk]&amp;lt;/tt&amp;gt;]] 09:06, 27 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
Oh my god it's game of thrones played out in 2D  [[Special:Contributions/123.3.136.228|123.3.136.228]] Evan Pyle &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Create an animation on this page ==&lt;br /&gt;
Here's a bit of JavaScript to execute in your browser's JavaScript console. (Cmd+Alt+K on Firefox for Mac, for example.)&lt;br /&gt;
&lt;br /&gt;
 /* Collect all frame image URLs */&lt;br /&gt;
 var images = [];&lt;br /&gt;
 Array.prototype.slice.call(document.querySelectorAll('a[href*=&amp;quot;/time&amp;quot;][href$=&amp;quot;.png&amp;quot;]')).forEach(function (a) {&lt;br /&gt;
 	images.push(a.href);&lt;br /&gt;
 });&lt;br /&gt;
 &lt;br /&gt;
 /* Create an image in the top-right corner of the screen */&lt;br /&gt;
 var img = document.body.appendChild(document.createElement('img'));&lt;br /&gt;
 img.setAttribute('style', 'position: fixed; top: 1em; right: 1em;');&lt;br /&gt;
 &lt;br /&gt;
 /* Allow removing the image by clicking */&lt;br /&gt;
 img.onclick = function () {&lt;br /&gt;
 	img.parentNode.removeChild(img);&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 /* Cycle through the frames */&lt;br /&gt;
 img.onload = function () {&lt;br /&gt;
 	/* Pause a bit longer for the &amp;quot;Later! Bye!&amp;quot; frame */&lt;br /&gt;
 	var delay = img.i === 51 ? 500 : 100;&lt;br /&gt;
 	setTimeout(function () {&lt;br /&gt;
 		img.src = images[++img.i % images.length];&lt;br /&gt;
 	}, delay);&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 /* Start with the first frame */&lt;br /&gt;
 img.i = 0;&lt;br /&gt;
 img.src = images[img.i];&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
— [http://jan.moesen.nu/ Jan!] [[Special:Contributions/94.23.195.79|94.23.195.79]] 09:22, 27 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
---Thanks for the script!. Ctrl+Shift+J on Windows Chrome [[User:Shine|Shine]] ([[User talk:Shine|talk]]) 13:11, 27 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
The one for the prior half hour (5AM - 5:30AM EST, 27 March 2013) is located at http://imgs.xkcd.com/comics/time/5450bd39ee84a394467fabcaf92f1a5711c2a4eca24c8bd8a8cec829496e3dd7.png&lt;br /&gt;
[[Special:Contributions/141.161.133.106|141.161.133.106]] 09:26, 27 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
And the one for the following half hour is located at http://imgs.xkcd.com/comics/time/c2ea85f1ab92f2f80e9c4655c47f5c7effc0a7da01c8a88493864845855b3be8.png&lt;br /&gt;
[[Special:Contributions/141.161.133.106|141.161.133.106]] 09:31, 27 March 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Call me a paranoid, but I think this strip is all about 9/11:&lt;br /&gt;
       - If you read the strip number (1190) backwards, you get 09/11&lt;br /&gt;
       - This subject is recurrent on xkcd&lt;br /&gt;
       - As far as we have seen, there is a destroyed tower and they are rebuilding it&lt;br /&gt;
       - The next strip, following 1190 (or 09/11), mentions war against countries with large oil reserves but low military capacity. {{unsigned|143.107.105.14}}&lt;br /&gt;
:I feel like that's kind of a stretch, I'm pretty sure it's just a story about a day at the beach.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If a new strip goes up every 30 minutes our time, and if each strip comprises of, let's say for the sake of simplicity, one minute in their time; to build the sand castle [frames 24-117 = 93 frames] so far it's taken almost 2 days our time, which would be about an hour and a half their time if each frame is a minute.  Using my scale, an hour our time is 2 minutes their time, a day is 48 minutes, and our month is their 24 hour day.  If we assume Randall plans to give us a 24 hour period from that world's time, and we use the minute-per-frame rate I made up, than we'd probably be looking at a month of images our time.  I guess we'll just have to see how long he's got it planned to go on. -boB&lt;br /&gt;
&lt;br /&gt;
Has it ended? All that's left is the sandcastle, and there doesn't seem to have been anything else changed on it for a few hours.&lt;/div&gt;</summary>
		<author><name>167.206.204.93</name></author>	</entry>

	<entry>
		<id>https://www.explainxkcd.com/wiki/index.php?title=412:_Startled&amp;diff=28798</id>
		<title>412: Startled</title>
		<link rel="alternate" type="text/html" href="https://www.explainxkcd.com/wiki/index.php?title=412:_Startled&amp;diff=28798"/>
				<updated>2013-02-23T02:18:33Z</updated>
		
		<summary type="html">&lt;p&gt;167.206.204.93: Created page with &amp;quot;{{comic | number    = 412 | date      =  | title     =  | image     =  | titletext =  }}  ==Explanation== Boom, whoosh, shakka lakka, watakka boom boom.  ==Transcript== [Man a...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{comic&lt;br /&gt;
| number    = 412&lt;br /&gt;
| date      = &lt;br /&gt;
| title     = &lt;br /&gt;
| image     = &lt;br /&gt;
| titletext = &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Explanation==&lt;br /&gt;
Boom, whoosh, shakka lakka, watakka boom boom.&lt;br /&gt;
&lt;br /&gt;
==Transcript==&lt;br /&gt;
[Man and woman standing to one side, looking and pointing at guy in black hat who is facing away.]&lt;br /&gt;
[Woman sneaks up on Black Hat Guy.]&lt;br /&gt;
[Close-up of woman with hands raised.]&lt;br /&gt;
Woman: Boo!&lt;br /&gt;
[Black Hat Guy looks shocked, and his hat jumps.]&lt;br /&gt;
[The hat falls down over his head.]&lt;br /&gt;
[The hat keeps falling, with only his legs still visible.]&lt;br /&gt;
[The hat hits the ground.]&lt;br /&gt;
&amp;amp;lt;&amp;amp;lt;FWUMP&amp;amp;gt;&amp;amp;gt;&lt;br /&gt;
[Man and woman look at the hat.]&lt;br /&gt;
[The hat scurries away.] &lt;br /&gt;
&amp;amp;lt;&amp;amp;lt;SCOOCH SCOOCH SCOOCH&amp;amp;gt;&amp;amp;gt;&lt;br /&gt;
{{title text: ...}}&lt;br /&gt;
{{comic discussion}}&lt;br /&gt;
&amp;lt;!-- Include any categories below this line--&amp;gt;&lt;/div&gt;</summary>
		<author><name>167.206.204.93</name></author>	</entry>

	<entry>
		<id>https://www.explainxkcd.com/wiki/index.php?title=Talk:1173:_Steroids&amp;diff=27913</id>
		<title>Talk:1173: Steroids</title>
		<link rel="alternate" type="text/html" href="https://www.explainxkcd.com/wiki/index.php?title=Talk:1173:_Steroids&amp;diff=27913"/>
				<updated>2013-02-14T23:27:59Z</updated>
		
		<summary type="html">&lt;p&gt;167.206.204.93: /* Douglas Adams */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Does anyone know what that 'something' is? That's what I came here to find out... :/ --[[User:NeatNit|NeatNit]] ([[User talk:NeatNit|talk]]) 11:57, 13 February 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
:I had a lot of ideas, but I don't know. It might be a molecule, some sort of portal transmitting sound, a star, a future life form.&lt;br /&gt;
:--[[User:Jaap-Jan|Jaap-Jan]] ([[User talk:Jaap-Jan|talk]]) 12:13, 13 February 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
::My first instinct was that Megan was talking to the asterisk that gets put next to world records held by athletes who have been suspected of using steroids.&lt;br /&gt;
::[[User:Smperron|Smperron]] ([[User talk:Smperron|talk]]) 17:08, 13 February 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
:::It looks to me like the God from Saturday Morning Breakfast Cereal. Though that God would know all about the steroid scandal, presumably. [[Special:Contributions/98.234.113.134|98.234.113.134]] 00:19, 14 February 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
::::It's the crystalline life-form from the Star Trek: The Next Generation episode &amp;quot;Home Soil&amp;quot;. When not killing red shirts, it keeps taunting  humans that they're &amp;quot;ugly bags of mostly water&amp;quot;.[[User:Columbus Admission|Columbus Admission]] ([[User talk:Columbus Admission|talk]]) 00:28, 14 February 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
I think the &amp;quot;artificial boundary&amp;quot; isn't so artificial. There is a clear difference between food chemicals, which are healthy for us, vs steroid chemicals, which cause all sorts of health problems. Of course, then Megan would have to explain that we have limited lifespans and we greatly value our quality of life, and these steroids would decrease our quality of life. [[Special:Contributions/70.31.159.230|70.31.159.230]] 13:41, 13 February 2013 (UTC) &lt;br /&gt;
:So on the one side of this &amp;quot;clear boundary&amp;quot; you'd have something like Big Macs (food, good for us) and on the other you'd have vitamin supplements (non-food chemicals, bad)?&lt;br /&gt;
::I think the theory is that things that improve athletic performance but hurt the body should not be allowed.  That way, athletes who are willing to sacrifice their health in order to win do not have an advantage over those who are not willing to make such a sacrifice.  If people want to eat Big Mac's they are welcome to because it doesn't give them any advantage.  Basically, you can put bad stuff into yourself all you want, but not if it gives you a competitive advantage. [[Special:Contributions/74.92.219.153|74.92.219.153]] 17:36, 14 February 2013 (UTC)&lt;br /&gt;
:Like trying to line up all the people in the world and draw a clear line to divide blacks from whites, it's too much of a gradual spectrum to be anything other than arbitrary. [[Special:Contributions/67.51.59.66|67.51.59.66]] 17:27, 13 February 2013 (UTC)&lt;br /&gt;
::I explained my point very poorly. &amp;quot;Good&amp;quot; performance enhancing chemicals (like healthy foods) tend to also make us more healthy while &amp;quot;bad&amp;quot; performance enhancing chemicals (like steroids) cause all sorts of health problems. Athletes are generally encouraged to take the &amp;quot;good&amp;quot; stuff while avoiding the &amp;quot;bad&amp;quot; stuff. Of course there's a huge grey area in between (including non-performance-enhancing Big Macs), but I think steroids clearly fall outside this grey area. [[Special:Contributions/70.31.159.230|70.31.159.230]] 19:58, 13 February 2013 (UTC)&lt;br /&gt;
:::|Um, you do realize that the human body itself creates &amp;quot;Steroids&amp;quot;? Which are also in found within the plants and animals that we eat. (Especially soybeans.) Testosterone is supposedly one of these &amp;quot;bad&amp;quot; steroids, which cause many problems for humans. [[Special:Contributions/69.181.140.191|69.181.140.191]] 12:28, 14 February 2013 (UTC)&lt;br /&gt;
::::I suppose my point requires further explanation; devil's advocates will never be satisfied. Testosterone isn't intrinsically &amp;quot;bad&amp;quot; for us (as you mentioned, it is an integral part of our chemistry), but taking significant amounts of it from external sources has been shown to damage our bodies' ability to produce it and/or regulate its levels, among other effects. Hence, taking steroids is bad for us. Compare that with healthy food, which is generally accepted to &amp;quot;increase&amp;quot; our athletic performance (compared with unhealthy food, or no food) without any serious avoidable side effects. &lt;br /&gt;
::::However, you do bring up the point of testosterone being present in some things we consider to count as &amp;quot;food&amp;quot;. I guess there is a certain amount of testosterone you are allowed to ingest (for these contests) that cause a negligible effect. [[Special:Contributions/70.31.159.230|70.31.159.230]] 13:21, 14 February 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
Blood doping is not the same as steroid use. {{unsigned|‎98.204.81.157}}&lt;br /&gt;
== Douglas Adams ==&lt;br /&gt;
&lt;br /&gt;
Does anyone else feel that the title text has a strong Douglas Adams flavour?&lt;br /&gt;
And if so, can we make that hard with a quote from one of his books?&lt;br /&gt;
&lt;br /&gt;
:It's a biblical reference, Genesis 3:19, &amp;quot;In the sweat of thy face shalt thou eat bread, till thou return unto the ground; for out of it wast thou taken: for dust thou art, and unto dust shalt thou return&amp;quot;, King James version.[[User:Jasqm|Jasqm]] ([[User talk:Jasqm|talk]]) 14:03, 13 February 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
:D.N.A. has been known to reference the bible: &lt;br /&gt;
:-&amp;quot;In the beginning, the universe was created. This made a lot of people unhappy and has been widely regarded as a bad move.&amp;quot;&lt;br /&gt;
:-&amp;quot;And then one day, nearly two thousand years after one man was nailed to a tree for saying how great it would be if people were nice to each other for a change...&amp;quot;&lt;br /&gt;
:[[User:Smperron|Smperron]] ([[User talk:Smperron|talk]]) 17:08, 13 February 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
:You're probably thinking of his quotes that reference digital watches and what a big mistake it was to leave the oceans (combined with the scene from the show where the guy walks back into the ocean).[[User:CityZen|CityZen]] ([[User talk:CityZen|talk]]) 21:30, 13 February 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
Ive said that Douglas Adams write for XKCD for years now...Notice if you change all the letters to their corresponding number (A=1, B=2, etc) and add them, you get 42 ;) [[Special:Contributions/90.205.199.80|90.205.199.80]] 12:49, 13 February 2013 (UTC)&lt;br /&gt;
:Yeah, I'm pretty sure we all know that was a coincidence; Randall said so.&lt;br /&gt;
&lt;br /&gt;
Not just a Biblical reference, the comic is published on (western christian) Ash Wednesday...  [[User:Patmiller|Patmiller]] ([[User talk:Patmiller|talk]]) 14:58, 13 February 2013 (UTC)&lt;/div&gt;</summary>
		<author><name>167.206.204.93</name></author>	</entry>

	</feed>